python pyvmomi操作VMware(二):获取数据中心、集群、宿主机、虚拟机的数据和对象的具体属性字段

本文介绍如何使用pyVim库连接vCenter,实现对虚拟化环境的自动化管理,包括获取数据中心、集群、宿主机和虚拟机等对象,为构建高效运维系统提供技术支撑。
首先使用pyVim连接vcenter获取到vcenter可操作对象:
# -*- coding: utf-8 -*-
from pyVim.connect import SmartConnectNoSSL


class VmManage(object):

    def __init__(self, host, user, password, port, ssl):
        self.host = host
        self.user = user
        self.pwd = password
        self.port = port
        self.sslContext = ssl
        try:
            self.client = SmartConnectNoSSL(host=host,
                                            user=user,
                                            pwd=password,
                                            port=443
                                            )
            self.content = self.client.RetrieveContent()
            self.result = True
        except Exception as e:
            self.result = False
            self.message = e
在VmManage类对象加入获取对象的方法:
    def _get_all_objs(self, obj_type, folder=None):
        """
        根据对象类型获取这一类型的所有对象
        """
        if folder is None:
            container = self.content.viewManager.CreateContainerView(self.content.rootFolder, obj_type, True)
        else:
            container = self.content.viewManager.CreateContainerView(folder, obj_type, True)
        return container.view


   def _get_obj(self, obj_type, name):
        """
        根据对象类型和名称来获取具体对象
        """
        obj = None
        content = self.client.RetrieveContent()
        container = content.viewManager.CreateContainerView(content.rootFolder, obj_type, True)
        for c in container.view:
            if c.name == name:
                obj = c
                break
        return obj
获取数据中心对象:
    def get_datacenters(self):
        """
       返回所有的数据中心
        """
        return self._get_all_objs([vim.Datacenter])


    def get_datacenter_by_name(self, datacenter_name):
        """
       根据数据中心名称获取数据中心对象
        """
        return self._get_all_objs([vim.Datacenter], datacenter_name)
获取集群、宿主机、虚拟机
集群对象类型:[vim.ClusterComputeResource]
宿主机对象类型:[vim.HostSystem]
虚拟机对象:[vim.VirtualMachine]
调用测试:
if __name__ == '__main__':
    ip = '192.10.1.1'
    user = 'xxxxxxxx'
    password = 'xxxx'
    port = 443
    vm = VmManage(host=ip,
                  user=user,
                  password=password,
                  port=port, ssl=None)
    cluster_objs = vm._get_all_objs([vim.ClusterComputeResource])
    print cluster_objs

获取集群对象测试结果:

(ManagedObject) [
   'vim.ClusterComputeResource:domain-c400',
   'vim.ClusterComputeResource:domain-c70'
]

接下来,我应该怎么获取到这些集群的属性,这些属性的对应的具体字段怎么去找?

print dir(cluster_objs[0])
注意:在这里可以对获取的对象组中的一个对象查看具有的属性

查看集群对象的属性字段结果:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值