CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息
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】:创建资产更新服务器硬盘信息相关推荐
- 修改服务器资产信息,CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息...
1.创建硬件资产信息 import json from django.shortcuts import render,HttpResponse from django.views.decorators ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)
django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...
- CMDB服务器管理系统【s5day88】:兼容的实现
比较麻烦的实现方式 类的继承方式 目录结构如下: auto_client\bin\run.py import sys import os import importlib import request ...
- 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
在理解统计信息(2/6):直方图 中,我们讨论了直方图,密度向量,还有SQL Server如何用统计信息做基数计算(cardinality estimation).这篇文章会讨论统计信息如何被创建,还 ...
- 使用数据库维护计划SQL Server更新统计信息
This article explores SQL Server Update Statistics using the database maintenance plan. 本文探索使用数据库维护计 ...
- linux服务器管理系统/虚拟主机管理系统wdcp v2.2发布
wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,通过web页面操作就可以管理服务器和虚拟主机.简单,方便,易 ...
- 服务器系统linux下载软件,Linux服务器管理系统一键安装包(wdcp Lanmp)
wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟主机.简单,方便,易操作.只 ...
- idc主机托管服务器管理系统,idc主机托管服务器管理系统
idc主机托管服务器管理系统 内容精选 换一换 本章节通过示例项目"iBlog个人独立博客系统"介绍如何使用DevCloud开发基于Node.js语言的Web应用.项目名称:iBl ...
- 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )
文章目录 安卓直播推流专栏博客总结 一. 编写快速搭建 RTMP 服务器 Shell 脚本 二. RTMP 快速搭建方法 三.创建阿里云 RTMP 服务器镜像 四.浏览器查看直播内容 五.前置 / 后 ...
最新文章
- python网络通信框架_Python运维-Socket网络编程 (1)
- python列表的增删改查
- poj2513 Fence Repair(小根堆)
- eclipse pmd使用_使用您自己的规则在Eclipse中自定义PMD
- 企业网站前端制作实战教程 JQuery CSS JS HTML 项目需求分析与准备工作
- java文件上传maven_ssm+maven框架搭建实现ajax多文件上传功能
- libv4l 库【转】
- lynx命令调用php脚本,lynx
- MySQL Connector/C++入门教程(上)
- MyBatis3源码解析(2)数据库连接
- RocketMQ原理解析-Consumer
- scanf()和getchar() 使用
- python中函数的返回值
- 想成为优秀的技术人员你必须做到的几件事情【转载】
- Ubuntu之最好用程序员计算器:qalculate
- PADS PCB绘图软件使用过程中遇到的问题和填坑
- SQL2000无法安装,提示挂起
- 文件名太长无法删除怎么办?
- 大觉寺到鹫峰线路_大觉寺-萝卜地北尖-鹫峰徒步线路攻略--登山备查
- 【TDA2x学习】资源汇总
热门文章
- 增强现实和3D渲染技术是如何应用在SAP产品里的
- SAP UI技术演进过程
- SAP CRM呼叫中心里Case ID的生成逻辑
- SAP 不同 ABAP 系统里同一 Customizing activity 的显示差异分析
- Ubuntu中vi / vim编辑器快捷操作
- c语言 编程 牛顿迭代,C语言编写牛顿迭代法的跟踪
- java thread.sleep 声明_java 线程Thread.Sleep详解(转载)
- python初学者代码示例_python实现手势识别的示例(入门)
- linux中的mysql启动失败(一直连续出现点点的状态)
- html状态查询爱站,批量获取爱站数据