1、创建硬件资产信息

import json
from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
from repository import models
from .plugins import PluginManger@csrf_exempt
def server(request):# 客户端提交的最新资产数据server_dict = json.loads(request.body.decode('utf-8'))# 检查server表中是否有当前资产信息【主机名是唯一标识】if not server_dict['basic']['status']:return HttpResponse('臣妾做不到')hostname = server_dict['basic']['data']['hostname']
server_obj = models.Server.objects.filter(hostname=hostname).first()if not server_obj:#创建服务器信息tmp = {}tmp.update(server_dict['basic']['data'])tmp.update(server_dict['board']['data'])server_dict = models.Server.object.create(**tmp)#网卡、内存、硬盘...#硬盘disk_info_dict = server_dict['disk']['data']for item in disk_info_dict.values():item['server_obj'] = server_obj#item['server_obj'] = server_objmodels.Disk.object.create(**item)#内存 mem_info_dict = server_dict['memory']['data']for item in mem_info_dict.values():item['server_obj']= server_objmodels.Memory.object.create(**item)#网卡    nic_info_dict = server_dict['nic']['data']for k,v in nic_info_dict.values():v['server_obj'] = server_objv['name'] = kmodels.NIC.object.create(**v)   else:   

2、更新服务器信息

#更新server表 tmp = {}   tmp.update(server_dict['basic']['data'])    tmp.update(server_dict['board']['data'])    #服务器数据更新    tmp.pop('hostname')   record_list = []   for k,new_val in tmp.item():    old_val != new_val:    if old_val!= new_val:  record = "[%s]的[%s]由[%s]变更为[%s]" % (hostname,k,old_val.new_val)  record_list.append(record)  setattr(server_obj,k,new_val)   server_obj.save()   if record_list: models.ServerRecord.object.create(server_obj=server_obj,content=';'.join(record_list))

3、更新硬盘信息

class Disk(object):def __init__(self,server_obj,info):self.server_obj = server_objself.disk_dict = infodef process(self):# 硬盘、网卡和内存new_disk_info_dict = self.disk_dict['data']"""{'0': {'slot': '0', 'pd_type': 'SAS', 'capacity': '279.396', 'model': 'SEAGATE ST300MM0006     LS08S0K2B5NV'},'1': {'slot': '1', 'pd_type': 'SAS', 'capacity': '279.396', 'model': 'SEAGATE ST300MM0006     LS08S0K2B5AH'},'2': {'slot': '2', 'pd_type': 'SATA', 'capacity': '476.939', 'model': 'S1SZNSAFA01085L     Samsung SSD 850 PRO 512GB               EXM01B6Q'},'3': {'slot': '3', 'pd_type': 'SATA', 'capacity': '476.939', 'model': 'S1AXNSAF912433K     Samsung SSD 840 PRO Series              DXM06B0Q'},'4': {'slot': '4', 'pd_type': 'SATA', 'capacity': '476.939', 'model': 'S1AXNSAF303909M     Samsung SSD 840 PRO Series              DXM05B0Q'},'5': {'slot': '5', 'pd_type': 'SATA', 'capacity': '476.939', 'model': 'S1AXNSAFB00549A     Samsung SSD 840 PRO Series}"""new_disk_info_list = self.server_obj.disk.all()"""[obj,obj,obj,]"""new_disk_slot_set = set(new_disk_info_dict.keys())old_disk_slot_set = {obj.slot for obj in new_disk_info_list}# add_slot_list = new_disk_slot_set - old_disk_slot_setadd_slot_list = new_disk_slot_set.difference(old_disk_slot_set)del_slot_list = old_disk_slot_set.difference(new_disk_slot_set)update_slot_list = old_disk_slot_set.intersection(new_disk_slot_set)add_record_list = []# 增加 [2,5]for slot in add_slot_list:value = new_disk_info_dict[slot]tmp = "添加硬盘..."add_record_list.append(tmp)value['server_obj'] = self.server_objmodels.Disk.objects.create(**value)# 删除 [4,6]models.Disk.objects.filter(server_obj=self.server_obj, slot__in=del_slot_list).delete()# 更新 [7,8]for slot in update_slot_list:value = new_disk_info_dict[slot]  # {'slot': '0', 'pd_type': 'SAS', 'capacity': '279.396', 'model': 'SEAGATE ST300MM0006     LS08S0K2B5NV'}obj = models.Disk.objects.filter(server_obj=self.server_obj, slot=slot).first()for k, new_val in value.items():old_val = getattr(obj, k)if old_val != new_val:setattr(obj, k, new_val)obj.save()def add_disk(self):passdef del_disk(self):passdef update_disk(self):pass

  

