Ejemplo n.º 1
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            disk_info = server_info['disk']
            if not disk_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='disk-agent',
                                               content=disk_info['error'])
                return response

            client_disk_dict = disk_info['data']

            disk_obj_list = models.Disk.objects.filter(server_obj=server_obj)

            disk_slots = map(lambda x: x, (item.slot for item in disk_obj_list))

            update_list = agorithm.get_intersection(set(client_disk_dict.keys()), set(disk_slots))
            add_list = agorithm.get_exclude(client_disk_dict.keys(), update_list)
            del_list = agorithm.get_exclude(disk_slots, update_list)

            HandleDisk._add_disk(add_list, client_disk_dict, server_obj, user_obj)
            HandleDisk._update_disk(update_list, disk_obj_list, client_disk_dict, server_obj, user_obj)
            HandleDisk._del_disk(del_list, disk_obj_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='disk-run', content=traceback.format_exc())
        return response
Ejemplo n.º 2
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            #获取数据库中的所有网卡信息
            #server_info:服务器最新回报的数据
            nic_info = server_info['nic']
            if not nic_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='nic-agent', content=nic_info['error'])
                return response

            client_nic_dict = nic_info['data']
            nic_obj_list = models.NIC.objects.filter(server_obj=server_obj)
            nic_name_list = map(lambda x: x, (item.name for item in nic_obj_list))

            update_list = agorithm.get_intersection(set(client_nic_dict.keys()), set(nic_name_list))
            add_list = agorithm.get_exclude(client_nic_dict.keys(), update_list)
            del_list = agorithm.get_exclude(nic_name_list, update_list)

            HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj)
            HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict, server_obj, user_obj)
            HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='nic-run', content=traceback.format_exc())

        return response
Ejemplo n.º 3
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            mem_info = server_info['memory']
            if not mem_info['status']:
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='memory-agent',
                                               content=mem_info['error'])
                response.status = False
                return response

            client_mem_dict = mem_info['data']

            mem_obj_list = models.Memory.objects.filter(server_obj=server_obj)

            mem_slots = map(lambda x: x, (item.slot for item in mem_obj_list))

            update_list = agorithm.get_intersection(set(client_mem_dict.keys()), set(mem_slots))
            add_list = agorithm.get_exclude(client_mem_dict.keys(), update_list)
            del_list = agorithm.get_exclude(mem_slots, update_list)

            HandleMemory._add_memory(add_list, client_mem_dict, server_obj, user_obj)
            HandleMemory._update_memory(update_list, mem_obj_list, client_mem_dict, server_obj, user_obj)
            HandleMemory._del_memory(del_list, mem_obj_list, server_obj, user_obj)
        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='memory-run',
                                           content=traceback.format_exc())

        return response
Ejemplo n.º 4
0
    def process(server_obj, server_info, user_obj):
        """
        :param server_obj:  是根据主机名获取的服务器端的资产对象 
        :param server_info:  是agent汇报过来的所有的最新的资产数据
        :param user_obj: 值等于None表示agent自动汇报的数据,
        :return: 
        """
        response = BaseResponse()
        try:
            nic_info = server_info['nic']
            if not nic_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='nic-agent', content=nic_info['error'])
                return response
            # 获取网卡信息资产数据
            client_nic_dict = nic_info['data']
            nic_obj_list = models.NIC.objects.filter(server_obj=server_obj)  # 拿到当前这台机器在数据库中网卡的信息
            nic_name_list = map(lambda x: x, (item.name for item in nic_obj_list))

            update_list = agorithm.get_intersection(set(client_nic_dict.keys()), set(nic_name_list))  # 两个集合的公共部分
            add_list = agorithm.get_exclude(client_nic_dict.keys(), update_list)  # 新汇报上来的数据与公供部分进行比较,不在公共部分则是要添加的;
            del_list = agorithm.get_exclude(nic_name_list, update_list)  # 数据库中查询出来的数据与公共部分进行比较,不在公共部分则要删除;

            HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj)
            HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict, server_obj, user_obj)
            HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='nic-run', content=traceback.format_exc())

        return response
Ejemplo n.º 5
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            disk_info = server_info['disk']
            if not disk_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='disk-agent',
                                               content=disk_info['error'])
                return response

            client_disk_dict = disk_info['data']

            disk_obj_list = models.Disk.objects.filter(server_obj=server_obj)

            disk_slots = map(lambda x: x, (item.slot for item in disk_obj_list))

            update_list = agorithm.get_intersection(set(client_disk_dict.keys()), set(disk_slots))
            add_list = agorithm.get_exclude(client_disk_dict.keys(), update_list)
            del_list = agorithm.get_exclude(disk_slots, update_list)

            HandleDisk._add_disk(add_list, client_disk_dict, server_obj, user_obj)
            HandleDisk._update_disk(update_list, disk_obj_list, client_disk_dict, server_obj, user_obj)
            HandleDisk._del_disk(del_list, disk_obj_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='disk-run', content=traceback.format_exc())
        return response
