vmware - How to WaitForUpdates from VMs in a cluster? -
i using vmware vsphere ws sdk in python using suds client. want wait changes vms. interested in vms of particular cluster. there way in propertyfilterspec that? tried setting managed object reference of cluster in objectspec no avail. like:
object_spec = client_factory.create('ns0:objectspec') object_spec.obj = cluster_mor object_spec.skip = false
figured out myself. had set proper traversal spec also:
object_spec = client_factory.create('ns0:objectspec') object_spec.obj = cluster_mor object_spec.skip = false object_spec.selectset = build_recursive_traversal_spec(client_factory) def build_recursive_traversal_spec(client_factory): #recurse through resourcepools rp_to_rp = client_factory.create('ns0:traversalspec') rp_to_rp.name = 'rptorp' rp_to_rp.type = 'resourcepool' rp_to_rp.path = 'resourcepool' rp_to_rp.skip = false rp_to_vm = client_factory.create('ns0:traversalspec') rp_to_vm.name = 'rptovm' rp_to_vm.type = 'resourcepool' rp_to_vm.path = 'vm' rp_to_vm.skip = false spec_array_resource_pool = [client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec')] spec_array_resource_pool[0].name = 'rptorp' spec_array_resource_pool[1].name = 'rptovm' rp_to_rp.selectset = spec_array_resource_pool #traversal through resource pool branch cr_to_rp = client_factory.create('ns0:traversalspec') cr_to_rp.name = 'crtorp' cr_to_rp.type = 'computeresource' cr_to_rp.path = 'resourcepool' cr_to_rp.skip = false spec_array_computer_resource = [client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec')] spec_array_computer_resource[0].name = 'rptorp' spec_array_computer_resource[1].name = 'rptovm' cr_to_rp.selectset = spec_array_computer_resource #traversal through host branch cr_to_h = client_factory.create('ns0:traversalspec') cr_to_h.name = 'crtoh' cr_to_h.type = 'computeresource' cr_to_h.path = 'host' cr_to_h.skip = false #traversal through hostfolder branch dc_to_hf = client_factory.create('ns0:traversalspec') dc_to_hf.name = 'dctohf' dc_to_hf.type = 'datacenter' dc_to_hf.path = 'hostfolder' dc_to_hf.skip = false spec_array_datacenter_host = [client_factory.create('ns0:selectionspec')] spec_array_datacenter_host[0].name = 'visitfolders' dc_to_hf.selectset = spec_array_datacenter_host #traversal through vmfolder branch dc_to_vmf = client_factory.create('ns0:traversalspec') dc_to_vmf.name = 'dctovmf' dc_to_vmf.type = 'datacenter' dc_to_vmf.path = 'vmfolder' dc_to_vmf.skip = false spec_array_datacenter_vm = [client_factory.create('ns0:selectionspec')] spec_array_datacenter_vm[0].name = 'visitfolders' dc_to_vmf.selectset = spec_array_datacenter_vm #traversal through datastore branch dc_to_ds = client_factory.create('ns0:traversalspec') dc_to_ds.name = 'dctods' dc_to_ds.type = 'datacenter' dc_to_ds.path = 'datastore' dc_to_ds.skip = false spec_array_datacenter_ds = [client_factory.create('ns0:selectionspec')] spec_array_datacenter_ds[0].name = 'visitfolders' dc_to_ds.selectset = spec_array_datacenter_ds #recurse through hosts h_to_vm = client_factory.create('ns0:traversalspec') h_to_vm.name = 'htovm' h_to_vm.type = 'hostsystem' h_to_vm.path = 'vm' h_to_vm.skip = false spec_array_host_vm = [client_factory.create('ns0:selectionspec')] spec_array_host_vm[0].name = 'visitfolders' h_to_vm.selectset = spec_array_host_vm #recurse through datastores ds_to_vm = client_factory.create('ns0:traversalspec') ds_to_vm.name = 'dstovm' ds_to_vm.type = 'datastore' ds_to_vm.path = 'vm' ds_to_vm.skip = false spec_array_datastore_vm = [client_factory.create('ns0:selectionspec')] spec_array_datastore_vm[0].name = 'visitfolders' ds_to_vm.selectset = spec_array_datastore_vm #recurse through folders visit_folders = client_factory.create('ns0:traversalspec') visit_folders.name = 'visitfolders' visit_folders.type = 'folder' visit_folders.path = 'childentity' visit_folders.skip = false spec_array_visit_folders = [client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec'), client_factory.create('ns0:selectionspec')] spec_array_visit_folders[0].name = 'visitfolders' spec_array_visit_folders[1].name = 'dctohf' spec_array_visit_folders[2].name = 'dctovmf' spec_array_visit_folders[3].name = 'crtoh' spec_array_visit_folders[4].name = 'crtorp' spec_array_visit_folders[5].name = 'dctods' spec_array_visit_folders[6].name = 'htovm' spec_array_visit_folders[7].name = 'dstovm' spec_array_visit_folders[8].name = 'rptovm' visit_folders.selectset = spec_array_visit_folders #add of them here spec_array = [visit_folders, dc_to_vmf, dc_to_ds, dc_to_hf, cr_to_h, cr_to_rp, rp_to_rp, h_to_vm, ds_to_vm, rp_to_vm] return spec_array
Comments
Post a Comment