/** * Deletes a managed object and waits for the delete operation to complete * * @param vimPort * @param serviceContent * @param mor */ public static boolean deleteManagedEntity(VimPortType vimPort, ServiceContent serviceContent, ManagedObjectReference mor) { WaitForValues waitForValues = new WaitForValues(vimPort, serviceContent); System.out.println("Deleting : [" + mor.getValue() + "]"); try { ManagedObjectReference taskmor = vimPort.destroyTask(mor); if (waitForValues.getTaskResultAfterDone(taskmor)) { System.out.println("Successful delete of Managed Entity - [" + mor.getValue() + "]" + " and Entity Type - [" + mor.getType() + "]"); return true; } else { System.out .println("Unable to delete : [" + mor.getValue() + "]"); return false; } } catch (Exception e) { System.out.println("Unable to delete : [" + mor.getValue() + "]"); System.out.println("Reason :" + e.getLocalizedMessage()); return false; } }
public static boolean createSnapshot(VimPortType vimPort, ServiceContent serviceContent, ManagedObjectReference vmMor, String snapshotname, String description) { WaitForValues waitForValues = new WaitForValues(vimPort, serviceContent); System.out.println("Taking snapshot : [" + snapshotname + "]"); try { ManagedObjectReference taskMor = vimPort.createSnapshotTask(vmMor, snapshotname, description, false, false); if (waitForValues.getTaskResultAfterDone(taskMor)) { System.out.println("Snapshot - [" + snapshotname + "] Creation Successful"); return true; } else { System.out.println( "Snapshot - [" + snapshotname + "] Creation Failed"); return false; } } catch (Exception e) { System.out.println( "Snapshot - [" + snapshotname + "] Creation Failed"); System.out.println("Reason :" + e.getLocalizedMessage()); return false; } }
/** * Get access to the service content * * @param vimPortType * @return {@link ServiceContent} * @throws RuntimeFaultFaultMsg */ public static ServiceContent getServiceContent(VimPortType vimPortType) throws RuntimeFaultFaultMsg { // get the service content ManagedObjectReference serviceInstance = new ManagedObjectReference(); serviceInstance.setType("ServiceInstance"); serviceInstance.setValue("ServiceInstance"); return vimPortType.retrieveServiceContent(serviceInstance); }
/** * Get the required properties of the specified object. * * @param vimPort * @param serviceContent * @param moRef * @param type * @param properties * @return * @throws RuntimeFaultFaultMsg * @throws InvalidPropertyFaultMsg */ public static List<DynamicProperty> getProperties(VimPortType vimPort, ServiceContent serviceContent, ManagedObjectReference moRef, String type, List<String> properties) throws RuntimeFaultFaultMsg, InvalidPropertyFaultMsg { // Create Property Spec PropertySpec propertySpec = new PropertySpec(); propertySpec.setAll(false); propertySpec.setType(type); propertySpec.getPathSet().addAll(properties); // Now create Object Spec ObjectSpec objectSpec = new ObjectSpec(); objectSpec.setObj(moRef); objectSpec.setSkip(false); // Create PropertyFilterSpec using the PropertySpec and ObjectPec // created above. PropertyFilterSpec propertyFilterSpec = new PropertyFilterSpec(); propertyFilterSpec.getPropSet().add(propertySpec); propertyFilterSpec.getObjectSet().add(objectSpec); List<PropertyFilterSpec> listpfs = new ArrayList<PropertyFilterSpec>(1); listpfs.add(propertyFilterSpec); List<ObjectContent> listobjcontent = VimUtil .retrievePropertiesAllObjects(vimPort, serviceContent.getPropertyCollector(), listpfs); assert listobjcontent != null && listobjcontent.size() > 0; ObjectContent contentObj = listobjcontent.get(0); List<DynamicProperty> objList = contentObj.getPropSet(); return objList; }
/** * Uses the new RetrievePropertiesEx method to emulate the now deprecated * RetrieveProperties method * * @param propertyFilterSpecList * @return list of object content * @throws Exception */ private static List<ObjectContent> retrievePropertiesAllObjects(ConnectionResources connectionResources, List<PropertyFilterSpec> propertyFilterSpecList) throws RuntimeFaultFaultMsg, InvalidPropertyFaultMsg { VimPortType vimPort = connectionResources.getVimPortType(); ManagedObjectReference serviceInstance = connectionResources.getServiceInstance(); ServiceContent serviceContent = vimPort.retrieveServiceContent(serviceInstance); ManagedObjectReference propertyCollectorReference = serviceContent.getPropertyCollector(); RetrieveOptions propertyObjectRetrieveOptions = new RetrieveOptions(); List<ObjectContent> objectContentList = new ArrayList<>(); RetrieveResult results = vimPort.retrievePropertiesEx(propertyCollectorReference, propertyFilterSpecList, propertyObjectRetrieveOptions); if (results != null && results.getObjects() != null && !results.getObjects().isEmpty()) { objectContentList.addAll(results.getObjects()); } String token = null; if (results != null && results.getToken() != null) { token = results.getToken(); } while (token != null && !token.isEmpty()) { results = vimPort.continueRetrievePropertiesEx(propertyCollectorReference, token); token = null; if (results != null) { token = results.getToken(); if (results.getObjects() != null && !results.getObjects().isEmpty()) { objectContentList.addAll(results.getObjects()); } } } return objectContentList; }
/** * @return Service instance content */ public ServiceContent getServiceContent() { try { return vimPort.retrieveServiceContent(svcInstRef); } catch (RuntimeFaultFaultMsg e) { } return null; }
public ServiceConnection(VimPortType service, ServiceContent content) { this.service = service; this.content = content; }
/** * Establish a connection to the vCenter. */ public void connect() throws Exception { // FIXME what to do? HostnameVerifier hv = new HostnameVerifier() { @Override public boolean verify(String urlHostName, SSLSession session) { return true; } }; int numFailedLogins = 0; boolean repeatLogin = true; while (repeatLogin) { try { HttpsURLConnection.setDefaultHostnameVerifier(hv); VimService vimService = new VimService(); VimPortType vimPort = vimService.getVimPort(); Map<String, Object> ctxt = ((BindingProvider) vimPort) .getRequestContext(); ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url); ctxt.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE); ManagedObjectReference morSvcInstance = new ManagedObjectReference(); morSvcInstance.setType("ServiceInstance"); morSvcInstance.setValue("ServiceInstance"); ServiceContent serviceContent = vimPort .retrieveServiceContent(morSvcInstance); vimPort.login(serviceContent.getSessionManager(), user, password, null); connection = new ServiceConnection(vimPort, serviceContent); LOG.debug("Established connection to vSphere. URL: " + url + ", UserId: " + user); repeatLogin = false; } catch (Exception e) { LOG.error("Failed to establish connection to vSphere. URL: " + url + ", UserId: " + user, e); if (numFailedLogins > 2) { throw e; } numFailedLogins++; repeatLogin = true; try { Thread.sleep(3000); } catch (@SuppressWarnings("unused") InterruptedException ex) { Thread.currentThread().interrupt(); } } } }
@Override public ServiceContent getServiceContent() { return this.serviceContent; }
protected ServiceContent getServiceContent() { return this.connection.getServiceContent(); }
public WaitForValues(VimPortType vimPort, ServiceContent serviceContent) { this.vimPort = vimPort; this.serviceContent = serviceContent; }
public VmVappPowerOps(VimPortType vimPort, ServiceContent serviceContent) { this.vimPort = vimPort; this.serviceContent = serviceContent; this.waitForValues = new WaitForValues(vimPort, serviceContent); }
/** * Retrieves the list of hosts of the given cluster. * * @param vimPort * vimPort * @param serviceContent * serviceContent * @param cluster * cluster * @return the list of hosts of the clusters * @throws InvalidPropertyFaultMsg * @throws RuntimeFaultFaultMsg */ public static List<ManagedObjectReference> getHosts(VimPortType vimPort, ServiceContent serviceContent, ManagedObjectReference cluster) throws InvalidPropertyFaultMsg, RuntimeFaultFaultMsg { PropertySpec hostPropSpec = new PropertySpec(); hostPropSpec.setType("HostSystem"); hostPropSpec.setAll(false); hostPropSpec.getPathSet().addAll(Collections.<String>emptyList()); TraversalSpec hostTSpec = new TraversalSpec(); hostTSpec.setType("ComputeResource"); hostTSpec.setPath("host"); hostTSpec.setName("hosts"); final SelectionSpec selectionSpec = new SelectionSpec(); selectionSpec.setName(hostTSpec.getName()); hostTSpec.getSelectSet().add(selectionSpec); List<ObjectSpec> ospecList = new ArrayList<>(); ObjectSpec ospec = new ObjectSpec(); ospec.setObj(cluster); ospec.setSkip(true); ospec.getSelectSet().addAll(Arrays.asList(hostTSpec)); ospecList.add(ospec); PropertyFilterSpec propertyFilterSpec = new PropertyFilterSpec(); propertyFilterSpec.getPropSet().addAll(Arrays.asList(hostPropSpec)); propertyFilterSpec.getObjectSet().addAll(ospecList); List<PropertyFilterSpec> listpfs = new ArrayList<>(1); listpfs.add(propertyFilterSpec); List<ObjectContent> listObjContent = VimUtil .retrievePropertiesAllObjects(vimPort, serviceContent.getPropertyCollector(), listpfs); List<ManagedObjectReference> hosts = new ArrayList<>(); if (listObjContent != null) { for (ObjectContent oc : listObjContent) { hosts.add(oc.getObj()); } } return hosts; }
/** * Retrieves the vm managed object reference for the specified vm name using * the vim port type. * * @param vimPortType * @param serviceContent * @param vmname * @return * @throws NotFoundFaultMsg * @throws RuntimeFaultFaultMsg * @throws InvalidPropertyFaultMsg */ public static ManagedObjectReference getVM(VimPortType vimPortType, ServiceContent serviceContent, String vmname) throws NotFoundFaultMsg, InvalidPropertyFaultMsg, RuntimeFaultFaultMsg { ManagedObjectReference propCollectorRef = serviceContent .getPropertyCollector(); ManagedObjectReference rootFolderRef = serviceContent.getRootFolder(); ManagedObjectReference retVmRef = null; TraversalSpec tSpec = getVMTraversalSpec(); PropertySpec propertySpec = new PropertySpec(); propertySpec.setAll(Boolean.FALSE); propertySpec.getPathSet().add("name"); propertySpec.setType("VirtualMachine"); ObjectSpec objectSpec = new ObjectSpec(); objectSpec.setObj(rootFolderRef); objectSpec.setSkip(Boolean.TRUE); objectSpec.getSelectSet().add(tSpec); PropertyFilterSpec propertyFilterSpec = new PropertyFilterSpec(); propertyFilterSpec.getPropSet().add(propertySpec); propertyFilterSpec.getObjectSet().add(objectSpec); List<PropertyFilterSpec> listpfs = new ArrayList<PropertyFilterSpec>(1); listpfs.add(propertyFilterSpec); List<ObjectContent> listobjcont = retrievePropertiesAllObjects( vimPortType, propCollectorRef, listpfs); if (listobjcont != null) { for (ObjectContent oc : listobjcont) { ManagedObjectReference mr = oc.getObj(); String vmnm = null; List<DynamicProperty> dps = oc.getPropSet(); if (dps != null) { for (DynamicProperty dp : dps) { vmnm = (String) dp.getVal(); } } if (vmnm != null && vmnm.equals(vmname)) { retVmRef = mr; break; } } } if (retVmRef == null) { throw new NotFoundFaultMsg("VM Not Found - " + vmname, new NotFound()); } return retVmRef; }
/** * Getting the MOREF of the entity. */ public static ManagedObjectReference getEntityByName( VimPortType vimPortType, ServiceContent serviceContent, String entityName, String entityType) { ManagedObjectReference propCollectorRef = serviceContent .getPropertyCollector(); ManagedObjectReference rootFolderRef = serviceContent.getRootFolder(); ManagedObjectReference retVal = null; try { // Create Property Spec PropertySpec propertySpec = new PropertySpec(); propertySpec.setAll(Boolean.FALSE); propertySpec.setType(entityType); propertySpec.getPathSet().add("name"); // Now create Object Spec ObjectSpec objectSpec = new ObjectSpec(); objectSpec.setObj(rootFolderRef); objectSpec.setSkip(Boolean.TRUE); objectSpec.getSelectSet().addAll(Arrays.asList(buildTraversal())); // Create PropertyFilterSpec using the PropertySpec and ObjectPec // created above. PropertyFilterSpec propertyFilterSpec = new PropertyFilterSpec(); propertyFilterSpec.getPropSet().add(propertySpec); propertyFilterSpec.getObjectSet().add(objectSpec); List<PropertyFilterSpec> listpfs = new ArrayList<PropertyFilterSpec>(1); listpfs.add(propertyFilterSpec); List<ObjectContent> listobjcont = retrievePropertiesAllObjects( vimPortType, propCollectorRef, listpfs); if (listobjcont != null) { for (ObjectContent oc : listobjcont) { if (oc.getPropSet().get(0).getVal().equals(entityName)) { retVal = oc.getObj(); break; } } } } catch (Exception e) { e.printStackTrace(); } return retVal; }
public ServiceContent getServiceContent() { return this.serviceContent; }
private ManagedObjectReference getOvfManager(final ConnectionResources connectionResources) throws RuntimeFaultFaultMsg { final VimPortType vimPort = connectionResources.getVimPortType(); final ManagedObjectReference serviceInstance = connectionResources.getServiceInstance(); final ServiceContent serviceContent = vimPort.retrieveServiceContent(serviceInstance); return serviceContent.getOvfManager(); }
public ServiceContent getServiceContent() { return serviceContent; }
public ServiceContent getServiceContent() { return _vimClient.getServiceContent(); }
/** * Establishes session with the virtual center server. * * @throws Exception * the exception */ public void connect(String url, String userName, String password) throws Exception { svcInstRef.setType(SVC_INST_NAME); svcInstRef.setValue(SVC_INST_NAME); vimPort = vimService.getVimPort(); Map<String, Object> ctxt = ((BindingProvider)vimPort).getRequestContext(); ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url); ctxt.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true); ctxt.put("com.sun.xml.internal.ws.request.timeout", vCenterSessionTimeout); ctxt.put("com.sun.xml.internal.ws.connect.timeout", vCenterSessionTimeout); ServiceContent serviceContent = vimPort.retrieveServiceContent(svcInstRef); // Extract a cookie. See vmware sample program com.vmware.httpfileaccess.GetVMFiles @SuppressWarnings("unchecked") Map<String, List<String>> headers = (Map<String, List<String>>)((BindingProvider)vimPort).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS); List<String> cookies = headers.get("Set-cookie"); vimPort.login(serviceContent.getSessionManager(), userName, password, null); if (cookies == null) { // Get the cookie from the response header. See vmware sample program com.vmware.httpfileaccess.GetVMFiles @SuppressWarnings("unchecked") Map<String, List<String>> responseHeaders = (Map<String, List<String>>)((BindingProvider)vimPort).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS); cookies = responseHeaders.get("Set-cookie"); if (cookies == null) { String msg = "Login successful, but failed to get server cookies from url :[" + url + "]"; s_logger.error(msg); throw new Exception(msg); } } String cookieValue = cookies.get(0); StringTokenizer tokenizer = new StringTokenizer(cookieValue, ";"); cookieValue = tokenizer.nextToken(); String pathData = "$" + tokenizer.nextToken(); serviceCookie = "$Version=\"1\"; " + cookieValue + "; " + pathData; isConnected = true; }
VMwareConnection(VimPortType vimPortType, ServiceContent serviceContent) { _vimPortType = vimPortType; _serviceContent = serviceContent; }
ServiceContent getServiceContent() { return _serviceContent; }
public static VMwareConnection getVMwareConnection(LoginInfo loginInfo) throws Exception { trustAllHttpsCertificates(); HostnameVerifier hv = new HostnameVerifier() { @Override public boolean verify(String urlHostName, SSLSession session) { return true; } }; HttpsURLConnection.setDefaultHostnameVerifier(hv); ManagedObjectReference serviceInstanceRef = new ManagedObjectReference(); final String serviceInstanceName = "ServiceInstance"; serviceInstanceRef.setType(serviceInstanceName); serviceInstanceRef.setValue(serviceInstanceName); VimService vimService = new VimService(); VimPortType vimPortType = vimService.getVimPort(); Map<String, Object> ctxt = ((BindingProvider)vimPortType).getRequestContext(); ctxt.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://" + loginInfo.getHost() + "/sdk"); ctxt.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true); ServiceContent serviceContent = vimPortType.retrieveServiceContent(serviceInstanceRef); vimPortType.login(serviceContent.getSessionManager(), loginInfo.getUsername(), loginInfo.getPassword(), null); return new VMwareConnection(vimPortType, serviceContent); }
/** * Returns the service content of the connection. * * @return the service content */ public ServiceContent getServiceContent() { return content; }
ServiceContent getServiceContent();