def sync_remote_server(request, method): tgt = sapi.minions_status()['up'] arg = [ 'osfinger', 'ipv4', 'cpu_model', 'num_cpus', 'memory_info', 'disk_info' ] data = sapi.sync_remote_server(tgt=tgt, arg=arg) count = len(data) update_list = [] no_update_list = [] for k, v in data[0].items(): host_info = { 'hostname': k, 'os': v['osfinger'], 'cpu': '{} * {}'.format(v['cpu_model'], v['num_cpus']), 'memory': v['memory_info'], 'disk': '|'.join(v['disk_info']), 'ip': '|'.join(v['ipv4']) } if method == 'create': try: obj = Host.objects.get(hostname=k) except Host.DoesNotExist: obj = Host(**host_info) obj.save() # records Record.objects.create(name='hosts', asset=k, type=1, method='create', before='{}', after=host_info, create_user='******') else: try: obj = Host.objects.filter(hostname=k) obj_info = { 'hostname': k, 'os': obj[0].os, 'cpu': obj[0].cpu, 'memory': obj[0].memory, 'disk': obj[0].disk, 'ip': obj[0].ip } diff = removeNone(json_tools.diff(obj_info, host_info)) if diff: obj.update(**host_info) # records Record.objects.create(name='hosts', asset=k, type=1, method='update', before=obj_info, after=host_info, diff=diff, create_user='******') update_list.append(k) else: no_update_list.append(k) except Host.DoesNotExist: print("%s is not exist" % k) print("update_list: %s" % update_list) print("no_update_list: %s" % no_update_list) return Response({"results": data, "count": count})