You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by sa...@apache.org on 2013/12/18 14:31:31 UTC

git commit: Fixing cartridge deployment issue for multitenant

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 <sa...@wso2.com>
Authored: Wed Dec 18 19:01:02 2013 +0530
Committer: Sajith Kariyawasam <sa...@wso2.com>
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);*/
-    	
-    	// 
     }
 
 }