table of Contents
CMDB03 / storage assets, asset change history, not today acquired assets
1. Assets Assets change recording & storage
Written to the database
def post(self,request,*args,**kwargs): # 1. 获取到用户提交资产信息 # 2. 保存到数据库(表关系) hostname = request.data.get('hostname') server_object = models.Server.objects.filter(hostname=hostname).first() if not server_object: return Response('主机不存在') disk_info = request.data['info']['disk'] """ if not disk_info['status']: print(disk_info['error']) else: for slot,row_dict in disk_info['data'].items(): # models.Disk.objects.create(**row_dict,server=server_object) models.Disk.objects.create(**row_dict,server_id=server_object.id) """ return Response('发送成功')
Consider asset changes
def post(self,request,*args,**kwargs): # 1. 获取到用户提交资产信息 # 2. 保存到数据库(表关系) hostname = request.data.get('hostname') server_object = models.Server.objects.filter(hostname=hostname).first() if not server_object: return Response('主机不存在') print('汇报过来的数据',request.data['info']) process_server_info(request.data['info'],server_object) """ # 今日已经采集 server_object.last_date = datetime.datetime.today() server_object.save() """ return Response('发送成功')
to sum up
中控机汇报到api的资产需要做入库以及变更记录的处理。
- 由于资产搜集时是利用工厂模式实现可扩展插件,方便于扩展。在api端也是使用相同模式,对插件进行一一处理。
- 在处理资产信息时候,对操作进行交集和差集的处理从而得到删除/更新/新增资产。
- 在内部通过反射进行资产变更记录的获取,最终将资产以及变更记录写入数据库。
3. Not today acquisition server - based Q implement complex SQL queries
def get(self,request,*args,**kwargs):
""" 返回今日未采集的服务器列表 """
today = datetime.datetime.today()
queryset = models.Server.objects.filter(status=1).filter(Q(last_date__isnull=True)|Q(last_date__lt=today)).values('hostname')
host_list = [item['hostname'] for item in queryset]
print('获取今日未采集的资产',host_list)
return Response(host_list)
CMDB summary
- cmdb background
- cmdb implementation
- Control Unit
- paramiko
- pymysql operational database
- Singleton (other singleton)
- Factory Pattern
- Journal
- Stack information
- Object data encapsulation BaseReponse
- Thread Pool
- Module requests: data / json
- Command Acquisition of assets: dmidecode / megacli / saltstack
- Q acquisition of assets not acquired
- Pay and poor collection
- reflection
- orm increased bulk data: bulk_create ([], 10)