gametechmods
Off-Topic => Off-Topic Discussion => Topic started by: Daemon on May 20, 2011, 03:29:58 PM
-
Hello, everyone.
I need some help with python. I'm writing program that helps controlling virtual machines.
So, the main problems are:
How to collect such information like:
- IP address of virtual machine
- data storage of vm
And also:
- DefragmentAllDisks + power On
from suds.client import Client
from suds.sudsobject import Property
#import logging
#logging.basicConfig(level=logging.INFO)
#logging.getLogger('suds.client').setLevel(logging.DEBUG)
#logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
data_file = open("pass.txt", "r")
for line in data_file:
# strip white space from line
line = line.strip()
# ignore empty lines
if not line: continue
# split using your seperating character
user, password = line.split(' ')
# convert string to float values
url = 'xxxxxx'
client = Client(url)
client.set_options(location='xxxxxx')
mo_ServiceInstance = Property('ServiceInstance')
mo_ServiceInstance._type = 'ServiceInstance'
ServiceContent = client.service.RetrieveServiceContent(mo_ServiceInstance)
mo_SessionManager = Property(ServiceContent.sessionManager.value)
mo_SessionManager._type = 'SessionManager'
SessionManager = client.service.Login(mo_SessionManager, user, password)
# Traversal Specs
FolderTraversalSpec = client.factory.create('ns0:TraversalSpec')
DatacenterVMTraversalSpec = client.factory.create('ns0:TraversalSpec')
FolderSelectionSpec = client.factory.create('ns0:SelectionSpec')
DatacenterVMSelectionSpec = client.factory.create('ns0:SelectionSpec')
FolderSelectionSpec.name = "FolderTraversalSpec"
DatacenterVMSelectionSpec.name = "DatacenterVMTraversalSpec"
DatacenterVMTraversalSpec.name = "DatacenterVMTraversalSpec"
DatacenterVMTraversalSpec.type = "Datacenter"
DatacenterVMTraversalSpec.path = "vmFolder"
DatacenterVMTraversalSpec.skip = True
FolderTraversalSpec.name = "FolderTraversalSpec"
FolderTraversalSpec.type = "Folder"
FolderTraversalSpec.path = "childEntity"
FolderTraversalSpec.skip = True
DatacenterVMTraversalSpec.selectSet = [FolderSelectionSpec]
FolderTraversalSpec.selectSet = [DatacenterVMSelectionSpec, FolderSelectionSpec]
# Property Spec
propSpec = client.factory.create('ns0:PropertySpec')
propSpec.all = False
propSpec.pathSet = ["name", "runtime"]
propSpec.type = "VirtualMachine"
# Object Spec
mo_RootFolder = Property(ServiceContent.rootFolder.value)
mo_RootFolder._type = 'Folder'
objSpec = client.factory.create('ns0:ObjectSpec')
objSpec.obj = mo_RootFolder
objSpec.selectSet = [ FolderTraversalSpec, DatacenterVMTraversalSpec ]
# PropertyFilterSpec
propFilterSpec = client.factory.create('ns0:PropertyFilterSpec')
propFilterSpec.propSet = [ propSpec ]
propFilterSpec.objectSet = [ objSpec ]
# RetrieveProperties
mo_PropertyCollector = Property(ServiceContent.propertyCollector.value)
mo_PropertyCollector._type = 'PropertyCollector'
objContent = client.service.RetrieveProperties(mo_PropertyCollector, propFilterSpec)
# --
# print results
def properties_to_dict(entity):
props = {}
props['_type'] = entity.obj._type
props['mo_ref'] = entity.obj.value
for dynProp in entity.propSet:
props[dynProp.name] = dynProp.val
return props
virtual_machines = map(properties_to_dict, objContent)
hname = ipaddr = None
for vm in virtual_machines:
print "Virtual Machine: "+vm['name']
print "(PowerState : "+str(vm['runtime'])+")"
print "\n"
so, any suggestions?
-
I made first part and still working on defragment
-
http://www.vmware.com/pdf/labmanager_SOAP_API_Guide.pdf (http://www.vmware.com/pdf/labmanager_SOAP_API_Guide.pdf)
Page 30, IP Address. Defragmentation is done per-OS, so it won't be doable using the standard SOAP API. Powering on is described on page 41.
-
Thanks