You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/10/19 21:58:50 UTC
[2/4] refactoring and changing CartridgeInstance to
CartridgeSubscription
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/instance/utils/CartridgeInstanceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/instance/utils/CartridgeInstanceUtils.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/instance/utils/CartridgeInstanceUtils.java
deleted file mode 100644
index 40f151f..0000000
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/instance/utils/CartridgeInstanceUtils.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.instance.utils;
-
-public class CartridgeInstanceUtils {
- /*
- private static Log log = LogFactory.getLog(CartridgeInstanceUtils.class);
-
- public static void validateCartridgeAlias(String alias, String cartridgeType) throws InvalidCartridgeAliasException,
- DuplicateCartridgeAliasException, ADCException {
-
- // Do not use quotes in messages, current UI JavaScript does not work if there are quotes
- // TODO: Fix message display in UI
- String patternString = "([a-z0-9]+([-][a-z0-9])*)+";
- Pattern pattern = Pattern.compile(patternString);
-
- if (!pattern.matcher(alias).matches()) {
- String msg = "The alias " + alias + " can contain only alpha-numeric lowercase characters. Please enter a valid alias.";
- log.error(msg);
- throw new InvalidCartridgeAliasException(msg, cartridgeType, alias);
- }
-
- boolean isAliasTaken = false;
- try {
- isAliasTaken = PersistenceManager.isAliasAlreadyTaken(alias, cartridgeType);
- } catch (Exception e) {
- String msg = "Exception : " + e.getMessage();
- log.error(msg, e);
- throw new ADCException("Error when checking alias is already taken", e);
- }
-
- if (isAliasTaken) {
- String msg = "The alias " + alias + " is already taken. Please try again with a different alias.";
- log.error(msg);
- throw new DuplicateCartridgeAliasException(msg, cartridgeType, alias);
- }
- }
-
- public static String generatePassword() {
-
- final int PASSWORD_LENGTH = 8;
- StringBuffer sb = new StringBuffer();
- for (int x = 0; x < PASSWORD_LENGTH; x++) {
- sb.append((char) ((int) (Math.random() * 26) + 97));
- }
- return sb.toString();
-
- }
-
- public static CartridgeSubscription createCartridgeSubscription(CartridgeInfo cartridgeInfo,
- Policy policy,
- String cartridgeType,
- String cartridgeAlias,
- int tenantId,
- String tenantDomain,
- Repository repository,
- String clusterDomain,
- String clusterSubDomain,
- String hostName,
- String mgtClusterDomain,
- String mgtClusterSubDomain,
- DataCartridge dataCartridge) {
-
- CartridgeSubscription cartridgeSubscription = new CartridgeSubscription();
- cartridgeSubscription.setCartridge(cartridgeType);
- cartridgeSubscription.setAlias(cartridgeAlias);
- cartridgeSubscription.setClusterDomain(clusterDomain);
- cartridgeSubscription.setClusterSubdomain(clusterSubDomain);
- cartridgeSubscription.setMgtClusterDomain(mgtClusterDomain);
- cartridgeSubscription.setMgtClusterSubDomain(mgtClusterSubDomain);
- cartridgeSubscription.setHostName(hostName);
- cartridgeSubscription.setPolicy(policy.getName());
- cartridgeSubscription.setRepository(repository);
- cartridgeSubscription.setPortMappings(createPortMappings(cartridgeInfo));
- cartridgeSubscription.setProvider(cartridgeInfo.getProvider());
- cartridgeSubscription.setDataCartridge(dataCartridge);
- cartridgeSubscription.setTenantId(tenantId);
- cartridgeSubscription.setTenantDomain(tenantDomain);
- cartridgeSubscription.setBaseDirectory(cartridgeInfo.getBaseDir());
- cartridgeSubscription.setState("PENDING");
-
- return cartridgeSubscription;
- }
-
- private static List<PortMapping> createPortMappings(CartridgeInfo cartridgeInfo) {
- List<PortMapping> portMappings = new ArrayList<PortMapping>();
-
- if (cartridgeInfo.getPortMappings() != null) {
- for (org.apache.stratos.cloud.controller.util.xsd.PortMapping portMapping : cartridgeInfo.getPortMappings()) {
- PortMapping portMap = new PortMapping();
- portMap.setPrimaryPort(portMapping.getPort());
- portMap.setProxyPort(portMapping.getProxyPort());
- portMap.setType(portMapping.getProtocol());
- portMappings.add(portMap);
- }
- }
- return portMappings;
- }
-
- public static void addDNSEntry(String alias, String cartridgeType) {
- new DNSManager().addNewSubDomain(alias + "." + cartridgeType, System.getProperty(CartridgeConstants.ELB_IP));
- }
-
- public static SubscriptionInfo createSubscriptionResponse(CartridgeSubscription cartridgeSubscription, Repository repository) {
- SubscriptionInfo subscriptionInfo = new SubscriptionInfo();
-
- if (repository != null && repository.getUrl() != null) {
- subscriptionInfo.setRepositoryURL(convertRepoURL(repository.getUrl()));
- }
- subscriptionInfo.setHostname(cartridgeSubscription.getHostName());
-
- return subscriptionInfo;
- }
-
- private static String convertRepoURL(String gitURL) {
- String convertedHttpURL = null;
- if (gitURL != null && gitURL.startsWith("git@")) {
- StringBuilder httpRepoUrl = new StringBuilder();
- httpRepoUrl.append("http://");
- String[] urls = gitURL.split(":");
- String[] hostNameArray = urls[0].split("@");
- String hostName = hostNameArray[1];
- httpRepoUrl.append(hostName).append("/").append(urls[1]);
- convertedHttpURL = httpRepoUrl.toString();
- } else if (gitURL != null && gitURL.startsWith("http")) {
- convertedHttpURL = gitURL;
- }
- return convertedHttpURL;
- }
-
- public static RepositoryInformation validateRepository(String repoURL, String repoUsername, String repoPassword,
- boolean privateRepo, boolean testConnection)
-
- throws RepositoryRequiredException, ADCException,
- RepositoryCredentialsRequiredException, InvalidRepositoryException, RepositoryTransportException {
-
- RepositoryInformation repositoryInformation = new RepositoryInformation();
- repositoryInformation.setRepoURL(repoURL);
- if (log.isDebugEnabled()) {
- log.debug("Validating Git Repository");
- }
-
- if (repoURL == null || repoURL.trim().length() == 0) {
- throw new RepositoryRequiredException("External repository required for subscription");
- }
-
- if (repoURL != null && repoURL.trim().length() > 0 && privateRepo) {
- if (log.isDebugEnabled()) {
- log.debug("External repo validation is a private repo: " + repoURL);
- }
- if (repoUsername == null || repoUsername.trim().length() == 0 || repoPassword == null
- || repoPassword.trim().length() == 0) {
- throw new RepositoryCredentialsRequiredException(
- "Username and Password are required for private repository");
- }
- }
-
- if (!testConnection) {
- if (log.isDebugEnabled()) {
- log.debug("External repo validation is not enabled");
- }
- return repositoryInformation;
- }
-
- if (repoURL == null || repoURL.trim().length() == 0) {
- // This means, no repo to validate.
- return repositoryInformation;
- }
-
- if (log.isDebugEnabled()) {
- log.debug("External repo validation enabled");
- }
-
- // This assumes running on Linux.
- String parentDirName = "/tmp/" + UUID.randomUUID().toString();
- CredentialsProvider credentialsProvider = null;
- if (repoUsername != null && repoUsername.trim().length() > 0 && repoPassword != null
- && repoPassword.trim().length() > 0) {
- if (log.isDebugEnabled()) {
- log.debug("External repo credentails are passed: " + repoUsername);
- }
- credentialsProvider = new UsernamePasswordCredentialsProvider(repoUsername, repoPassword.toCharArray());
- }
-
- // Initialize temp local file repo
- FileRepository localRepo = null;
- try {
- File f = new File(parentDirName + "/.git");
- localRepo = new FileRepository(f);
- if (log.isDebugEnabled()) {
- log.debug("Local File Repo: " + f.getAbsoluteFile());
- }
- } catch (IOException e) {
- throw new ADCException("Error creating local file repo", e);
- }
-
- Git git = new Git(localRepo);
- LsRemoteCommand cmd = git.lsRemote().setRemote(repoURL);
- if (credentialsProvider != null) {
- cmd.setCredentialsProvider(credentialsProvider);
- }
- try {
- Collection<Ref> collection = cmd.call();
- List<String> refNames = new ArrayList<String>();
- if (collection != null) {
- for (Ref ref : collection) {
- if (log.isDebugEnabled()) {
- log.debug(repoURL + ": " + ref.getName());
- }
- refNames.add(ref.getName());
- }
- }
- repositoryInformation.setRefName(refNames.toArray(new String[refNames.size()]));
- } catch (InvalidRemoteException e) {
- throw new InvalidRepositoryException("Provided repository url is not valid", e);
- } catch (TransportException e) {
- throw new RepositoryTransportException("Transport error when checking remote repository", e);
- } catch (GitAPIException e) {
- throw new ADCException("Git API error when checking remote repository", e);
- }
- return repositoryInformation;
- }*/
-}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
index c890034..ec35a33 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/manager/CartridgeSubscriptionManager.java
@@ -23,19 +23,19 @@ import org.apache.axis2.AxisFault;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient;
-import org.apache.stratos.adc.mgt.connector.CartridgeInstanceConnector;
-import org.apache.stratos.adc.mgt.connector.CartridgeInstanceConnectorFactory;
-import org.apache.stratos.adc.mgt.dao.CartridgeSubscription;
+import org.apache.stratos.adc.mgt.connector.CartridgeSubscriptionConnector;
+import org.apache.stratos.adc.mgt.connector.CartridgeSubscriptionConnectorFactory;
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
import org.apache.stratos.adc.mgt.dto.Policy;
import org.apache.stratos.adc.mgt.dto.SubscriptionInfo;
import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.instance.CartridgeInstance;
-import org.apache.stratos.adc.mgt.instance.factory.CartridgeInstanceFactory;
import org.apache.stratos.adc.mgt.payload.Payload;
import org.apache.stratos.adc.mgt.payload.PayloadArg;
import org.apache.stratos.adc.mgt.payload.PayloadFactory;
import org.apache.stratos.adc.mgt.repository.Repository;
import org.apache.stratos.adc.mgt.subscriber.Subscriber;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
import org.apache.stratos.adc.mgt.utils.PersistenceManager;
import org.apache.stratos.adc.mgt.utils.PolicyHolder;
@@ -48,7 +48,7 @@ import java.util.Properties;
import java.util.Set;
/**
- * Manager class for the purpose of managing CartridgeInstance subscriptions, groupings, etc.
+ * Manager class for the purpose of managing CartridgeSubscriptionInfo subscriptions, groupings, etc.
*/
public class CartridgeSubscriptionManager {
@@ -69,7 +69,7 @@ public class CartridgeSubscriptionManager {
* @param repositoryUsername Repository username
* @param repositoryPassword Repository password
*
- * @return Subscribed CartridgeInstance object
+ * @return Subscribed CartridgeSubscriptionInfo object
* @throws ADCException
* @throws InvalidCartridgeAliasException
* @throws DuplicateCartridgeAliasException
@@ -81,7 +81,7 @@ public class CartridgeSubscriptionManager {
* @throws AlreadySubscribedException
* @throws InvalidRepositoryException
*/
- public CartridgeInstance subscribeToCartridge (String cartridgeType, String cartridgeAlias,
+ public CartridgeSubscription subscribeToCartridge (String cartridgeType, String cartridgeAlias,
String autoscalingPolicyName, String tenantDomain, int tenantId,
String tenantAdminUsername, String repositoryType,
String repositoryURL, boolean isPrivateRepository,
@@ -111,7 +111,7 @@ public class CartridgeSubscriptionManager {
} catch (UnregisteredCartridgeException e) {
String message = cartridgeType
- + " is not a valid cartridgeInstance type. Please try again with a valid cartridgeInstance type.";
+ + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
log.error(message);
throw e;
@@ -123,35 +123,38 @@ public class CartridgeSubscriptionManager {
Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
- CartridgeInstance cartridgeInstance = CartridgeInstanceFactory.getCartridgeInstance(cartridgeInfo);
- Repository repository = cartridgeInstance.manageRepository(repositoryURL, repositoryUsername,
+ CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+ Repository repository = cartridgeSubscription.manageRepository(repositoryURL, repositoryUsername,
repositoryPassword, isPrivateRepository, cartridgeAlias, cartridgeInfo, tenantDomain);
- cartridgeInstance.subscribe(subscriber, cartridgeAlias, autoScalingPolicy, repository);
+ cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoScalingPolicy, repository);
log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername +
" subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " + cartridgeType +
", Repo URL: " + repositoryURL + ", Policy: " + autoscalingPolicyName);
- PayloadArg payloadArg = cartridgeInstance.createPayloadParameters();
- Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
- "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
- payload.populatePayload(payloadArg);
+ PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
+ if (payloadArg != null) {
+
+ Payload payload = PayloadFactory.getPayloadInstance(cartridgeInfo.getProvider(), cartridgeType,
+ "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
+ payload.populatePayload(payloadArg);
- //set the payload to the cartridge instance
- cartridgeInstance.setPayload(payload);
+ //set the payload to the cartridge subscription
+ cartridgeSubscription.setPayload(payload);
+ }
//CartridgeInstanceCache.getCartridgeInstanceCache().
- // addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias), cartridgeInstance);
+ // addCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, cartridgeAlias), cartridgeSubscription);
- return cartridgeInstance;
+ return cartridgeSubscription;
}
/**
* Connects / groups cartridges
*
* @param tenantDomain Tenant's domain
- * @param cartridgeInstance CartridgeInstance object to which the CartridgeInstance denoted by
+ * @param cartridgeSubscription CartridgeSubscriptionInfo object to which the CartridgeSubscriptionInfo denoted by
* connectingCartridgeAlias will be connected to
* @param connectingCartridgeAlias Alias of the connecting cartridge
*
@@ -159,38 +162,38 @@ public class CartridgeSubscriptionManager {
* @throws NotSubscribedException
* @throws AxisFault
*/
- public void connectCartridges (String tenantDomain, CartridgeInstance cartridgeInstance,
+ public void connectCartridges (String tenantDomain, CartridgeSubscription cartridgeSubscription,
String connectingCartridgeAlias)
throws ADCException, NotSubscribedException, AxisFault {
//TODO: retrieve from the cache and connect. For now, new objects are created
- CartridgeInstance connectingCartridgeInstance = getCartridgeInstance(tenantDomain, connectingCartridgeAlias);
+ CartridgeSubscription connectingCartridgeSubscription = getCartridgeSubscription(tenantDomain, connectingCartridgeAlias);
- if(cartridgeInstance == null) {
- String errorMsg = "No cartridge instance found in cache for tenant " + tenantDomain + ", alias " +
- cartridgeInstance.getAlias() + ", connecting aborted";
+ if(cartridgeSubscription == null) {
+ String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + ", alias " +
+ cartridgeSubscription.getAlias() + ", connecting aborted";
log.error(errorMsg);
return;
}
- if(connectingCartridgeInstance == null) {
- String errorMsg = "No cartridge instance found in cache for tenant " + tenantDomain + ", alias " +
+ if(connectingCartridgeSubscription == null) {
+ String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + ", alias " +
connectingCartridgeAlias + ", connecting aborted";
log.error(errorMsg);
return;
}
- CartridgeInstanceConnector cartridgeInstanceConnector = CartridgeInstanceConnectorFactory.
- getCartridgeInstanceConnector(connectingCartridgeInstance.getType());
+ CartridgeSubscriptionConnector cartridgeSubscriptionConnector = CartridgeSubscriptionConnectorFactory.
+ getCartridgeInstanceConnector(connectingCartridgeSubscription.getType());
- cartridgeInstance.connect(connectingCartridgeAlias);
+ cartridgeSubscription.connect(connectingCartridgeAlias);
- //PayloadArg payloadArg = cartridgeInstance.createPayloadParameters();
+ //PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
//get additional payload params for connecting cartridges
- Properties payloadProperties = cartridgeInstanceConnector.createConnection(cartridgeInstance,
- connectingCartridgeInstance);
+ Properties payloadProperties = cartridgeSubscriptionConnector.createConnection(cartridgeSubscription,
+ connectingCartridgeSubscription);
StringBuilder connectionParamsBuilder = new StringBuilder();
Set<Map.Entry<Object,Object>> payloadParamEntries = payloadProperties.entrySet();
@@ -202,63 +205,63 @@ public class CartridgeSubscriptionManager {
}
//add additional connection relates parameters to the payload
- cartridgeInstance.getPayload().populatePayload(connectionParamsBuilder.toString());
+ cartridgeSubscription.getPayload().populatePayload(connectionParamsBuilder.toString());
/*
payloadArg.setUserDefinedPayload(connectionParamsBuilder.toString());
- Payload payload = PayloadFactory.getPayloadInstance(cartridgeInstance.getCartridgeInfo().getProvider(),
- cartridgeInstance.getType(),
- "/tmp/" + tenantDomain + "-" + cartridgeInstance.getAlias() + ".zip");
+ Payload payload = PayloadFactory.getPayloadInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
+ cartridgeSubscription.getType(),
+ "/tmp/" + tenantDomain + "-" + cartridgeSubscription.getAlias() + ".zip");
payload.populatePayload(payloadArg);
payload.createPayload();
*/
}
/**
- * Registers the cartridge subscription for the given CartridgeInstance object
+ * Registers the cartridge subscription for the given CartridgeSubscriptionInfo object
*
- * @param cartridgeInstance CartridgeInstance instance
+ * @param cartridgeSubscription CartridgeSubscription subscription
*
* @return SubscriptionInfo object populated with relevant information
* @throws ADCException
* @throws UnregisteredCartridgeException
*/
- public SubscriptionInfo registerCartridgeSubscription(CartridgeInstance cartridgeInstance)
+ public SubscriptionInfo registerCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
throws ADCException, UnregisteredCartridgeException {
- /*CartridgeInstance cartridgeInstance = CartridgeInstanceCache.getCartridgeInstanceCache().
- getCartridgeInstance(new CartridgeInstanceCacheKey(tenantId, alias));
+ /*CartridgeSubscriptionInfo cartridgeSubscription = CartridgeInstanceCache.getCartridgeInstanceCache().
+ getCartridgeSubscription(new CartridgeInstanceCacheKey(tenantId, alias));
- if(cartridgeInstance == null) {
+ if(cartridgeSubscription == null) {
throw new ADCException("Unable to find cartridge with alias " + alias + ", for tenant Id " + tenantId +
" in cache");
}*/
- CartridgeSubscription cartridgeSubscription = cartridgeInstance.registerSubscription(null);
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo = cartridgeSubscription.registerSubscription(null);
int subscriptionId;
try {
- subscriptionId = PersistenceManager.persistSubscription(cartridgeSubscription);
+ subscriptionId = PersistenceManager.persistSubscription(cartridgeSubscriptionInfo);
} catch (Exception e) {
String errorMsg = "Error saving subscription for tenant " +
- cartridgeInstance.getSubscriber().getTenantDomain() + ", alias " + cartridgeInstance.getType();
+ cartridgeSubscription.getSubscriber().getTenantDomain() + ", alias " + cartridgeSubscription.getType();
log.error(errorMsg);
throw new ADCException(errorMsg, e);
}
- cartridgeInstance.setSubscriptionId(subscriptionId);
- ApplicationManagementUtil.addDNSEntry(cartridgeSubscription.getAlias(), cartridgeInstance.getType());
+ cartridgeSubscription.setSubscriptionId(subscriptionId);
+ ApplicationManagementUtil.addDNSEntry(cartridgeSubscriptionInfo.getAlias(), cartridgeSubscription.getType());
return ApplicationManagementUtil.
- createSubscriptionResponse(cartridgeSubscription, cartridgeInstance.getRepository());
+ createSubscriptionResponse(cartridgeSubscriptionInfo, cartridgeSubscription.getRepository());
}
/**
- * Unsubscribe from a CartridgeInstance
+ * Unsubscribe from a Cartridge
*
* @param tenantDomain Tenant's domain
- * @param alias Alias of the CartridgeInstance to unsubscribe from
+ * @param alias Alias given at subscription time
* @throws ADCException
* @throws NotSubscribedException
*/
@@ -267,30 +270,30 @@ public class CartridgeSubscriptionManager {
//TODO: retrieve from the cache and connect. For now, new objects are created
- CartridgeInstance cartridgeInstance = getCartridgeInstance(tenantDomain, alias);
+ CartridgeSubscription cartridgeSubscription = getCartridgeSubscription(tenantDomain, alias);
- if(cartridgeInstance != null) {
- cartridgeInstance.unsubscribe();
+ if(cartridgeSubscription != null) {
+ cartridgeSubscription.removeSubscription();
//CartridgeInstanceCache.getCartridgeInstanceCache().removeCartridgeInstance(cartridgeInstanceCacheKey);
}
else {
if(log.isDebugEnabled()) {
- log.debug("No cartridge instance found with alias " + alias + " for tenant " + tenantDomain);
+ log.debug("No cartridge subscription found with alias " + alias + " for tenant " + tenantDomain);
}
}
}
- /*public List<CartridgeInstance> getCartridgeInstances (int tenantId) throws ADCException, NotSubscribedException {
+ /*public List<CartridgeSubscriptionInfo> getCartridgeInstances (int tenantId) throws ADCException, NotSubscribedException {
- List<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscriptions(tenantId);
- List<CartridgeInstance> cartridgeInstances = new ArrayList<CartridgeInstance>();
+ List<CartridgeSubscriptionInfo> cartridgeSubscriptions = getCartridgeSubscriptions(tenantId);
+ List<CartridgeSubscriptionInfo> cartridgeInstances = new ArrayList<CartridgeSubscriptionInfo>();
CartridgeInfo cartridgeInfo;
- for(CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
+ for(CartridgeSubscriptionInfo cartridgeSubscription : cartridgeSubscriptions) {
try {
cartridgeInfo = CloudControllerServiceClient.getServiceClient().
getCartridgeInfo(cartridgeSubscription.getCartridge());
- cartridgeInstances.add(populateCartridgeInstanceInformation(cartridgeInfo, cartridgeSubscription));
+ cartridgeInstances.add(populateCartridgeSubscriptionInformation(cartridgeInfo, cartridgeSubscription));
} catch (Exception e) {
throw new ADCException(e.getMessage(), e);
@@ -301,35 +304,35 @@ public class CartridgeSubscriptionManager {
}*/
/**
- * Creates and returns a CartridgeInstance object
+ * Creates and returns a CartridgeSubscription object
*
* @param tenantDomain Tenant's domain
- * @param alias Alias of the CartridgeInstance
+ * @param alias alias given at subscription
*
- * @return CartridgeInstance object populated with relevant information
+ * @return CartridgeSubscription object populated with relevant information
* @throws ADCException
* @throws NotSubscribedException
*/
- public CartridgeInstance getCartridgeInstance (String tenantDomain, String alias)
+ public CartridgeSubscription getCartridgeSubscription(String tenantDomain, String alias)
throws ADCException, NotSubscribedException {
- CartridgeSubscription cartridgeSubscription = getCartridgeSubscription(tenantDomain, alias);
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo = getCartridgeSubscriptionInfo(tenantDomain, alias);
CartridgeInfo cartridgeInfo;
try {
cartridgeInfo = CloudControllerServiceClient.getServiceClient().
- getCartridgeInfo(cartridgeSubscription.getCartridge());
+ getCartridgeInfo(cartridgeSubscriptionInfo.getCartridge());
} catch (Exception e) {
throw new ADCException(e.getMessage(), e);
}
- return populateCartridgeInstanceInformation(cartridgeInfo, cartridgeSubscription);
+ return populateCartridgeSubscriptionInformation(cartridgeInfo, cartridgeSubscriptionInfo);
}
- private CartridgeSubscription getCartridgeSubscription (String tenantDomain, String alias)
+ private CartridgeSubscriptionInfo getCartridgeSubscriptionInfo(String tenantDomain, String alias)
throws ADCException, NotSubscribedException {
- CartridgeSubscription subscription;
+ CartridgeSubscriptionInfo subscription;
try {
subscription = PersistenceManager.getSubscription(tenantDomain, alias);
@@ -349,9 +352,9 @@ public class CartridgeSubscriptionManager {
}
- private List<CartridgeSubscription> getCartridgeSubscriptions (int tenantId) throws ADCException, NotSubscribedException {
+ private List<CartridgeSubscriptionInfo> getCartridgeSubscriptions (int tenantId) throws ADCException, NotSubscribedException {
- List<CartridgeSubscription> subscriptions;
+ List<CartridgeSubscriptionInfo> subscriptions;
try {
subscriptions = PersistenceManager.getSubscriptionsForTenant(tenantId);
@@ -370,31 +373,31 @@ public class CartridgeSubscriptionManager {
return subscriptions;
}
- private CartridgeInstance populateCartridgeInstanceInformation (CartridgeInfo cartridgeInfo,
- CartridgeSubscription cartridgeSubscription)
+ private CartridgeSubscription populateCartridgeSubscriptionInformation(CartridgeInfo cartridgeInfo,
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo)
throws ADCException {
- CartridgeInstance cartridgeInstance = CartridgeInstanceFactory.getCartridgeInstance(cartridgeInfo);
+ CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
- cartridgeInstance.setSubscriptionId(cartridgeSubscription.getSubscriptionId());
- cartridgeInstance.setAlias(cartridgeSubscription.getAlias());
- cartridgeInstance.setHostName(cartridgeSubscription.getHostName());
- cartridgeInstance.setClusterDomain(cartridgeSubscription.getClusterDomain());
- cartridgeInstance.setClusterSubDomain(cartridgeSubscription.getClusterSubdomain());
- cartridgeInstance.setMgtClusterDomain(cartridgeSubscription.getMgtClusterDomain());
- cartridgeInstance.setMgtClusterSubDomain(cartridgeSubscription.getMgtClusterSubDomain());
+ cartridgeSubscription.setSubscriptionId(cartridgeSubscriptionInfo.getSubscriptionId());
+ cartridgeSubscription.setAlias(cartridgeSubscriptionInfo.getAlias());
+ cartridgeSubscription.setHostName(cartridgeSubscriptionInfo.getHostName());
+ cartridgeSubscription.setClusterDomain(cartridgeSubscriptionInfo.getClusterDomain());
+ cartridgeSubscription.setClusterSubDomain(cartridgeSubscriptionInfo.getClusterSubdomain());
+ cartridgeSubscription.setMgtClusterDomain(cartridgeSubscriptionInfo.getMgtClusterDomain());
+ cartridgeSubscription.setMgtClusterSubDomain(cartridgeSubscriptionInfo.getMgtClusterSubDomain());
Policy autoScalingPolicy;
- if(cartridgeSubscription.getPolicy() != null && !cartridgeSubscription.getPolicy().isEmpty()) {
- autoScalingPolicy = PolicyHolder.getInstance().getPolicy(cartridgeSubscription.getPolicy());
+ if(cartridgeSubscriptionInfo.getPolicy() != null && !cartridgeSubscriptionInfo.getPolicy().isEmpty()) {
+ autoScalingPolicy = PolicyHolder.getInstance().getPolicy(cartridgeSubscriptionInfo.getPolicy());
} else {
autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
}
- cartridgeInstance.setAutoscalingPolicy(autoScalingPolicy);
+ cartridgeSubscription.setAutoscalingPolicy(autoScalingPolicy);
Subscriber subscriber = new Subscriber(CarbonContext.getThreadLocalCarbonContext().getUsername(),
- cartridgeSubscription.getTenantId(), cartridgeSubscription.getTenantDomain());
- cartridgeInstance.setSubscriber(subscriber);
- cartridgeInstance.setRepository(cartridgeSubscription.getRepository());
+ cartridgeSubscriptionInfo.getTenantId(), cartridgeSubscriptionInfo.getTenantDomain());
+ cartridgeSubscription.setSubscriber(subscriber);
+ cartridgeSubscription.setRepository(cartridgeSubscriptionInfo.getRepository());
- return cartridgeInstance;
+ return cartridgeSubscription;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
index 8a528d2..86c365b 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/NonCarbonPayload.java
@@ -19,6 +19,7 @@
package org.apache.stratos.adc.mgt.payload;
+import org.apache.stratos.adc.mgt.dto.Policy;
import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
import org.apache.stratos.cloud.controller.util.xsd.CartridgeInfo;
@@ -41,23 +42,27 @@ public class NonCarbonPayload extends Payload {
payloadBuilder.append("CARTRIDGE_AGENT_EPR=" + System.getProperty(CartridgeConstants.CARTRIDGE_AGENT_EPR));
payloadBuilder.append(",");
payloadBuilder.append("APP_PATH=" + payloadArg.getCartridgeInfo().getBaseDir());
- payloadBuilder.append(",");
//port mapping specific
- payloadBuilder.append(createPortMappingPayloadString(payloadArg.getCartridgeInfo()));
- payloadBuilder.append(",");
+ if(payloadArg.getCartridgeInfo() != null) {
+ payloadBuilder.append(",");
+ payloadBuilder.append(createPortMappingPayloadString(payloadArg.getCartridgeInfo()));
+ }
//git repository specific
- payloadBuilder.append("GIT_REPO=" + getRepositoryUrlParam(payloadArg));
payloadBuilder.append(",");
+ payloadBuilder.append("GIT_REPO=" + getRepositoryUrlParam(payloadArg));
//BAM specific
+ payloadBuilder.append(",");
payloadBuilder.append("BAM_IP=" + System.getProperty(CartridgeConstants.BAM_IP));
payloadBuilder.append(",");
payloadBuilder.append("BAM_PORT=" + System.getProperty(CartridgeConstants.BAM_PORT));
//Autoscale policy specific
- payloadBuilder.append(getAutoscalingParams(payloadArg));
+ if(payloadArg.getPolicy() != null) {
+ payloadBuilder.append(getAutoscalingParams(payloadArg.getPolicy()));
+ }
}
private String createPortMappingPayloadString(CartridgeInfo cartridgeInfo) {
@@ -95,26 +100,27 @@ public class NonCarbonPayload extends Payload {
return gitRepoURL;
}
- private String getAutoscalingParams (PayloadArg arg) {
+ private String getAutoscalingParams (Policy policy) {
DecimalFormat df = new DecimalFormat("##.##");
df.setParseBigDecimal(true);
StringBuilder autoscalingPayloadBuilder = new StringBuilder();
+
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("MIN=" + arg.getPolicy().getMinAppInstances());
+ autoscalingPayloadBuilder.append("MIN=" + policy.getMinAppInstances());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("MAX=" + arg.getPolicy().getMaxAppInstances());
+ autoscalingPayloadBuilder.append("MAX=" + policy.getMaxAppInstances());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("ALARMING_LOWER_RATE=" + arg.getPolicy().getAlarmingLowerRate());
+ autoscalingPayloadBuilder.append("ALARMING_LOWER_RATE=" + policy.getAlarmingLowerRate());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("ALARMING_UPPER_RATE=" + arg.getPolicy().getAlarmingUpperRate());
+ autoscalingPayloadBuilder.append("ALARMING_UPPER_RATE=" + policy.getAlarmingUpperRate());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("MAX_REQUESTS_PER_SEC=" + arg.getPolicy().getMaxRequestsPerSecond());
+ autoscalingPayloadBuilder.append("MAX_REQUESTS_PER_SEC=" + policy.getMaxRequestsPerSecond());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("ROUNDS_TO_AVERAGE=" + arg.getPolicy().getRoundsToAverage());
+ autoscalingPayloadBuilder.append("ROUNDS_TO_AVERAGE=" + policy.getRoundsToAverage());
autoscalingPayloadBuilder.append(",");
- autoscalingPayloadBuilder.append("SCALE_DOWN_FACTOR=" + arg.getPolicy().getScaleDownFactor());
+ autoscalingPayloadBuilder.append("SCALE_DOWN_FACTOR=" + policy.getScaleDownFactor());
return autoscalingPayloadBuilder.toString();
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
index 5b236f2..1e17c2d 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
@@ -49,9 +49,9 @@ public abstract class Payload {
}
/**
- * Pupulates the Payload instance with relevant parameters and values given in PayloadArg instance
+ * Pupulates the Payload subscription with relevant parameters and values given in PayloadArg subscription
*
- * @param payloadArg PayloadArg instance with relevant values
+ * @param payloadArg PayloadArg subscription with relevant values
*/
public void populatePayload(PayloadArg payloadArg) {
@@ -65,8 +65,10 @@ public abstract class Payload {
payloadBuilder.append("TENANT_CONTEXT=" + payloadArg.getTenantDomain());
payloadBuilder.append(",");
payloadBuilder.append("CARTRIDGE_ALIAS=" + payloadArg.getCartridgeAlias());
- payloadBuilder.append(",");
- payloadBuilder.append("SERVICE=" + payloadArg.getCartridgeInfo().getType());
+ if(payloadArg.getCartridgeInfo() != null) {
+ payloadBuilder.append(",");
+ payloadBuilder.append("SERVICE=" + payloadArg.getCartridgeInfo().getType());
+ }
//add the user defined payload String (if any)
//this should be of the format <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
@@ -99,7 +101,7 @@ public abstract class Payload {
/**
* Create the actual payload in the file system
*
- * @return DataHandler instance with payload
+ * @return DataHandler subscription with payload
* @throws ADCException in case of an error
*/
public DataHandler createPayload () throws ADCException {
@@ -187,7 +189,7 @@ public abstract class Payload {
*
* @param dir Name of directory
* @param fileName Name of file to add
- * @param zos ZipOutputStream instance to write
+ * @param zos ZipOutputStream subscription to write
* @throws ADCException in an error
*/
private void addToZipFile(String dir, String fileName, ZipOutputStream zos) throws ADCException {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
index f89f2b1..fd5d6ce 100755
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/PayloadFactory.java
@@ -29,12 +29,12 @@ public class PayloadFactory {
private static Log log = LogFactory.getLog(PayloadFactory.class);
/**
- * Creates and returns a Payload instance
+ * Creates and returns a Payload subscription
*
* @param cartridgeProvider Cartridge provider
* @param cartridgeType Cartridge type
* @param payloadFilePath Location to create the payload
- * @return Payload instance
+ * @return Payload subscription
* @throws ADCException if no matching criteria is found to create a payload
*/
public static Payload getPayloadInstance (String cartridgeProvider, String cartridgeType, String payloadFilePath)
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
index 7a67eba..771ed4b 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/ApplicationManagementService.java
@@ -24,10 +24,10 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient;
import org.apache.stratos.adc.mgt.custom.domain.RegistryManager;
-import org.apache.stratos.adc.mgt.dao.CartridgeSubscription;
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
import org.apache.stratos.adc.mgt.dto.*;
import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.instance.CartridgeInstance;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
import org.apache.stratos.adc.mgt.internal.DataHolder;
import org.apache.stratos.adc.mgt.manager.CartridgeSubscriptionManager;
import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
@@ -173,12 +173,12 @@ public class ApplicationManagementService extends AbstractAdmin {
if (cartridgeInfo.getMultiTenant() && !allowMultipleSubscription) {
// If the cartridge is multi-tenant. We should not let users
- // subscribe twice.
+ // createSubscription twice.
if (PersistenceManager.isAlreadySubscribed(cartridgeType,
ApplicationManagementUtil.getTenantId(getConfigContext()))) {
if (log.isDebugEnabled()) {
log.debug("Already subscribed to " + cartridgeType
- + ". This multi-tenant cartridge will not be available to subscribe");
+ + ". This multi-tenant cartridge will not be available to createSubscription");
}
cartridge.setStatus(CartridgeConstants.SUBSCRIBED);
}
@@ -233,11 +233,11 @@ public class ApplicationManagementService extends AbstractAdmin {
try {
Pattern searchPattern = getSearchStringPattern(cartridgeSearchString);
- List<CartridgeSubscription> subscriptionList = PersistenceManager
+ List<CartridgeSubscriptionInfo> subscriptionList = PersistenceManager
.retrieveSubscribedCartridges(ApplicationManagementUtil.getTenantId(getConfigContext()));
if (subscriptionList != null && !subscriptionList.isEmpty()) {
- for (CartridgeSubscription subscription : subscriptionList) {
+ for (CartridgeSubscriptionInfo subscription : subscriptionList) {
CartridgeInfo cartridgeInfo = null;
try {
cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(
@@ -317,7 +317,7 @@ public class ApplicationManagementService extends AbstractAdmin {
return true;
}
- private boolean cartridgeMatches(CartridgeInfo cartridgeInfo, CartridgeSubscription cartridgeSubscription, Pattern pattern) {
+ private boolean cartridgeMatches(CartridgeInfo cartridgeInfo, CartridgeSubscriptionInfo cartridgeSubscriptionInfo, Pattern pattern) {
if (pattern != null) {
boolean matches = false;
if (cartridgeInfo.getDisplayName() != null) {
@@ -326,11 +326,11 @@ public class ApplicationManagementService extends AbstractAdmin {
if (!matches && cartridgeInfo.getDescription() != null) {
matches = pattern.matcher(cartridgeInfo.getDescription().toLowerCase()).find();
}
- if (!matches && cartridgeSubscription.getCartridge() != null) {
- matches = pattern.matcher(cartridgeSubscription.getCartridge().toLowerCase()).find();
+ if (!matches && cartridgeSubscriptionInfo.getCartridge() != null) {
+ matches = pattern.matcher(cartridgeSubscriptionInfo.getCartridge().toLowerCase()).find();
}
- if (!matches && cartridgeSubscription.getAlias() != null) {
- matches = pattern.matcher(cartridgeSubscription.getAlias().toLowerCase()).find();
+ if (!matches && cartridgeSubscriptionInfo.getAlias() != null) {
+ matches = pattern.matcher(cartridgeSubscriptionInfo.getAlias().toLowerCase()).find();
}
return matches;
}
@@ -344,17 +344,17 @@ public class ApplicationManagementService extends AbstractAdmin {
public String[] getSubscribedCartridgeAliases() throws AxisFault {
try {
- List<CartridgeSubscription> subscriptionList = PersistenceManager
+ List<CartridgeSubscriptionInfo> subscriptionList = PersistenceManager
.retrieveSubscribedCartridges(ApplicationManagementUtil.getTenantId(getConfigContext()));
List<String> subscribedAliases = new ArrayList<String>();
- for (CartridgeSubscription cartridgeSubscription : subscriptionList) {
+ for (CartridgeSubscriptionInfo cartridgeSubscriptionInfo : subscriptionList) {
- if(cartridgeSubscription.getProvider().equalsIgnoreCase(CartridgeConstants.PROVIDER_NAME_WSO2) &&
- getCartridgeInfo(cartridgeSubscription.getAlias()).isMultiTenant()) {
+ if(cartridgeSubscriptionInfo.getProvider().equalsIgnoreCase(CartridgeConstants.PROVIDER_NAME_WSO2) &&
+ getCartridgeInfo(cartridgeSubscriptionInfo.getAlias()).isMultiTenant()) {
- subscribedAliases.add(cartridgeSubscription.getCartridge());
+ subscribedAliases.add(cartridgeSubscriptionInfo.getCartridge());
} else {
- subscribedAliases.add(cartridgeSubscription.getAlias());
+ subscribedAliases.add(cartridgeSubscriptionInfo.getAlias());
}
}
if(subscribedAliases.size() == 0) {
@@ -392,7 +392,7 @@ public class ApplicationManagementService extends AbstractAdmin {
// repoPassword, dataCartridgeType, dataCartridgeAlias, getUsername(),
// ApplicationManagementUtil.getTenantId(getConfigContext()), getTenantDomain());
- CartridgeInstance cartridgeInstance = cartridgeSubsciptionManager.subscribeToCartridge(cartridgeType,
+ CartridgeSubscription cartridgeSubscription = cartridgeSubsciptionManager.subscribeToCartridge(cartridgeType,
alias.trim(), policy, getTenantDomain(), ApplicationManagementUtil.getTenantId(configurationContext),
getUsername(), "git", repoURL, privateRepo, repoUsername, repoPassword);
@@ -400,18 +400,18 @@ public class ApplicationManagementService extends AbstractAdmin {
dataCartridgeAlias = dataCartridgeAlias.trim();
- CartridgeInstance connectingCartridgeInstance = null;
+ CartridgeSubscription connectingCartridgeSubscription = null;
try {
- connectingCartridgeInstance = cartridgeSubsciptionManager.getCartridgeInstance(getTenantDomain(),
+ connectingCartridgeSubscription = cartridgeSubsciptionManager.getCartridgeSubscription(getTenantDomain(),
dataCartridgeAlias);
} catch (NotSubscribedException e) {
log.error(e.getMessage(), e);
}
- if (connectingCartridgeInstance != null) {
+ if (connectingCartridgeSubscription != null) {
try {
- cartridgeSubsciptionManager.connectCartridges(tenantDomain, cartridgeInstance,
- connectingCartridgeInstance.getAlias());
+ cartridgeSubsciptionManager.connectCartridges(tenantDomain, cartridgeSubscription,
+ connectingCartridgeSubscription.getAlias());
} catch (NotSubscribedException e) {
log.error(e.getMessage(), e);
@@ -420,12 +420,12 @@ public class ApplicationManagementService extends AbstractAdmin {
log.error(axisFault.getMessage(), axisFault);
}
} else {
- log.error("Failed to connect. No cartridge instance found for tenant " +
+ log.error("Failed to connect. No cartridge subscription found for tenant " +
ApplicationManagementUtil.getTenantId(configurationContext) + " with alias " + alias);
}
}
- return cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeInstance);
+ return cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription);
}
@@ -440,7 +440,7 @@ public class ApplicationManagementService extends AbstractAdmin {
checkSuperTenant();
cartridgeSubsciptionManager.unsubscribeFromCartridge(getTenantDomain(), alias);
- /*CartridgeSubscription subscription = null;
+ /*CartridgeSubscriptionInfo subscription = null;
try {
subscription = PersistenceManager.getSubscription(tenantDomain, alias);
@@ -512,7 +512,7 @@ public class ApplicationManagementService extends AbstractAdmin {
// System.out.println("\nOwn domain should include a '.' ");
// }
- CartridgeSubscription subscription = null;
+ CartridgeSubscriptionInfo subscription = null;
String actualHost = null;
try {
@@ -557,7 +557,7 @@ public class ApplicationManagementService extends AbstractAdmin {
public void removeDomainMapping(String cartridgeAlias) throws ADCException, NotSubscribedException {
checkSuperTenant();
- CartridgeSubscription subscription = null;
+ CartridgeSubscriptionInfo subscription = null;
String actualHost = null;
try {
@@ -592,7 +592,7 @@ public class ApplicationManagementService extends AbstractAdmin {
public void synchronizeRepository(String cartridgeAlias) throws ADCException, NotSubscribedException {
checkSuperTenant();
- CartridgeSubscription subscription = null;
+ CartridgeSubscriptionInfo subscription = null;
// Validating subscription
try {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/InstanceInformationManagementService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/InstanceInformationManagementService.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/InstanceInformationManagementService.java
index a0cd8df..3425c42 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/InstanceInformationManagementService.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/InstanceInformationManagementService.java
@@ -29,7 +29,7 @@ public class InstanceInformationManagementService {
private static final Log log = LogFactory.getLog(InstanceInformationManagementService.class);
/**
- * Everytime an instance is started up, this operation is invoked
+ * Everytime an subscription is started up, this operation is invoked
* (by the AgentService)
* @param instanceIp
* @param tenantId
@@ -52,7 +52,7 @@ public class InstanceInformationManagementService {
try {
PersistenceManager.persistCartridgeInstanceInfo(instanceIp, clusterDomain, clusterSubDomain, cartridge, state);
} catch (Exception e) {
- log.error("Exception is occurred in updating instance state. Reason, " + e.getMessage());
+ log.error("Exception is occurred in updating subscription state. Reason, " + e.getMessage());
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/RepoNotificationService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/RepoNotificationService.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/RepoNotificationService.java
index 90dc403..28542b2 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/RepoNotificationService.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/service/RepoNotificationService.java
@@ -28,7 +28,7 @@ import org.apache.axis2.clustering.ClusteringFault;
import org.apache.axis2.clustering.management.GroupManagementAgent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.adc.mgt.dao.CartridgeSubscription;
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
import org.apache.stratos.adc.mgt.internal.DataHolder;
import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
import org.apache.stratos.adc.mgt.utils.PersistenceManager;
@@ -47,7 +47,7 @@ public class RepoNotificationService {
log.info("Updating repository of tenant : " + tenantDomain + " , cartridge: " +
cartridgeAlias);
- CartridgeSubscription subscription = null;
+ CartridgeSubscriptionInfo subscription = null;
try {
subscription = PersistenceManager.getSubscription(tenantDomain, cartridgeAlias);
} catch (Exception e) {
@@ -77,13 +77,13 @@ public class RepoNotificationService {
public void synchronize(String repositoryURL) throws Exception {
log.info(" repository URL received : " + repositoryURL);
- List<CartridgeSubscription> subscription = PersistenceManager.getSubscription(repositoryURL);
- for (CartridgeSubscription cartridgeSubscription : subscription) {
- handleRepoSynch(cartridgeSubscription);
+ List<CartridgeSubscriptionInfo> subscription = PersistenceManager.getSubscription(repositoryURL);
+ for (CartridgeSubscriptionInfo cartridgeSubscriptionInfo : subscription) {
+ handleRepoSynch(cartridgeSubscriptionInfo);
}
}
- private void handleRepoSynch(CartridgeSubscription subscription) throws Exception {
+ private void handleRepoSynch(CartridgeSubscriptionInfo subscription) throws Exception {
if (subscription == null) {
throw new Exception("Cannot synchronize repository. subscription is null");
}
@@ -107,7 +107,7 @@ public class RepoNotificationService {
} else {
// Query DB and get all the IP s for this tenant
- // Invoke update-instance script
+ // Invoke update-subscription script
String appPath = subscription.getBaseDirectory();
String cartridgePrivateKey = System.getProperty(CartridgeConstants.CARTRIDGE_KEY);
@@ -136,10 +136,10 @@ public class RepoNotificationService {
for (String instanceIp : activeIpArray) {
String command =
CarbonUtils.getCarbonHome() + File.separator + "bin" +
- File.separator + "update-instance.sh " +
+ File.separator + "update-subscription.sh " +
instanceIp + " " + appPath + " " +
cartridgePrivateKey + " /";
- log.info("Update instance command.... " + command);
+ log.info("Update subscription command.... " + command);
Process proc = Runtime.getRuntime().exec(command);
proc.waitFor();
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
new file mode 100644
index 0000000..afd3791
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
@@ -0,0 +1,416 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.subscription;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.custom.domain.RegistryManager;
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
+import org.apache.stratos.adc.mgt.dns.DNSManager;
+import org.apache.stratos.adc.mgt.dto.Policy;
+import org.apache.stratos.adc.mgt.exception.*;
+import org.apache.stratos.adc.mgt.internal.DataHolder;
+import org.apache.stratos.adc.mgt.payload.Payload;
+import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.repository.Repository;
+import org.apache.stratos.adc.mgt.service.RepositoryInfoBean;
+import org.apache.stratos.adc.mgt.subscriber.Subscriber;
+import org.apache.stratos.adc.mgt.utils.*;
+import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
+import org.apache.stratos.cloud.controller.util.xsd.CartridgeInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+public abstract class CartridgeSubscription {
+
+ private static Log log = LogFactory.getLog(CartridgeSubscription.class);
+
+ private int subscriptionId;
+ private String type;
+ private String alias;
+ private String clusterDomain;
+ private String clusterSubDomain;
+ private String mgtClusterDomain;
+ private String mgtClusterSubDomain;
+ private String hostName;
+ private Policy autoscalingPolicy;
+ private Subscriber subscriber;
+ private Repository repository;
+ private CartridgeInfo cartridgeInfo;
+ private Payload payload;
+ private String subscriptionStatus;
+ private String mappedDomain;
+ private List<String> connectedSubscriptionAliases;
+
+ /**
+ * Constructor
+ *
+ * @param cartridgeInfo CartridgeInfo subscription
+ */
+ public CartridgeSubscription(CartridgeInfo cartridgeInfo) {
+
+ this.setCartridgeInfo(cartridgeInfo);
+ this.setType(cartridgeInfo.getType());
+ this.setClusterDomain("");
+ this.setClusterSubDomain(CartridgeConstants.DEFAULT_SUBDOMAIN);
+ this.setMgtClusterDomain("");
+ this.setMgtClusterSubDomain(CartridgeConstants.DEFAULT_MGT_SUBDOMAIN);
+ this.setHostName(cartridgeInfo.getHostName());
+ this.setSubscriptionStatus(CartridgeConstants.SUBSCRIBED);
+ this.connectedSubscriptionAliases = new ArrayList<String>();
+ }
+
+ /**
+ * Subscribes to this cartridge subscription
+ *
+ * @param subscriber Subscriber subscription
+ * @param alias Alias of the cartridge subscription
+ * @param autoscalingPolicy Auto scaling policy
+ * @param repository Relevenat Repository subscription
+ *
+ * @throws ADCException
+ * @throws PolicyException
+ * @throws UnregisteredCartridgeException
+ * @throws InvalidCartridgeAliasException
+ * @throws DuplicateCartridgeAliasException
+ * @throws RepositoryRequiredException
+ * @throws AlreadySubscribedException
+ * @throws RepositoryCredentialsRequiredException
+ * @throws InvalidRepositoryException
+ * @throws RepositoryTransportException
+ */
+ public void createSubscription (Subscriber subscriber, String alias, Policy autoscalingPolicy,
+ Repository repository)
+ throws ADCException, PolicyException, UnregisteredCartridgeException, InvalidCartridgeAliasException,
+ DuplicateCartridgeAliasException, RepositoryRequiredException, AlreadySubscribedException,
+ RepositoryCredentialsRequiredException, InvalidRepositoryException, RepositoryTransportException {
+
+ setSubscriber(subscriber);
+ setAlias(alias);
+ setAutoscalingPolicy(autoscalingPolicy);
+ setRepository(repository);
+ }
+
+ /**
+ * Unsubscribe from this cartridge subscription
+ *
+ * @throws ADCException
+ * @throws NotSubscribedException
+ */
+ public abstract void removeSubscription() throws ADCException, NotSubscribedException;
+
+ /**
+ * Registers the subscription
+ *
+ * @param properties Any additional properties needed
+ *
+ * @return CartridgeSubscriptionInfo subscription populated with relevant data
+ * @throws ADCException
+ * @throws UnregisteredCartridgeException
+ */
+ public abstract CartridgeSubscriptionInfo registerSubscription(Properties properties)
+ throws ADCException, UnregisteredCartridgeException;
+
+ /**
+ * Connect cartridges
+ *
+ * @param connectingCartridgeAlias Alias of connecting cartridge
+ */
+ public void connect (String connectingCartridgeAlias) {
+ connectedSubscriptionAliases.add(connectingCartridgeAlias);
+ }
+
+ /**
+ * Disconnect from the cartridge subscription given by disconnectingCartridgeAlias
+ *
+ * @param disconnectingCartridgeAlias Alias of the cartridge subscription to disconnect
+ */
+ public void disconnect (String disconnectingCartridgeAlias) {
+ connectedSubscriptionAliases.remove(disconnectingCartridgeAlias);
+ }
+
+ /**
+ * Creates the relevant payload parameters for this cartridge subscription
+ *
+ * @return PayloadArg subscription
+ * @throws ADCException in an errpr
+ */
+ public PayloadArg createPayloadParameters() throws ADCException {
+
+ PayloadArg payloadArg = new PayloadArg();
+ payloadArg.setCartridgeInfo(getCartridgeInfo());
+ payloadArg.setPolicy(getAutoscalingPolicy());
+ payloadArg.setMultitenant(getCartridgeInfo().getMultiTenant());
+ payloadArg.setTenantId(getSubscriber().getTenantId());
+ payloadArg.setTenantDomain(getSubscriber().getTenantDomain());
+ payloadArg.setCartridgeAlias(getAlias());
+ payloadArg.setServiceName(getCartridgeInfo().getType());
+
+ return payloadArg;
+ }
+
+ /**
+ * Manages the repository for the cartridge subscription
+ *
+ * @param repoURL Repository URL
+ * @param repoUserName Repository Username
+ * @param repoUserPassword Repository password
+ * @param privateRepo public/private repository
+ * @param cartridgeAlias Alias of the cartridge subscription
+ * @param cartridgeInfo CartridgeInfo subscription
+ * @param tenantDomain Domain of the tenant
+ *
+ * @return Repository populated with relevant information or null of not repository is relevant to this cartridge
+ * subscription
+ * @throws ADCException
+ * @throws RepositoryRequiredException
+ * @throws RepositoryCredentialsRequiredException
+ * @throws RepositoryTransportException
+ * @throws InvalidRepositoryException
+ */
+ public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword,
+ boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo,
+ String tenantDomain)
+
+ throws ADCException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
+ RepositoryTransportException, InvalidRepositoryException {
+
+ if (!new Boolean(System.getProperty(CartridgeConstants.FEATURE_INTERNAL_REPO_ENABLED))) {
+ if (log.isDebugEnabled()) {
+ log.debug("Internal repo feature is not enabled.");
+ }
+ }
+
+ Repository repository = new Repository();
+ if (repoURL != null && repoURL.trim().length() > 0) {
+ log.info("External REPO URL is provided as [" + repoURL +
+ "]. Therefore not creating a new repo.");
+ //repository.setRepoName(repoURL.substring(0, repoURL.length()-4)); // remove .git part
+ repository.setUrl(repoURL);
+ repository.setUserName(repoUserName);
+ repository.setPassword(repoUserPassword);
+ repository.setPrivateRepository(privateRepo);
+
+ } else {
+
+ log.info("External git repo url not provided for tenant "
+ + tenantDomain + ", creating an git internal repository");
+
+ // for internal repos internal git server username and password is used.
+ repository.setUserName(System.getProperty(CartridgeConstants.INTERNAL_GIT_USERNAME));
+ repository.setPassword(System.getProperty(CartridgeConstants.INTERNAL_GIT_PASSWORD));
+ try {
+ new RepositoryCreator(new RepositoryInfoBean(repoURL, cartridgeAlias, tenantDomain,
+ repository.getUserName(), repository.getPassword(), cartridgeInfo.getDeploymentDirs(),
+ cartridgeInfo)).createInternalRepository();
+
+ } catch (Exception e) {
+ throw new ADCException(e.getMessage(), e);
+ }
+ String repoName = tenantDomain + "/" + cartridgeAlias;
+ repository.setUrl("https://" + System.getProperty(CartridgeConstants.GIT_HOST_NAME) + ":8443/git/" +
+ repoName);
+ }
+
+ // Validate Remote Repository.
+ ApplicationManagementUtil.validateRepository(repoURL, repoUserName, repoUserPassword, privateRepo,
+ new Boolean(System.getProperty(CartridgeConstants.FEATURE_EXTERNAL_REPO_VAIDATION_ENABLED)));
+
+ return repository;
+ }
+
+ /**
+ * Cleans up the subscription information after unsubscribing
+ *
+ * @throws ADCException
+ */
+ protected void cleanupSubscription () throws ADCException {
+
+ try {
+ new RepositoryFactory().destroyRepository(alias, subscriber.getTenantDomain(),
+ subscriber.getAdminUserName());
+ log.info("Repo is destroyed successfully.. ");
+
+ } catch (Exception e) {
+ String errorMsg = "Error in destroying repository for tenant " + subscriber.getTenantDomain() +
+ "cartridge type " + type;
+ log.error(errorMsg);
+ }
+
+ try {
+ PersistenceManager.updateSubscriptionState(subscriptionId, "UNSUBSCRIBED");
+
+ } catch (Exception e) {
+ String errorMsg = "Error in unscubscribing from cartridge, alias " + alias + ", tenant " +
+ subscriber.getTenantDomain();
+ throw new ADCException(errorMsg, e);
+ }
+
+ //TODO: FIXME: do we need this?
+ new DNSManager().removeSubDomain(hostName);
+
+ try {
+ new RegistryManager().removeDomainMappingFromRegistry(hostName);
+
+ } catch (Exception e) {
+ String errorMsg = "Error in removing domain mapping, alias " + alias + ", tenant " +
+ subscriber.getTenantDomain();
+ log.error(errorMsg, e);
+ }
+
+ TopologyManagementService topologyMgtService = DataHolder.getTopologyMgtService();
+ String[] ips = topologyMgtService.getActiveIPs(type, clusterDomain, clusterSubDomain);
+ try {
+ PersistenceManager.updateInstanceState("INACTIVE", ips, clusterDomain, clusterSubDomain, type);
+
+ } catch (Exception e) {
+ String errorMsg = "Error in updating state to INACTIVE";
+ log.error(errorMsg, e);
+ }
+
+ this.setSubscriptionStatus(CartridgeConstants.UNSUBSCRIBED);
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public Subscriber getSubscriber() {
+ return subscriber;
+ }
+
+ public Repository getRepository() {
+ return repository;
+ }
+
+ public List<String> getConnectedSubscriptionAliases() {
+ return connectedSubscriptionAliases;
+ }
+
+ public CartridgeInfo getCartridgeInfo() {
+ return cartridgeInfo;
+ }
+
+ public String getHostName() {
+ return hostName;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getClusterDomain() {
+ return clusterDomain;
+ }
+
+ public void setClusterDomain(String clusterDomain) {
+ this.clusterDomain = clusterDomain;
+ }
+
+ public String getClusterSubDomain() {
+ return clusterSubDomain;
+ }
+
+ public void setClusterSubDomain(String clusterSubDomain) {
+ this.clusterSubDomain = clusterSubDomain;
+ }
+
+ public String getMgtClusterDomain() {
+ return mgtClusterDomain;
+ }
+
+ public void setMgtClusterDomain(String mgtClusterDomain) {
+ this.mgtClusterDomain = mgtClusterDomain;
+ }
+
+ public String getMgtClusterSubDomain() {
+ return mgtClusterSubDomain;
+ }
+
+ public void setMgtClusterSubDomain(String mgtClusterSubDomain) {
+ this.mgtClusterSubDomain = mgtClusterSubDomain;
+ }
+
+ public void setHostName(String hostName) {
+ this.hostName = hostName;
+ }
+
+ public Policy getAutoscalingPolicy() {
+ return autoscalingPolicy;
+ }
+
+ public void setAutoscalingPolicy(Policy autoscalingPolicy) {
+ this.autoscalingPolicy = autoscalingPolicy;
+ }
+
+ public void setSubscriber(Subscriber subscriber) {
+ this.subscriber = subscriber;
+ }
+
+ public void setRepository(Repository repository) {
+ this.repository = repository;
+ }
+
+ public void setCartridgeInfo(CartridgeInfo cartridgeInfo) {
+ this.cartridgeInfo = cartridgeInfo;
+ }
+
+ public Payload getPayload() {
+ return payload;
+ }
+
+ public void setPayload(Payload payload) {
+ this.payload = payload;
+ }
+
+ public int getSubscriptionId() {
+ return subscriptionId;
+ }
+
+ public void setSubscriptionId(int subscriptionId) {
+ this.subscriptionId = subscriptionId;
+ }
+
+ public String getMappedDomain() {
+ return mappedDomain;
+ }
+
+ public void setMappedDomain(String mappedDomain) {
+ this.mappedDomain = mappedDomain;
+ }
+
+ public String getSubscriptionStatus() {
+ return subscriptionStatus;
+ }
+
+ public void setSubscriptionStatus(String subscriptionStatus) {
+ this.subscriptionStatus = subscriptionStatus;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
new file mode 100644
index 0000000..fcc7700
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.subscription;
+
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
+import org.apache.stratos.adc.mgt.dao.DataCartridge;
+import org.apache.stratos.adc.mgt.dto.Policy;
+import org.apache.stratos.adc.mgt.exception.*;
+import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.repository.Repository;
+import org.apache.stratos.adc.mgt.subscriber.Subscriber;
+import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
+import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+import org.apache.stratos.cloud.controller.util.xsd.CartridgeInfo;
+
+import java.util.Properties;
+
+public class DataCartridgeSubscription extends SingleTenantCartridgeSubscription {
+
+ protected String host;
+ protected String username;
+ protected String password;
+
+ public DataCartridgeSubscription(CartridgeInfo cartridgeInfo) {
+
+ super(cartridgeInfo);
+ this.host = "localhost";
+ this.username = CartridgeConstants.MYSQL_DEFAULT_USER;
+ this.password = ApplicationManagementUtil.generatePassword();
+ }
+
+ @Override
+ public void createSubscription(Subscriber subscriber, String alias, Policy autoscalingPolicy, Repository repository)
+
+ throws InvalidCartridgeAliasException,
+ DuplicateCartridgeAliasException, ADCException, RepositoryCredentialsRequiredException,
+ RepositoryTransportException, UnregisteredCartridgeException, AlreadySubscribedException,
+ RepositoryRequiredException, InvalidRepositoryException, PolicyException {
+
+ super.createSubscription(subscriber, alias, autoscalingPolicy, repository);
+ }
+
+ public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword,
+ boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo,
+ String tenantDomain) {
+
+ //no repository for data cartridge instances
+ return null;
+ }
+
+ public PayloadArg createPayloadParameters() throws ADCException {
+
+ PayloadArg payloadArg = super.createPayloadParameters();
+ payloadArg.setDataCartridgeHost(this.getHost());
+ payloadArg.setDataCartridgeAdminUser(username);
+ payloadArg.setDataCartridgeAdminPassword(password);
+
+ return payloadArg;
+ }
+
+ public CartridgeSubscriptionInfo registerSubscription(Properties payloadProperties)
+ throws ADCException, UnregisteredCartridgeException {
+
+ ApplicationManagementUtil.registerService(getType(),
+ getClusterDomain(),
+ getClusterSubDomain(),
+ getPayload().createPayload(),
+ getPayload().getPayloadArg().getTenantRange(),
+ getHostName(),
+ ApplicationManagementUtil.setRegisterServiceProperties(getAutoscalingPolicy(),
+ getSubscriber().getTenantId(), getAlias()));
+
+ getPayload().delete();
+
+ DataCartridge dataCartridge = new DataCartridge();
+ dataCartridge.setUserName(username);
+ dataCartridge.setPassword(password);
+ dataCartridge.setDataCartridgeType(getType());
+
+ return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicy(),
+ getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
+ getRepository(), getHostName(), getClusterDomain(), getClusterSubDomain(),
+ getMgtClusterDomain(), getMgtClusterSubDomain(), dataCartridge, "PENDING");
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7db31d5d/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/MultiTenantCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/MultiTenantCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/MultiTenantCartridgeSubscription.java
new file mode 100644
index 0000000..4e7796d
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/MultiTenantCartridgeSubscription.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.subscription;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
+import org.apache.stratos.adc.mgt.dto.Policy;
+import org.apache.stratos.adc.mgt.exception.*;
+import org.apache.stratos.adc.mgt.internal.DataHolder;
+import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.repository.Repository;
+import org.apache.stratos.adc.mgt.subscriber.Subscriber;
+import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
+import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+import org.apache.stratos.adc.mgt.utils.PersistenceManager;
+import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
+import org.apache.stratos.adc.topology.mgt.serviceobjects.DomainContext;
+import org.apache.stratos.cloud.controller.util.xsd.CartridgeInfo;
+
+import java.util.Properties;
+
+public class MultiTenantCartridgeSubscription extends CartridgeSubscription {
+
+ private static Log log = LogFactory.getLog(MultiTenantCartridgeSubscription.class);
+
+ public MultiTenantCartridgeSubscription(CartridgeInfo cartridgeInfo) {
+ super(cartridgeInfo);
+ }
+
+ @Override
+ public void createSubscription(Subscriber subscriber, String alias, Policy autoscalingPolicy, Repository repository)
+
+ throws InvalidCartridgeAliasException,
+ DuplicateCartridgeAliasException, ADCException, AlreadySubscribedException,
+ RepositoryCredentialsRequiredException, RepositoryTransportException, UnregisteredCartridgeException,
+ InvalidRepositoryException, RepositoryRequiredException, PolicyException {
+
+ super.createSubscription(subscriber, alias, autoscalingPolicy, repository);
+
+ boolean allowMultipleSubscription = Boolean.
+ valueOf(System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED));
+
+ if (!allowMultipleSubscription) {
+ // If the cartridge is multi-tenant. We should not let users createSubscription twice.
+ boolean subscribed;
+ try {
+ subscribed = PersistenceManager.isAlreadySubscribed(getType(), subscriber.getTenantId());
+ } catch (Exception e) {
+ String msg = "Error checking whether the cartridge type " + getType()
+ + " is already subscribed";
+ log.error(msg, e);
+ throw new ADCException(msg, e);
+ }
+
+ if (subscribed) {
+ String msg = "Already subscribed to " + getType()
+ + ". This multi-tenant cartridge will not be available to createSubscription";
+ if (log.isDebugEnabled()) {
+ log.debug(msg);
+ }
+ throw new AlreadySubscribedException(msg, getType());
+ }
+ }
+
+ TopologyManagementService topologyService = DataHolder.getTopologyMgtService();
+ DomainContext[] domainContexts = topologyService.getDomainsAndSubdomains(getType(), subscriber.getTenantId());
+ log.info("Retrieved " + domainContexts.length + " domain and corresponding subdomain pairs");
+
+ if (domainContexts.length > 0) {
+ if(domainContexts.length > 2) {
+ if(log.isDebugEnabled())
+ log.debug("Too many domain sub domain pairs");
+ }
+
+ for (DomainContext domainContext : domainContexts) {
+ if (domainContext.getSubDomain().equalsIgnoreCase("mgt")) {
+ setMgtClusterDomain(domainContext.getDomain());
+ setMgtClusterSubDomain(domainContext.getSubDomain());
+ } else {
+ setClusterDomain(domainContext.getDomain());
+ setClusterSubDomain(domainContext.getSubDomain());
+ }
+ }
+ } else {
+ String msg = "Domain contexts not found for " + getType() + " and tenant id " + subscriber.getTenantId();
+ log.warn(msg);
+ throw new ADCException(msg);
+ }
+ }
+
+ @Override
+ public void removeSubscription() throws ADCException, NotSubscribedException {
+
+ log.info("Cartridge with alias " + getAlias() + ", and type " + getType() +
+ " is a multi-tenant cartridge and therefore will not terminate all instances and " +
+ "unregister services");
+
+ super.cleanupSubscription();
+ }
+
+ @Override
+ public CartridgeSubscriptionInfo registerSubscription(Properties properties) {
+
+ return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicy(),
+ getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
+ getRepository(), getHostName(), getClusterDomain(), getClusterSubDomain(),
+ getMgtClusterDomain(), getMgtClusterSubDomain(), null, "PENDING");
+ }
+
+ @Override
+ public PayloadArg createPayloadParameters() {
+
+ return null;
+ }
+
+}