Python 使用oslo.vmware管理ESXI虚拟机

Python 使用oslo.vmware管理ESXI虚拟机,第1张

概述oslo.vmware是OpenStack通用框架中的一部分,主要用于实现对虚拟机管理任务,借助oslo.vmware模块我们可以管理Vmware ESXI集群环境。 读取所有节点主机 from o

oslo.vmware是OpenStack通用框架中的一部分,主要用于实现对虚拟机的管理任务,借助oslo.vmware模块我们可以管理Vmware ESXI集群环境。

@H_301_3@读取所有节点主机

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1','[email protected]','123456',1,0.1)#result1 = session.invoke_API(vim_util,'get_objects',session.vim,'HostSystem',100)#print(result1.objects[0])# rep2 = session.invoke_API(vim_util,'get_object_propertIEs_dict',result1.objects[0].obj,'vm')res = session.invoke_API(vim_util,"get_objects","ResourcePool",100)print(res)

@H_301_3@获取所有区域:

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',0.1)res = session.invoke_API(vim_util,"ComputeResource",100)addr = []for i in res.objects:    addr.append(i.propSet[0][1])print(addr)

@H_301_3@获取所有主机列表:

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',0.1)res = session.invoke_API(vim_util,"HostSystem",1000)addr = []for i in res.objects:    addr.append(i.propSet[0][1])print(addr)

@H_301_3@获取 HostSystem MO

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',1000)# 我们随意选取一个 ESXi Host,并且打印其 Objecthost_obj = res.objects[0].obj# 获取 HostNetworkSystem MO,并打印其 Valuehost_network_system_val = session.invoke_API(vim_util,host_obj,'configManager.networkSystem')print(host_network_system_val)

@H_301_3@详细信息:

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',"VirtualMachine",1000)summary = session.invoke_API(vim_util,res.objects[0].obj,'summary')print(summary)

@H_301_3@资源清单

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',"Datacenter",1000)# 获取 Cluster 资源清单computeResource  = session.invoke_API(                            vim_util,'ComputeResource',100)for each in computeResource.objects:    print("资源清单: {}".format(each[1][0][1]))

@H_301_3@读取主机状态

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1','summary.runtime.powerState')summary1 = session.invoke_API(vim_util,'summary.config.name')print(summary.get("summary.runtime.powerState"))print(summary1.get("summary.config.name"))

@H_301_3@循环输出

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',100)tim = 0for each in res.objects:    tim = tim +1    print(tim)    stats = session.invoke_API(vim_util,each.obj,'summary.runtime.powerState')    addr = session.invoke_API(vim_util,'summary.config.name')    print("主机地址: {} \t 状态: {}".format(addr.get("summary.config.name"),stats.get("summary.runtime.powerState")))

@H_301_3@读取虚拟机状态

from oslo_vmware import APIfrom oslo_vmware import vim_utilimport urllib3urllib3.disable_warnings()session = API.VMwareAPISession(            '127.0.0.1',100)instance = res.objects[0].objprint(instance)stats = session.invoke_API(vim_util,instance,'summary')print(stats)

使用com.vmware.vcenter_clIEnt管理虚拟机。

@H_301_3@Vsphere API基础:

import requestsimport urllib3from vmware.vAPI.vsphere.clIEnt import create_vsphere_clIEntsession = requests.session()session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)vsphere_clIEnt = create_vsphere_clIEnt(server='127.0.0.1',username='[email protected]',password='123456',session=session)# 列出所有虚拟机ref = vsphere_clIEnt.vcenter.VM.List()print(ref)# 通过虚拟机的名称来进行过滤ref = vsphere_clIEnt.vcenter.VM.List( vsphere_clIEnt.vcenter.VM.FilterSpec(names={'BaIDu-NLP01'}) )print(ref)

@H_301_3@实现开关机

