/** * @param args arg[0] - URL of the Virtual Center Server / ESX host https://<Server host name / * ip>/sdk arg[1] - User name arg[2] - Password arg[3] - One of vminfo, hostvminfo, or vmmor * arg[4] - If vmmor is arg[3], then vmname argument is mandatory */ public static void main(String[] args) { // This is to accept all SSL certifcates by default. System.setProperty( "org.apache.axis.components.net.SecureSocketFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory"); if (args.length < 3) { printUsage(); } else { try { /** * ****************************** ******************************* ** *** ** Your code goes * here *** ** (fill-in 1 of 1) *** ** *** ******************************* * ******************************* */ VIM_HOST = args[0]; USER_NAME = args[1]; PASSWORD = args[2]; initAll(); System.out.println("***************************************************************"); long st = System.currentTimeMillis(); getVMInfo(); long et = System.currentTimeMillis(); System.out.println( "\nTotal time (msec) to retrieve the properties of all VMs in one call: " + (et - st)); System.out.println("\n***************************************************************"); System.out.println("\n***************************************************************"); st = System.currentTimeMillis(); initVMMorList(); Iterator<ManagedObjectReference> iter = VM_MOR_LIST.iterator(); StringBuilder sb = new StringBuilder(); String name = "name"; String powerState = "runtime.powerState"; while (iter.hasNext()) { ManagedObjectReference vmMor = iter.next(); String vmName = (String) getVMProperty(vmMor, name); sb.append(vmName); VirtualMachinePowerState vmPs = (VirtualMachinePowerState) getVMProperty(vmMor, powerState); sb.append(" : "); sb.append(vmPs); sb.append("\n"); } et = System.currentTimeMillis(); System.out.println(sb.toString()); System.out.println( "\nTotal time (msec) to retrieve the properties of all VMs individually: " + (et - st)); System.out.println("\n***************************************************************"); } catch (Exception e) { e.printStackTrace(); } finally { try { disconnect(); } catch (Exception e) { e.printStackTrace(); } } } }
/** * Demonstrate how to use the PropertyCollector to retrieve properties of a managed object. * * <p>Prints Virtual machine name and powerstate of all the VMs in the datacenter (Either VC or * ESX host). */ public static void getVMInfo() { try { TraversalSpec tSpec = getVMTraversalSpec(); // Create Property Spec PropertySpec propertySpec = new PropertySpec(); propertySpec.setAll(Boolean.FALSE); propertySpec.setPathSet(new String[] {"name", "runtime.powerState"}); propertySpec.setType("VirtualMachine"); PropertySpec[] propertySpecs = new PropertySpec[] {propertySpec}; // Now create Object Spec ObjectSpec objectSpec = new ObjectSpec(); objectSpec.setObj(ROOT_FOLDER); objectSpec.setSkip(Boolean.TRUE); objectSpec.setSelectSet(new SelectionSpec[] {tSpec}); ObjectSpec[] objectSpecs = new ObjectSpec[] {objectSpec}; // Create PropertyFilterSpec using the PropertySpec and ObjectPec // created above. PropertyFilterSpec propertyFilterSpec = new PropertyFilterSpec(); propertyFilterSpec.setPropSet(propertySpecs); propertyFilterSpec.setObjectSet(objectSpecs); PropertyFilterSpec[] propertyFilterSpecs = new PropertyFilterSpec[] {propertyFilterSpec}; ObjectContent[] oCont = VIM_PORT.retrieveProperties(PROP_COLLECTOR, propertyFilterSpecs); if (oCont != null) { // System.out.println("ObjectContent Length : " + oCont.length); StringBuilder sb = new StringBuilder(); for (ObjectContent oc : oCont) { DynamicProperty[] dps = oc.getPropSet(); if (dps != null) { for (DynamicProperty dp : dps) { if (dp.getName().equalsIgnoreCase("name")) { sb.append(dp.getVal()); sb.append(" : "); } else { sb.append(dp.getVal()); sb.append("\n"); } // System.out.println(dp.getName() + " : " + // dp.getVal()); } } } System.out.println(sb.toString()); } } catch (Exception e) { e.printStackTrace(); } }