Author Topic: VMWare vSphere  (Read 2564 times)

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
VMWare vSphere
« 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

Code: [Select]
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?
There are 10 types of people:Those,who understand binary and those,who dont.

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
Re: VMWare vSphere
« Reply #1 on: May 21, 2011, 11:07:46 AM »
I made first part and still working on defragment
There are 10 types of people:Those,who understand binary and those,who dont.

Offline Serge

  • *
  • Posts: 1530
  • Rep: 13
    • View Profile
    • http://www.q3k.org/
    • Awards
Re: VMWare vSphere
« Reply #2 on: May 21, 2011, 11:48:41 AM »
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.
home | twitter | yt | gmf de/compiler | component freedom | xmpp: q3k@q3k.org | email: q3k@q3k.org

Offline Daemon

  • Lightweight
  • Posts: 231
  • Rep: 0
    • http://www.youtube.com/user/25Daemon025
    • View Profile
    • Awards
Re: VMWare vSphere
« Reply #3 on: May 22, 2011, 02:37:30 AM »
Thanks
There are 10 types of people:Those,who understand binary and those,who dont.