from repository import models
class Memory(object):
def __init__(self, server_obj, info):
self.server_obj = server_obj
self.memory_dict = info
def process(self):
new_memory_info_dict = self.memory_dict['data']
old_memory_info_list = self.server_obj.memory.all()
new_memory_slot_set = set(new_memory_info_dict.keys())
old_memory_slot_set = {memory.slot for memory in old_memory_info_list}
add_slot_list = new_memory_slot_set.difference(old_memory_slot_set)
print(add_slot_list)
del_slot_list = old_memory_slot_set.difference(new_memory_slot_set)
print(del_slot_list)
update_slot_list = old_memory_slot_set.intersection(new_memory_slot_set)
print(update_slot_list)
add_record_list = []
for slot in add_slot_list:
memory_dick = new_memory_info_dict[slot]
tmp = '[%s]添加新内存:槽位[%s],容量[%s];' % (
self.server_obj.hostname, slot, new_memory_info_dict[slot]['capacity'])
add_record_list.append(tmp)
memory_dick['server_obj'] = self.server_obj
models.Memory.objects.create(**memory_dick)
if add_record_list:
models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(add_record_list))
del_record_list = []
models.Memory.objects.filter(server_obj=self.server_obj, slot__in=del_record_list).delete()
for slot in del_slot_list:
tmp = '[%s]删除内存:槽位[%s];' %(self.server_obj.hostname, slot)
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 slot in update_slot_list:
tmp = '[%s]更新内存:槽位[%s]' %(self.server_obj.hostname, slot)
memory_dick = new_memory_info_dict[slot]
obj = models.Memory.objects.filter(server_obj=self.server_obj, slot=slot).first()
for k, new_val in memory_dick:
old_val = getattr(obj, k)
if not new_val == old_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))
9.30 课程记录
最新推荐文章于 2023-02-23 14:07:19 发布