Repository: incubator-stratos Updated Branches: refs/heads/master 1fdac0b5a -> 6e1c4e92e
Adding a flag to control upstream commits in cartridge instances. Option has to set when subscribing. Fixing STRATOS-248 Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/6e1c4e92 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/6e1c4e92 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/6e1c4e92 Branch: refs/heads/master Commit: 6e1c4e92e8731ac17708b6d9b17403d3e15bc684 Parents: 1fdac0b Author: Sajith Kariyawasam <[email protected]> Authored: Fri Mar 21 13:43:49 2014 +0530 Committer: Sajith Kariyawasam <[email protected]> Committed: Fri Mar 21 13:43:49 2014 +0530 ---------------------------------------------------------------------- .../stratos/cartridge/agent/CartridgeAgent.java | 17 ++++++++++++---- .../config/CartridgeAgentConfiguration.java | 21 +++++++++++++++++++- .../agent/util/CartridgeAgentConstants.java | 1 + .../stratos/cli/RestCommandLineService.java | 7 +++++-- .../cli/beans/cartridge/CartridgeInfoBean.java | 11 ++++++++++ .../stratos/cli/commands/SubscribeCommand.java | 15 +++++++++++++- .../apache/stratos/cli/utils/CliConstants.java | 3 +++ .../manager/CartridgeSubscriptionManager.java | 4 ++++ .../manager/subscription/SubscriptionData.java | 10 ++++++++++ .../manager/utils/CartridgeConstants.java | 2 ++ .../rest/endpoint/bean/CartridgeInfoBean.java | 10 ++++++++++ .../rest/endpoint/services/ServiceUtils.java | 1 + 12 files changed, 94 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/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 81f9361..4457024 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 @@ -25,6 +25,9 @@ import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceN import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventMessageReceiver; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * Cartridge agent runnable. @@ -64,16 +67,22 @@ public class CartridgeAgent implements Runnable { // Publish instance activated event CartridgeAgentEventPublisher.publishInstanceActivatedEvent(); + } else { + //Start periodical file checker task + if (CartridgeAgentConfiguration.getInstance().isCommitsEnabled()) { + log.info(" Commits enabled. Starting File listener "); + ScheduledExecutorService scheduler = Executors + .newScheduledThreadPool(1); + scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, + 10, TimeUnit.SECONDS); + } } String persistanceMappingsPayload = CartridgeAgentConfiguration.getInstance().getPersistenceMappings(); if(persistanceMappingsPayload != null) { ExtensionUtils.executeVolumeMountExtension(persistanceMappingsPayload); } - // TODO: Start this thread only if this node is configured as a commit true node - // Start periodical file checker task - // ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); - // scheduler.scheduleWithFixedDelay(new RepositoryFileListener(), 0, 10, TimeUnit.SECONDS); + // Keep the thread live until terminated http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/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 3ddf801..1a893cb 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 @@ -34,6 +34,7 @@ public class CartridgeAgentConfiguration { private Map<String, String> parameters; private boolean isMultitenant; private String persistenceMappings; + private final boolean isCommitsEnabled; private CartridgeAgentConfiguration() { parameters = loadParametersFile(); @@ -51,6 +52,7 @@ public class CartridgeAgentConfiguration { logFilePaths = readLogFilePaths(); isMultitenant = readMultitenant(CartridgeAgentConstants.MULTITENANT); persistenceMappings = readPersisenceMapping(); + isCommitsEnabled = readCommitsEnabled(CartridgeAgentConstants.COMMIT_ENABLED); } catch (ParameterNotFoundException e) { throw new RuntimeException(e); @@ -73,7 +75,18 @@ public class CartridgeAgentConfiguration { } } - private boolean readMultitenant(String multitenant) throws ParameterNotFoundException { + private boolean readCommitsEnabled(String commitEnabled) { + boolean isCommitEnabled = false; + try { + isCommitEnabled = Boolean.parseBoolean(readParameterValue(commitEnabled)); + } catch (ParameterNotFoundException e) { + // Missing commits enabled flag is not an exception + log.error(" Commits enabled payload parameter is not found"); + } + return isCommitEnabled; + } + + private boolean readMultitenant(String multitenant) throws ParameterNotFoundException { String multitenantStringValue = readParameterValue(multitenant); return Boolean.parseBoolean(multitenantStringValue); } @@ -230,4 +243,10 @@ public class CartridgeAgentConfiguration { return persistenceMappings; } + public boolean isCommitsEnabled() { + return isCommitsEnabled; + } + + + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/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 80e3bc2..ba8c99b 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 @@ -50,4 +50,5 @@ public class CartridgeAgentConstants implements Serializable{ public static final String MULTITENANT = "MULTITENANT"; public static final String ENABLE_ARTIFACT_UPDATE = "enable.artifact.update"; public static final String ARTIFACT_UPDATE_INTERVAL = "artifact.update.interval"; + public static final String COMMIT_ENABLED = "COMMIT_ENABLED"; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java index 52e2a97..890e888 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java @@ -719,7 +719,8 @@ public class RestCommandLineService { // This method does the cartridge subscription public void subscribe(String cartridgeType, String alias, String externalRepoURL, boolean privateRepo, String username, String password, String dataCartridgeType, String dataCartridgeAlias, String asPolicy, - String depPolicy, String size, boolean remoOnTermination, boolean persistanceMapping) + String depPolicy, String size, boolean remoOnTermination, boolean persistanceMapping, + boolean enableCommits) throws CommandException { DefaultHttpClient httpClient = new DefaultHttpClient(); @@ -737,6 +738,7 @@ public class RestCommandLineService { cartridgeInfoBean.setSize(size); cartridgeInfoBean.setRemoveOnTermination(remoOnTermination); cartridgeInfoBean.setPersistanceRequired(persistanceMapping); + cartridgeInfoBean.setCommitsEnabled(enableCommits); GsonBuilder gsonBuilder = new GsonBuilder(); Gson gson = gsonBuilder.create(); @@ -800,7 +802,8 @@ public class RestCommandLineService { cartridgeInfoBean.setSize(size); cartridgeInfoBean.setRemoveOnTermination(remoOnTermination); cartridgeInfoBean.setPersistanceRequired(persistanceMapping); - + cartridgeInfoBean.setCommitsEnabled(enableCommits); + jsonSubscribeString = gson.toJson(cartridgeInfoBean, CartridgeInfoBean.class); HttpResponse response = restClientService.doPost(httpClient, restClientService.getUrl() + subscribCartridgeRestEndpoint, http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/cartridge/CartridgeInfoBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/cartridge/CartridgeInfoBean.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/cartridge/CartridgeInfoBean.java index 66795e8..02a3091 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/cartridge/CartridgeInfoBean.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/cartridge/CartridgeInfoBean.java @@ -37,6 +37,7 @@ public class CartridgeInfoBean { boolean privateRepo; private boolean removeOnTermination; private boolean persistanceRequired; + private boolean commitsEnabled; public String getCartridgeType() { return cartridgeType; @@ -149,4 +150,14 @@ public class CartridgeInfoBean { public void setPersistanceRequired(boolean persistanceRequired) { this.persistanceRequired = persistanceRequired; } + + public boolean isCommitsEnabled() { + return commitsEnabled; + } + + public void setCommitsEnabled(boolean commitsEnabled) { + this.commitsEnabled = commitsEnabled; + } + + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java index 4917708..f19c57c 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java @@ -108,6 +108,12 @@ public class SubscribeCommand implements Command<StratosCommandContext> { passwordOption.setArgName("password"); passwordOption.setOptionalArg(true); options.addOption(passwordOption); + + Option upstreamCommitsEnabledOption = new Option(CliConstants.ENABLE_COMMITS_OPTION, CliConstants.ENABLE_COMMITS_LONG_OPTION, true, + "Enable Git commit upstream"); + upstreamCommitsEnabledOption.setArgName("enable-commits"); + upstreamCommitsEnabledOption.setOptionalArg(true); + options.addOption(upstreamCommitsEnabledOption); return options; } @@ -141,6 +147,7 @@ public class SubscribeCommand implements Command<StratosCommandContext> { boolean removeOnTermination = false; boolean privateRepo = false; boolean persistanceMapping = false; + boolean commitsEnabled = false; final CommandLineParser parser = new GnuParser(); CommandLine commandLine; @@ -235,6 +242,12 @@ public class SubscribeCommand implements Command<StratosCommandContext> { } dataCartridgeAlias = commandLine.getOptionValue(CliConstants.DATA_ALIAS_OPTION); } + if (commandLine.hasOption(CliConstants.ENABLE_COMMITS_OPTION)) { + if (logger.isTraceEnabled()) { + logger.trace("Upstream git commits are enabled"); + } + commitsEnabled = true; + } if (depPolicy == null) { System.out.println("Deployment policy is required."); @@ -266,7 +279,7 @@ public class SubscribeCommand implements Command<StratosCommandContext> { RestCommandLineService.getInstance().subscribe(type, alias, repoURL, privateRepo, username, password, dataCartridgeType, dataCartridgeAlias, asPolicy, depPolicy, size, removeOnTermination, - persistanceMapping); + persistanceMapping, commitsEnabled); return CliConstants.SUCCESSFUL_CODE; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java index e15f487..892b465 100644 --- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java +++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java @@ -254,6 +254,9 @@ public class CliConstants { public static final String TRACE_OPTION = "trace"; public static final String DEBUG_OPTION = "debug"; + + public static final String ENABLE_COMMITS_OPTION = "cm"; + public static final String ENABLE_COMMITS_LONG_OPTION = "enable-commits"; // Add tenant options public static final String FIRST_NAME_OPTION = "f"; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java index b0fdb5b..24cfa66 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java @@ -258,6 +258,10 @@ public class CartridgeSubscriptionManager { //create subscription cartridgeSubscription.createSubscription(subscriber, subscriptionData.getCartridgeAlias(), subscriptionData.getAutoscalingPolicyName(), subscriptionData.getDeploymentPolicyName(), repository); + + // Add whether the subscription is enabled upstream git commits + cartridgeSubscription.getPayloadData().add(CartridgeConstants.COMMIT_ENABLED, String.valueOf(subscriptionData.isCommitsEnabled())); + log.info("Tenant [" + subscriptionData.getTenantId() + "] with username [" + subscriptionData.getTenantAdminUsername() + " subscribed to " + "] Cartridge with Alias " + subscriptionData.getCartridgeAlias() + ", Cartridge Type: " + http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java index 1c986da..b258400 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/SubscriptionData.java @@ -40,6 +40,7 @@ public class SubscriptionData { private String repositoryPassword; private Property[] properties; private PersistenceContext persistanceCtxt; + private boolean isCommitsEnabled; public String getCartridgeType() { return cartridgeType; @@ -152,4 +153,13 @@ public class SubscriptionData { public void setPersistanceCtxt(PersistenceContext persistanceCtxt) { this.persistanceCtxt = persistanceCtxt; } + + public boolean isCommitsEnabled() { + return isCommitsEnabled; + } + + public void setCommitsEnabled(boolean isCommitsEnabled) { + this.isCommitsEnabled = isCommitsEnabled; + } + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java index a64a235..ab98b69 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java @@ -66,6 +66,8 @@ public class CartridgeConstants { public static final String CC_CONNECTION_TIMEOUT = "cc.connection.timeout"; public static final String AUTOSCALER_SOCKET_TIMEOUT = "autoscaler.socket.timeout"; public static final String AUTOSCALER_CONNECTION_TIMEOUT = "autoscaler.connection.timeout"; + + public static final String COMMIT_ENABLED = "COMMIT_ENABLED"; public static final class DomainMappingInfo { public static final String ACTUAL_HOST = "actual.host"; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java index 3afd1da..656e4e0 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java @@ -31,6 +31,7 @@ public class CartridgeInfoBean { String repoPassword; String dataCartridgeType; String dataCartridgeAlias; + boolean commitsEnabled; private boolean persistanceRequired; private String size; @@ -139,4 +140,13 @@ public class CartridgeInfoBean { public void setRemoveOnTermination(boolean removeOnTermination) { this.removeOnTermination = removeOnTermination; } + + public boolean isCommitsEnabled() { + return commitsEnabled; + } + + public void setCommitsEnabled(boolean commitsEnabled) { + this.commitsEnabled = commitsEnabled; + } + } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/6e1c4e92/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 82e1e8e..ce3bcf1 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 @@ -984,6 +984,7 @@ public class ServiceUtils { subscriptionData.setRepositoryURL(cartridgeInfoBean.getRepoURL()); subscriptionData.setRepositoryUsername(cartridgeInfoBean.getRepoUsername()); subscriptionData.setRepositoryPassword(cartridgeInfoBean.getRepoPassword()); + subscriptionData.setCommitsEnabled(cartridgeInfoBean.isCommitsEnabled()); if (cartridgeInfoBean.isPersistanceRequired()) { // Add persistence related properties to PersistenceContext
