@@ -152,13 +152,26 @@ public void connect(String url, String userName, String password) throws Excepti
152152 @ SuppressWarnings ("unchecked" )
153153 Map <String , List <String >> headers = (Map <String , List <String >>)((BindingProvider )vimPort ).getResponseContext ().get (MessageContext .HTTP_RESPONSE_HEADERS );
154154 List <String > cookies = headers .get ("Set-cookie" );
155+
156+ vimPort .login (serviceContent .getSessionManager (), userName , password , null );
157+
158+ if (cookies == null ) {
159+ @ SuppressWarnings ("unchecked" )
160+ Map <String , List <String >> responseHeaders = (Map <String , List <String >>)((BindingProvider )vimPort ).getResponseContext ().get (MessageContext .HTTP_RESPONSE_HEADERS );
161+ cookies = responseHeaders .get ("Set-cookie" );
162+ if (cookies == null ) {
163+ String msg = "Login successful, but failed to get server cookies from url :[" + url + "]" ;
164+ s_logger .error (msg );
165+ throw new Exception (msg );
166+ }
167+ }
168+
155169 String cookieValue = cookies .get (0 );
156170 StringTokenizer tokenizer = new StringTokenizer (cookieValue , ";" );
157171 cookieValue = tokenizer .nextToken ();
158172 String pathData = "$" + tokenizer .nextToken ();
159173 serviceCookie = "$Version=\" 1\" ; " + cookieValue + "; " + pathData ;
160174
161- vimPort .login (serviceContent .getSessionManager (), userName , password , null );
162175 isConnected = true ;
163176 }
164177
@@ -577,41 +590,48 @@ public ManagedObjectReference getDecendentMoRef(ManagedObjectReference root, Str
577590 return null ;
578591 }
579592
580- // Create PropertySpecs
581- PropertySpec pSpec = new PropertySpec ();
582- pSpec .setType (type );
583- pSpec .setAll (false );
584- pSpec .getPathSet ().add ("name" );
585-
586- ObjectSpec oSpec = new ObjectSpec ();
587- oSpec .setObj (root );
588- oSpec .setSkip (false );
589- oSpec .getSelectSet ().addAll (constructCompleteTraversalSpec ());
590-
591- PropertyFilterSpec spec = new PropertyFilterSpec ();
592- spec .getPropSet ().add (pSpec );
593- spec .getObjectSet ().add (oSpec );
594- List <PropertyFilterSpec > specArr = new ArrayList <PropertyFilterSpec >();
595- specArr .add (spec );
596-
597- List <ObjectContent > ocary = vimPort .retrieveProperties (getPropCol (), specArr );
598-
599- if (ocary == null || ocary .size () == 0 ) {
600- return null ;
601- }
593+ try {
594+ // Create PropertySpecs
595+ PropertySpec pSpec = new PropertySpec ();
596+ pSpec .setType (type );
597+ pSpec .setAll (false );
598+ pSpec .getPathSet ().add ("name" );
599+
600+ ObjectSpec oSpec = new ObjectSpec ();
601+ oSpec .setObj (root );
602+ oSpec .setSkip (false );
603+ oSpec .getSelectSet ().addAll (constructCompleteTraversalSpec ());
604+
605+ PropertyFilterSpec spec = new PropertyFilterSpec ();
606+ spec .getPropSet ().add (pSpec );
607+ spec .getObjectSet ().add (oSpec );
608+ List <PropertyFilterSpec > specArr = new ArrayList <PropertyFilterSpec >();
609+ specArr .add (spec );
610+
611+ ManagedObjectReference propCollector = getPropCol ();
612+ List <ObjectContent > ocary = vimPort .retrieveProperties (propCollector , specArr );
613+
614+ if (ocary == null || ocary .size () == 0 ) {
615+ return null ;
616+ }
602617
603- // filter through retrieved objects to get the first match.
604- for (ObjectContent oc : ocary ) {
605- ManagedObjectReference mor = oc .getObj ();
606- List <DynamicProperty > propary = oc .getPropSet ();
607- if (type == null || type .equals (mor .getType ())) {
608- if (propary .size () > 0 ) {
609- String propval = (String )propary .get (0 ).getVal ();
610- if (propval != null && name .equalsIgnoreCase (propval ))
611- return mor ;
618+ // filter through retrieved objects to get the first match.
619+ for (ObjectContent oc : ocary ) {
620+ ManagedObjectReference mor = oc .getObj ();
621+ List <DynamicProperty > propary = oc .getPropSet ();
622+ if (type == null || type .equals (mor .getType ())) {
623+ if (propary .size () > 0 ) {
624+ String propval = (String )propary .get (0 ).getVal ();
625+ if (propval != null && name .equalsIgnoreCase (propval ))
626+ return mor ;
627+ }
612628 }
613629 }
630+ } catch (Exception e ) {
631+ s_logger .debug ("Failed to get mor for name: " + name + " and type: " + type , e );
632+ throw e ;
614633 }
634+
615635 return null ;
616636 }
617637
0 commit comments