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 <[email protected]> Authored: Sun Jan 19 07:56:57 2014 +0530 Committer: Sajith Kariyawasam <[email protected]> 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"; }