import requestsimport urllib3from vmware.vAPI.vsphere.clIEnt import create_vsphere_clIEntsession = requests.session()session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)vsphere_clIEnt = create_vsphere_clIEnt(server='127.0.0.1',session=session)# 检索系统是否开机vm = vsphere_clIEnt.vcenter.VM.List(vsphere_clIEnt.vcenter.VM.FilterSpec(names={'GZH-SERVER3'}))[0]power_status = vsphere_clIEnt.vcenter.vm.Power.get(vm.vm)print("是否开机: {}".format(power_status))# 检索系统是否开机vm = vsphere_clIEnt.vcenter.VM.List(vsphere_clIEnt.vcenter.VM.FilterSpec(names={'192.168.81.51'}))if len(vm) != 0:    vm = vm[0]    power_status = vsphere_clIEnt.vcenter.vm.Power.get(vm.vm)    print("已开机: {}".format(power_status.state))else:    print("已关机")# 关闭系统 start / reset / suspend / stopvsphere_clIEnt.vm.Power.stop(vm.vm)# 删除虚拟机vsphere_clIEnt.vcenter.VM.delete(vm)

@H_301_3@列出数据存储

import requestsimport urllib3from vmware.vAPI.vsphere.clIEnt import create_vsphere_clIEntfrom com.vmware.vcenter_clIEnt import Folderfrom com.vmware.vcenter_clIEnt import Datastorefrom com.vmware.vcenter_clIEnt import Networksession = requests.session()session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)vsphere_clIEnt = create_vsphere_clIEnt(server='127.0.0.1',session=session)# 列出集群#ref = vsphere_clIEnt.vcenter.Cluster.List()#print(ref)# 列出 vCenter 中所有文件夹#folder = vsphere_clIEnt.vcenter.Folder.List()# 列出数据存储# store = vsphere_clIEnt.vcenter.Datastore.List()datastore_name = '192.168.64.20'filter_spec = Datastore.FilterSpec(names={datastore_name})datastore_summarIEs = vsphere_clIEnt.vcenter.Datastore.List(filter_spec)datastore_ID = datastore_summarIEs[0].datastoreprint("存储结构: {} 数据存储名称: {}".format(datastore_summarIEs,datastore_ID))

@H_301_3@获取资源池

import requestsimport urllib3from vmware.vAPI.vsphere.clIEnt import create_vsphere_clIEntfrom com.vmware.vcenter_clIEnt import Clusterfrom com.vmware.vcenter_clIEnt import ResourcePoolsession = requests.session()session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)vsphere_clIEnt = create_vsphere_clIEnt(server='127.0.0.1',session=session)# 获取所有资源池filter = vsphere_clIEnt.vcenter.ResourcePool.List()print(filter)# 根据集群名获取资源池cluster_name = 'vSAN-Cluster1'cluster_ID = vsphere_clIEnt.vcenter.Cluster.List(Cluster.FilterSpec(names={cluster_name}))[0].clusterresource_pool_ID = vsphere_clIEnt.vcenter.ResourcePool.List(ResourcePool.FilterSpec(clusters={cluster_ID}))[0].resource_poolprint(resource_pool_ID)

@H_301_3@列出网络

import requestsimport urllib3from vmware.vAPI.vsphere.clIEnt import create_vsphere_clIEntfrom com.vmware.vcenter_clIEnt import Networksession = requests.session()session.verify = Falseurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)vsphere_clIEnt = create_vsphere_clIEnt(server='127.0.0.1',session=session)# 列出标准网络filter = vsphere_clIEnt.vcenter.Network.List()print(filter)'''它的 type 有三种类型:distributeD_PORTGROUP:vcenter 创建和管理的网络;OPAQUE_NETWORK:VSphere 之外的设备所创建,但是 vSphere 却可以知道网络的名称和标识符,所以宿主机和虚拟机的网卡才能够连接到;STANDARD_PORTGROUP:ESX 创建和管理的网络。'''filter = Network.FilterSpec(names={'vlan  164'},types={Network.Type.STANDARD_PORTGROUP})network_summarIEs = vsphere_clIEnt.vcenter.Network.List(filter=filter)print(network_summarIEs)# 列出分布式网络filter = Network.FilterSpec(                            names=set(['vlan  164']),types=set([Network.Type.distributeD_PORTGROUP]))network_summarIEs = vsphere_clIEnt.vcenter.Network.List(filter=filter)if len(network_summarIEs) > 0:    network_ID = network_summarIEs[0].network    print(network_ID)else:    print("distributed Portgroup Network not found in Datacenter")
总结

以上是内存溢出为你收集整理的Python 使用oslo.vmware管理ESXI虚拟机全部内容,希望文章能够帮你解决Python 使用oslo.vmware管理ESXI虚拟机所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1157954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存