9.30 课程记录

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))

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值