网卡插件
from repository import models
class Nic(object):
def __init__(self, server_obj, info):
self.server_obj = server_obj
self.nic_dict = info
def process(self):
new_nic_info_dict = self.nic_dict['data']
old_disk_info_list = self.server_obj.nic.all()
new_nic_name_set = set(new_nic_info_dict.keys())
old_nic_name_set = {nic.name for nic in old_disk_info_list}
add_name_list = new_nic_name_set.difference(old_nic_name_set)
print(add_name_list)
del_name_list = old_nic_name_set.difference(new_nic_name_set)
print(del_name_list)
update_name_list = old_nic_name_set.intersection(new_nic_name_set)
print(update_name_list)
add_record_list = []
for name in add_name_list:
nic_dick = new_nic_info_dict[name]
tmp = '[%s]添加网卡:网卡名称[%s]' %(self.server_obj.hostname, name)
add_record_list.append(tmp)
nic_dick['server_obj'] = self.server_obj
models.NIC.objects.create(**nic_dick)
if add_record_list:
models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(add_record_list))
del_record_list = []
models.NIC.objects.filter(server_obj=self.server_obj, name__in=del_name_list).delete()
for name in del_name_list:
tmp = '[%s]删除网卡:网卡名称[%s]' % (self.server_obj.hostname, name)
del_record_list.append(tmp)
if del_record_list:
models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(del_record_list))
update_record_list = []
for name in update_name_list:
tmp = '[%s]更新网卡:网卡名称[%s],' % (self.server_obj.hostname, name)
nic_dict = new_nic_info_dict[name]
obj = models.NIC.objects.filter(server_obj=self.server_obj, name=name).first()
for k, new_val in nic_dict.items():
old_val = getattr(obj, k)
if old_val != new_val:
setattr(obj, k, new_val)
tmp = tmp + '[%s]由[%s]更换为[%s]' % (k, old_val, new_val)
obj.save()
update_record_list.append(tmp)
if update_record_list:
models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(update_record_list))