Ejemplo n.º 6
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            mem_info = server_info['memory']
            if not mem_info['status']:
                models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='memory-agent',
                                               content=mem_info['error'])
                response.status = False
                return response

            client_mem_dict = mem_info['data']

            mem_obj_list = models.Memory.objects.filter(server_obj=server_obj)

            mem_slots = map(lambda x: x, (item.slot for item in mem_obj_list))

            update_list = agorithm.get_intersection(set(client_mem_dict.keys()), set(mem_slots))
            add_list = agorithm.get_exclude(client_mem_dict.keys(), update_list)
            del_list = agorithm.get_exclude(mem_slots, update_list)

            HandleMemory._add_memory(add_list, client_mem_dict, server_obj, user_obj)
            HandleMemory._update_memory(update_list, mem_obj_list, client_mem_dict, server_obj, user_obj)
            HandleMemory._del_memory(del_list, mem_obj_list, server_obj, user_obj)
        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset, title='memory-run',
                                           content=traceback.format_exc())

        return response
Ejemplo n.º 7
0
    def process(server_obj,server_info,user_obj):
        response = BaseResponse()
        try:
            # 获取数据库中所有网卡信息
            # server_info 服务器最新汇报的数据
            nic_info = server_info['nic']
            if not nic_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset,title='nic-agent',content=nic_info['error'])
                return response

            client_nic_dict = nic_info['data']
            nic_obj_list = models.NIC.objects.filter(server_obj=server_obj)
            nic_name_list = map(lambda x:x,(item.name for item in nic_obj_list))

            update_list = agorithm.get_intersection(set(client_nic_dict.keys()),set(nic_name_list))
            add_list = agorithm.get_exclude(client_nic_dict.keys(),update_list)
            del_list = agorithm.get_exclude(nic_name_list,update_list)

            # 删除 更新 添加操作
            HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj)
            HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict, server_obj, user_obj)
            HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj)


        except Exception as e:
            response.status = False
            response.error = str(e)
            models.ErrorLog.objects.create(asset_obj=server_obj.asset,title='nic-run',content=traceback.format_exc())

        return response
Ejemplo n.º 8
0
 def process(server_obj, server_info, user_obj):
     response = BaseResponse()
     try:
         nic_info = server_info['nic']
         if not nic_info['status']:
             response.status = False
             models.ErrorLog.objects.create(asset=server_obj.asset,
                                            title='nic-run',
                                            content=nic_info['error'])
             return response
         client_nic_dict = nic_info['data']
         nic_obj_list = models.NIC.objects.filter(asset=server_obj.asset)
         nic_slot_list = [item.slot for item in nic_obj_list]
         update_list = agorithm.get_intersection(
             set(client_nic_dict.keys()), set(nic_slot_list))
         add_list = agorithm.get_exclude(client_nic_dict.keys(),
                                         update_list)
         del_list = agorithm.get_exclude(nic_slot_list, update_list)
         HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj)
         HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj)
         HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict,
                               server_obj, user_obj)
     except Exception as e:
         response.status = False
         models.ErrorLog.objects.create(asset=server_obj.asset,
                                        title='nic-run',
                                        content=traceback.format_exc())
     return response
Ejemplo n.º 9
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            # 获取对应的信息,status,error,data,message
            nic_info = server_info['nic']
            if not nic_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset,
                                               title='nic-agent',
                                               content=nic_info['error'])
                return response
            # 汇报的最新数据
            client_nic_dict = nic_info['data']
            # 数据库中已存在的网卡所有信息拿出来
            nic_obj_list = models.NIC.objects.filter(server_obj=server_obj)
            nic_name_list = map(lambda x: x,
                                (item.name for item in nic_obj_list))
            # 交集,数据库有,汇报也有的数据名。更新
            update_list = agorithm.get_intersection(
                set(client_nic_dict.keys()), set(nic_name_list))
            # 汇报有,数据库没有
            add_list = agorithm.get_exclude(client_nic_dict.keys(),
                                            update_list)
            # 汇报没有,数据库有
            del_list = agorithm.get_exclude(nic_name_list, update_list)

            HandleNic._add_nic(add_list, client_nic_dict, server_obj, user_obj)
            HandleNic._update_nic(update_list, nic_obj_list, client_nic_dict,
                                  server_obj, user_obj)
            HandleNic._del_nic(del_list, nic_obj_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(asset_obj=server_obj.asset,
                                           title='nic-run',
                                           content=traceback.format_exc())

        return response
Ejemplo n.º 10
0
    def process(server_obj, server_info, user_obj):
        response = BaseResponse()
        try:
            database_info = server_info['database']
            print(database_info)

            if not database_info['status']:
                response.status = False
                models.ErrorLog.objects.create(asset_obj=server_obj.asset,
                                               title='nic-agent',
                                               content=database_info['error'])
                return response

            client_mysql_dict = database_info['data']
            print(client_mysql_dict)
            mysql_obj_list = models.MysqlInfo.objects.filter(
                server_obj=server_obj)
            mysql_name_list = map(lambda x: x,
                                  (item.hostname for item in mysql_obj_list))

            update_list = agorithm.get_intersection(
                set(client_mysql_dict.keys()), set(mysql_name_list))
            add_list = agorithm.get_exclude(client_mysql_dict.keys(),
                                            update_list)
            del_list = agorithm.get_exclude(mysql_name_list, update_list)

            # 后面进行 接收数据模块 开发
            # HandleMysql._add_nic(add_list, client_mysql_dict, server_obj, user_obj)
            # HandleMysql._update_nic(update_list, mysql_obj_list, client_mysql_dict, server_obj, user_obj)
            # HandleMysql._del_nic(del_list, mysql_name_list, server_obj, user_obj)

        except Exception as e:
            response.status = False
            models.ErrorLog.objects.create(obj=server_obj.hostname,
                                           title='mysql-run',
                                           content=traceback.format_exc())
        return response