SoFunction
Updated on 2024-11-16

Python Example Reference for Using Managed ESXI Virtual Machines

Read all node hosts

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


#result1 = session.invoke_api(vim_util,'get_objects',, 'HostSystem', 100)

#print([0])
# rep2 = session.invoke_api(vim_util,'get_object_properties_dict',, [0].obj,'vm')

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

print(res)

Get all regions:

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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

addr = []
for i in :
    ([0][1])

print(addr)

Get a list of all hosts.

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)

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

addr = []
for i in :
    ([0][1])

print(addr)

Get HostSystem MO

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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

# Let's pick an ESXi Host at random, and print its Object
host_obj = [0].obj


# Get the HostNetworkSystem MO, and print its Value.
host_network_system_val = session.invoke_api(vim_util,
    'get_object_properties_dict',,host_obj,'')

print(host_network_system_val)

Detailed information:

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()
session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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

summary = session.invoke_api(vim_util, 'get_object_properties_dict', ,
                              [0].obj,'summary')

print(summary)

List of resources

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()
session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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

# Get a list of Cluster resources
computeResource  = session.invoke_api(
                            vim_util,
                            'get_objects',
                            ,
                            'ComputeResource',
                            100)


for each in :
    print("List of resources: {}".format(each[1][0][1]))

Read host status

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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

summary = session.invoke_api(vim_util, 'get_object_properties_dict', ,
                              [0].obj,'')

summary1 = session.invoke_api(vim_util, 'get_object_properties_dict', ,
                              [0].obj,'')


print((""))
print((""))

cyclic output

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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


tim = 0
for each in :

    tim = tim +1
    print(tim)
    stats = session.invoke_api(vim_util, 'get_object_properties_dict', ,
                                  ,'')

    addr = session.invoke_api(vim_util, 'get_object_properties_dict', ,
                                  ,'')

    print("host address: {} \t state of affairs: {}".format((""),("")))

Read the state of the virtual machine

from oslo_vmware import api
from oslo_vmware import vim_util
import urllib3

urllib3.disable_warnings()

session = (
            '127.0.0.1',
            'admin@',
            '123456',
             1,0.1)


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


instance = [0].obj
print(instance)

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


print(stats)

Use .vcenter_client to manage virtual machines.

Vsphere API Basics.

import requests
import urllib3
from  import create_vsphere_client

session = ()
 = False
urllib3.disable_warnings()

vsphere_client = create_vsphere_client(server='127.0.0.1', username='admin@', password='123456', session=session)

# List all virtual machines
ref = vsphere_client.()
print(ref)

# Filter by VM name
ref = vsphere_client.( vsphere_client.(names={'Baidu-NLP01'}) )
print(ref)

Realization of on/off switching

import requests
import urllib3
from  import create_vsphere_client

session = ()
 = False
urllib3.disable_warnings()

vsphere_client = create_vsphere_client(server='127.0.0.1', username='admin@', password='123456', session=session)

# Retrieve if the system is on
vm = vsphere_client.(vsphere_client.(names={'GZH-SERVER3'}))[0]
power_status = vsphere_client.()
print("Whether or not to power on: {}".format(power_status))


# Retrieve if the system is on
vm = vsphere_client.(vsphere_client.(names={'192.168.81.51'}))
if len(vm) != 0:
    vm = vm[0]
    power_status = vsphere_client.()
    print("boot up: {}".format(power_status.state))
else:
    print("Turned off.")


# Shut down the system start / reset / suspend / stop
vsphere_client.()

# Delete the virtual machine
vsphere_client.(vm)

List data stores

import requests
import urllib3
from  import create_vsphere_client
from .vcenter_client import Folder
from .vcenter_client import Datastore
from .vcenter_client import Network

session = ()
 = False
urllib3.disable_warnings()

vsphere_client = create_vsphere_client(server='127.0.0.1', username='admin@', password='123456', session=session)

# List clusters
#ref = vsphere_client.()
#print(ref)

# List all folders in vCenter
#folder = vsphere_client.()

# List datastores
# store = vsphere_client.()
datastore_name = '192.168.64.20'
filter_spec = (names={datastore_name})
datastore_summaries = vsphere_client.(filter_spec)
datastore_id = datastore_summaries[0].datastore
print("memory structure: {} Datastore Name: {}".format(datastore_summaries,datastore_id))

Getting the resource pool

import requests
import urllib3
from  import create_vsphere_client
from .vcenter_client import Cluster
from .vcenter_client import ResourcePool

session = ()
 = False
urllib3.disable_warnings()

vsphere_client = create_vsphere_client(server='127.0.0.1', username='admin@', password='123456', session=session)

# Get all resource pools
filter = vsphere_client.()
print(filter)

# Get resource pools by cluster name
cluster_name = 'vSAN-Cluster1'
cluster_id = vsphere_client.((names={cluster_name}))[0].cluster
resource_pool_id = vsphere_client.((clusters={cluster_id}))[0].resource_pool

print(resource_pool_id)

Listing of networks

import requests
import urllib3
from  import create_vsphere_client
from .vcenter_client import Network

session = ()
 = False
urllib3.disable_warnings()

vsphere_client = create_vsphere_client(server='127.0.0.1', username='admin@', password='123456', session=session)

# List standard networks
filter = vsphere_client.()
print(filter)

'''
It has three types of type:
DISTRIBUTED_PORTGROUP: A network created and managed by vcenter;
OPAQUE_NETWORK: created by a device other than VSphere, but the name and identifier of the network is known to vSphere so that the NICs of the host and VMs can connect;
STANDARD_PORTGROUP: networks created and managed by ESX.
'''

filter = (names={'vlan  164'},types={.STANDARD_PORTGROUP})
network_summaries = vsphere_client.(filter=filter)
print(network_summaries)

# List distributed networks
filter = (
                            names=set(['vlan  164']),
                            types=set([.DISTRIBUTED_PORTGROUP]))
network_summaries = vsphere_client.(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")

Article Provenance:/lyshark

Above is the Python use management ESXI virtual machine example reference in detail, more information about Python use management ESXI virtual machine please pay attention to my other related articles!