CMDB资产管理系统开发【day26】:批准资产入库
刚才都是一条像内存,硬盘,网卡、多条的话如何操作
只有一条数据
下面的是有多条数据的
硬盘必须字段的验证
def __create_disk_component(self):
disk_info = self.clean_data.get('physical_disk_driver')
if disk_info:
for disk_item in disk_info:
try:
self.__verify_field(disk_item, 'slot', str)
'''
这里确实是验证了一个slot,首先获取数据,0是不成立的,插槽是0
这一段根本就不走,客户端操作,导致这一块就报错
'''
self.__verify_field(disk_item, 'capacity', float)
self.__verify_field(disk_item, 'iface_type', str)
self.__verify_field(disk_item, 'model', str)
if not len(self.response['error']): # no processing when there's no error happend
data_set = {
'asset_id': self.asset_obj.id,
'sn': disk_item.get('sn'),
'slot': disk_item.get('slot'),
'capacity': disk_item.get('capacity'),
'model': disk_item.get('model'),
'iface_type': disk_item.get('iface_type'),
'manufactory': disk_item.get('manufactory'),
} obj = models.Disk(**data_set)
obj.save() except Exception as e:
self.response_msg('error', 'ObjectCreationException', 'Object [disk] %s' % str(e))
else:
self.response_msg('error', 'LackOfData', 'Disk info is not provied in your reporting data')
硬盘类型不对报错
解决办法:
except Exception as e:
self.response_msg('error', 'ObjectCreationException', 'Object [disk] %s' % str(e))
'''编写except ValueError Exception as e不再抓异常'''
硬盘验证字段bug导致获取不到资产组件信息
客户端命令行拍错截图:
解决办法:
验证字段的时候:if not none 就可以了
资产表创建逻辑解析
def _create_server(self):
self.__create_server_info()
self.__create_or_update_manufactory() self.__create_cpu_component()
self.__create_disk_component()
self.__create_nic_component()
self.__create_ram_component() log_msg = "Asset [<a href='/admin/assets/asset/%s/' target='_blank'>%s</a>] has been created!" % (
self.asset_obj.id, self.asset_obj)
self.response_msg('info', 'NewAssetOnline', log_msg) '''
如果上面的都获取成功,我就返回一条消息,创建资产成功,
你可以'/admin/assets/asset/%s/'到这个页面,打开这个资产
然后记录一条日志
'''
创建资产成功创建记录截图
后台资产表截图如下:
内存capacity字段类型验证
def __create_ram_component(self):
ram_info = self.clean_data.get('ram')
if ram_info:
for ram_item in ram_info:
try:
self.__verify_field(ram_item, 'capacity', int)
'''验证capacity必须是int,如果不是int就走不下去了,内存就不创建了'''
if not len(self.response['error']): # no processing when there's no error happend
data_set = {
'asset_id': self.asset_obj.id,
'slot': ram_item.get("slot"),
'sn': ram_item.get('sn'),
'capacity': ram_item.get('capacity'),
'model': ram_item.get('model'),
} obj = models.RAM(**data_set)
obj.save() except Exception as e:
self.response_msg('error', 'ObjectCreationException', 'Object [ram] %s' % str(e))
else:
self.response_msg('error', 'LackOfData', 'RAM info is not provied in your reporting data')
验证必须字段,没有必须字段就不不创建硬盘
网卡验证字段
def __create_nic_component(self):
nic_info = self.clean_data.get('nic')
if nic_info:
for nic_item in nic_info:
try:
self.__verify_field(nic_item, 'macaddress', str)
'''IP地址可以没有,验证macaddress地址必须存在'''
if not len(self.response['error']): # no processing when there's no error happend
data_set = {
'asset_id': self.asset_obj.id,
'name': nic_item.get('name'),
'sn': nic_item.get('sn'),
'macaddress': nic_item.get('macaddress'),
'ipaddress': nic_item.get('ipaddress'),
'bonding': nic_item.get('bonding'),
'''这个网卡是绑定的,是客户端检测的,我服务器端只是检测这个字段'''
'model': nic_item.get('model'),
'netmask': nic_item.get('netmask'),
} obj = models.NIC(**data_set)
obj.save() except Exception as e:
self.response_msg('error', 'ObjectCreationException', 'Object [nic] %s' % str(e))
else:
self.response_msg('error', 'LackOfData', 'NIC info is not provied in your reporting data')
CMDB资产管理系统开发【day26】:批准资产入库的更多相关文章
- CMDB资产管理系统开发【day25】:表结构设计2
表结构设计1详细注释代码 # _*_coding:utf-8_*_ __author__ = 'luoahong' from assets.myauth import UserProfile from ...
- CMDB资产管理系统开发【day25】:表结构设计1
资产表 # _*_coding:utf-8_*_ __author__ = 'jieli' from assets.myauth import UserProfile from django.db i ...
- CMDB资产管理系统开发【day25】:windows客户端开发
1.目录结构 PS Y:\MadkingClient> tree /f 卷 netgame 的文件夹 PATH 列表 卷序列号为 ACE3-896E Y:. ├─bin │ NedStark.p ...
- CMDB资产管理系统开发【day26】:admin action
本节目标 审核写到数据库,我就单独写一个如下的 页面 单机go后就跳转到如下图界面,我们这节课的目标就是写一个这样的页面 asset\admin.py部分代码 注释如下: class NewAsset ...
- CMDB资产管理系统开发【day26】:数据正式存入待存区
1.from表单提交 1.数据提交到哪里呢? 提交到assets/new_assets_approval.html这了 2.Yes, I'm sure提交了什么? 为什么没有下拉框了 ...
- CMDB资产管理系统开发【day26】:CMDB上节回顾
一.上节知识点回顾 服务器设计了一个表结构 开发了一个客户端 二.后台创建缓存区表 客户端连接服务器,在服务器的下面看报错信息 因为URL都没有写,所以我找不到呀 1.在MadKing\url.py ...
- CMDB资产管理系统开发【day26】:02-数据写入待存区
一.资产自动回报数据及个更新流程图 二.表结构注释(NewAssetApprovalZone) class NewAssetApprovalZone(models.Model): "&quo ...
- CMDB资产管理系统开发【day26】:Django admin
想实现的是一个表里面的字段 选择性的出现在菜单栏 1.如何自定义菜单 自定义菜单前 在asset\admin.py里添加如下代码: class NewAssetApprovalZoneAdmin(ad ...
- CMDB资产管理系统开发【day26】:实现资产自动更新
1.需求分析 1.比对分析 比对的时候以那个数据源为主? old [1,2,3 ] db数据库 new [2,3,4 ] 客户端汇报过来的 当然以客户端汇报过来的数据为主 2.更新分析 不同的表到底拿 ...
随机推荐
- dotnetframe的清理工具
微软的产品一向不敢恭维,卸载都没有办法卸载干净,卸载又慢又不彻底,dotnet被我卸载之后还有注册表残留以至于无法重新安装. .NET Framework Cleanup Tool真的很好用,全部版本 ...
- 开源自动驾驶仿真平台 AirSim (2) - 编译 AirSim
AirSim 的官方 Github: https://github.com/Microsoft/AirSim 对于 Unreal Engine 来说,AirSim 其实是作为一个插件存在,说白了就是把 ...
- windows store无法登陆的问题解决方案
Windows应用商店或商店Apps无法打开或闪退的可选方法 (仅用于10565之前的Windows 10版本) 右键点击任务栏,选择"属性",切换到"导航"选 ...
- HADOOP docker(八):hadoop本地库
前言2. Native Hadoop Library3. 使用本地库4. 本地库组件5. 支持的平台6. 下载7. 编译8. 运行时观察9. 检查本地库10. 如果共享本地库 小伙伴还记得每次启动hd ...
- jQuery File Upload文件上传插件简单使用
前言 开发过程中有时候需要用户在前段上传图片信息,我们通常可以使用form标签设置enctype=”multipart/form-data” 属性上传图片,当我们点击submit按钮的时候,图片信息就 ...
- 图的遍历——DFS(邻接矩阵)
递归 + 标记 一个连通图只要DFS一次,即可打印所有的点. #include <iostream> #include <cstdio> #include <cstdli ...
- iOS- 网络访问两种常用方式【GET & POST】实现的几个主要步骤
1.前言 上次,在博客里谈谈了[GET & POST]的区别,这次准备主要是分享一下自己对[GET & POST]的理解和实现的主要步骤. 在这就不多废话了,直接进主题,有什么不足的欢 ...
- 【Linux】- netstat 命令
Linux netstat命令用于显示网络状态.利用netstat指令可让你得知整个Linux系统的网络情况. 语法 netstat [-acCeFghilMnNoprstuvVwx][-A<网 ...
- windows默认TEMP环境
留着是为了等出问题的时候能找着改回来 Administrator 的用户变量 TEMP %USERPROFILE%\AppData\Local\Temp TMP %USERPRO ...
- 第28天:js-Tab栏切换封装函数
一.input.value所有值都是string 二.变量和属性var index=10;//变量var arr=[];//数组arr.index=20;//index为自定义属性,只能在arr下使用 ...