运维开发里的数据动态获取和自动补录
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,vm_info_dict = virtual_machine_info.objects.get(ip=vm_ip_addr) print(vm_info_dict) if vm_info_dict !
千家信息网最后更新 2025年01月22日运维开发里的数据动态获取和自动补录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安全错误
数据库的锁怎样保障安全
数据库实现成绩管理系统
网络安全是否属于国家的一部分
金融机构网络安全风险
db2 数据库连接命令
创造空数据库的步骤
plsql 建数据库
怎么制作服务器
科技服务互联网平台
idcx86服务器出货量
平度ios软件开发外包公司
中兴服务器远程挂载光驱
易互联网科技有限公司官网
南京开放大学试卷数据库
网络安全隔离装置蜂鸣
电脑数据库坏了重新做系统怎么做
网络安全扫描技术的两大核心
学生校园网络安全防范知识
安徽医院软件开发公司
加强网络安全意识报道
数据库新增血血病
奉贤区信息化软件开发哪家好
大学学生网络安全宣传
创造空数据库的步骤
属于网络安全敏感国家和地区
天翼云服务器不能远程
网络安全青少年动画
数据库 c2级的安全性
2020青少年网络安全答题
连接服务器卡
南昌网络技术服务