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);*/
-       
-       // 
     }
 
 }

Reply via email to