| // Copyright 2012 Citrix Systems, Inc. Licensed under the |
| // Apache License, Version 2.0 (the "License"); you may not use this |
| // file except in compliance with the License. Citrix Systems, Inc. |
| // reserves all rights not expressly granted by the License. |
| // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| // Automatically generated by addcopyright.py at 04/03/2012 |
| package com.cloud.vmware;
|
|
|
| import java.io.BufferedInputStream;
|
| import java.io.BufferedOutputStream;
|
| import java.io.BufferedReader;
|
| import java.io.File;
|
| import java.io.FileInputStream;
|
| import java.io.IOException;
|
| import java.io.InputStreamReader;
|
| import java.net.URL;
|
| import java.rmi.RemoteException;
|
| import java.util.ArrayList;
|
| import java.util.HashMap;
|
| import java.util.List;
|
| import java.util.Map;
|
|
|
| import javax.net.ssl.HostnameVerifier;
|
| import javax.net.ssl.HttpsURLConnection;
|
| import javax.net.ssl.SSLSession;
|
|
|
| import org.apache.log4j.xml.DOMConfigurator;
|
|
|
| import com.cloud.utils.PropertiesUtil;
|
| import com.vmware.apputils.version.ExtendedAppUtil;
|
| import com.vmware.vim25.HostIpConfig;
|
| import com.vmware.vim25.HostVirtualNicSpec;
|
| import com.vmware.vim25.HostConfigManager;
|
| import com.vmware.vim25.HostPortGroupSpec;
|
| import com.vmware.vim25.HttpNfcLeaseDeviceUrl;
|
| import com.vmware.vim25.HttpNfcLeaseInfo;
|
| import com.vmware.vim25.HttpNfcLeaseState;
|
| import com.vmware.vim25.OvfCreateImportSpecParams;
|
| import com.vmware.vim25.OvfCreateImportSpecResult;
|
| import com.vmware.vim25.OvfFileItem;
|
| import com.vmware.vim25.OvfNetworkMapping;
|
| import com.vmware.vim25.VirtualMachineConfigSpec;
|
| import com.vmware.vim25.VirtualDeviceConfigSpecOperation;
|
| import com.vmware.vim25.VirtualEthernetCard;
|
| import com.vmware.vim25.VirtualEthernetCardNetworkBackingInfo;
|
| import com.vmware.vim25.VirtualNicManagerNetConfig;
|
| import com.vmware.vim25.VirtualPCNet32;
|
| import com.vmware.vim25.VirtualDeviceConfigSpec;
|
| import com.vmware.vim25.VirtualMachineCloneSpec;
|
| import com.vmware.vim25.VirtualMachineRelocateSpec;
|
| import com.vmware.vim25.ArrayOfManagedObjectReference;
|
| import com.vmware.vim25.DatastoreInfo;
|
| import com.vmware.vim25.DynamicProperty;
|
| import com.vmware.vim25.InvalidProperty;
|
| import com.vmware.vim25.ManagedObjectReference;
|
| import com.vmware.vim25.ObjectContent;
|
| import com.vmware.vim25.ObjectSpec;
|
| import com.vmware.vim25.PropertyFilterSpec;
|
| import com.vmware.vim25.PropertySpec;
|
| import com.vmware.vim25.RuntimeFault;
|
| import com.vmware.vim25.SelectionSpec;
|
| import com.vmware.vim25.TraversalSpec;
|
|
|
| public class TestVMWare {
|
| private static ExtendedAppUtil cb;
|
|
|
| static {
|
| try {
|
| javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
|
| javax.net.ssl.TrustManager tm = new TrustAllManager();
|
| trustAllCerts[0] = tm;
|
| javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
|
| sc.init(null, trustAllCerts, null);
|
| javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
| } catch (Exception e) {
|
| }
|
| }
|
|
|
| private static void setupLog4j() {
|
| File file = PropertiesUtil.findConfigFile("log4j-cloud.xml");
|
|
|
| if(file != null) {
|
| System.out.println("Log4j configuration from : " + file.getAbsolutePath());
|
| DOMConfigurator.configureAndWatch(file.getAbsolutePath(), 10000);
|
| } else {
|
| System.out.println("Configure log4j with default properties");
|
| }
|
| }
|
|
|
| private void getAndPrintInventoryContents() throws Exception {
|
| TraversalSpec resourcePoolTraversalSpec = new TraversalSpec();
|
| resourcePoolTraversalSpec.setName("resourcePoolTraversalSpec");
|
| resourcePoolTraversalSpec.setType("ResourcePool");
|
| resourcePoolTraversalSpec.setPath("resourcePool");
|
| resourcePoolTraversalSpec.setSkip(new Boolean(false));
|
| resourcePoolTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null,null,"resourcePoolTraversalSpec") });
|
|
|
| TraversalSpec computeResourceRpTraversalSpec = new TraversalSpec();
|
| computeResourceRpTraversalSpec.setName("computeResourceRpTraversalSpec");
|
| computeResourceRpTraversalSpec.setType("ComputeResource");
|
| computeResourceRpTraversalSpec.setPath("resourcePool");
|
| computeResourceRpTraversalSpec.setSkip(new Boolean(false));
|
| computeResourceRpTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null,null,"resourcePoolTraversalSpec") });
|
|
|
| TraversalSpec computeResourceHostTraversalSpec = new TraversalSpec();
|
| computeResourceHostTraversalSpec.setName("computeResourceHostTraversalSpec");
|
| computeResourceHostTraversalSpec.setType("ComputeResource");
|
| computeResourceHostTraversalSpec.setPath("host");
|
| computeResourceHostTraversalSpec.setSkip(new Boolean(false));
|
|
|
| TraversalSpec datacenterHostTraversalSpec = new TraversalSpec();
|
| datacenterHostTraversalSpec.setName("datacenterHostTraversalSpec");
|
| datacenterHostTraversalSpec.setType("Datacenter");
|
| datacenterHostTraversalSpec.setPath("hostFolder");
|
| datacenterHostTraversalSpec.setSkip(new Boolean(false));
|
| datacenterHostTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null,null,"folderTraversalSpec") });
|
|
|
| TraversalSpec datacenterVmTraversalSpec = new TraversalSpec();
|
| datacenterVmTraversalSpec.setName("datacenterVmTraversalSpec");
|
| datacenterVmTraversalSpec.setType("Datacenter");
|
| datacenterVmTraversalSpec.setPath("vmFolder");
|
| datacenterVmTraversalSpec.setSkip(new Boolean(false));
|
| datacenterVmTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null,null,"folderTraversalSpec") });
|
|
|
| TraversalSpec folderTraversalSpec = new TraversalSpec();
|
| folderTraversalSpec.setName("folderTraversalSpec");
|
| folderTraversalSpec.setType("Folder");
|
| folderTraversalSpec.setPath("childEntity");
|
| folderTraversalSpec.setSkip(new Boolean(false));
|
| folderTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null,null,"folderTraversalSpec"),
|
| datacenterHostTraversalSpec,
|
| datacenterVmTraversalSpec,
|
| computeResourceRpTraversalSpec,
|
| computeResourceHostTraversalSpec,
|
| resourcePoolTraversalSpec });
|
|
|
| PropertySpec[] propspecary = new PropertySpec[] { new PropertySpec() };
|
| propspecary[0].setAll(new Boolean(false));
|
| propspecary[0].setPathSet(new String[] { "name" });
|
| propspecary[0].setType("ManagedEntity");
|
|
|
| PropertyFilterSpec spec = new PropertyFilterSpec();
|
| spec.setPropSet(propspecary);
|
| spec.setObjectSet(new ObjectSpec[] { new ObjectSpec() });
|
| spec.getObjectSet(0).setObj(cb.getServiceConnection3().getRootFolder());
|
| spec.getObjectSet(0).setSkip(new Boolean(false));
|
| spec.getObjectSet(0).setSelectSet(
|
| new SelectionSpec[] { folderTraversalSpec });
|
|
|
| // Recursively get all ManagedEntity ManagedObjectReferences
|
| // and the "name" property for all ManagedEntities retrieved
|
| ObjectContent[] ocary =
|
| cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { spec }
|
| );
|
|
|
| // If we get contents back. print them out.
|
| if (ocary != null) {
|
| ObjectContent oc = null;
|
| ManagedObjectReference mor = null;
|
| DynamicProperty[] pcary = null;
|
| DynamicProperty pc = null;
|
| for (int oci = 0; oci < ocary.length; oci++) {
|
| oc = ocary[oci];
|
| mor = oc.getObj();
|
| pcary = oc.getPropSet();
|
|
|
| System.out.println("Object Type : " + mor.getType());
|
| System.out.println("Reference Value : " + mor.get_value());
|
|
|
| if (pcary != null) {
|
| for (int pci = 0; pci < pcary.length; pci++) {
|
| pc = pcary[pci];
|
| System.out.println(" Property Name : " + pc.getName());
|
| if (pc != null) {
|
| if (!pc.getVal().getClass().isArray()) {
|
| System.out.println(" Property Value : " + pc.getVal());
|
| }
|
| else {
|
| Object[] ipcary = (Object[])pc.getVal();
|
| System.out.println("Val : " + pc.getVal());
|
| for (int ii = 0; ii < ipcary.length; ii++) {
|
| Object oval = ipcary[ii];
|
| if (oval.getClass().getName().indexOf("ManagedObjectReference") >= 0) {
|
| ManagedObjectReference imor = (ManagedObjectReference)oval;
|
|
|
| System.out.println("Inner Object Type : " + imor.getType());
|
| System.out.println("Inner Reference Value : " + imor.get_value());
|
| }
|
| else {
|
| System.out.println("Inner Property Value : " + oval);
|
| }
|
| }
|
| }
|
| }
|
| }
|
| }
|
| }
|
| } else {
|
| System.out.println("No Managed Entities retrieved!");
|
| }
|
| }
|
|
|
| private void listDataCenters() {
|
| try {
|
| ManagedObjectReference[] morDatacenters = getDataCenterMors();
|
| if(morDatacenters != null) {
|
| for(ManagedObjectReference mor : morDatacenters) {
|
| System.out.println("Datacenter : " + mor.get_value());
|
|
|
| Map<String, Object> properites = new HashMap<String, Object>();
|
| properites.put("name", null);
|
| properites.put("vmFolder", null);
|
| properites.put("hostFolder", null);
|
|
|
| getProperites(mor, properites);
|
| for(Map.Entry<String, Object> entry : properites.entrySet()) {
|
| if(entry.getValue() instanceof ManagedObjectReference) {
|
| ManagedObjectReference morProp = (ManagedObjectReference)entry.getValue();
|
| System.out.println("\t" + entry.getKey() + ":(" + morProp.getType() + ", " + morProp.get_value() + ")");
|
| } else {
|
| System.out.println("\t" + entry.getKey() + ":" + entry.getValue());
|
| }
|
| }
|
|
|
| System.out.println("Datacenter clusters");
|
| ManagedObjectReference[] clusters = getDataCenterClusterMors(mor);
|
| if(clusters != null) {
|
| for(ManagedObjectReference morCluster : clusters) {
|
| Object[] props = this.getProperties(morCluster, new String[] {"name"});
|
| System.out.println("cluster : " + props[0]);
|
|
|
| System.out.println("cluster hosts");
|
| ManagedObjectReference[] hosts = getClusterHostMors(morCluster);
|
| if(hosts != null) {
|
| for(ManagedObjectReference morHost : hosts) {
|
| Object[] props2 = this.getProperties(morHost, new String[] {"name"});
|
| System.out.println("host : " + props2[0]);
|
| }
|
| }
|
| }
|
| }
|
|
|
| System.out.println("Datacenter standalone hosts");
|
| ManagedObjectReference[] hosts = getDataCenterStandaloneHostMors(mor);
|
| if(hosts != null) {
|
| for(ManagedObjectReference morHost : hosts) {
|
| Object[] props = this.getProperties(morHost, new String[] {"name"});
|
| System.out.println("host : " + props[0]);
|
| }
|
| }
|
|
|
| System.out.println("Datacenter datastores");
|
| ManagedObjectReference[] stores = getDataCenterDatastoreMors(mor);
|
| if(stores != null) {
|
| for(ManagedObjectReference morStore : stores) {
|
| // data store name property does not work for some reason
|
| Object[] props = getProperties(morStore, new String[] {"info" });
|
|
|
| System.out.println(morStore.getType() + ": " + ((DatastoreInfo)props[0]).getName());
|
| }
|
| }
|
|
|
| System.out.println("Datacenter VMs");
|
| ManagedObjectReference[] vms = getDataCenterVMMors(mor);
|
| if(stores != null) {
|
| for(ManagedObjectReference morVm : vms) {
|
| Object[] props = this.getProperties(morVm, new String[] {"name"});
|
| System.out.println("VM name: " + props[0] + ", ref val: " + morVm.get_value());
|
| }
|
| }
|
| }
|
| }
|
| } catch(RuntimeFault e) {
|
| e.printStackTrace();
|
| } catch(RemoteException e) {
|
| e.printStackTrace();
|
| }
|
| }
|
|
|
| private void listInventoryFolders() {
|
| TraversalSpec folderTraversalSpec = new TraversalSpec();
|
| folderTraversalSpec.setName("folderTraversalSpec");
|
| folderTraversalSpec.setType("Folder");
|
| folderTraversalSpec.setPath("childEntity");
|
| folderTraversalSpec.setSkip(new Boolean(false));
|
| folderTraversalSpec.setSelectSet(
|
| new SelectionSpec [] { new SelectionSpec(null, null, "folderTraversalSpec")}
|
| );
|
|
|
| PropertySpec[] propSpecs = new PropertySpec[] { new PropertySpec() };
|
| propSpecs[0].setAll(new Boolean(false));
|
| propSpecs[0].setPathSet(new String[] { "name" });
|
| propSpecs[0].setType("ManagedEntity");
|
|
|
| PropertyFilterSpec filterSpec = new PropertyFilterSpec();
|
| filterSpec.setPropSet(propSpecs);
|
| filterSpec.setObjectSet(new ObjectSpec[] { new ObjectSpec() });
|
| filterSpec.getObjectSet(0).setObj(cb.getServiceConnection3().getRootFolder());
|
| filterSpec.getObjectSet(0).setSkip(new Boolean(false));
|
| filterSpec.getObjectSet(0).setSelectSet(
|
| new SelectionSpec[] { folderTraversalSpec }
|
| );
|
|
|
| try {
|
| ObjectContent[] objContent = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { filterSpec }
|
| );
|
| printContent(objContent);
|
| } catch (InvalidProperty e) {
|
| e.printStackTrace();
|
| } catch (RuntimeFault e) {
|
| e.printStackTrace();
|
| } catch (RemoteException e) {
|
| e.printStackTrace();
|
| }
|
| }
|
|
|
| private TraversalSpec getFolderRecursiveTraversalSpec() {
|
| SelectionSpec recurseFolders = new SelectionSpec();
|
| recurseFolders.setName("folder2childEntity");
|
|
|
| TraversalSpec folder2childEntity = new TraversalSpec();
|
| folder2childEntity.setType("Folder");
|
| folder2childEntity.setPath("childEntity");
|
| folder2childEntity.setName(recurseFolders.getName());
|
| folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders });
|
|
|
| return folder2childEntity;
|
| }
|
|
|
| private ManagedObjectReference[] getDataCenterMors() throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("Datacenter");
|
| pSpec.setPathSet(new String[] { "name"} );
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(cb.getServiceConnection3().getRootFolder());
|
| oSpec.setSkip(Boolean.TRUE);
|
| oSpec.setSelectSet(new SelectionSpec[] { getFolderRecursiveTraversalSpec() });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
|
|
| if(ocs != null) {
|
| ManagedObjectReference[] morDatacenters = new ManagedObjectReference[ocs.length];
|
| for(int i = 0; i < ocs.length; i++)
|
| morDatacenters[i] = ocs[i].getObj();
|
|
|
| return morDatacenters;
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getDataCenterVMMors(ManagedObjectReference morDatacenter) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("VirtualMachine");
|
| pSpec.setPathSet(new String[] { "name"} );
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(morDatacenter);
|
| oSpec.setSkip(Boolean.TRUE);
|
|
|
| TraversalSpec tSpec = new TraversalSpec();
|
| tSpec.setName("dc2VMFolder");
|
| tSpec.setType("Datacenter");
|
| tSpec.setPath("vmFolder");
|
| tSpec.setSelectSet(new SelectionSpec[] { getFolderRecursiveTraversalSpec() } );
|
|
|
| oSpec.setSelectSet(new SelectionSpec[] { tSpec });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
|
|
| if(ocs != null) {
|
| ManagedObjectReference[] morVMs = new ManagedObjectReference[ocs.length];
|
| for(int i = 0; i < ocs.length; i++)
|
| morVMs[i] = ocs[i].getObj();
|
|
|
| return morVMs;
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getDataCenterDatastoreMors(ManagedObjectReference morDatacenter) throws RuntimeFault, RemoteException {
|
| Object[] stores = getProperties(morDatacenter, new String[] { "datastore" });
|
| if(stores != null && stores.length == 1) {
|
| return ((ArrayOfManagedObjectReference)stores[0]).getManagedObjectReference();
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getDataCenterClusterMors(ManagedObjectReference morDatacenter) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("ClusterComputeResource");
|
| pSpec.setPathSet(new String[] { "name"} );
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(morDatacenter);
|
| oSpec.setSkip(Boolean.TRUE);
|
|
|
| TraversalSpec tSpec = new TraversalSpec();
|
| tSpec.setName("traversalHostFolder");
|
| tSpec.setType("Datacenter");
|
| tSpec.setPath("hostFolder");
|
| tSpec.setSkip(false);
|
| tSpec.setSelectSet(new SelectionSpec[] { getFolderRecursiveTraversalSpec() });
|
|
|
| oSpec.setSelectSet(new TraversalSpec[] { tSpec });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
|
|
| if(ocs != null) {
|
| ManagedObjectReference[] morDatacenters = new ManagedObjectReference[ocs.length];
|
| for(int i = 0; i < ocs.length; i++)
|
| morDatacenters[i] = ocs[i].getObj();
|
|
|
| return morDatacenters;
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getDataCenterStandaloneHostMors(ManagedObjectReference morDatacenter) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("ComputeResource");
|
| pSpec.setPathSet(new String[] { "name"} );
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(morDatacenter);
|
| oSpec.setSkip(Boolean.TRUE);
|
|
|
| TraversalSpec tSpec = new TraversalSpec();
|
| tSpec.setName("traversalHostFolder");
|
| tSpec.setType("Datacenter");
|
| tSpec.setPath("hostFolder");
|
| tSpec.setSkip(false);
|
| tSpec.setSelectSet(new SelectionSpec[] { getFolderRecursiveTraversalSpec() });
|
|
|
| oSpec.setSelectSet(new TraversalSpec[] { tSpec });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
|
|
| if(ocs != null) {
|
| List<ManagedObjectReference> listComputeResources = new ArrayList<ManagedObjectReference>();
|
| for(ObjectContent oc : ocs) {
|
| if(oc.getObj().getType().equalsIgnoreCase("ComputeResource"))
|
| listComputeResources.add(oc.getObj());
|
| }
|
|
|
| List<ManagedObjectReference> listHosts = new ArrayList<ManagedObjectReference>();
|
| for(ManagedObjectReference morComputeResource : listComputeResources) {
|
| ManagedObjectReference[] hosts = getComputeResourceHostMors(morComputeResource);
|
| if(hosts != null) {
|
| for(ManagedObjectReference host: hosts)
|
| listHosts.add(host);
|
| }
|
| }
|
|
|
| return listHosts.toArray(new ManagedObjectReference[0]);
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getComputeResourceHostMors(ManagedObjectReference morCompute) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("HostSystem");
|
| pSpec.setPathSet(new String[] { "name"} );
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(morCompute);
|
| oSpec.setSkip(true);
|
|
|
| TraversalSpec tSpec = new TraversalSpec();
|
| tSpec.setName("computeResource2Host");
|
| tSpec.setType("ComputeResource");
|
| tSpec.setPath("host");
|
| tSpec.setSkip(false);
|
| oSpec.setSelectSet(new TraversalSpec[] { tSpec });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
|
|
| if(ocs != null) {
|
| ManagedObjectReference[] morDatacenters = new ManagedObjectReference[ocs.length];
|
| for(int i = 0; i < ocs.length; i++)
|
| morDatacenters[i] = ocs[i].getObj();
|
|
|
| return morDatacenters;
|
| }
|
| return null;
|
| }
|
|
|
| private ManagedObjectReference[] getClusterHostMors(ManagedObjectReference morCluster) throws RuntimeFault, RemoteException {
|
| // ClusterComputeResource inherits from ComputeResource
|
| return getComputeResourceHostMors(morCluster);
|
| }
|
|
|
| private ObjectContent[] getDataCenterProperites(String[] properites) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("Datacenter");
|
| pSpec.setPathSet(properites );
|
|
|
| SelectionSpec recurseFolders = new SelectionSpec();
|
| recurseFolders.setName("folder2childEntity");
|
|
|
| TraversalSpec folder2childEntity = new TraversalSpec();
|
| folder2childEntity.setType("Folder");
|
| folder2childEntity.setPath("childEntity");
|
| folder2childEntity.setName(recurseFolders.getName());
|
| folder2childEntity.setSelectSet(new SelectionSpec[] { recurseFolders });
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(cb.getServiceConnection3().getRootFolder());
|
| oSpec.setSkip(Boolean.TRUE);
|
| oSpec.setSelectSet(new SelectionSpec[] { folder2childEntity });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| return cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
| }
|
|
|
| private void printContent(ObjectContent[] objContent) {
|
| if(objContent != null) {
|
| for(ObjectContent oc : objContent) {
|
| ManagedObjectReference mor = oc.getObj();
|
| DynamicProperty[] objProps = oc.getPropSet();
|
|
|
| System.out.println("Object type: " + mor.getType());
|
| if(objProps != null) {
|
| for(DynamicProperty objProp : objProps) {
|
| if(!objProp.getClass().isArray()) {
|
| System.out.println("\t" + objProp.getName() + "=" + objProp.getVal());
|
| } else {
|
| Object[] ipcary = (Object[])objProp.getVal();
|
| System.out.print("\t" + objProp.getName() + "=[");
|
| int i = 0;
|
| for(Object item : ipcary) {
|
| if (item.getClass().getName().indexOf("ManagedObjectReference") >= 0) {
|
| ManagedObjectReference imor = (ManagedObjectReference)item;
|
| System.out.print("(" + imor.getType() + "," + imor.get_value() + ")");
|
| } else {
|
| System.out.print(item);
|
| }
|
|
|
| if(i < ipcary.length - 1)
|
| System.out.print(", ");
|
| i++;
|
| }
|
|
|
| System.out.println("]");
|
| }
|
| }
|
| }
|
| }
|
| }
|
| }
|
|
|
| private void getProperites(ManagedObjectReference mor, Map<String, Object> properties) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType(mor.getType());
|
| pSpec.setPathSet(properties.keySet().toArray(new String[0]));
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(mor);
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] {pSpec} );
|
| pfSpec.setObjectSet(new ObjectSpec[] {oSpec} );
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] {pfSpec} );
|
|
|
| if(ocs != null) {
|
| for(ObjectContent oc : ocs) {
|
| DynamicProperty[] propSet = oc.getPropSet();
|
| if(propSet != null) {
|
| for(DynamicProperty prop : propSet) {
|
| properties.put(prop.getName(), prop.getVal());
|
| }
|
| }
|
| }
|
| }
|
| }
|
|
|
| private Object[] getProperties(ManagedObjectReference moRef, String[] properties) throws RuntimeFault, RemoteException {
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType(moRef.getType());
|
| pSpec.setPathSet(properties);
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| // Set the starting object
|
| oSpec.setObj(moRef);
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] {pSpec} );
|
| pfSpec.setObjectSet(new ObjectSpec[] {oSpec} );
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] {pfSpec} );
|
|
|
| Object[] ret = new Object[properties.length];
|
| if(ocs != null) {
|
| for(int i = 0; i< ocs.length; ++i) {
|
| ObjectContent oc = ocs[i];
|
| DynamicProperty[] dps = oc.getPropSet();
|
| if(dps != null) {
|
| for(int j = 0; j < dps.length; ++j) {
|
| DynamicProperty dp = dps[j];
|
| for(int p = 0; p < ret.length; ++p) {
|
| if(properties[p].equals(dp.getName())) {
|
| ret[p] = dp.getVal();
|
| }
|
| }
|
| }
|
| }
|
| }
|
| }
|
| return ret;
|
| }
|
|
|
| private void powerOnVm() throws Exception {
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-480");
|
|
|
| cb.getServiceConnection3().getService().powerOnVM_Task(morVm, null);
|
| }
|
|
|
| private void powerOffVm() throws Exception {
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-66");
|
|
|
| cb.getServiceConnection3().getService().powerOffVM_Task(morVm);
|
| }
|
|
|
| private void createSnapshot() throws Exception {
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-66");
|
| cb.getServiceConnection3().getService().createSnapshot_Task(morVm, "RunningSnapshotProg", "", false, false);
|
| }
|
|
|
| private void registerTemplate() throws Exception {
|
| ManagedObjectReference morFolder = new ManagedObjectReference();
|
| morFolder.setType("Folder");
|
| morFolder.set_value("group-v3");
|
|
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-48");
|
|
|
| System.out.println("Begin registerVM_Task");
|
| ManagedObjectReference taskmor = cb.getServiceConnection3().getService().registerVM_Task(
|
| morFolder, "[NFS datastore] Template-Fedora/Template-Fedora.vmtx", "Template-Fedora", true,
|
| null, morHost);
|
| System.out.println("End registerVM_Task");
|
|
|
| String result = cb.getServiceUtil3().waitForTask(taskmor);
|
| if (result.equalsIgnoreCase("Sucess")) {
|
| System.out.println("Registering The Virtual Machine ..........Done");
|
| } else {
|
| System.out.println("Some Exception While Registering The VM");
|
| }
|
| }
|
|
|
| private void createVmFromTemplate() throws Exception {
|
| VirtualMachineCloneSpec cloneSpec = new VirtualMachineCloneSpec();
|
|
|
| ManagedObjectReference morDatastore = new ManagedObjectReference();
|
| morDatastore.setType("Datastore");
|
| morDatastore.set_value("datastore-30");
|
|
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-48");
|
|
|
| ManagedObjectReference morPool = new ManagedObjectReference();
|
| morPool.setType("ResourcePool");
|
| morPool.set_value("resgroup-41");
|
|
|
| VirtualMachineRelocateSpec relocSpec = new VirtualMachineRelocateSpec();
|
| cloneSpec.setLocation(relocSpec);
|
| cloneSpec.setPowerOn(false);
|
| cloneSpec.setTemplate(false);
|
|
|
| relocSpec.setDatastore(morDatastore);
|
| relocSpec.setHost(morHost);
|
| relocSpec.setPool(morPool);
|
|
|
| ManagedObjectReference morTemplate = new ManagedObjectReference();
|
| morTemplate.setType("VirtualMachine");
|
| morTemplate.set_value("vm-76");
|
|
|
| ManagedObjectReference morFolder = new ManagedObjectReference();
|
| morFolder.setType("Folder");
|
| morFolder.set_value("group-v3");
|
|
|
| ManagedObjectReference cloneTask
|
| = cb.getServiceConnection3().getService().cloneVM_Task(morTemplate, morFolder,
|
| "Fedora-clone-test", cloneSpec);
|
|
|
| String status = cb.getServiceUtil3().waitForTask(cloneTask);
|
| if(status.equalsIgnoreCase("failure")) {
|
| System.out.println("Failure -: Virtual Machine cannot be cloned");
|
| }
|
|
|
| if(status.equalsIgnoreCase("sucess")) {
|
| System.out.println("Virtual Machine Cloned successfully.");
|
| }
|
| }
|
|
|
| private void addNic() throws Exception {
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-77");
|
|
|
| ManagedObjectReference morNetwork = new ManagedObjectReference();
|
| morNetwork.setType("DistributedVirtualPortgroup");
|
| morNetwork.set_value("dvportgroup-56");
|
|
|
| VirtualDeviceConfigSpec nicSpec = new VirtualDeviceConfigSpec();
|
| nicSpec.setOperation(VirtualDeviceConfigSpecOperation.add);
|
| VirtualEthernetCard nic = new VirtualPCNet32();
|
| VirtualEthernetCardNetworkBackingInfo nicBacking
|
| = new VirtualEthernetCardNetworkBackingInfo();
|
| nicBacking.setDeviceName("Adapter to dSwitch-vlan26");
|
| nicBacking.setNetwork(morNetwork);
|
|
|
| nic.setAddressType("generated");
|
| nic.setBacking(nicBacking);
|
| nic.setKey(4);
|
| nicSpec.setDevice(nic);
|
|
|
| VirtualMachineConfigSpec vmConfigSpec = new VirtualMachineConfigSpec();
|
| VirtualDeviceConfigSpec [] nicSpecArray = {nicSpec};
|
| vmConfigSpec.setDeviceChange(nicSpecArray);
|
|
|
| ManagedObjectReference tmor
|
| = cb.getServiceConnection3().getService().reconfigVM_Task(
|
| morVm, vmConfigSpec);
|
|
|
| String status = cb.getServiceUtil3().waitForTask(tmor);
|
| if(status.equalsIgnoreCase("failure")) {
|
| System.out.println("Failure -: Virtual Machine cannot be cloned");
|
| }
|
|
|
| if(status.equalsIgnoreCase("sucess")) {
|
| System.out.println("Virtual Machine Cloned successfully.");
|
| }
|
| }
|
|
|
| // add virtual NIC to vmkernel
|
| private void addNicToNetwork() throws Exception {
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-48");
|
|
|
| HostPortGroupSpec portgrp = new HostPortGroupSpec();
|
| portgrp.setName("VM Network vlan26");
|
|
|
| Object cmobj = cb.getServiceUtil3().getDynamicProperty(morHost, "configManager");
|
| HostConfigManager configMgr = (HostConfigManager)cmobj;
|
| ManagedObjectReference nwSystem = configMgr.getNetworkSystem();
|
|
|
| HostVirtualNicSpec vNicSpec = new HostVirtualNicSpec();
|
| HostIpConfig ipConfig = new HostIpConfig();
|
| ipConfig.setDhcp(false);
|
| ipConfig.setIpAddress("192.168.26.177");
|
| ipConfig.setSubnetMask("255.255.255.0");
|
|
|
| vNicSpec.setIp(ipConfig);
|
| vNicSpec.setPortgroup("VM Network vlan26");
|
|
|
| cb.getServiceConnection3().getService().addVirtualNic(nwSystem,
|
| "dvPortGroup-vlan26", vNicSpec);
|
| }
|
|
|
| private void createDatacenter() throws Exception {
|
| cb.getServiceConnection3().getService().createDatacenter(
|
| cb.getServiceConnection3().getRootFolder(),
|
| "cloud.dc.test");
|
| }
|
|
|
| private void getPropertyWithPath() throws Exception {
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-161");
|
|
|
| VirtualNicManagerNetConfig[] netConfigs = (VirtualNicManagerNetConfig[])cb.getServiceUtil3().getDynamicProperty(morHost, "config.virtualNicManagerInfo.netConfig");
|
| }
|
|
|
| private void getHostVMs() throws Exception {
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-48");
|
|
|
| PropertySpec pSpec = new PropertySpec();
|
| pSpec.setType("VirtualMachine");
|
| pSpec.setPathSet(new String[] { "name", "runtime.powerState", "config.template" });
|
|
|
| TraversalSpec host2VmTraversal = new TraversalSpec();
|
| host2VmTraversal.setType("HostSystem");
|
| host2VmTraversal.setPath("vm");
|
| host2VmTraversal.setName("host2VmTraversal");
|
|
|
| ObjectSpec oSpec = new ObjectSpec();
|
| oSpec.setObj(morHost);
|
| oSpec.setSkip(Boolean.TRUE);
|
| oSpec.setSelectSet(new SelectionSpec[] { host2VmTraversal });
|
|
|
| PropertyFilterSpec pfSpec = new PropertyFilterSpec();
|
| pfSpec.setPropSet(new PropertySpec[] { pSpec });
|
| pfSpec.setObjectSet(new ObjectSpec[] { oSpec });
|
|
|
| ObjectContent[] ocs = cb.getServiceConnection3().getService().retrieveProperties(
|
| cb.getServiceConnection3().getServiceContent().getPropertyCollector(),
|
| new PropertyFilterSpec[] { pfSpec });
|
| this.printContent(ocs);
|
| }
|
|
|
| private void testFT() throws Exception {
|
|
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-480");
|
|
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-470");
|
|
|
| System.out.println("Create secondary VM");
|
| ManagedObjectReference morTask = cb.getServiceConnection3().getService().createSecondaryVM_Task(morVm, morHost);
|
| String result = cb.getServiceUtil3().waitForTask(morTask);
|
|
|
| System.out.println("Create secondary VM resutl : " + result);
|
| }
|
|
|
| private void testFTEnable() throws Exception {
|
| ManagedObjectReference morVm = new ManagedObjectReference();
|
| morVm.setType("VirtualMachine");
|
| morVm.set_value("vm-480");
|
|
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-470");
|
|
|
| ManagedObjectReference morSecondaryVm = new ManagedObjectReference();
|
| morSecondaryVm.setType("VirtualMachine");
|
| morSecondaryVm.set_value("vm-485");
|
|
|
| System.out.println("Enable FT");
|
| ManagedObjectReference morTask = cb.getServiceConnection3().getService().enableSecondaryVM_Task(morVm,
|
| morSecondaryVm, morHost);
|
| String result = cb.getServiceUtil3().waitForTask(morTask);
|
|
|
| System.out.println("Enable FT resutl : " + result);
|
| }
|
|
|
| private void importOVF() throws Exception {
|
| ManagedObjectReference morHost = new ManagedObjectReference();
|
| morHost.setType("HostSystem");
|
| morHost.set_value("host-223");
|
|
|
| ManagedObjectReference morRp = new ManagedObjectReference();
|
| morRp.setType("ResourcePool");
|
| morRp.set_value("resgroup-222");
|
|
|
| ManagedObjectReference morDs = new ManagedObjectReference();
|
| morDs.setType("Datastore");
|
| morDs.set_value("datastore-30");
|
|
|
| ManagedObjectReference morVmFolder = new ManagedObjectReference();
|
| morVmFolder.setType("Folder");
|
| morVmFolder.set_value("group-v3");
|
|
|
| ManagedObjectReference morNetwork = new ManagedObjectReference();
|
| morNetwork.setType("Network");
|
| morNetwork.set_value("network-32");
|
|
|
| ManagedObjectReference morOvf = cb.getServiceConnection3().getServiceContent().getOvfManager();
|
|
|
| OvfCreateImportSpecParams importSpecParams = new OvfCreateImportSpecParams();
|
| importSpecParams.setHostSystem(morHost);
|
| importSpecParams.setLocale("US");
|
| importSpecParams.setEntityName("winxpsp3-ovf-deployed");
|
| importSpecParams.setDeploymentOption("");
|
| importSpecParams.setDiskProvisioning("thin");
|
|
|
| /*
|
| OvfNetworkMapping networkMapping = new OvfNetworkMapping();
|
| networkMapping.setName("VM Network");
|
| networkMapping.setNetwork(morNetwork); // network);
|
| importSpecParams.setNetworkMapping(new OvfNetworkMapping[] { networkMapping });
|
| */
|
| importSpecParams.setPropertyMapping(null);
|
|
|
| String ovfDescriptor = readOvfContent("C:\\research\\vmware\\winxpsp3-ovf\\winxpsp3-ovf.ovf");
|
| OvfCreateImportSpecResult ovfImportResult = cb.getServiceConnection3().getService().createImportSpec(
|
| morOvf, ovfDescriptor, morRp, morDs, importSpecParams);
|
|
|
| if(ovfImportResult != null) {
|
| long totalBytes = addTotalBytes(ovfImportResult);
|
|
|
| ManagedObjectReference morLease = cb.getServiceConnection3().getService().importVApp(morRp,
|
| ovfImportResult.getImportSpec(), morVmFolder, morHost);
|
|
|
| HttpNfcLeaseState state;
|
| for(;;) {
|
| state = (HttpNfcLeaseState)cb.getServiceUtil3().getDynamicProperty(morLease, "state");
|
| if(state == HttpNfcLeaseState.ready || state == HttpNfcLeaseState.error)
|
| break;
|
| }
|
|
|
| if(state == HttpNfcLeaseState.ready) {
|
| HttpNfcLeaseInfo httpNfcLeaseInfo = (HttpNfcLeaseInfo)cb.getServiceUtil3().getDynamicProperty(morLease, "info");
|
| HttpNfcLeaseDeviceUrl[] deviceUrls = httpNfcLeaseInfo.getDeviceUrl();
|
| long bytesAlreadyWritten = 0;
|
| for (HttpNfcLeaseDeviceUrl deviceUrl : deviceUrls) {
|
|
|
| String deviceKey = deviceUrl.getImportKey();
|
| for (OvfFileItem ovfFileItem : ovfImportResult.getFileItem()) {
|
| if (deviceKey.equals(ovfFileItem.getDeviceId())) {
|
| System.out.println("Import key==OvfFileItem device id: " + deviceKey);
|
| System.out.println("device URL: " + deviceUrl.getUrl());
|
|
|
| String absoluteFile = "C:\\research\\vmware\\winxpsp3-ovf\\" + ovfFileItem.getPath();
|
| String urlToPost = deviceUrl.getUrl().replace("*", "esxhost-1.lab.vmops.com");
|
|
|
| uploadVmdkFile(ovfFileItem.isCreate(), absoluteFile, urlToPost, bytesAlreadyWritten, totalBytes);
|
| bytesAlreadyWritten += ovfFileItem.getSize();
|
| System.out.println("Completed uploading the VMDK file:" + absoluteFile);
|
| }
|
| }
|
| }
|
| cb.getServiceConnection3().getService().httpNfcLeaseProgress(morLease, 100);
|
| cb.getServiceConnection3().getService().httpNfcLeaseComplete(morLease);
|
| }
|
| }
|
| }
|
|
|
| private static void uploadVmdkFile(boolean put, String diskFilePath, String urlStr, long bytesAlreadyWritten, long totalBytes) throws IOException {
|
| HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
|
| public boolean verify(String urlHostName, SSLSession session) {
|
| return true;
|
| }
|
| });
|
|
|
| HttpsURLConnection conn = (HttpsURLConnection) new URL(urlStr).openConnection();
|
|
|
| conn.setDoOutput(true);
|
| conn.setUseCaches(false);
|
|
|
| int CHUCK_LEN = 64*1024;
|
| conn.setChunkedStreamingMode(CHUCK_LEN);
|
| conn.setRequestMethod(put? "PUT" : "POST"); // Use a post method to write the file.
|
| conn.setRequestProperty("Connection", "Keep-Alive");
|
| conn.setRequestProperty("Content-Type", "application/x-vnd.vmware-streamVmdk");
|
| conn.setRequestProperty("Content-Length", Long.toString(new File(diskFilePath).length()));
|
| BufferedOutputStream bos = new BufferedOutputStream(conn.getOutputStream());
|
| BufferedInputStream diskis = new BufferedInputStream(new FileInputStream(diskFilePath));
|
| int bytesAvailable = diskis.available();
|
| int bufferSize = Math.min(bytesAvailable, CHUCK_LEN);
|
| byte[] buffer = new byte[bufferSize];
|
| long totalBytesWritten = 0;
|
| while (true) {
|
| int bytesRead = diskis.read(buffer, 0, bufferSize);
|
| if (bytesRead == -1)
|
| {
|
| System.out.println("Total bytes written: " + totalBytesWritten);
|
| break;
|
| }
|
| totalBytesWritten += bytesRead;
|
| bos.write(buffer, 0, bufferSize);
|
| bos.flush();
|
| System.out.println("Total bytes written: " + totalBytesWritten);
|
|
|
| /*
|
| int progressPercent = (int) (((bytesAlreadyWritten + totalBytesWritten) * 100) / totalBytes);
|
| leaseUpdater.setPercent(progressPercent);
|
| */
|
| }
|
| diskis.close();
|
| bos.flush();
|
| bos.close();
|
| conn.disconnect();
|
| }
|
|
|
| public static long addTotalBytes(OvfCreateImportSpecResult ovfImportResult) {
|
| OvfFileItem[] fileItemArr = ovfImportResult.getFileItem();
|
| long totalBytes = 0;
|
| if (fileItemArr != null) {
|
| for (OvfFileItem fi : fileItemArr) {
|
| printOvfFileItem(fi);
|
| totalBytes += fi.getSize();
|
| }
|
| }
|
| return totalBytes;
|
| }
|
|
|
| private static void printOvfFileItem(OvfFileItem fi) {
|
| System.out.println("================ OvfFileItem ================");
|
| System.out.println("chunkSize: " + fi.getChunkSize());
|
| System.out.println("create: " + fi.isCreate());
|
| System.out.println("deviceId: " + fi.getDeviceId());
|
| System.out.println("path: " + fi.getPath());
|
| System.out.println("size: " + fi.getSize());
|
| System.out.println("==============================================");
|
| }
|
|
|
| public static String readOvfContent(String ovfFilePath) throws IOException {
|
| StringBuffer strContent = new StringBuffer();
|
| BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(ovfFilePath)));
|
| String lineStr;
|
| while ((lineStr = in.readLine()) != null) {
|
| strContent.append(lineStr);
|
| }
|
|
|
| in.close();
|
| return strContent.toString();
|
| }
|
|
|
| public static String escapeSpecialChars(String str) {
|
| str = str.replaceAll("<", "<");
|
| return str.replaceAll(">", ">"); // do not escape "&" -> "&", "\"" -> """
|
| }
|
|
|
| public static void main(String[] args) throws Exception {
|
| setupLog4j();
|
| TestVMWare client = new TestVMWare();
|
|
|
| // skip certificate check
|
| System.setProperty("axis.socketSecureFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory");
|
|
|
| String serviceUrl = "https://" + args[0] + "/sdk/vimService";
|
|
|
| try {
|
| String[] params = new String[] {"--url", serviceUrl, "--username", args[1], "--password", args[2] };
|
|
|
| cb = ExtendedAppUtil.initialize("Connect", params);
|
| cb.connect();
|
| System.out.println("Connection Succesful.");
|
|
|
| // client.listInventoryFolders();
|
| // client.listDataCenters();
|
| // client.powerOnVm();
|
| // client.createSnapshot();
|
| // client.registerTemplate();
|
| // client.createVmFromTemplate();
|
| // client.addNic();
|
| // client.addNicToNetwork();
|
|
|
| // client.createDatacenter();
|
| // client.getPropertyWithPath();
|
| // client.getHostVMs();
|
| // client.testFT();
|
| // client.testFTEnable();
|
|
|
| client.importOVF();
|
|
|
| cb.disConnect();
|
| } catch (Exception e) {
|
| e.printStackTrace();
|
| }
|
| }
|
|
|
| public static class TrustAllManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
|
|
|
| public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
| return null;
|
| }
|
|
|
| public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
|
| return true;
|
| }
|
|
|
| public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
|
| return true;
|
| }
|
|
|
| public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
|
| throws java.security.cert.CertificateException {
|
| return;
|
| }
|
| public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
|
| throws java.security.cert.CertificateException {
|
| return;
|
| }
|
| }
|
| }
|
|
|