Python使用oslo.vmware管理ESXI虚拟机的示例参考

目录

读取所有节点主机获取所有区域:获取所有主机列表:获取 HostSystem MO详细信息:资源清单读取主机状态循环输出读取虚拟机状态Vsphere API基础:实现开关机列出数据存储获取资源池列出网络

读取所有节点主机

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'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\',session.vim, result1.objects[0].obj,\'vm\')

res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"ResourcePool\",100)

print(res)

获取所有区域:

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"ComputeResource\",100)

addr = []
for i in res.objects:
    addr.append(i.propSet[0][1])

print(addr)

获取所有主机列表:

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)

res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"HostSystem\",1000)

addr = []
for i in res.objects:
    addr.append(i.propSet[0][1])

print(addr)

获取 HostSystem MO

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"HostSystem\",1000)

# 我们随意选取一个 ESXi Host, 并且打印其 Object
host_obj = res.objects[0].obj


# 获取 HostNetworkSystem MO, 并打印其 Value
host_network_system_val = session.invoke_api(vim_util,
    \'get_object_properties_dict\',session.vim,host_obj,\'configManager.networkSystem\')

print(host_network_system_val)

详细信息:

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()
session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"VirtualMachine\",1000)

summary = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                              res.objects[0].obj,\'summary\')

print(summary)

资源清单

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()
session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"Datacenter\",1000)

# 获取 Cluster 资源清单
computeResource  = session.invoke_api(
                            vim_util,
                            \'get_objects\',
                            session.vim,
                            \'ComputeResource\',
                            100)


for each in computeResource.objects:
    print(\"资源清单: {}\".format(each[1][0][1]))

读取主机状态

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"HostSystem\",1000)

summary = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                              res.objects[0].obj,\'summary.runtime.powerState\')

summary1 = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                              res.objects[0].obj,\'summary.config.name\')


print(summary.get(\"summary.runtime.powerState\"))
print(summary1.get(\"summary.config.name\"))

循环输出

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"HostSystem\",100)


tim = 0
for each in res.objects:

    tim = tim +1
    print(tim)
    stats = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                                  each.obj,\'summary.runtime.powerState\')

    addr = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                                  each.obj,\'summary.config.name\')

    print(\"主机地址: {} \\t 状态: {}\".format(addr.get(\"summary.config.name\"),stats.get(\"summary.runtime.powerState\")))

读取虚拟机状态

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = api.VMwareAPISession(
            \'127.0.0.1\',
            \'admin@vsphere.com\',
            \'123456\',
             1,0.1)


res = session.invoke_api(vim_util,\"get_objects\",session.vim,\"VirtualMachine\",100)


instance = res.objects[0].obj
print(instance)

stats = session.invoke_api(vim_util, \'get_object_properties_dict\', session.vim,
                           instance, \'summary\')


print(stats)

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

Vsphere API基础:

import requests
import urllib3
from vmware.vapi.vsphere.client import create_vsphere_client

session = requests.session()
session.verify = False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(server=\'127.0.0.1\', username=\'admin@vsphere.com\', 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)

实现开关机

import requests
import urllib3
from vmware.vapi.vsphere.client import create_vsphere_client

session = requests.session()
session.verify = False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(server=\'127.0.0.1\', username=\'admin@vsphere.com\', password=\'123456\', 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 / stop
vsphere_client.vm.Power.stop(vm.vm)

# 删除虚拟机
vsphere_client.vcenter.VM.delete(vm)

列出数据存储

import requests
import urllib3
from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter_client import Folder
from com.vmware.vcenter_client import Datastore
from com.vmware.vcenter_client import Network

session = requests.session()
session.verify = False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(server=\'127.0.0.1\', username=\'admin@vsphere.com\', password=\'123456\', 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].datastore
print(\"存储结构: {} 数据存储名称: {}\".format(datastore_summaries,datastore_id))

获取资源池

import requests
import urllib3
from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter_client import Cluster
from com.vmware.vcenter_client import ResourcePool

session = requests.session()
session.verify = False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(server=\'127.0.0.1\', username=\'admin@vsphere.com\', password=\'123456\', 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].cluster
resource_pool_id = vsphere_client.vcenter.ResourcePool.list(ResourcePool.FilterSpec(clusters={cluster_id}))[0].resource_pool

print(resource_pool_id)

列出网络

import requests
import urllib3
from vmware.vapi.vsphere.client import create_vsphere_client
from com.vmware.vcenter_client import Network

session = requests.session()
session.verify = False
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

vsphere_client = create_vsphere_client(server=\'127.0.0.1\', username=\'admin@vsphere.com\', password=\'123456\', 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\")

文章出处:https://www.cnblogs.com/lyshark

以上就是Python使用oslo.vmware管理ESXI虚拟机的示例参考的详细内容,更多关于Python用oslo.vmware管理ESXI虚拟机的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容