转载于:https://www.cnblogs.com/luoahong/p/9341383.html

CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息相关推荐

  1. 修改服务器资产信息,CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息...

    1.创建硬件资产信息 import json from django.shortcuts import render,HttpResponse from django.views.decorators ...

  2. CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)

    django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...

  3. CMDB服务器管理系统【s5day88】:兼容的实现

    比较麻烦的实现方式 类的继承方式 目录结构如下: auto_client\bin\run.py import sys import os import importlib import request ...

  4. 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...

    在理解统计信息(2/6):直方图 中,我们讨论了直方图,密度向量,还有SQL Server如何用统计信息做基数计算(cardinality estimation).这篇文章会讨论统计信息如何被创建,还 ...

  5. 使用数据库维护计划SQL Server更新统计信息

    This article explores SQL Server Update Statistics using the database maintenance plan. 本文探索使用数据库维护计 ...

  6. linux服务器管理系统/虚拟主机管理系统wdcp v2.2发布

    wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,通过web页面操作就可以管理服务器和虚拟主机.简单,方便,易 ...

  7. 服务器系统linux下载软件,Linux服务器管理系统一键安装包(wdcp Lanmp)

    wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟主机.简单,方便,易操作.只 ...

  8. idc主机托管服务器管理系统,idc主机托管服务器管理系统

    idc主机托管服务器管理系统 内容精选 换一换 本章节通过示例项目"iBlog个人独立博客系统"介绍如何使用DevCloud开发基于Node.js语言的Web应用.项目名称:iBl ...

  9. 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )

    文章目录 安卓直播推流专栏博客总结 一. 编写快速搭建 RTMP 服务器 Shell 脚本 二. RTMP 快速搭建方法 三.创建阿里云 RTMP 服务器镜像 四.浏览器查看直播内容 五.前置 / 后 ...

最新文章

  1. python网络通信框架_Python运维-Socket网络编程 (1)
  2. python列表的增删改查
  3. poj2513 Fence Repair(小根堆)
  4. eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD
  5. 企业网站前端制作实战教程 JQuery CSS JS HTML 项目需求分析与准备工作
  6. java文件上传maven_ssm+maven框架搭建实现ajax多文件上传功能
  7. libv4l 库【转】
  8. lynx命令调用php脚本,lynx
  9. MySQL Connector/C++入门教程(上)
  10. MyBatis3源码解析(2)数据库连接
  11. RocketMQ原理解析-Consumer
  12. scanf()和getchar() 使用
  13. python中函数的返回值
  14. 想成为优秀的技术人员你必须做到的几件事情【转载】
  15. Ubuntu之最好用程序员计算器:qalculate
  16. PADS PCB绘图软件使用过程中遇到的问题和填坑
  17. SQL2000无法安装,提示挂起
  18. 文件名太长无法删除怎么办?
  19. 大觉寺到鹫峰线路_大觉寺-萝卜地北尖-鹫峰徒步线路攻略--登山备查
  20. 【TDA2x学习】资源汇总

热门文章

  1. 增强现实和3D渲染技术是如何应用在SAP产品里的
  2. SAP UI技术演进过程
  3. SAP CRM呼叫中心里Case ID的生成逻辑
  4. SAP 不同 ABAP 系统里同一 Customizing activity 的显示差异分析
  5. Ubuntu中vi / vim编辑器快捷操作
  6. c语言 编程 牛顿迭代,C语言编写牛顿迭代法的跟踪
  7. java thread.sleep 声明_java 线程Thread.Sleep详解(转载)
  8. python初学者代码示例_python实现手势识别的示例(入门)
  9. linux中的mysql启动失败(一直连续出现点点的状态)
  10. html状态查询爱站,批量获取爱站数据