Hi,
I am using following query\traversal path to get datstores in vcenter/esx.
Is there any improvements or optimizations can be done to this query?
//creating traversal spec to slect all datastore objects in computeresource TraversalSpec computeResourceDatastoreTraversalSpec = new TraversalSpec(); computeResourceDatastoreTraversalSpec.type = "ComputeResource"; computeResourceDatastoreTraversalSpec.name = "computeResourceDatastoreTraversalSpec"; computeResourceDatastoreTraversalSpec.path = "datastore"; computeResourceDatastoreTraversalSpec.skip = false; //creating traversal spec to slect all datastore objects in clusterresource TraversalSpec clusterComputeResourceDatastoreTraversalSpec = new TraversalSpec(); clusterComputeResourceDatastoreTraversalSpec.type = "ClusterComputeResource"; clusterComputeResourceDatastoreTraversalSpec.name = "clusterComputeResourceDatastoreTraversalSpec"; clusterComputeResourceDatastoreTraversalSpec.path = "datastore"; clusterComputeResourceDatastoreTraversalSpec.skip = false; //creating traversal spec to select all hostfolder objects in datastor TraversalSpec datacenterHostTraversalSpec = new TraversalSpec(); datacenterHostTraversalSpec.type = "Datacenter"; datacenterHostTraversalSpec.name = "datacenterHostTraversalSpec"; datacenterHostTraversalSpec.path = "hostFolder"; datacenterHostTraversalSpec.skip = false; datacenterHostTraversalSpec.selectSet = new SelectionSpec[] { new SelectionSpec() }; //add foldertraversal spec to selection set datacenterHostTraversalSpec.selectSet[0].name = "folderTraversalSpec"; //creating recusrive folder traversal spec TraversalSpec folderTraversalSpec = new TraversalSpec(); folderTraversalSpec.name = "folderTraversalSpec"; folderTraversalSpec.type = "Folder"; folderTraversalSpec.path = "childEntity"; folderTraversalSpec.skip = false; folderTraversalSpec.selectSet = new SelectionSpec[] { new SelectionSpec(), datacenterHostTraversalSpec, computeResourceDatastoreTraversalSpec, clusterComputeResourceDatastoreTraversalSpec }; folderTraversalSpec.selectSet[0].name = "folderTraversalSpec"; PropertyFilterSpec propFilterSpec = new PropertyFilterSpec(); propFilterSpec.propSet = new PropertySpec[] { new PropertySpec() }; propFilterSpec.propSet[0].all = false; propFilterSpec.propSet[0].type = "Datastore"; propFilterSpec.propSet[0].pathSet = new string[] { "info", "summary", "vm", "host" }; propFilterSpec.objectSet = new ObjectSpec[] { new ObjectSpec() }; propFilterSpec.objectSet[0].obj = this.ServiceUtil.GetConnection().Root; propFilterSpec.objectSet[0].skip = false; propFilterSpec.objectSet[0].selectSet = new SelectionSpec[] { folderTraversalSpec }; ObjectContent[] ocArray = this.ServiceUtil.GetConnection().Service .RetrieveProperties( this.ServiceUtil.GetConnection().PropCol, new PropertyFilterSpec[] { propFilterSpec });
Regards,
Naresh