예제 #1
0
  /**
   * 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;
  }