vcenter(8):Python3 SDK 查询返回数据JSON化并存入Mongodb,redis等数据库--datacenter

由于python sdk针对vcenter的sdk查询返回的数据时以对象嵌套的形式,所以查询出来的数据JSON格式化,序列化以及存储到redis,mongo等数据库非常的不方便,因此本人耗费了一些时日将返回的常见的对象属性进行了json处理,可能比较low,但是简单粗暴,非常实用,还望诸君共勉。

目录

获取datacenter的json序列化


#!/usr/bin/env python
#-*- coding:utf-8 -*-
# author:hanxiaoshun
# datetime:2020/6/27 20:12
# software: PyCharm

def detail_datastoreFolder(datastoreFolder):
    datastoreFolder_tmp = {}
    datastoreFolder_tmp['alarmActionsEnabled'] = datastoreFolder.alarmActionsEnabled
    datastoreFolder_tmp['availableField'] = []
    datastoreFolder_tmp['childEntity'] = []
    datastoreFolder_tmp['childType'] = []
    datastoreFolder_tmp['configIssue'] = []
    datastoreFolder_tmp['configStatus'] = datastoreFolder.configStatus
    datastoreFolder_tmp['customValue'] = []
    datastoreFolder_tmp['declaredAlarmState'] = []
    datastoreFolder_tmp['disabledMethod'] = []
    datastoreFolder_tmp['effectiveRole'] = []
    datastoreFolder_tmp['name'] = datastoreFolder.name
    datastoreFolder_tmp['overallStatus'] = datastoreFolder.overallStatus
    datastoreFolder_tmp['parent'] = {}
    datastoreFolder_tmp['permission'] = []
    datastoreFolder_tmp['recentTask'] = []
    datastoreFolder_tmp['tag'] = []
    datastoreFolder_tmp['triggeredAlarmState'] = []
    datastoreFolder_tmp['value'] = []
    return datastoreFolder_tmp


def detail_datacenter(datacenter=None):
    datacenter_tmp = {}
    datacenter_tmp['alarmActionsEnabled'] = datacenter.alarmActionsEnabled
    datacenter_tmp['availableField'] = []
    datacenter_tmp['configIssue'] = []
    datacenter_tmp['configStatus'] = datacenter.configStatus
    datacenter_tmp['configuration'] = {}
    datacenter_tmp['configuration']['defaultHardwareVersionKey'] = datacenter.configuration.defaultHardwareVersionKey
    datacenter_tmp['customValue'] = []
    datastore_list = []
    for datastore in datacenter.datastore:
        datastore_tmp = {}
        datastore_tmp['name'] = datastore.name
        datastore_list.append(datastore_tmp)
    datacenter_tmp['datastore'] = datastore_list
    datacenter_tmp['datastoreFolder'] = detail_datastoreFolder(datacenter.datastoreFolder)
    datacenter_tmp['declaredAlarmState'] = []
    datacenter_tmp['disabledMethod'] = []
    datacenter_tmp['effectiveRole'] = []
    datacenter_tmp['hostFolder'] = {}
    datacenter_tmp['name'] = datacenter.name
    network_list = []
    for network in datacenter.network:
        network_tmp = {}
        network_tmp['_moId'] = network._moId
        network_tmp['name'] = network.name
        network_list.append(network_tmp)
    datacenter_tmp['network'] = network_list
    datacenter_tmp['networkFolder'] = {}
    datacenter_tmp['overallStatus'] = datacenter.overallStatus
    datacenter_tmp['parent'] = {}
    datacenter_tmp['permission'] = []
    datacenter_tmp['recentTask'] = []
    datacenter_tmp['tag'] = []
    datacenter_tmp['triggeredAlarmState'] = {}
    datacenter_tmp['value'] = []
    datacenter_tmp['vmFolder'] = []
    return datacenter_tmp



from cloudenforce.vmware_api.detail_datacenter import detail_datacenter

# -*- coding: utf-8 -*-
from pyvim import connect
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
import atexit


vcenter_address = 'vc22.xxxxxxx.xxxx'
service_instance = connect.SmartConnect(host=vcenter_address,
                                        user='administrator@xxx.xxxx'
                                        pwd='Pxxxxx',
                                        port=443)

content = service_instance.RetrieveContent()
vcontent = service_instance.content


from cloudenforce.vmware_api.vcenter_mongo import insert_patch

if __name__ == '__main__':
    data_list = []
    for datacenter in vcontent.rootFolder.childEntity:
        datacenter_ss = detail_datacenter(datacenter)
        data_list.append(datacenter_ss)
    print(data_list)
    insert_patch(data_list, 'vcenter_datacenter'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值