Updated Branches: refs/heads/master 12adc174d -> f75f87b0d
Fixing cartridge deployment issue for multitenant Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/f75f87b0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/f75f87b0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/f75f87b0 Branch: refs/heads/master Commit: f75f87b0dc246512c53ed4210d6df5e216c856c2 Parents: 12adc17 Author: Sajith Kariyawasam <[email protected]> Authored: Wed Dec 18 19:01:02 2013 +0530 Committer: Sajith Kariyawasam <[email protected]> Committed: Wed Dec 18 19:01:02 2013 +0530 ---------------------------------------------------------------------- .../stratos/adc/mgt/deploy/service/Service.java | 5 +-- .../service/ServiceDeploymentManager.java | 15 +++++--- .../service/multitenant/MultiTenantService.java | 5 +-- .../manager/CartridgeSubscriptionManager.java | 12 +++++++ .../adc/mgt/utils/PersistenceManager.java | 37 ++++++++++++++++++++ .../rest/endpoint/services/ServiceUtils.java | 17 +++------ 6 files changed, 70 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/Service.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/Service.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/Service.java index 4b1cad3..d5b6597 100644 --- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/Service.java +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/Service.java @@ -40,14 +40,15 @@ public abstract class Service implements Serializable { private CartridgeInfo cartridgeInfo; private PayloadData payloadData; - public Service (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo) { + public Service (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo, + String tenantRange) { this.type = type; this.autoscalingPolicyName = autoscalingPolicyName; this.deploymentPolicyName = deploymentPolicyName; this.tenantId = tenantId; this.cartridgeInfo = cartridgeInfo; - this.tenantRange = "*"; + this.tenantRange = tenantRange; this.subscriptionKey = CartridgeSubscriptionUtils.generateSubscriptionKey(); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/ServiceDeploymentManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/ServiceDeploymentManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/ServiceDeploymentManager.java index fe043c9..8a03a14 100644 --- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/ServiceDeploymentManager.java +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/ServiceDeploymentManager.java @@ -30,6 +30,7 @@ import org.apache.stratos.adc.mgt.payload.PayloadData; import org.apache.stratos.adc.mgt.payload.PayloadFactory; import org.apache.stratos.adc.mgt.subscription.utils.CartridgeSubscriptionUtils; import org.apache.stratos.adc.mgt.utils.CartridgeConstants; +import org.apache.stratos.adc.mgt.utils.PersistenceManager; import org.apache.stratos.cloud.controller.pojo.CartridgeInfo; import org.apache.stratos.cloud.controller.pojo.Property; @@ -37,7 +38,7 @@ public class ServiceDeploymentManager { private static Log log = LogFactory.getLog(ServiceDeploymentManager.class); - public Service deployService (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId) + public Service deployService (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, String tenantRange) throws ADCException, UnregisteredCartridgeException { //get deployed Cartridge Definition information @@ -62,7 +63,7 @@ public class ServiceDeploymentManager { throw new ADCException(errorMsg); } - Service service = new MultiTenantService(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo); + Service service = new MultiTenantService(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange); //generate the cluster ID (domain)for the service service.setClusterId(type + "." + cartridgeInfo.getHostName() + ".domain"); @@ -97,8 +98,14 @@ public class ServiceDeploymentManager { //deploy the service service.deploy(); - //TODO: persist Service - + //persist Service + try { + PersistenceManager.persistService(service); + } catch (Exception e) { + String message = "Error getting info for " + type; + log.error(message, e); + throw new ADCException(message, e); + } return service; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/multitenant/MultiTenantService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/multitenant/MultiTenantService.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/multitenant/MultiTenantService.java index 2a3b07d..3ce5626 100644 --- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/multitenant/MultiTenantService.java +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/deploy/service/multitenant/MultiTenantService.java @@ -32,8 +32,9 @@ public class MultiTenantService extends Service { private static Log log = LogFactory.getLog(MultiTenantService.class); - public MultiTenantService (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo) { - super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo); + public MultiTenantService (String type, String autoscalingPolicyName, String deploymentPolicyName, int tenantId, CartridgeInfo cartridgeInfo, + String tenantRange) { + super(type, autoscalingPolicyName, deploymentPolicyName, tenantId, cartridgeInfo, tenantRange); } @Override http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/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 600e5cc..92b5dd4 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 @@ -31,6 +31,7 @@ import org.apache.stratos.adc.mgt.exception.*; import org.apache.stratos.adc.mgt.payload.BasicPayloadData; import org.apache.stratos.adc.mgt.payload.PayloadData; import org.apache.stratos.adc.mgt.payload.PayloadFactory; +import org.apache.stratos.adc.mgt.publisher.ArtifactUpdatePublisher; import org.apache.stratos.adc.mgt.repository.Repository; import org.apache.stratos.adc.mgt.subscriber.Subscriber; import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription; @@ -215,6 +216,17 @@ public class CartridgeSubscriptionManager { // Publish tenant subscribed event to message broker CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getCartridgeInfo().getType()); + + // publish artifact-deployment event for multi-tenant subscription + //CartridgeSubscriptionInfo subscription = PersistenceManager.getSubscriptionFromClusterId(clusterId); + + if(cartridgeInfo.getMultiTenant()) { + log.info(" Multitenant --> Publishing Artifact update event -- "); + ArtifactUpdatePublisher publisher = new ArtifactUpdatePublisher(cartridgeSubscription.getRepository(), + cartridgeSubscription.getClusterDomain(), // clusterId + String.valueOf(cartridgeSubscription.getSubscriber().getTenantId())); + publisher.publish(); + } return cartridgeSubscription; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PersistenceManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PersistenceManager.java index 1d7492c..e96e8db 100644 --- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PersistenceManager.java +++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/PersistenceManager.java @@ -34,6 +34,7 @@ import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo; import org.apache.stratos.adc.mgt.dao.DataCartridge; import org.apache.stratos.adc.mgt.dao.PortMapping; import org.apache.stratos.adc.mgt.dao.RepositoryCredentials; +import org.apache.stratos.adc.mgt.deploy.service.Service; import org.apache.stratos.adc.mgt.repository.Repository; /** @@ -844,6 +845,42 @@ public class PersistenceManager { return cartridgeSubscriptionInfo; } + + + public static void persistService(Service service) throws Exception { + + Connection con = null; + PreparedStatement insertServiceStmt = null; + + String insertServiceSQL = "INSERT INTO SERVICE (TYPE, AUTOSCALING_POLICY,DEPLOYMENT_POLICY,TENANT_RANGE," + + "CLUSTER_ID,HOST_NAME,SUBSCRIPTION_KEY)" + + " VALUES (?,?,?,?,?,?,?)"; + + try { + + con = StratosDBUtils.getConnection(); + insertServiceStmt = con.prepareStatement(insertServiceSQL); + insertServiceStmt.setString(1, service.getType()); + insertServiceStmt.setString(2, service.getAutoscalingPolicyName()); + insertServiceStmt.setString(3, service.getDeploymentPolicyName()); + insertServiceStmt.setString(4, service.getTenantRange()); + insertServiceStmt.setString(5, service.getClusterId()); + insertServiceStmt.setString(6, service.getHostName()); + insertServiceStmt.setString(7, service.getSubscriptionKey()); + insertServiceStmt.executeUpdate(); + con.commit(); + if (log.isDebugEnabled()) { + log.debug(" Service " + service.getType() + " is inserted into DB"); + } + } catch (Exception e) { + String msg = "Error while sql connection :" + e.getMessage(); + log.error(msg, e); + throw e; + } finally { + StratosDBUtils.closeStatement(insertServiceStmt); + } + + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f75f87b0/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java index f89090d..acde631 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java @@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.stratos.adc.mgt.client.AutoscalerServiceClient; import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient; import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo; +import org.apache.stratos.adc.mgt.deploy.service.ServiceDeploymentManager; import org.apache.stratos.adc.mgt.dto.Cartridge; import org.apache.stratos.adc.mgt.dto.SubscriptionInfo; import org.apache.stratos.adc.mgt.exception.*; @@ -58,6 +59,7 @@ import java.util.regex.Pattern; public class ServiceUtils { private static Log log = LogFactory.getLog(StratosAdmin.class); private static CartridgeSubscriptionManager cartridgeSubsciptionManager = new CartridgeSubscriptionManager(); + private static ServiceDeploymentManager serviceDeploymentManager = new ServiceDeploymentManager(); static void deployCartridge (CartridgeDefinitionBean cartridgeDefinitionBean, ConfigurationContext ctxt, String userName, String tenantDomain) throws RestAPIException { @@ -909,23 +911,12 @@ public class ServiceUtils { */ static void deployService (String cartridgeType, String alias, String autoscalingPolicy, String deploymentPolicy, String tenantDomain, int tenantId, String clusterDomain, String clusterSubdomain, String tenantRange) { - - // create the subscription and persist. - CartridgeSubscription cartridgeSubscription = null; + log.info("Deploying service.."); try { - //cartridgeSubscription = cartridgeSubsciptionManager.deployMultitenantService(cartridgeType, alias, autoscalingPolicy, - // deploymentPolicy, tenantDomain, tenantId, "tenant-admin-user-name", clusterDomain, clusterSubdomain, null, false, null, null, - // tenantRange); - //cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription); + serviceDeploymentManager.deployService(cartridgeType, autoscalingPolicy, deploymentPolicy, tenantId, tenantRange); } catch (Exception e) { e.printStackTrace(); } - - /*CartridgeSubscription cartridgeSubscription = cartridgeSubsciptionManager.subscribeToCartridge(cartridgeType, - alias.trim(), autoscalingPolicy, deploymentPolicy ,tenantDomain, tenantId, - userName, "git", repoURL, privateRepo, repoUsername, repoPassword);*/ - - // } }
