cgregoire
20/02/2015, 09h48
Pour suivre ce premier script, en voici un autre pour lister les vms présentes dans un vApp.
Les vApps se trouvant dans une autre vue, il faut passer par les hosts pour pouvoir les lister.
Il vous suffira de combiner les deux scripts pour obtenir l'ensemble des vms de votre Pcc.
Bon test
Les vApps se trouvant dans une autre vue, il faut passer par les hosts pour pouvoir les lister.
Code:
./getVmsFromvApp.py -s pcc-XXX-XXX-XXX-XXX.ovh.com -u username -p password
Code:
#!/usr/bin/env python import pyVmomi import argparse import atexit from pyVmomi import vim from pyVim.connect import SmartConnect, Disconnect import itertools def GetArgs(): parser = argparse.ArgumentParser(description='Process args for retrieving all the Virtual Machines') parser.add_argument('-s', '--host', required=True, action='store',help='Remote host to connect to') parser.add_argument('-o', '--port', type=int, default=443, action='store',help='Port to connect on') parser.add_argument('-u', '--user', required=True, action='store',help='User name to use when connecting to host') parser.add_argument('-p', '--password', required=False, action='store',help='Password to use when connecting to host') args = parser.parse_args() return args def printVmInformation(vm, depth=1): maxdepth = 10 # avoid infinite loop if hasattr(vm, 'childEntity'): if depth > maxdepth: return vmList = vm.childEntity for c in vmList: printVmInformation(c, depth+1) return try: summary = vm.summary print "##################################################################" print "Name : ", summary.config.name print "MoRef : ", summary.vm print "State : ", summary.runtime.powerState print "##################################################################" except: pass def main(): args = GetArgs() si = SmartConnect(host=args.host,user=args.user,pwd=args.password,port=int(args.port)) if not si: print("Could not connect to the specified host using specified " "username and password") return -1 atexit.register(Disconnect, si) content = si.RetrieveContent() # get root folder for datacenter in content.rootFolder.childEntity: print "##################################################################" print "##################################################################" print "### datacenter : " + datacenter.name print "##################################################################" if hasattr(datacenter.vmFolder, 'childEntity'): hostFolder = datacenter.hostFolder for hostChild in hostFolder.childEntity: if type(hostChild) is vim.ClusterComputeResource: for vapp in hostChild.resourcePool.resourcePool: if type(vapp) is vim.VirtualApp: print "##################################################################" print "vApp : ",vapp.name print "##################################################################" print "VMs:" for vm in vapp.vm: print "\t",vm.name # Start program if __name__ == "__main__": main()
Il vous suffira de combiner les deux scripts pour obtenir l'ensemble des vms de votre Pcc.
Bon test