运维开发里的数据动态获取和自动补录
发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict !
千家信息网最后更新 2024年10月21日运维开发里的数据动态获取和自动补录vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict != None: physical_server_ip = vm_info_dict.hostip device_info_dict = physical_server_info.objects.get(ip=physical_server_ip) phy_contain_vms = virtual_machine_info.objects.filter(hostip=physical_server_ip) else: token = gettoken('xxxxx', 'xxxxx') vm_info_dict=getresponse('https://xxxxx/API/v1/GetServerInfo/'+vm_ip_addr, token) physical_server_ip = vm_info_dict.get("hostip") print(physical_server_ip) device_info_dict=getresponse('https://xxxxxx/API/v1/GetDeviceInfo/'+physical_server_ip, token)
整体的思路就是通过Django API获取虚拟机信息,如果不存在就通过API去访问获取。
这个问题看起来比较奇怪,按照错误的思路,应该是在exception的异常捕获部门来处理,这么做确实是可以的,但是如果要扩展逻辑,异常处理的逻辑就会越来越重,感觉怪怪的。
所以反复测试,也算是明白了,使用get的方式去获取数据,如果获取不到就会抛错,个人感觉这个接口还是不太友好,可以换一种方式,比如filter来实现,因为从表结构能够定位到这是一个主键或者唯一性索引。
所以代码的部分根据count的方式来做了调整,然后在这个基础上又做了改进,即如果在本地的数据库中不存在,则访问接口得到数据库,把数据库下沉到本地,整个过程对于我们使用是透明的,也算是一种比较友好的交互方式。
vm_info_dict_exists = virtual_machine_info.objects.filter(ip=vm_ip_addr).count() if vm_info_dict_exists >= 1:vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) physical_server_ip = vm_info_dict.hostip device_info_dict = physical_server_info.objects.get(ip=physical_server_ip)phy_contain_vms = virtual_machine_info.objects.filter(hostip=physical_server_ip)return_dict["device_info_dict"] = device_info_dictreturn_dict["vm_info_dict"] = vm_info_dictreturn_dict["phy_contain_vms"] = phy_contain_vms else:token = gettoken('xxxx', 'xxxxxx')vm_info_dict = getresponse('https://xxxxxx/API/v1/GetServerInfo/' + vm_ip_addr, token)physical_server_ip = vm_info_dict.get("hostip") print(physical_server_ip) device_info_dict = getresponse('https://xxxxxxxAPI/v1/GetDeviceInfo/' + physical_server_ip, token)return_dict["device_info_dict"] = device_info_dictreturn_dict["vm_info_dict"] = vm_info_dictvm_info = virtual_machine_info()......vm_info.memo = vm_info_dict.get("memo")vm_info.save()phy_exists = physical_server_info.objects.filter(ip=vm_info.hostip).count() if phy_exists == 0:phy_info = physical_server_info()phy_exists = physical_server_info.objects.filter(ip=vm_info.hostip).count() if phy_exists == 0:phy_info = physical_server_info()phy_info.update_date = device_info_dict.get("update_date")......phy_info.memo = device_info_dict.get("memo")phy_info.save()phy_contain_vms = virtual_machine_info.objects.filter(hostip=vm_info.hostip)return_dict["phy_contain_vms"] = phy_contain_vms
后续准备对这些信息做更进一步的改进,能够实现元数据的增量刷新,即数据发生变化的时候我会调用接口刷新数据到本地,否则还是保持不变。
数据
方式
接口
数据库
信息
思路
感觉
还是
逻辑
处理
更进一步
个人
代码
唯一性
基础
增量
就是
整体
时候
是在
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术专业英语要求
吉林师范大学数据库题
查看数据库io情况
大阪 赴日软件开发
ftp服务器加密
网络安全法的简称
sql数据库中数组格式化
网络安全包括运行安全吗
网络安全主题板书设计
网络安全不能一刀切
c 从cad读取数据库
甲方软件开发需求并发量
城市互联网科技
电商设计用什么软件开发
我的世界最新网易版2b2 t服务器
方舟手游删不了服务器名字
大话西游2无差别pk服务器
网络安全措施主要有哪几种
林业局计算机网络安全设备
合适的郑州软件开发
软件开发计划变更管理
ACMG推荐的数据库
姜堰区工业网络技术联系方式
软件开发需不需要政府采购
小红伞代理服务器
如何寻找软件开发合作伙伴
u8服务器名称
核酸适配体查询数据库
软件开发各个过程评审
2021网络安全宣传周开幕地点