Repository: incubator-stratos Updated Branches: refs/heads/master d2be6febb -> 98edba232
refactoring some SM logic Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/98edba23 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/98edba23 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/98edba23 Branch: refs/heads/master Commit: 98edba2327b67f414e9e84d17e058563f20d0078 Parents: d2be6fe Author: Isuru <[email protected]> Authored: Sat Feb 15 20:15:03 2014 +0530 Committer: Isuru <[email protected]> Committed: Sat Feb 15 20:15:03 2014 +0530 ---------------------------------------------------------------------- .../behaviour/CartridgeMgtBehaviour.java | 46 ++++++++ .../subscription/CartridgeSubscription.java | 26 ++--- .../subscription/DataCartridgeSubscription.java | 3 +- .../ServiceDeploymentMultiTenantBehaviour.java | 109 ------------------- .../SubscriptionMultiTenantBehaviour.java | 50 +++++---- .../SubscriptionSingleTenantBehaviour.java | 67 ++++++------ .../tenancy/SubscriptionTenancyBehaviour.java | 20 +++- .../utils/CartridgeSubscriptionUtils.java | 36 +++--- 8 files changed, 150 insertions(+), 207 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java new file mode 100644 index 0000000..e3ea69b --- /dev/null +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/behaviour/CartridgeMgtBehaviour.java @@ -0,0 +1,46 @@ +package org.apache.stratos.manager.behaviour; +/* + * 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. + */ + +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.cloud.controller.pojo.Properties; +import org.apache.stratos.manager.dao.Cluster; +import org.apache.stratos.manager.exception.ADCException; +import org.apache.stratos.manager.exception.AlreadySubscribedException; +import org.apache.stratos.manager.exception.NotSubscribedException; +import org.apache.stratos.manager.exception.UnregisteredCartridgeException; +import org.apache.stratos.manager.payload.PayloadData; +import org.apache.stratos.manager.repository.Repository; +import org.apache.stratos.manager.subscriber.Subscriber; + +import java.io.Serializable; +import java.util.Map; + +public interface CartridgeMgtBehaviour extends Serializable { + + public PayloadData create (String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo, + String subscriptionKey, Map<String, String> customPayloadEntries) throws ADCException, AlreadySubscribedException; + + public void register (CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, + String deploymentPolicyName, Properties properties) + throws ADCException, UnregisteredCartridgeException; + + public void remove (String clusterId, String alias) + throws ADCException, NotSubscribedException; +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java index 678925f..71ae249 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CartridgeSubscription.java @@ -19,9 +19,6 @@ package org.apache.stratos.manager.subscription; -import java.io.Serializable; -import java.util.Map; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; @@ -29,17 +26,7 @@ import org.apache.stratos.cloud.controller.pojo.PersistanceMapping; import org.apache.stratos.cloud.controller.pojo.Properties; import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo; import org.apache.stratos.manager.dao.Cluster; -import org.apache.stratos.manager.exception.ADCException; -import org.apache.stratos.manager.exception.AlreadySubscribedException; -import org.apache.stratos.manager.exception.DuplicateCartridgeAliasException; -import org.apache.stratos.manager.exception.InvalidCartridgeAliasException; -import org.apache.stratos.manager.exception.InvalidRepositoryException; -import org.apache.stratos.manager.exception.NotSubscribedException; -import org.apache.stratos.manager.exception.PolicyException; -import org.apache.stratos.manager.exception.RepositoryCredentialsRequiredException; -import org.apache.stratos.manager.exception.RepositoryRequiredException; -import org.apache.stratos.manager.exception.RepositoryTransportException; -import org.apache.stratos.manager.exception.UnregisteredCartridgeException; +import org.apache.stratos.manager.exception.*; import org.apache.stratos.manager.payload.PayloadData; import org.apache.stratos.manager.repository.Repository; import org.apache.stratos.manager.subscriber.Subscriber; @@ -47,6 +34,9 @@ import org.apache.stratos.manager.subscription.tenancy.SubscriptionTenancyBehavi import org.apache.stratos.manager.utils.ApplicationManagementUtil; import org.apache.stratos.manager.utils.CartridgeConstants; +import java.io.Serializable; +import java.util.Map; + public abstract class CartridgeSubscription implements Serializable { @@ -125,7 +115,8 @@ public abstract class CartridgeSubscription implements Serializable { setDeploymentPolicyName(deploymentPolicyName); setRepository(repository); - getSubscriptionTenancyBehaviour().createSubscription(this); + setPayloadData(getSubscriptionTenancyBehaviour().create(getAlias(), getCluster(), getSubscriber(), getRepository(), getCartridgeInfo(), + getSubscriptionKey(), getCustomPayloadEntries())); } /** @@ -136,7 +127,7 @@ public abstract class CartridgeSubscription implements Serializable { */ public void removeSubscription() throws ADCException, NotSubscribedException { - getSubscriptionTenancyBehaviour().removeSubscription(this); + getSubscriptionTenancyBehaviour().remove(getCluster().getClusterDomain(), getAlias()); cleanupSubscription(); } @@ -155,7 +146,8 @@ public abstract class CartridgeSubscription implements Serializable { // Properties props = new Properties(); //props.setProperties(getCartridgeInfo().getProperties()); - getSubscriptionTenancyBehaviour().registerSubscription(this, properties); + getSubscriptionTenancyBehaviour().register (getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(), + getDeploymentPolicyName(), properties); return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(), getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(), http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java index d0ab38f..d77a38b 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/DataCartridgeSubscription.java @@ -59,7 +59,8 @@ public class DataCartridgeSubscription extends CartridgeSubscription { //Properties props = new Properties(); //props.setProperties(getCartridgeInfo().getProperties()); - getSubscriptionTenancyBehaviour().registerSubscription(this, properties); + getSubscriptionTenancyBehaviour().register (getCartridgeInfo(), getCluster(), getPayloadData(), getAutoscalingPolicyName(), + getDeploymentPolicyName(), properties); DataCartridge dataCartridge = new DataCartridge(); dataCartridge.setUserName(getDBUsername()); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java deleted file mode 100644 index bc29f47..0000000 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java +++ /dev/null @@ -1,109 +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.manager.subscription.tenancy; -// -//import org.apache.commons.logging.Log; -//import org.apache.commons.logging.LogFactory; -//import org.apache.stratos.manager.exception.ADCException; -//import org.apache.stratos.manager.exception.AlreadySubscribedException; -//import org.apache.stratos.manager.exception.UnregisteredCartridgeException; -//import org.apache.stratos.manager.payload.PayloadArg; -//import org.apache.stratos.manager.subscription.CartridgeSubscription; -//import org.apache.stratos.manager.utils.ApplicationManagementUtil; -//import org.apache.stratos.manager.utils.CartridgeConstants; -//import org.apache.stratos.manager.utils.PersistenceManager; -//import org.apache.stratos.cloud.controller.pojo.Properties; -// -//public class ServiceDeploymentMultiTenantBehaviour extends -// SubscriptionMultiTenantBehaviour { -// -// private static Log log = LogFactory.getLog(ServiceDeploymentMultiTenantBehaviour.class); -// -// @Override -// public void createSubscription() throws ADCException, -// AlreadySubscribedException { -// -// log.info(" --- in Service Deployment Multitenant Behaviour create subscription ---- "); -// -// 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( -// cartridgeSubscription.getType(), cartridgeSubscription -// .getSubscriber().getTenantId()); -// } catch (Exception e) { -// String msg = "Error checking whether the cartridge type " -// + cartridgeSubscription.getType() -// + " is already subscribed"; -// log.error(msg, e); -// throw new ADCException(msg, e); -// } -// -// if (subscribed) { -// String msg = "Already subscribed to " -// + cartridgeSubscription.getType() -// + ". This multi-tenant cartridge will not be available to createSubscription"; -// if (log.isDebugEnabled()) { -// log.debug(msg); -// } -// throw new AlreadySubscribedException(msg, -// cartridgeSubscription.getType()); -// } -// } -// -// /*if (domainContext.getSubDomain().equalsIgnoreCase("mgt")) { -// cartridgeSubscription.getCluster().setMgtClusterDomain( -// domainContext.getDomain()); -// cartridgeSubscription.getCluster().setMgtClusterSubDomain( -// domainContext.getSubDomain()); -// } else { -// cartridgeSubscription.getCluster().setClusterDomain( -// domainContext.getDomain()); -// cartridgeSubscription.getCluster().setClusterSubDomain( -// domainContext.getSubDomain()); -// }*/ -// -// } -// -// -// @Override -// public void registerSubscription(Properties properties) -// throws ADCException, UnregisteredCartridgeException { -// -// // register subscription to start up the cartridge instances -// ApplicationManagementUtil.registerService(cartridgeSubscription.getType(), -// cartridgeSubscription.getCluster().getClusterDomain(), -// cartridgeSubscription.getCluster().getClusterSubDomain(), -// cartridgeSubscription.getPayloadData().createPayload(), -// cartridgeSubscription.getPayloadData().getPayloadArg().getTenantRange(), -// cartridgeSubscription.getCluster().getHostName(), -// cartridgeSubscription.getAutoscalingPolicyName(), -// cartridgeSubscription.getDeploymentPolicyName(), -// properties); -// -// cartridgeSubscription.getPayloadData().delete(); -// } -// -//} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionMultiTenantBehaviour.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionMultiTenantBehaviour.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionMultiTenantBehaviour.java index 7b63701..5bad00b 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionMultiTenantBehaviour.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionMultiTenantBehaviour.java @@ -21,21 +21,28 @@ package org.apache.stratos.manager.subscription.tenancy; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; import org.apache.stratos.cloud.controller.pojo.Properties; +import org.apache.stratos.manager.dao.Cluster; import org.apache.stratos.manager.deploy.service.Service; import org.apache.stratos.manager.exception.*; +import org.apache.stratos.manager.payload.PayloadData; import org.apache.stratos.manager.publisher.InstanceNotificationPublisher; +import org.apache.stratos.manager.repository.Repository; import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager; -import org.apache.stratos.manager.subscription.CartridgeSubscription; +import org.apache.stratos.manager.subscriber.Subscriber; import org.apache.stratos.manager.utils.CartridgeConstants; +import java.util.Map; + public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehaviour { private static Log log = LogFactory.getLog(SubscriptionMultiTenantBehaviour.class); - public void createSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, AlreadySubscribedException { + public PayloadData create (String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo, + String subscriptionKey, Map<String, String> customPayloadEntries) throws ADCException, AlreadySubscribedException { boolean allowMultipleSubscription = Boolean. valueOf(System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED)); @@ -45,22 +52,20 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio boolean subscribed; try { - subscribed = hasAlreadySubscribed(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getType()); + subscribed = hasAlreadySubscribed(subscriber.getTenantId(), cartridgeInfo.getType()); } catch (Exception e) { - String msg = "Error checking whether the cartridge type " + cartridgeSubscription.getType() + - " is already subscribed"; + String msg = "Error checking whether the cartridge type " + cartridgeInfo.getType() + " is already subscribed"; log.error(msg, e); throw new ADCException(msg, e); } if (subscribed) { - String msg = "Already subscribed to " + cartridgeSubscription.getType() - + ". This multi-tenant cartridge will not be available to createSubscription"; + String msg = "Already subscribed to " + cartridgeInfo.getType() + ". This multi-tenant cartridge will not be available to createSubscription"; if (log.isDebugEnabled()) { log.debug(msg); } - throw new AlreadySubscribedException(msg, cartridgeSubscription.getType()); + throw new AlreadySubscribedException(msg, cartridgeInfo.getType()); } } @@ -69,7 +74,7 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio Service deployedService; try { - deployedService = dataInsertionAndRetrievalManager.getService(cartridgeSubscription.getType()); + deployedService = dataInsertionAndRetrievalManager.getService(cartridgeInfo.getType()); } catch (PersistenceManagerException e) { String errorMsg = "Error in checking if Service is available is PersistenceManager"; @@ -78,43 +83,44 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio } if (deployedService == null) { - String errorMsg = "There is no deployed Service for type " + cartridgeSubscription.getType(); + String errorMsg = "There is no deployed Service for type " + cartridgeInfo.getType(); log.error(errorMsg); throw new ADCException(errorMsg); } //set the cluster and hostname - cartridgeSubscription.setClusterDomain(deployedService.getClusterId()); - cartridgeSubscription.setHostName(deployedService.getHostName()); + cluster.setClusterDomain(deployedService.getClusterId()); + cluster.setHostName(deployedService.getHostName()); - if (cartridgeSubscription.getRepository() != null) { + if (repository != null) { // publish the ArtifactUpdated event log.info(" Multitenant --> Publishing Artifact update event -- "); - log.info(" Values : cluster id - " + cartridgeSubscription.getClusterDomain() + " tenant - " + - cartridgeSubscription.getSubscriber().getTenantId()); + log.info(" Values : cluster id - " + cluster.getClusterDomain() + " tenant - " + subscriber.getTenantId()); InstanceNotificationPublisher publisher = new InstanceNotificationPublisher(); - publisher.sendArtifactUpdateEvent(cartridgeSubscription.getRepository(), - cartridgeSubscription.getClusterDomain(), // clusterId - String.valueOf(cartridgeSubscription.getSubscriber().getTenantId())); + publisher.sendArtifactUpdateEvent(repository, cluster.getClusterDomain(), String.valueOf(subscriber.getTenantId())); } else { if(log.isDebugEnabled()) { - log.debug("No repository found for subscription with alias: " + cartridgeSubscription.getAlias() + ", type: " + cartridgeSubscription.getType()+ + log.debug("No repository found for subscription with alias: " + alias + ", type: " + cartridgeInfo.getType() + ". Not sending the Artifact Updated event"); } } + + // no payload + return null; } - public void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties) + public void register (CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, + String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException { //nothing to do } - public void removeSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, NotSubscribedException { + public void remove (String clusterId, String alias) throws ADCException, NotSubscribedException { - log.info("Cartridge with alias " + cartridgeSubscription.getAlias() + ", and type " + cartridgeSubscription.getType() + + log.info("Cartridge Subscription with alias " + alias + ", and cluster id " + clusterId + " is a multi-tenant cartridge and therefore will not terminate all instances and " + "unregister services"); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionSingleTenantBehaviour.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionSingleTenantBehaviour.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionSingleTenantBehaviour.java index f9835dd..95edc25 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionSingleTenantBehaviour.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionSingleTenantBehaviour.java @@ -23,8 +23,10 @@ import org.apache.axis2.AxisFault; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.cloud.controller.pojo.Properties; import org.apache.stratos.cloud.controller.pojo.Property; import org.apache.stratos.manager.client.CloudControllerServiceClient; +import org.apache.stratos.manager.dao.Cluster; import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.AlreadySubscribedException; import org.apache.stratos.manager.exception.NotSubscribedException; @@ -32,10 +34,10 @@ import org.apache.stratos.manager.exception.UnregisteredCartridgeException; import org.apache.stratos.manager.payload.BasicPayloadData; import org.apache.stratos.manager.payload.PayloadData; import org.apache.stratos.manager.payload.PayloadFactory; -import org.apache.stratos.manager.subscription.CartridgeSubscription; +import org.apache.stratos.manager.repository.Repository; +import org.apache.stratos.manager.subscriber.Subscriber; import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils; import org.apache.stratos.manager.utils.ApplicationManagementUtil; -import org.apache.stratos.cloud.controller.pojo.Properties; import org.apache.stratos.manager.utils.CartridgeConstants; import java.util.Map; @@ -46,30 +48,28 @@ public class SubscriptionSingleTenantBehaviour extends SubscriptionTenancyBehavi private static Log log = LogFactory.getLog(SubscriptionSingleTenantBehaviour.class); - - - public void createSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, AlreadySubscribedException { + public PayloadData create (String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo, + String subscriptionKey, Map<String, String> customPayloadEntries) throws ADCException, AlreadySubscribedException { //set the cluster and hostname //cartridgeSubscription.getCluster().setClusterDomain(cartridgeSubscription.getAlias() + "." + // cartridgeSubscription.getCluster().getHostName() + "." + cartridgeSubscription.getType() + ".domain"); - String clusterId = cartridgeSubscription.getAlias() + "." + cartridgeSubscription.getType() + ".domain"; + String clusterId = alias + "." + cartridgeInfo.getType() + ".domain"; // limit the cartridge alias to 30 characters in length if (clusterId.length() > 30) { clusterId = CartridgeSubscriptionUtils.limitLengthOfString(clusterId, 30); } - cartridgeSubscription.getCluster().setClusterDomain(clusterId); + cluster.setClusterDomain(clusterId); // set hostname - cartridgeSubscription.getCluster().setHostName(cartridgeSubscription.getAlias() + "." + - cartridgeSubscription.getCluster().getHostName()); + cluster.setHostName(alias + "." + cluster.getHostName()); //Create the payload - BasicPayloadData basicPayloadData = CartridgeSubscriptionUtils.createBasicPayload(cartridgeSubscription); + BasicPayloadData basicPayloadData = CartridgeSubscriptionUtils.createBasicPayload(cartridgeInfo, subscriptionKey, cluster, repository, + alias, subscriber); //Populate the basic payload details basicPayloadData.populatePayload(); - CartridgeInfo cartridgeInfo = cartridgeSubscription.getCartridgeInfo(); PayloadData payloadData = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(), cartridgeInfo.getType(), basicPayloadData); @@ -89,63 +89,60 @@ public class SubscriptionSingleTenantBehaviour extends SubscriptionTenancyBehavi } //check if there are any custom payload entries defined - if (cartridgeSubscription.getCustomPayloadEntries() != null) { + if (customPayloadEntries != null) { //add them to the payload - Map<String, String> customPayloadEntries = cartridgeSubscription.getCustomPayloadEntries(); Set<Map.Entry<String,String>> entrySet = customPayloadEntries.entrySet(); for (Map.Entry<String, String> entry : entrySet) { payloadData.add(entry.getKey(), entry.getValue()); } } - cartridgeSubscription.setPayloadData(payloadData); + return payloadData; } - public void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties) throws ADCException, UnregisteredCartridgeException { + public void register (CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, + String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException { - log.info("Payload: " + cartridgeSubscription.getPayloadData().getCompletePayloadData().toString()); + log.info("Payload: " + payloadData.getCompletePayloadData().toString()); - ApplicationManagementUtil.registerService(cartridgeSubscription.getType(), - cartridgeSubscription.getCluster().getClusterDomain(), - cartridgeSubscription.getCluster().getClusterSubDomain(), - cartridgeSubscription.getPayloadData().getCompletePayloadData(), - cartridgeSubscription.getPayloadData().getBasicPayloadData().getTenantRange(), - cartridgeSubscription.getCluster().getHostName(), - cartridgeSubscription.getAutoscalingPolicyName(), - cartridgeSubscription.getDeploymentPolicyName(), + ApplicationManagementUtil.registerService(cartridgeInfo.getType(), + cluster.getClusterDomain(), + cluster.getClusterSubDomain(), + payloadData.getCompletePayloadData(), + payloadData.getBasicPayloadData().getTenantRange(), + cluster.getHostName(), + autoscalePolicyName, + deploymentPolicyName, properties); } - public void removeSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, NotSubscribedException { + public void remove (String clusterId, String alias) throws ADCException, NotSubscribedException { try { - CloudControllerServiceClient.getServiceClient().terminateAllInstances(cartridgeSubscription.getCluster().getClusterDomain()); + CloudControllerServiceClient.getServiceClient().terminateAllInstances(clusterId); } catch (AxisFault e) { - String errorMsg = "Error in terminating cartridge subscription, alias " + cartridgeSubscription.getAlias(); + String errorMsg = "Error in terminating cartridge subscription, alias " + alias; log.error(errorMsg); throw new ADCException(errorMsg, e); } catch (Exception e) { - String errorMsg = "Error in terminating cartridge subscription, alias " + cartridgeSubscription.getAlias(); + String errorMsg = "Error in terminating cartridge subscription, alias " + alias; log.error(errorMsg); throw new ADCException(errorMsg, e); } - log.info("Terminated all instances of " + cartridgeSubscription.getCluster().getClusterDomain() + " " + - cartridgeSubscription.getCluster().getClusterSubDomain()); + log.info("Terminated all instances of " + clusterId); try { - CloudControllerServiceClient.getServiceClient().unregisterService(cartridgeSubscription.getCluster().getClusterDomain()); + CloudControllerServiceClient.getServiceClient().unregisterService(clusterId); } catch (Exception e) { - String errorMsg = "Error in unregistering service cluster with domain " + cartridgeSubscription.getCluster().getClusterDomain() + - ", sub domain " + cartridgeSubscription.getCluster().getClusterSubDomain(); + String errorMsg = "Error in unregistering service cluster with domain " + clusterId; log.error(errorMsg); throw new ADCException(errorMsg, e); } - log.info("Unregistered service cluster, domain " + cartridgeSubscription.getCluster().getClusterDomain() + ", sub domain " + - cartridgeSubscription.getCluster().getClusterSubDomain()); + log.info("Unregistered service cluster, domain " + clusterId); } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionTenancyBehaviour.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionTenancyBehaviour.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionTenancyBehaviour.java index 7bb4b0a..c367545 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionTenancyBehaviour.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/tenancy/SubscriptionTenancyBehaviour.java @@ -19,25 +19,33 @@ package org.apache.stratos.manager.subscription.tenancy; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.cloud.controller.pojo.Properties; +import org.apache.stratos.manager.behaviour.CartridgeMgtBehaviour; +import org.apache.stratos.manager.dao.Cluster; import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.AlreadySubscribedException; import org.apache.stratos.manager.exception.NotSubscribedException; import org.apache.stratos.manager.exception.UnregisteredCartridgeException; -import org.apache.stratos.manager.subscription.CartridgeSubscription; -import org.apache.stratos.cloud.controller.pojo.Properties; +import org.apache.stratos.manager.payload.PayloadData; +import org.apache.stratos.manager.repository.Repository; +import org.apache.stratos.manager.subscriber.Subscriber; import java.io.Serializable; +import java.util.Map; -public abstract class SubscriptionTenancyBehaviour implements Serializable { +public abstract class SubscriptionTenancyBehaviour implements CartridgeMgtBehaviour, Serializable { private static final long serialVersionUID = 6529685098267757690L; - public abstract void createSubscription(CartridgeSubscription cartridgeSubscription) + public abstract PayloadData create (String alias, Cluster cluster, Subscriber subscriber, Repository repository, CartridgeInfo cartridgeInfo, + String subscriptionKey, Map<String, String> customPayloadEntries) throws ADCException, AlreadySubscribedException; - public abstract void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties) + public abstract void register (CartridgeInfo cartridgeInfo, Cluster cluster, PayloadData payloadData, String autoscalePolicyName, + String deploymentPolicyName, Properties properties) throws ADCException, UnregisteredCartridgeException; - public abstract void removeSubscription(CartridgeSubscription cartridgeSubscription) + public abstract void remove (String clusterId, String alias) throws ADCException, NotSubscribedException; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/98edba23/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java index 6ea9cb2..ee145f5 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java @@ -22,14 +22,16 @@ package org.apache.stratos.manager.subscription.utils; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.manager.dao.Cluster; import org.apache.stratos.manager.deploy.service.Service; import org.apache.stratos.manager.exception.ADCException; import org.apache.stratos.manager.exception.DuplicateCartridgeAliasException; import org.apache.stratos.manager.exception.InvalidCartridgeAliasException; import org.apache.stratos.manager.payload.BasicPayloadData; +import org.apache.stratos.manager.repository.Repository; import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager; -import org.apache.stratos.manager.subscription.CartridgeSubscription; -import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; +import org.apache.stratos.manager.subscriber.Subscriber; import org.apache.stratos.messaging.broker.publish.EventPublisher; import org.apache.stratos.messaging.event.tenant.TenantSubscribedEvent; import org.apache.stratos.messaging.event.tenant.TenantUnSubscribedEvent; @@ -41,28 +43,28 @@ public class CartridgeSubscriptionUtils { private static Log log = LogFactory.getLog(CartridgeSubscriptionUtils.class); - public static BasicPayloadData createBasicPayload (CartridgeSubscription cartridgeSubscription) { + public static BasicPayloadData createBasicPayload (CartridgeInfo cartridgeInfo, String subscriptionKey, Cluster cluster, + Repository repository, String alias, Subscriber subscriber) { BasicPayloadData basicPayloadData = new BasicPayloadData(); - basicPayloadData.setApplicationPath(cartridgeSubscription.getCartridgeInfo().getBaseDir()); - basicPayloadData.setSubscriptionKey(cartridgeSubscription.getSubscriptionKey()); - basicPayloadData.setClusterId(cartridgeSubscription.getClusterDomain()); + basicPayloadData.setApplicationPath(cartridgeInfo.getBaseDir()); + basicPayloadData.setSubscriptionKey(subscriptionKey); + basicPayloadData.setClusterId(cluster.getClusterDomain()); basicPayloadData.setDeployment("default");//currently hard coded to default - if(cartridgeSubscription.getRepository() != null) { - basicPayloadData.setGitRepositoryUrl(cartridgeSubscription.getRepository().getUrl()); + if(repository != null) { + basicPayloadData.setGitRepositoryUrl(repository.getUrl()); } - basicPayloadData.setHostName(cartridgeSubscription.getHostName()); - basicPayloadData.setMultitenant(String.valueOf(cartridgeSubscription.getCartridgeInfo().getMultiTenant())); - basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridgeSubscription.getCartridgeInfo())); - basicPayloadData.setServiceName(cartridgeSubscription.getCartridgeInfo().getType()); - basicPayloadData.setSubscriptionAlias(cartridgeSubscription.getAlias()); - basicPayloadData.setTenantId(cartridgeSubscription.getSubscriber().getTenantId()); + basicPayloadData.setHostName(cluster.getHostName()); + basicPayloadData.setMultitenant(String.valueOf(cartridgeInfo.getMultiTenant())); + basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridgeInfo)); + basicPayloadData.setServiceName(cartridgeInfo.getType()); + basicPayloadData.setSubscriptionAlias(alias); + basicPayloadData.setTenantId(subscriber.getTenantId()); //TODO:remove. we do not want to know about the tenant rance in subscription! - if(cartridgeSubscription.getCartridgeInfo().getMultiTenant() || - cartridgeSubscription.getSubscriber().getTenantId() == -1234) { //TODO: fix properly + if(cartridgeInfo.getMultiTenant() || subscriber.getTenantId() == -1234) { //TODO: fix properly basicPayloadData.setTenantRange("*"); } else { - basicPayloadData.setTenantRange(String.valueOf(cartridgeSubscription.getSubscriber().getTenantId())); + basicPayloadData.setTenantRange(String.valueOf(subscriber.getTenantId())); } return basicPayloadData;
