aboutsummaryrefslogtreecommitdiffstats
path: root/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java')
-rw-r--r--appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java91
1 files changed, 45 insertions, 46 deletions
diff --git a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java
index db049484e..ff349c76b 100644
--- a/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java
+++ b/appc-adapters/appc-iaas-adapter/appc-iaas-adapter-bundle/src/main/java/org/openecomp/appc/adapter/iaas/impl/TenantCache.java
@@ -30,7 +30,6 @@ import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
import org.openecomp.appc.Constants;
import org.openecomp.appc.configuration.Configuration;
import org.openecomp.appc.configuration.ConfigurationFactory;
@@ -47,7 +46,7 @@ import com.att.cdp.zones.Provider;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.woorea.openstack.connector.JaxRs20Connector;
-//import com.sun.jersey.api.client.ClientHandlerException;
+// import com.sun.jersey.api.client.ClientHandlerException;
import com.woorea.openstack.keystone.model.Access.Service.Endpoint;
/**
@@ -63,9 +62,15 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
public static final String POOL_PROVIDER_NAME = "pool.provider.name";
public static final String POOL_TENANT_NAME = "pool.tenant.name";
- //public static final String CLIENT_CONNECTOR_CLASS = "com.woorea.openstack.connector.JerseyConnector";
+ // public static final String CLIENT_CONNECTOR_CLASS =
+ // "com.woorea.openstack.connector.JerseyConnector";
public static final String CLIENT_CONNECTOR_CLASS = "com.woorea.openstack.connector.JaxRs20Connector";
/**
+ * The domain to use to authenticate
+ */
+ private String domain;
+
+ /**
* The provider we are part of
*/
private ProviderCache provider;
@@ -118,8 +123,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
/**
* Construct the cache of tenants for the specified provider
*
- * @param provider
- * The provider
+ * @param provider The provider
*/
public TenantCache(ProviderCache provider) {
configuration = ConfigurationFactory.getConfiguration();
@@ -165,13 +169,19 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
String url = provider.getIdentityURL();
String tenant = tenantName == null ? tenantId : tenantName;
Properties properties = configuration.getProperties();
+ catalog = ServiceCatalogFactory.getServiceCatalog(url, tenant, userid, password, domain, properties);
+
+ if (catalog == null) {
+ logger.error(Msg.IAAS_UNSUPPORTED_IDENTITY_SERVICE, url);
+ return;
+ }
int attempt = 1;
while (attempt <= limit) {
try {
- catalog = new ServiceCatalog(url, tenant, userid, password, properties);
- tenantId = catalog.getTenantId();
- tenantName = catalog.getTenantName();
+ catalog.init();
+ tenantId = catalog.getProjectId();
+ tenantName = catalog.getProjectName();
for (String region : catalog.getRegions()) {
try {
@@ -180,13 +190,13 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
pool.setProperty(ContextFactory.PROPERTY_TENANT, tenantName);
pool.setProperty(ContextFactory.PROPERTY_CLIENT_CONNECTOR_CLASS, CLIENT_CONNECTOR_CLASS);
pool.setProperty(ContextFactory.PROPERTY_RETRY_DELAY,
- configuration.getProperty(Constants.PROPERTY_RETRY_DELAY));
+ configuration.getProperty(Constants.PROPERTY_RETRY_DELAY));
pool.setProperty(ContextFactory.PROPERTY_RETRY_LIMIT,
- configuration.getProperty(Constants.PROPERTY_RETRY_LIMIT));
+ configuration.getProperty(Constants.PROPERTY_RETRY_LIMIT));
pool.setProperty(ContextFactory.PROPERTY_REGION, region);
if (properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS) != null) {
pool.setProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS,
- properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS));
+ properties.getProperty(ContextFactory.PROPERTY_TRUSTED_HOSTS));
}
pool.setAllocator(this);
pool.setDestructor(this);
@@ -202,7 +212,8 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
} catch (ContextConnectionException e) {
attempt++;
if (attempt <= limit) {
- logger.error(Msg.CONNECTION_FAILED_RETRY, provider.getProviderName(), url, tenantName, tenantId, e.getMessage(), Integer.toString(delay), Integer.toString(attempt),
+ logger.error(Msg.CONNECTION_FAILED_RETRY, provider.getProviderName(), url, tenantName, tenantId,
+ e.getMessage(), Integer.toString(delay), Integer.toString(attempt),
Integer.toString(limit));
try {
@@ -211,7 +222,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
// ignore
}
}
- } catch ( ZoneException e) {
+ } catch (ZoneException e) {
logger.error(e.getMessage());
break;
}
@@ -226,38 +237,31 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
* This method accepts a fully qualified compute node URL and uses that to determine which region of the provider
* hosts that compute node.
*
- * @param url
- * The parsed URL of the compute node
+ * @param url The parsed URL of the compute node
* @return The region name, or null if no region of this tenant hosts that compute node.
*/
public String determineRegion(VMURL url) {
logger.debug(String.format("Attempting to determine VM region for %s", url));
- String region = null;
- Pattern urlPattern = Pattern.compile("[^:]+://([^:/]+)(?::([0-9]+)).*");
-
- if (url != null) {
- for (Endpoint endpoint : catalog.getEndpoints(ServiceCatalog.COMPUTE_SERVICE)) {
- String endpointUrl = endpoint.getPublicURL();
- Matcher matcher = urlPattern.matcher(endpointUrl);
- if (matcher.matches()) {
- if (url.getHost().equals(matcher.group(1))) {
- if (url.getPort() != null) {
- if (!url.getPort().equals(matcher.group(2))) {
- continue;
- }
- }
-
- region = endpoint.getRegion();
- break;
- }
- }
- }
- }
+ String region = catalog.getVMRegion(url);
logger.debug(String.format("Region for %s is %s", url, region));
return region;
}
/**
+ * @return the value of the domain
+ */
+ public String getDomain() {
+ return domain;
+ }
+
+ /**
+ * @param domain the value for domain
+ */
+ public void setDomain(String domain) {
+ this.domain = domain;
+ }
+
+ /**
* @return the value of provider
*/
public ProviderCache getProvider() {
@@ -265,8 +269,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
}
/**
- * @param provider
- * the value for provider
+ * @param provider the value for provider
*/
public void setProvider(ProviderCache provider) {
this.provider = provider;
@@ -280,8 +283,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
}
/**
- * @param password
- * the value for password
+ * @param password the value for password
*/
public void setPassword(String password) {
this.password = password;
@@ -295,8 +297,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
}
/**
- * @param tenantId
- * the value for tenantId
+ * @param tenantId the value for tenantId
*/
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
@@ -310,8 +311,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
}
/**
- * @param tenantName
- * the value for tenantName
+ * @param tenantName the value for tenantName
*/
public void setTenantName(String tenantName) {
this.tenantName = tenantName;
@@ -325,8 +325,7 @@ public class TenantCache implements Allocator<Context>, Destructor<Context> {
}
/**
- * @param userid
- * the value for userid
+ * @param userid the value for userid
*/
public void setUserid(String userid) {
this.userid = userid;