/** * Gets token from Keystone. It is a synchronous operation. * * @param uri String * @return token String */ public String getAuthToken(String uri) { String token = ""; String tenantId = ""; Gson gson = new Gson(); AuthTokenRequest w = new AuthTokenRequest(); w.auth.passwordCredentials.username = endPoint.getCinderRESTuserName(); w.auth.passwordCredentials.password = endPoint.getCinderRESTPassword(); w.auth.tenantName = endPoint.getCinderTenantName(); String json = gson.toJson(w); try { ClientResponse js_response = client.post(URI.create(uri), json); String s = js_response.getEntity(String.class); AccessWrapper wrapper = gson.fromJson(s, AccessWrapper.class); token = wrapper.access.token.id; tenantId = wrapper.access.token.tenant.id; } catch (Exception e) { _log.error("Exception!! \n Now trying String processing....\n"); ClientResponse js_response = client.post(URI.create(uri), json); String s = js_response.getEntity(String.class); token = getTokenId(s); tenantId = getTenantId(s); } /* catch */ // Update it in endPoint instance for every fetch/re-fetch endPoint.setCinderToken(token); getClient().setAuthTokenHeader(token); endPoint.setCinderTenantId(tenantId); return token; }