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 2014/01/19 03:27:14 UTC

git commit: Fixing instance artifact location issue in cartrige agent. Adding a check for multitenancy

Updated Branches:
  refs/heads/master 3ce7f9fff -> 8997301ed


Fixing instance artifact location issue in cartrige agent. Adding a check for multitenancy


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8997301e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8997301e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8997301e

Branch: refs/heads/master
Commit: 8997301ed4fb085baebf34544444e64d33ddc79d
Parents: 3ce7f9f
Author: Sajith Kariyawasam <sa...@wso2.com>
Authored: Sun Jan 19 07:56:57 2014 +0530
Committer: Sajith Kariyawasam <sa...@wso2.com>
Committed: Sun Jan 19 07:56:57 2014 +0530

----------------------------------------------------------------------
 .../stratos/cartridge/agent/CartridgeAgent.java |  2 +
 .../synchronizer/RepositoryInformation.java     |  7 +++
 .../git/impl/GitBasedArtifactRepository.java    | 45 ++++++++++++--------
 .../config/CartridgeAgentConfiguration.java     | 14 +++++-
 .../agent/util/CartridgeAgentConstants.java     |  1 +
 5 files changed, 50 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8997301e/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
index 0e35bd6..6de3f9c 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/CartridgeAgent.java
@@ -148,6 +148,7 @@ public class CartridgeAgent implements Runnable {
         String repoPassword = CartridgeAgentUtils.decryptPassword(artifactUpdatedEvent.getRepoPassword());
         String repoUsername = artifactUpdatedEvent.getRepoUserName();
         String tenantId = artifactUpdatedEvent.getTenantId();
+        boolean isMultitenant = CartridgeAgentConfiguration.getInstance().isMultitenant();
 
         if(StringUtils.isNotEmpty(repoURL) && (clusterIdInPayload != null) && clusterIdInPayload.equals(clusterIdInMessage)) {
             if(log.isInfoEnabled()) {
@@ -159,6 +160,7 @@ public class CartridgeAgent implements Runnable {
             repoInformation.setRepoUrl(repoURL);
             repoInformation.setRepoPath(localRepoPath);
             repoInformation.setTenantId(tenantId);
+            repoInformation.setMultitenant(isMultitenant);
             boolean cloneExists = GitBasedArtifactRepository.getInstance().cloneExists(repoInformation);
             GitBasedArtifactRepository.getInstance().checkout(repoInformation);
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8997301e/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/RepositoryInformation.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/RepositoryInformation.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/RepositoryInformation.java
index 57d6042..1be78a4 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/RepositoryInformation.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/RepositoryInformation.java
@@ -30,6 +30,7 @@ public class RepositoryInformation {
 	private String repoPassword;
 	private String repoPath;
 	private String tenantId;
+	private boolean isMultitenant;
 	
 	public String getRepoUrl() {
 		return repoUrl;
@@ -61,5 +62,11 @@ public class RepositoryInformation {
 	public void setTenantId(String tenantId) {
 		this.tenantId = tenantId;
 	}
+	public boolean isMultitenant() {
+		return isMultitenant;
+	}
+	public void setMultitenant(boolean isMultitenant) {
+		this.isMultitenant = isMultitenant;
+	}
 	
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8997301e/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
index 3500b02..5e1d0af 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/artifact/deployment/synchronizer/git/impl/GitBasedArtifactRepository.java
@@ -49,7 +49,9 @@ import java.util.concurrent.*;
  */
 public class GitBasedArtifactRepository {
 
-    private static final Log log = LogFactory.getLog(GitBasedArtifactRepository.class);
+    private static final int SUPER_TENANT_ID = -1234;
+
+	private static final Log log = LogFactory.getLog(GitBasedArtifactRepository.class);
 
     //Map to keep track of git context per tenant (remote urls, jgit git objects, etc.)
     private static ConcurrentHashMap<Integer, RepositoryContext>
@@ -82,8 +84,6 @@ public class GitBasedArtifactRepository {
      */
     private void initGitContext (RepositoryInformation repositoryInformation)  {
 
-     /*   if (tenantId == GitDeploymentSynchronizerConstants.SUPER_TENANT_ID)
-            return;*/
     	
     	log.info("Initializing git context.");
     	
@@ -91,13 +91,14 @@ public class GitBasedArtifactRepository {
     	String gitLocalRepoPath = repositoryInformation.getRepoPath();
         RepositoryContext gitRepoCtx = new RepositoryContext();
         String gitRemoteRepoUrl = repositoryInformation.getRepoUrl();
+        boolean isMultitenant = repositoryInformation.isMultitenant();
         
         log.info("local path " + gitLocalRepoPath);
         log.info("remote url " + gitRemoteRepoUrl);
         log.info("tenant " + tenantId);
         
         gitRepoCtx.setTenantId(tenantId);
-        gitRepoCtx.setGitLocalRepoPath(getRepoPathForTenantId(tenantId,gitLocalRepoPath));        
+        gitRepoCtx.setGitLocalRepoPath(getRepoPathForTenantId(tenantId,gitLocalRepoPath,isMultitenant));        
         gitRepoCtx.setGitRemoteRepoUrl(gitRemoteRepoUrl);
 		
 		gitRepoCtx.setRepoUsername(repositoryInformation.getRepoUsername());
@@ -133,21 +134,29 @@ public class GitBasedArtifactRepository {
 
     // If tenant id is "-1234", then its super tenant, else tenant
     private static String getRepoPathForTenantId(int tenantId,
-                       String gitLocalRepoPath) {
+                       String gitLocalRepoPath, boolean isMultitenant) {
                
-       StringBuilder repoPathBuilder = new StringBuilder();
-       
-       if(tenantId == -1234) {
-               repoPathBuilder.append(gitLocalRepoPath).append(SUPER_TENANT_APP_PATH);
-       } else {
-               // create folder with tenant id
-               createTenantDir(tenantId, gitLocalRepoPath);                    
-               repoPathBuilder.append(gitLocalRepoPath).append(TENANT_PATH).append(tenantId);
-       }
-       
-               String repoPath = repoPathBuilder.toString();
-               log.info("Repo path returned : " + repoPath);
-               return repoPath;
+    	
+		StringBuilder repoPathBuilder = new StringBuilder();
+		String repoPath = null;
+
+		if (isMultitenant) {
+			if (tenantId == SUPER_TENANT_ID) {
+				repoPathBuilder.append(gitLocalRepoPath).append(
+						SUPER_TENANT_APP_PATH);
+			} else {
+				// create folder with tenant id
+				createTenantDir(tenantId, gitLocalRepoPath);
+				repoPathBuilder.append(gitLocalRepoPath).append(TENANT_PATH)
+						.append(tenantId);
+			}
+
+			repoPath = repoPathBuilder.toString();
+		} else {
+			repoPath = gitLocalRepoPath;
+		}
+		log.info("Repo path returned : " + repoPath);
+		return repoPath;
        }
 
        private static void createTenantDir(int tenantId, String path) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8997301e/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
index 48fd05b..673ce2d 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/config/CartridgeAgentConfiguration.java
@@ -27,6 +27,7 @@ public class CartridgeAgentConfiguration {
     private final String appPath;
     private final String repoUrl;
     private final List<Integer> ports;
+    private boolean isMultitenant;
 
     private CartridgeAgentConfiguration() {
         serviceName = readParameterValue(CartridgeAgentConstants.SERVICE_NAME);
@@ -38,6 +39,7 @@ public class CartridgeAgentConfiguration {
         appPath = readParameterValue(CartridgeAgentConstants.APP_PATH);
         repoUrl = readParameterValue(CartridgeAgentConstants.REPO_URL);
         ports = readPorts();
+        isMultitenant = readMultitenant(CartridgeAgentConstants.MULTITENANT);
 
         if(log.isInfoEnabled()) {
             log.info("Cartridge agent configuration initialized");
@@ -56,7 +58,12 @@ public class CartridgeAgentConfiguration {
         }
     }
 
-    /**
+    private boolean readMultitenant(String multitenant) {
+    	String multitenantStringValue = readParameterValue(multitenant);
+    	return Boolean.parseBoolean(multitenantStringValue);
+	}
+
+	/**
      * Get cartridge agent configuration singleton instance.
      *
      * @return
@@ -142,4 +149,9 @@ public class CartridgeAgentConfiguration {
     public List<Integer> getPorts() {
         return ports;
     }
+
+	public boolean isMultitenant() {
+		return isMultitenant;
+	}  
+    
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8997301e/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
index 65a7594..9914f6f 100644
--- a/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
+++ b/components/org.apache.stratos.cartridge.agent/src/main/java/org/apache/stratos/cartridge/agent/util/CartridgeAgentConstants.java
@@ -45,4 +45,5 @@ public class CartridgeAgentConstants implements Serializable{
     public static final String MEMORY_CONSUMPTION = "memory_consumption";
     public static final String LOAD_AVERAGE = "load_average";
     public static final String PORTS_NOT_OPEN = "ports_not_open";
+    public static final String MULTITENANT = "MULTITENANT";
 }