diff --git a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareClient.java b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareClient.java index 27d088af159..b2de2167596 100644 --- a/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareClient.java +++ b/vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareClient.java @@ -152,13 +152,26 @@ public class VmwareClient { @SuppressWarnings("unchecked") Map> headers = (Map>)((BindingProvider)vimPort).getResponseContext().get(MessageContext.HTTP_RESPONSE_HEADERS); List cookies = headers.get("Set-cookie"); + + vimPort.login(serviceContent.getSessionManager(), userName, password, null); + + if (cookies == null) { + @SuppressWarnings("unchecked") + Map> responseHeaders = (Map>)((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; - vimPort.login(serviceContent.getSessionManager(), userName, password, null); isConnected = true; } @@ -577,41 +590,48 @@ public class VmwareClient { return null; } - // Create PropertySpecs - PropertySpec pSpec = new PropertySpec(); - pSpec.setType(type); - pSpec.setAll(false); - pSpec.getPathSet().add("name"); + try { + // Create PropertySpecs + PropertySpec pSpec = new PropertySpec(); + pSpec.setType(type); + pSpec.setAll(false); + pSpec.getPathSet().add("name"); - ObjectSpec oSpec = new ObjectSpec(); - oSpec.setObj(root); - oSpec.setSkip(false); - oSpec.getSelectSet().addAll(constructCompleteTraversalSpec()); + ObjectSpec oSpec = new ObjectSpec(); + oSpec.setObj(root); + oSpec.setSkip(false); + oSpec.getSelectSet().addAll(constructCompleteTraversalSpec()); - PropertyFilterSpec spec = new PropertyFilterSpec(); - spec.getPropSet().add(pSpec); - spec.getObjectSet().add(oSpec); - List specArr = new ArrayList(); - specArr.add(spec); + PropertyFilterSpec spec = new PropertyFilterSpec(); + spec.getPropSet().add(pSpec); + spec.getObjectSet().add(oSpec); + List specArr = new ArrayList(); + specArr.add(spec); - List ocary = vimPort.retrieveProperties(getPropCol(), specArr); + ManagedObjectReference propCollector = getPropCol(); + List ocary = vimPort.retrieveProperties(propCollector, specArr); - if (ocary == null || ocary.size() == 0) { - return null; - } + if (ocary == null || ocary.size() == 0) { + return null; + } - // filter through retrieved objects to get the first match. - for (ObjectContent oc : ocary) { - ManagedObjectReference mor = oc.getObj(); - List propary = oc.getPropSet(); - if (type == null || type.equals(mor.getType())) { - if (propary.size() > 0) { - String propval = (String)propary.get(0).getVal(); - if (propval != null && name.equalsIgnoreCase(propval)) - return mor; + // filter through retrieved objects to get the first match. + for (ObjectContent oc : ocary) { + ManagedObjectReference mor = oc.getObj(); + List propary = oc.getPropSet(); + if (type == null || type.equals(mor.getType())) { + if (propary.size() > 0) { + String propval = (String)propary.get(0).getVal(); + if (propval != null && name.equalsIgnoreCase(propval)) + return mor; + } } } + } catch (Exception e) { + s_logger.debug("Failed to get mor for name: " + name + " and type: " + type, e); + throw e; } + return null; }