CMDB服务器管理系统【s5day90】:创建资产更新服务器硬盘信息
生活随笔
收集整理的這篇文章主要介紹了
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】:创建资产更新服务器硬盘信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 代码片段9
- 下一篇: Tomcat+nginx+keepali