Quantcast
Channel: VMware Communities: Message List - VMware ESXi 5
Viewing all articles
Browse latest Browse all 61617

Re: HostSystemTraversal in Vsphere 4.0

$
0
0

I could find out some logic behind writing the traversal specs.

We dont need to point so many selection specs every time in the selectSet. Its like a linked list. Build one traversal spec (eg: tr1) and mention object type and path (to traverse) and now define a link through selectSet. This link will be another traversal spec (tr2) whose object type will be the one we have given in path and fill the path for this new traversal spec (tr2). Now set the selectSet of tr1 to tr2.

tr1.selectSet = new SelectionSpec[]{tr2};

 

We can go on building till the object of our interest.

 

Modified code:

          //ComputeResource to host
            SelectionSpec selCR2HostSpec = new SelectionSpec();
            selCR2HostSpec.name = "CR2Host";
            TraversalSpec trCR2HostSpec = new TraversalSpec();
            trCR2HostSpec.name = selCR2HostSpec.name;
            trCR2HostSpec.type = "ComputeResource";
            trCR2HostSpec.path = "host";
            trCR2HostSpec.skip = false;
            trCR2HostSpec.selectSet = new SelectionSpec[] { selCR2HostSpec };
            //---------------
            //vmFolder(hostFolder) to childEntity(ComputeResource)
            TraversalSpec trHF2CRSpec = new TraversalSpec();
            trHF2CRSpec.name = "HostFolder2CR";
            trHF2CRSpec.type = "Folder";
            trHF2CRSpec.path = "childEntity";
            trHF2CRSpec.skip = false;
            trHF2CRSpec.selectSet = new SelectionSpec[] { trCR2HostSpec };
            //---------------
            //Datacenter to hostFolder
            TraversalSpec trDC2HFSpec = new TraversalSpec();
            trDC2HFSpec.name = "DC2HostFolder";
            trDC2HFSpec.type = "Datacenter";
            trDC2HFSpec.path = "hostFolder";
            trDC2HFSpec.skip = false;
            trDC2HFSpec.selectSet = new SelectionSpec[] { trHF2CRSpec };
            //----------------
            //rootFolder to DC
            TraversalSpec trFd2DCSpec = new TraversalSpec();
            trFd2DCSpec.name = "Folder2DC";
            trFd2DCSpec.type = "Folder";
            trFd2DCSpec.path = "childEntity";
            trFd2DCSpec.skip = false;
            trFd2DCSpec.selectSet = new SelectionSpec[] { trDC2HFSpec };
            //---------------
            PropertySpec propSpec = new PropertySpec();
            propSpec.all = false;
            propSpec.pathSet = new string[] { "name", "parent", "datastore", "summary", "configManager", "config", "runtime", "vm" };
            propSpec.type = "HostSystem";
            ObjectSpec objSpec = new ObjectSpec();
            objSpec.obj = m_rootFolder;
            objSpec.skip = false;
            objSpec.selectSet = new SelectionSpec[] { trFd2DCSpec };
            PropertyFilterSpec propFilterSpec = new PropertyFilterSpec();
            propFilterSpec.propSet = new PropertySpec[] { propSpec };
            propFilterSpec.objectSet = new ObjectSpec[] { objSpec };
           
            ObjectContent[] objArr = m_vimService.RetrieveProperties(m_propCollector, new PropertyFilterSpec[] { propFilterSpec });
            return objArr;

 

Thanks,

Prasad


Viewing all articles
Browse latest Browse all 61617

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>