读取所有节点主机
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
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) |
获取所有区域:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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) |
获取所有主机列表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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) |
详细信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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) |
资源清单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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 ])) |
读取主机状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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" )) |
循环输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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" ))) |
读取虚拟机状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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基础:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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) |
实现开关机
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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) |
列出数据存储
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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)) |
获取资源池
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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) |
列出网络
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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虚拟机的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/LyShark/p/14660875.html