protected void service( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String morStr = request.getParameter(MOREF); String type = morStr.substring(0, morStr.indexOf(":")); String value = morStr.substring(morStr.indexOf(":")+1); ManagedObjectReference mor = new ManagedObjectReference(); mor.setType(type); mor.set_value(value); String sessionStr = "vmware_soap_session=\"" + request.getParameter(SESSION_ID) + "\""; System.out.println("morStr:" + morStr); System.out.println("serviceUrl" + request.getParameter(SERVICE_URL) ); System.out.println("session:" + sessionStr); ServiceInstance si = new ServiceInstance(new URL( request.getParameter(SERVICE_URL)),sessionStr, true); ManagedEntity me = MorUtil.createExactManagedEntity( si.getServerConnection(), mor); String name = me.getName(); out.println("name:" + name); out.println(DateFormat.getDateTimeInstance().format( new Date())); }
/** * Returns the vCenter folder of a virtual machine */ private void getVmFolder(String vmName, PrintWriter out) throws IOException { try { VirtualMachine vm = (VirtualMachine) getManagedEntity(vmName, "VirtualMachine"); String vmFolder = ""; if (vm == null) { LOG.warn("No vm named '" + vmName + "' found"); } else { ManagedEntity fd = vm.getParent(); while (fd instanceof Folder) { vmFolder = "/" + fd.getName() + vmFolder; fd = fd.getParent(); } } out.print(vmFolder); out.flush(); } catch (Exception ex) { LOG.error("An error occurred : " + ex.toString()); } }
log.trace("ManagedEntity " + e.getName() + " with type " + e.getClass() + " attempting to match " + name); if (e instanceof ComputeResource && e.getName().equals(name)){ result = (ComputeResource) e; break; if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break; else if (e instanceof Datacenter && e.getName().equals(fName)) { Datacenter datacenter = (Datacenter) e; nextFolder = datacenter.getHostFolder();
for (String fName : folderList) { for (ManagedEntity e : folderResult.getChildEntity()) { log.trace("ManagedEntity " + e.getName() + " with type " + e.getClass() + " attempting to match " + name); if (e instanceof Datacenter && e.getName().equals(name)){ result = (Datacenter) e; break; if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break; log.trace("ManagedEntity " + e.getName() + " with type " + e.getClass() + " attempting to match " + name); if (e instanceof Datacenter && e.getName().equals(name)){ result = (Datacenter) e; break;
logger.debug("Getting Managed entity custom attributes from VMware management server {} : ManagedEntity {} (ID: {})", request.getHostname(), managedEntity.getName(), managedEntity.getMOR().getVal()); Map<String,String> attribMap = getCustomAttributes(managedEntity); logger.debug("_[customAttributeName] provisioning attributes specified. Making sure Managed Entity {} has the requested custom attributes", managedEntity.getName()); boolean ok = true; final Map<String, String> customAttributes = request.getCustomAttributesMap(); String attribValue = attribMap.get(StringUtils.removeStart(keyName, "_")); if (attribValue == null) { logger.debug("No custom attribute named {} found for Managed Entity {}", keyName, managedEntity.getName()); ok = false; } else { String value = request.getOldValue(); if (key == null && value == null) { logger.debug("No custom attributes required for provisioning Managed Entity {}.", managedEntity.getName()); return true; logger.error("Not provisioning Manged Entiry {}: Using old key/value parameters, but either 'key' or 'value' parameter isn't set.", managedEntity.getName()); return false; logger.debug("No custom attributes named {} found for Managed Entity {}", key, managedEntity.getName()); return false;
jObject.addProperty("{#ESXHOST}", h.getName()); jObject.addProperty("{#UUID}", hd.getUuid()); jObject.addProperty("{#CLUSTER}", h.getParent().getName()); jArray.add(jObject);
public static void main(String[] args) throws Exception { ServiceInstance si = new ServiceInstance(new URL("https://server/sdk"), "root", "password", true); Folder rootFolder = si.getRootFolder(); System.out.println("============ Data Centers ============"); ManagedEntity[] dcs = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"Datacenter", "name" }, }, true); for(int i=0; i<dcs.length; i++) { System.out.println("Datacenter["+i+"]=" + dcs[i].getName()); } System.out.println("\n============ Virtual Machines ============"); ManagedEntity[] vms = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"VirtualMachine", "name" }, }, true); for(int i=0; i<vms.length; i++) { System.out.println("vm["+i+"]=" + vms[i].getName()); } System.out.println("\n============ Hosts ============"); ManagedEntity[] hosts = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"HostSystem", "name" }, }, true); for(int i=0; i<hosts.length; i++) { System.out.println("host["+i+"]=" + hosts[i].getName()); } si.getServerConnection().logout(); }
logger.debug("Getting Managed entity custom attributes from VMware management server {} : ManagedEntity {} (ID: {})", request.getHostname(), managedEntity.getName(), managedEntity.getMOR().getVal()); Map<String,String> attribMap = getCustomAttributes(managedEntity); logger.debug("_[customAttributeName] provisioning attributes specified. Making sure Managed Entity {} has the requested custom attributes", managedEntity.getName()); boolean ok = true; final Map<String, String> customAttributes = request.getCustomAttributesMap(); String attribValue = attribMap.get(StringUtils.removeStart(keyName, "_")); if (attribValue == null) { logger.debug("No custom attribute named {} found for Managed Entity {}", keyName, managedEntity.getName()); ok = false; } else { String value = request.getOldValue(); if (key == null && value == null) { logger.debug("No custom attributes required for provisioning Managed Entity {}.", managedEntity.getName()); return true; logger.error("Not provisioning Manged Entiry {}: Using old key/value parameters, but either 'key' or 'value' parameter isn't set.", managedEntity.getName()); return false; logger.debug("No custom attributes named {} found for Managed Entity {}", key, managedEntity.getName()); return false;
public static void main(String[] args) throws Exception { ServiceInstance si = SampleUtil.createServiceInstance(); Folder rootFolder = si.getRootFolder(); System.out.println("============ Data Centers ============"); ManagedEntity[] dcs = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"Datacenter", "name" }, }, true); for(int i=0; i<dcs.length; i++) { System.out.println("Datacenter["+i+"]=" + dcs[i].getName()); } System.out.println("\n============ Virtual Machines ============"); ManagedEntity[] vms = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"VirtualMachine", "name" }, }, true); for(int i=0; i<vms.length; i++) { System.out.println("vm["+i+"]=" + vms[i].getName()); } System.out.println("\n============ Hosts ============"); ManagedEntity[] hosts = new InventoryNavigator(rootFolder).searchManagedEntities( new String[][] { {"HostSystem", "name" }, }, true); for(int i=0; i<hosts.length; i++) { System.out.println("host["+i+"]=" + hosts[i].getName()); } si.getServerConnection().logout(); }
public static void main(String[] args) throws Exception { String urlStr ="http://dev:8000/vmAction.cgi?cmd=powerOn&moref=VirtualMachine:16&sessionId=9241E7B8-A37B-4264-A8D1-945628F9E0D6&locale=en&serviceUrl=https://localhost/sdk"; Map<String, String> kvPairs = parseURL(urlStr); String morStr = kvPairs.get(MOREF); String type = morStr.substring(0, morStr.indexOf(":")); String value = morStr.substring(morStr.indexOf(":")+1); ManagedObjectReference mor = new ManagedObjectReference(); mor.setType(type); mor.set_value(value); String sesssionStr = "vmware_soap_session=\"" + kvPairs.get(SESSION_ID) + "\""; ServiceInstance si = new ServiceInstance(new URL(kvPairs.get(SERVICE_URL)),sesssionStr, true); ManagedEntity me = MorUtil.createExactManagedEntity(si.getServerConnection(), mor); String name = me.getName(); System.out.println("name:" + name); if(me instanceof VirtualMachine) { Task task = ((VirtualMachine)me).powerOffVM_Task(); task.waitForMe(); } // si.getServerConnection().logout(); if you get access via sessionID, pls don't log out... }
public static void main(String[] args) throws Exception { String urlStr ="http://dev:8000/vmAction.cgi?cmd=powerOn&moref=VirtualMachine:16&sessionId=9241E7B8-A37B-4264-A8D1-945628F9E0D6&locale=en&serviceUrl=https://localhost/sdk"; Map<String, String> kvPairs = parseURL(urlStr); String morStr = kvPairs.get(MOREF); String type = morStr.substring(0, morStr.indexOf(":")); String value = morStr.substring(morStr.indexOf(":")+1); ManagedObjectReference mor = new ManagedObjectReference(); mor.setType(type); mor.set_value(value); String sesssionStr = "vmware_soap_session=\"" + kvPairs.get(SESSION_ID) + "\""; ServiceInstance si = new ServiceInstance(new URL(kvPairs.get(SERVICE_URL)),sesssionStr, true); ManagedEntity me = MorUtil.createExactManagedEntity(si.getServerConnection(), mor); String name = me.getName(); System.out.println("name:" + name); if(me instanceof VirtualMachine) { Task task = ((VirtualMachine)me).powerOffVM_Task(); task.waitForMe(); } // si.getServerConnection().logout(); if you get access via sessionID, pls don't log out... }
public Datacenter getDatacenter(Path path) throws RemoteException { Datacenter result = null; String name = path.getDatacenterName(); Folder root = serviceInstance.getRootFolder(); for (ManagedEntity e : root.getChildEntity()) { if (e instanceof Datacenter && e.getName().equals(name)) { result = (Datacenter) e; break; } } if (result == null) { log.warn("could not find datacenter at beginning of path " + path.toString()); throw new NotFound(); } return result; }
jObject.addProperty("{#DATASTORE}", d.getName()); jObject.addProperty("{#UUID}", dsInfo.url.substring(19, dsInfo.url.length() - 1) ); jObject.addProperty("{#CLUSTER}", d.getParent().getName()); jObject.addProperty("{#LOCAL}", !d.getSummary().multipleHostAccess); jObject.addProperty("{#NAA}", naaName.getName()); jObject.addProperty("{#DATASTORE}", d.getName()); jObject.addProperty("{#UUID}", dsInfo.getVmfs().getUuid()); jObject.addProperty("{#CLUSTER}", d.getParent().getName()); jObject.addProperty("{#LOCAL}", !d.getSummary().multipleHostAccess); jObject.addProperty("{#NAA}", naaName[0].getDiskName());
for (String fName : folderNames) { for (ManagedEntity e : result.getChildEntity()) { log.trace("Searching ManagedEntity " + e.getName() + " for fname " + fName); if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break; else if (e instanceof Datacenter && e.getName().equals(fName)) { Datacenter datacenter = (Datacenter) e; nextFolder = datacenter.getVmFolder(); if (!skippableFolders.contains(fName)){ for (ManagedEntity e : result.getChildEntity()) { log.trace("Searching ManagedEntity " + e.getName() + " for fname " + fName); if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break;
/** * Gets the custom attributes. * * @param entity the entity * @return the custom attributes */ private Map<String,String> getCustomAttributes(ManagedEntity entity) { final Map<String,String> attributes = new TreeMap<String,String>(); logger.debug("Getting custom attributes from VMware management server {} : ManagedEntity {} (ID: {})", request.getHostname(), entity.getName(), entity.getMOR().getVal()); CustomFieldDef[] defs = new CustomFieldDef[0]; try { defs = entity.getAvailableField(); } catch (RemoteException e) { logger.warn("Cannot fetch attributes for entity '{}' (ID: {})", entity.getName(), entity.getMOR().getVal()); logger.warn("Exception thrown while fetching attributes: {}", e); return attributes; } CustomFieldValue[] values = entity.getCustomValue(); for (int i = 0; defs != null && i < defs.length; i++) { String key = defs[i].getName(); int targetIndex = defs[i].getKey(); for (int j = 0; values != null && j < values.length; j++) { if (targetIndex == values[j].getKey()) { attributes.put(key, ((CustomFieldStringValue) values[j]).getValue()); } } } return attributes; }
for (String fName : folderNames) { for (ManagedEntity e : result.getChildEntity()) { log.trace("Searching ManagedEntity " + e.getName() + " for fname " + fName); if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break; else if (e instanceof Datacenter && e.getName().equals(fName)) { Datacenter datacenter = (Datacenter) e; nextFolder = datacenter.getVmFolder(); if (!skippableFolders.contains(fName)){ for (ManagedEntity e : result.getChildEntity()) { log.trace("Searching ManagedEntity " + e.getName() + " for fname " + fName); if (e instanceof Folder && e.getName().equals(fName)) { nextFolder = (Folder) e; break;
/** * Gets the custom attributes. * * @param entity the entity * @return the custom attributes */ private Map<String,String> getCustomAttributes(ManagedEntity entity) { final Map<String,String> attributes = new TreeMap<String,String>(); logger.debug("Getting custom attributes from VMware management server {} : ManagedEntity {} (ID: {})", request.getHostname(), entity.getName(), entity.getMOR().getVal()); CustomFieldDef[] defs = new CustomFieldDef[0]; try { defs = entity.getAvailableField(); } catch (RemoteException e) { logger.warn("Cannot fetch attributes for entity '{}' (ID: {})", entity.getName(), entity.getMOR().getVal()); logger.warn("Exception thrown while fetching attributes: {}", e); return attributes; } CustomFieldValue[] values = entity.getCustomValue(); for (int i = 0; defs != null && i < defs.length; i++) { String key = defs[i].getName(); int targetIndex = defs[i].getKey(); for (int j = 0; values != null && j < values.length; j++) { if (targetIndex == values[j].getKey()) { attributes.put(key, ((CustomFieldStringValue) values[j]).getValue()); } } } return attributes; }
public VirtualMachine fetchVmForPath(Path path) throws RemoteException { VirtualMachine result = null; Folder folder = fetchFolder(path.getParent()); String targetName = path.getName(); log.debug("looking for vm " + targetName + " in folder " + path.getParent().toString()); // find template for (ManagedEntity e : folder.getChildEntity()) { if (e instanceof VirtualMachine && e.getName().equals(targetName)) { VirtualMachine vmTemplate = (VirtualMachine) e; result = vmTemplate; break; } } if (result == null) { throw new NotFound(); } return result; }
public VirtualMachine fetchOriginalVm(Path path, boolean isTemplate) throws RemoteException { VirtualMachine result = null; Folder folder = fetchFolder(path.getParent()); String targetName = path.getName(); // find template for (ManagedEntity e : folder.getChildEntity()) { if (e instanceof VirtualMachine && e.getName().equals(targetName)) { VirtualMachine vmTemplate = (VirtualMachine) e; if (vmTemplate.getConfig().isTemplate() == isTemplate) { result = vmTemplate; break; } } } if (result == null) { throw new NotFound(); } return result; }
requisitionNode.setNodeLabel(managedEntity.getName()); logger.debug("Start primary interface search for managed entity '{}' (ID: {})", managedEntity.getName(), managedEntity.getMOR().getVal()); vmwareTopologyInfo.append(parentEntity.getMOR().getVal() + "/" + URLEncoder.encode(parentEntity.getName(), StandardCharsets.UTF_8.name())); } else { logger.warn("Can't add topologyInformation because either the parentEntity or the MOR is null for " + managedEntity.getName());