http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SubscribeCommand.java
index 6232893,e8eca38..dab2685
--- 
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
@@@ -33,7 -34,7 +34,11 @@@ import org.apache.stratos.cli.StratosCo
  import org.apache.stratos.cli.exception.CommandException;
  import org.apache.stratos.cli.utils.CliConstants;
  
++<<<<<<< HEAD
 +import static org.apache.stratos.cli.utils.CommandLineUtils.mergeOptionArrays;
++=======
+ import java.util.ArrayList;
++>>>>>>> master
  
  public class SubscribeCommand implements Command<StratosCommandContext> {
  
@@@ -86,93 -87,88 +91,130 @@@
          persistance.setArgName("persistance-volume");
          options.addOption(persistance);
  
-               Option urlOption = new Option(CliConstants.REPO_URL_OPTION, 
CliConstants.REPO_URL_LONG_OPTION, true,
-                               "GIT repository URL");
-               urlOption.setArgName("url");
-               options.addOption(urlOption);
- 
-               //options.addOption(CliConstants.PRIVATE_REPO_OPTION, 
CliConstants.PRIVATE_REPO_LONG_OPTION, false,
-               //              "Private repository");
- 
-               Option usernameOption = new 
Option(CliConstants.USERNAME_OPTION, CliConstants.USERNAME_LONG_OPTION, true,
-                               "GIT repository username");
-               usernameOption.setArgName("username");
-               options.addOption(usernameOption);
- 
-               Option passwordOption = new 
Option(CliConstants.PASSWORD_OPTION, CliConstants.PASSWORD_LONG_OPTION, true,
-                               "GIT repository password");
-               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);
+         Option urlOption = new Option(CliConstants.REPO_URL_OPTION, 
CliConstants.REPO_URL_LONG_OPTION, true,
+                 "GIT repository URL");
+         urlOption.setArgName("url");
+         options.addOption(urlOption);
  
-         return options;
-       }
+         //options.addOption(CliConstants.PRIVATE_REPO_OPTION, 
CliConstants.PRIVATE_REPO_LONG_OPTION, false,
+         //            "Private repository");
  
-       public String getName() {
-               return CliConstants.SUBSCRIBE_ACTION;
-       }
+         Option usernameOption = new Option(CliConstants.USERNAME_OPTION, 
CliConstants.USERNAME_LONG_OPTION, true,
+                 "GIT repository username");
+         usernameOption.setArgName("username");
+         options.addOption(usernameOption);
  
-       public String getDescription() {
-               return "Subscribe to a cartridge";
-       }
+         Option passwordOption = new Option(CliConstants.PASSWORD_OPTION, 
CliConstants.PASSWORD_LONG_OPTION, true,
+                 "GIT repository password");
+         passwordOption.setArgName("password");
+         passwordOption.setOptionalArg(true);
+         options.addOption(passwordOption);
  
-       public String getArgumentSyntax() {
-               return "[Cartridge type] [Cartridge alias]";
-       }
+         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);
  
++<<<<<<< HEAD
 +      public int execute(StratosCommandContext context, String[] args, 
Option[] already_parsed_opts) throws CommandException {
 +              if (logger.isDebugEnabled()) {
 +                      logger.debug("Executing {} command...", getName());
 +              }
 +              if (args != null && args.length > 0) {
 +                      String[] remainingArgs = null;
 +                      String type = null;
 +                      String alias = null;
 +                      String policy = null;
++=======
+         return options;
+     }
+ 
+     public String getName() {
+         return CliConstants.SUBSCRIBE_ACTION;
+     }
+ 
+     public String getDescription() {
+         return "Subscribe to a cartridge";
+     }
+ 
+     public String getArgumentSyntax() {
+         return "[Cartridge type] [Cartridge alias]";
+     }
+ 
+     public int execute(StratosCommandContext context, String[] args) throws 
CommandException {
+         if (logger.isDebugEnabled()) {
+             logger.debug("Executing {} command...", getName());
+         }
+         if (args != null && args.length > 0) {
+             String[] remainingArgs = null;
+             String type = null;
+             String alias = null;
+             String policy = null;
++>>>>>>> master
              String asPolicy = null;
              String depPolicy = null;
-                       String repoURL = null, username = "", password = "";
+             String repoURL = null, username = "", password = "";
              String size = null;
              String volumeID = null;
  
              boolean removeOnTermination = false;
-                       boolean privateRepo = false;
+             boolean privateRepo = false;
              boolean persistanceMapping = false;
              boolean commitsEnabled = false;
+             boolean isMultiTenant = false;
+ 
+             final CommandLineParser parser = new GnuParser();
+             CommandLine commandLine;
+             try {
+                 commandLine = parser.parse(options, args);
+                 remainingArgs = commandLine.getArgs();
+                 if (remainingArgs != null && remainingArgs.length == 2) {
+                     // Get type
+                     type = remainingArgs[0];
+                     alias = remainingArgs[1];
+                 } else {
+                     context.getStratosApplication().printUsage(getName());
+                     return CliConstants.BAD_ARGS_CODE;
+                 }
  
++<<<<<<< HEAD
 +                      final CommandLineParser parser = new GnuParser();
 +                      CommandLine commandLine;
 +                      try {
 +                              commandLine = parser.parse(options, args);
 +                              remainingArgs = commandLine.getArgs();
 +                              //merge newly discovered options with 
previously discovered ones.
 +                              Options opts = 
mergeOptionArrays(already_parsed_opts, commandLine.getOptions());
 +                              if (remainingArgs != null && 
remainingArgs.length == 2) {
 +                                      // Get type
 +                                      type = remainingArgs[0];
 +                                      alias = remainingArgs[1];
 +                              } else {
 +                                      
context.getStratosApplication().printUsage(getName());
 +                                      return CliConstants.BAD_ARGS_CODE;
 +                              }
 +
 +                              if (logger.isDebugEnabled()) {
 +                                      logger.debug("Subscribing to {} 
cartridge with alias {}", type, alias);
 +                              }
 +
 +                              //if 
(opts.hasOption(CliConstants.POLICY_OPTION)) {
 +                              //      if (logger.isTraceEnabled()) {
 +                              //              logger.trace("Policy option is 
passed");
 +                              //      }
 +                              //      policy = 
opts.getOptionValue(CliConstants.POLICY_OPTION);
 +                              //}
 +                if (opts.hasOption(CliConstants.AUTOSCALING_POLICY_OPTION)) {
++=======
+                 // This will check the subscribe cartridge type is multi 
tenant or single tenant
+                 isMultiTenant = 
RestCommandLineService.getInstance().isMultiTenant(type);
+ 
+                 if (logger.isDebugEnabled()) {
+                     logger.debug("Subscribing to {} cartridge with alias {}", 
type, alias);
+                 }
+                 if 
(commandLine.hasOption(CliConstants.AUTOSCALING_POLICY_OPTION)) {
++>>>>>>> master
                      if (logger.isTraceEnabled()) {
                          logger.trace("Autoscaling policy option is passed");
                      }
@@@ -182,71 -178,92 +224,141 @@@
                      if (logger.isTraceEnabled()) {
                          logger.trace("Deployment policy option is passed");
                      }
 -                    depPolicy = 
commandLine.getOptionValue(CliConstants.DEPLOYMENT_POLICY_OPTION);
 +                    depPolicy = 
opts.getOption(CliConstants.DEPLOYMENT_POLICY_OPTION).getValue();
                  }
++<<<<<<< HEAD
 +                              if 
(opts.hasOption(CliConstants.REPO_URL_OPTION)) {
 +                                      if (logger.isTraceEnabled()) {
 +                                              logger.trace("RepoURL option is 
passed");
 +                                      }
 +                                      repoURL = 
opts.getOption(CliConstants.REPO_URL_OPTION).getValue();
 +                              }
 +                              //if 
(opts.hasOption(CliConstants.PRIVATE_REPO_OPTION)) {
 +                              //      if (logger.isTraceEnabled()) {
 +                              //              logger.trace("privateRepo 
option is passed");
 +                              //      }
 +                              //      privateRepo = true;
 +                              //}
 +                if (opts.hasOption(CliConstants.VOLUME_SIZE_OPTION)) {
++=======
+                 if (commandLine.hasOption(CliConstants.REPO_URL_OPTION)) {
+                     if (logger.isTraceEnabled()) {
+                         logger.trace("RepoURL option is passed");
+                     }
+                     repoURL = 
commandLine.getOptionValue(CliConstants.REPO_URL_OPTION);
+                 }
+                 if (commandLine.hasOption(CliConstants.VOLUME_SIZE_OPTION)) {
++>>>>>>> master
                      if (logger.isTraceEnabled()) {
                          logger.trace("Volume size option is passed");
  
                      }
 -                    size = 
commandLine.getOptionValue(CliConstants.VOLUME_SIZE_OPTION);
 +                    size = 
opts.getOption(CliConstants.VOLUME_SIZE_OPTION).getValue();
                  }
  
++<<<<<<< HEAD
 +                if (opts.hasOption(CliConstants.VOLUME_ID_OPTION)) {
++=======
+                 if (commandLine.hasOption(CliConstants.VOLUME_ID_OPTION)) {
++>>>>>>> master
                      if (logger.isTraceEnabled()) {
                          logger.trace("Volume id option is passed");
  
                      }
++<<<<<<< HEAD
 +                    volumeID = 
opts.getOption(CliConstants.VOLUME_ID_OPTION).getValue();
 +                }
 +
 +
 +                if 
(opts.hasOption(CliConstants.REMOVE_ON_TERMINATION_OPTION)) {
++=======
+                     volumeID = 
commandLine.getOptionValue(CliConstants.VOLUME_ID_OPTION);
+                 }
+ 
+ 
+                 if 
(commandLine.hasOption(CliConstants.REMOVE_ON_TERMINATION_OPTION)) {
++>>>>>>> master
                      if (logger.isTraceEnabled()) {
                          logger.trace("Remove on termination option is 
passed");
  
                      }
-                     removeOnTermination = true;
+ 
+                     String optionValue = 
commandLine.getOptionValue(CliConstants.REMOVE_ON_TERMINATION_OPTION);
+                     if (optionValue.equals("true")) {
+                         removeOnTermination = true;
+                     } else if (optionValue.equals("false")) {
+                         removeOnTermination = false;
+                     } else {
+                         if (logger.isTraceEnabled()) {
+                             logger.trace("Invalid remove on termination 
option value");
+                         }
+                         System.out.println("Invalid remove on termination 
option value.");
+                         context.getStratosApplication().printUsage(getName());
+                         return CliConstants.BAD_ARGS_CODE;
+                     }
                  }
 -                if 
(commandLine.hasOption(CliConstants.PERSISTANCE_VOLUME_OPTION)) {
 +                if (opts.hasOption(CliConstants.PERSISTANCE_VOLUME_OPTION)) {
                      if (logger.isTraceEnabled()) {
                          logger.trace("Persistance volume option is passed");
  
                      }
-                     persistanceMapping = true;
+ 
+                     String optionValue = 
commandLine.getOptionValue(CliConstants.PERSISTANCE_VOLUME_OPTION);
+                     if (optionValue.equals("true")) {
+                         persistanceMapping = true;
+                     } else if (optionValue.equals("false")) {
+                         persistanceMapping = false;
+                     } else {
+                         if (logger.isTraceEnabled()) {
+                             logger.trace("Invalid persistance mapping option 
value");
+                         }
+                         System.out.println("Invalid persistance mapping 
option value.");
+                         context.getStratosApplication().printUsage(getName());
+                         return CliConstants.BAD_ARGS_CODE;
+                     }
+ 
+                 }
+                 if (commandLine.hasOption(CliConstants.USERNAME_OPTION)) {
+                     if (logger.isTraceEnabled()) {
+                         logger.trace("Username option is passed");
+                     }
+                     username = 
commandLine.getOptionValue(CliConstants.USERNAME_OPTION);
+                 }
+                 if (commandLine.hasOption(CliConstants.PASSWORD_OPTION)) {
+                     if (logger.isTraceEnabled()) {
+                         logger.trace("Password option is passed");
+                     }
+                     password = 
commandLine.getOptionValue(CliConstants.PASSWORD_OPTION);
+                 }
+                 if 
(commandLine.hasOption(CliConstants.ENABLE_COMMITS_OPTION)) {
+                     if (logger.isTraceEnabled()) {
+                         logger.trace("Upstream git commits are enabled");
+                     }
+                     commitsEnabled = true;
                  }
++<<<<<<< HEAD
 +                              if 
(opts.hasOption(CliConstants.USERNAME_OPTION)) {
 +                                      if (logger.isTraceEnabled()) {
 +                                              logger.trace("Username option 
is passed");
 +                                      }
 +                                      username = 
opts.getOption(CliConstants.USERNAME_OPTION).getValue();
 +                              }
 +                              if 
(opts.hasOption(CliConstants.PASSWORD_OPTION)) {
 +                                      if (logger.isTraceEnabled()) {
 +                                              logger.trace("Password option 
is passed");
 +                                      }
 +                                      password = 
opts.getOption(CliConstants.PASSWORD_OPTION).getValue();
 +                              }
 +                              if 
(opts.hasOption(CliConstants.ENABLE_COMMITS_OPTION)) {
 +                                      if (logger.isTraceEnabled()) {
 +                                              logger.trace("Upstream git 
commits are enabled");
 +                                      }
 +                                      commitsEnabled = true;
 +                              }
++=======
++>>>>>>> master
  
-                 if (depPolicy == null) {
+                 if ( ! isMultiTenant && depPolicy == null) {
                      System.out.println("Deployment policy is required.");
                      context.getStratosApplication().printUsage(getName());
                      return CliConstants.BAD_ARGS_CODE;

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
index b4b31d5,2c0b27c..a9cf0dc
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
@@@ -586,7 -580,6 +583,10 @@@ public class OpenstackNovaIaas extends 
          ComputeServiceContext context = 
iaasInfo.getComputeService().getContext();;
          RestContext<NovaApi, NovaAsyncApi> nova = context.unwrap();
          VolumeApi volumeApi = 
nova.getApi().getVolumeExtensionForZone(region).get();
++<<<<<<< HEAD
 +        VolumeAttachmentApi volumeAttachmentApi = 
nova.getApi().getVolumeAttachmentExtensionForZone(region).get();
++=======
++>>>>>>> master
          Volume.Status volumeStatus = this.getVolumeStatus(volumeApi, 
volumeId);
  
          while(volumeStatus != expectedStatus){

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index e5cc05a,8f9d188..bb7dce7
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@@ -111,53 -107,10 +111,56 @@@ public class CloudControllerServiceImp
                        }
  
                }
 +                // restore compostie application
 +              List<ConfigCompositeApplication> apps = 
restoreConfigCompositeApplication();
 +              if (apps == null) {
 +                      this.dataHolder.setConfigCompositeApplication(new 
ArrayList<ConfigCompositeApplication>());
 +
 +              }
        }
  
 +
 +    public void 
deployCompositeApplicationDefinition(CompositeApplicationDefinition 
compositeApplicationDefinition) throws 
InvalidCompositeApplicationDefinitionException, 
 +    InvalidIaasProviderException {
 +      
 +      String alias = compositeApplicationDefinition.getAlias();
 +      if(log.isDebugEnabled()){
 +            log.debug("composite application alias  : " + alias);
 +      }
 +      
 +      ConfigCompositeApplication messConfigApp = 
TopologyBuilder.convertCompositeApplication(compositeApplicationDefinition);
 +        String key = "compositeApplicationAlias"; //app.getAlias()
 +              
 +      
 +      List<ConfigCompositeApplication> data = new 
ArrayList<ConfigCompositeApplication>();
 +      data.add(messConfigApp);
 +      dataHolder.setConfigCompositeApplication(data);
 +        
 +        // persist
 +        persist();
 +      
 +      if(log.isDebugEnabled()){
 +            log.debug("deploying composite application in cloud controller: " 
+ compositeApplicationDefinition);
 +        }
 +      
 +      TopologyBuilder.handleCompositeApplicationCreated(messConfigApp);
 +    }
 +    
 +    public void unDeployCompositeApplicationDefinition(String appAlias) 
throws InvalidCompositeApplicationDefinitionException, 
 +    InvalidIaasProviderException {
++<<<<<<< HEAD
 +      if(log.isDebugEnabled()){
 +            log.debug("undeploying composite application in cloud controller, 
removing all composite apps ");
 +            dataHolder.removeAllConfigCompositeApplications();
 +            persist();
 +            TopologyBuilder.handleCompositeApplicationRemoved(appAlias);
 +        }
 +    }
 +
      public void deployCartridgeDefinition(CartridgeConfig cartridgeConfig) 
throws InvalidCartridgeDefinitionException, 
      InvalidIaasProviderException {
++=======
++>>>>>>> master
          if (cartridgeConfig == null) {
              String msg = "Invalid Cartridge Definition: Definition is null.";
              log.error(msg);
@@@ -417,10 -415,11 +465,18 @@@
                  log.fatal(msg);
                  throw new IllegalStateException(msg);
              }
++<<<<<<< HEAD
 +                memberContext.setNodeId(nodeId);
 +                if(log.isDebugEnabled()) {
 +                    log.debug("Node id was set. "+memberContext.toString());
 +                }
++=======
+             
+                       memberContext.setNodeId(nodeId);
+                       if (log.isDebugEnabled()) {
+                               log.debug("Node id was set. " + 
memberContext.toString());
+                       }
++>>>>>>> master
  
                  // attach volumes
                        if (ctxt.isVolumeRequired()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 96485a4,a8ed8de..2af179a
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@@ -22,12 -22,7 +22,16 @@@ import org.apache.commons.logging.Log
  import org.apache.commons.logging.LogFactory;
  import 
org.apache.stratos.cloud.controller.exception.InvalidCartridgeTypeException;
  import org.apache.stratos.cloud.controller.exception.InvalidMemberException;
++<<<<<<< HEAD
 +import org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl;
 +import org.apache.stratos.cloud.controller.pojo.Cartridge;
 +import org.apache.stratos.cloud.controller.pojo.ClusterContext;
 +import 
org.apache.stratos.cloud.controller.pojo.CompositeApplicationDefinition;
 +import org.apache.stratos.cloud.controller.pojo.PortMapping;
 +import org.apache.stratos.cloud.controller.pojo.Registrant;
++=======
+ import org.apache.stratos.cloud.controller.pojo.*;
++>>>>>>> master
  import 
org.apache.stratos.cloud.controller.publisher.CartridgeInstanceDataPublisher;
  import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
  import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
@@@ -40,10 -34,10 +44,15 @@@ import org.apache.stratos.messaging.eve
  import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
  import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent;
  import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent;
++<<<<<<< HEAD
 +import org.apache.stratos.messaging.util.Util;
++=======
+ import org.apache.stratos.messaging.util.Constants;
++>>>>>>> master
  
 +import java.util.ArrayList;
  import java.util.List;
+ import java.util.Map;
  import java.util.Properties;
  
  /**
@@@ -549,7 -479,7 +607,11 @@@ public class TopologyBuilder 
          } finally {
              TopologyManager.releaseWriteLock();
          }
++<<<<<<< HEAD
 +        TopologyEventPublisher.sendMemberTerminatedEvent(serviceName, 
clusterId, networkPartitionId, partitionId, memberId, groupAlias);
++=======
+         TopologyEventPublisher.sendMemberTerminatedEvent(serviceName, 
clusterId, networkPartitionId, partitionId, memberId, properties);
++>>>>>>> master
      }
  
      public static void handleMemberSuspended() {

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
index d4489b4,fe86198..6151b83
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
@@@ -21,14 -21,12 +21,20 @@@ import org.apache.commons.logging.Log
  import org.apache.commons.logging.LogFactory;
  import org.apache.stratos.cloud.controller.pojo.Cartridge;
  import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+ import org.apache.stratos.cloud.controller.pojo.MemberContext;
  import org.apache.stratos.cloud.controller.pojo.PortMapping;
+ import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
  import org.apache.stratos.messaging.broker.publish.EventPublisher;
  import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
++<<<<<<< HEAD
 +import org.apache.stratos.messaging.domain.topology.Cluster;
 +import 
org.apache.stratos.messaging.domain.topology.ConfigCompositeApplication;
 +import org.apache.stratos.messaging.domain.topology.Port;
 +import org.apache.stratos.messaging.domain.topology.ServiceType;
 +import org.apache.stratos.messaging.domain.topology.Topology;
++=======
+ import org.apache.stratos.messaging.domain.topology.*;
++>>>>>>> master
  import org.apache.stratos.messaging.event.Event;
  import 
org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
  import org.apache.stratos.messaging.event.topology.*;
@@@ -161,15 -158,13 +181,22 @@@ public class TopologyEventPublisher 
         }
  
  
++<<<<<<< HEAD
 +    public static void sendMemberTerminatedEvent(String serviceName, String 
clusterId, String networkPartitionId, String partitionId, String memberId, 
String groupId) {
 +        MemberTerminatedEvent memberTerminatedEvent = new 
MemberTerminatedEvent(serviceName, clusterId, networkPartitionId, partitionId, 
memberId);
 +        // grouping
 +        memberTerminatedEvent.setGroupId(groupId);
++=======
+     public static void sendMemberTerminatedEvent(String serviceName, String 
clusterId, String networkPartitionId,
+                                                  String partitionId, String 
memberId, Properties properties) {
+         MemberTerminatedEvent memberTerminatedEvent = new 
MemberTerminatedEvent(serviceName, clusterId, networkPartitionId, partitionId, 
memberId);
+         memberTerminatedEvent.setProperties(properties);
++>>>>>>> master
          if(log.isInfoEnabled()) {
 -            log.info(String.format("Publishing member terminated event: 
[service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s", 
serviceName, clusterId, networkPartitionId, partitionId, memberId));
 +            log.info(String.format("Publishing member terminated event: 
[service] %s [cluster] %s [network-partition] %s [partition] %s [member] %s 
[groupId] %s", serviceName, clusterId, networkPartitionId, 
 +                      partitionId, memberId, groupId));
          }
 +
          publishEvent(memberTerminatedEvent);
      }
  

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/DomainSubscriptionDoesNotExist.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/DomainSubscriptionDoesNotExist.java
index fbef4a8,b4d09da..69ab506
--- 
a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/DomainSubscriptionDoesNotExist.java
+++ 
b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/exception/DomainSubscriptionDoesNotExist.java
@@@ -20,29 -20,29 +20,57 @@@ package org.apache.stratos.manager.exce
  
  public class DomainSubscriptionDoesNotExist extends Exception {
  
++<<<<<<< HEAD
 +    private static final long serialVersionUID = 1L;
 +
 +    private final String message;
 +
 +    private final String subscriptionDomain;
 +
 +    public DomainSubscriptionDoesNotExist(String message, String 
subscriptionDomain, Throwable cause) {
 +        super(message, cause);
 +        this.message = message;
 +        this.subscriptionDomain = subscriptionDomain;
 +    }
 +
 +    public DomainSubscriptionDoesNotExist(String message, String 
subscriptionDomain) {
 +        super(message);
 +        this.message = message;
 +        this.subscriptionDomain = subscriptionDomain;
 +    }
 +
 +    public String getMessage() {
 +        return message;
 +    }
 +
 +    public String getSubscriptionDomain() {
 +        return subscriptionDomain;
 +    }
++=======
+       private static final long serialVersionUID = 1L;
+ 
+       private final String message;
+ 
+       private final String subscriptionDomain;
+ 
+       public DomainSubscriptionDoesNotExist(String message, String 
subscriptionDomain, Throwable cause) {
+               super(message, cause);
+               this.message = message;
+               this.subscriptionDomain = subscriptionDomain;
+       }
+ 
+       public DomainSubscriptionDoesNotExist(String message, String 
subscriptionDomain) {
+               super(message);
+               this.message = message;
+               this.subscriptionDomain = subscriptionDomain;
+       }
+ 
+       public String getMessage() {
+               return message;
+       }
+ 
+       public String getSubscriptionDomain() {
+               return subscriptionDomain;
+       }
++>>>>>>> master
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index 989fed4,d6f9f76..391aec6
--- 
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
@@@ -34,7 -35,10 +35,14 @@@ import org.apache.stratos.manager.lb.ca
  import org.apache.stratos.manager.repository.Repository;
  import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
  import org.apache.stratos.manager.subscriber.Subscriber;
++<<<<<<< HEAD
 +import org.apache.stratos.manager.subscription.*;
++=======
+ import org.apache.stratos.manager.subscription.CartridgeSubscription;
+ import org.apache.stratos.manager.subscription.PersistenceContext;
+ import org.apache.stratos.manager.subscription.SubscriptionData;
+ import org.apache.stratos.manager.subscription.SubscriptionDomain;
++>>>>>>> master
  import 
org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory;
  import 
org.apache.stratos.manager.subscription.tenancy.SubscriptionMultiTenantBehaviour;
  import 
org.apache.stratos.manager.subscription.tenancy.SubscriptionSingleTenantBehaviour;
@@@ -427,16 -319,16 +434,29 @@@ public class CartridgeSubscriptionManag
          }else {
                // Generate and set the key
              subscriptionKey = 
CartridgeSubscriptionUtils.generateSubscriptionKey();
++<<<<<<< HEAD
 +        }
 +        
 +        cartridgeSubscription.setSubscriptionKey(subscriptionKey);
 +
 +        if(log.isDebugEnabled()) {
 +            log.debug("Repository with url: " + 
subscriptionData.getRepositoryURL() +
 +                    " username: " + subscriptionData.getRepositoryUsername() +
 +                    " Type: " + subscriptionData.getRepositoryType());
 +        }
 +        
++=======
+         }
+         
+         cartridgeSubscription.setSubscriptionKey(subscriptionKey);
+ 
+         if(log.isDebugEnabled()) {
+             log.debug("Repository with url: " + 
subscriptionData.getRepositoryURL() +
+                     " username: " + subscriptionData.getRepositoryUsername() +
+                     " Type: " + subscriptionData.getRepositoryType());
+         }
+         
++>>>>>>> master
          // Create subscriber
          Subscriber subscriber = new 
Subscriber(subscriptionData.getTenantAdminUsername(), 
subscriptionData.getTenantId(), subscriptionData.getTenantDomain());
          cartridgeSubscription.setSubscriber(subscriber);
@@@ -561,7 -453,7 +581,11 @@@
                  }
  
              cartridgeSubscription.addSubscriptionDomain(new 
SubscriptionDomain(domainName, applicationContext));
++<<<<<<< HEAD
 +            new 
DataInsertionAndRetrievalManager().cacheAndPersistSubcription(cartridgeSubscription);
++=======
+             new 
DataInsertionAndRetrievalManager().cacheAndUpdateSubscription(cartridgeSubscription);
++>>>>>>> master
          } catch (PersistenceManagerException e) {
              String errorMsg = "Could not add domain to cartridge 
subscription: [tenant-id] " + tenantId + " [subscription-alias] " + 
subscriptionAlias +
              " [domain-name] " + domainName + " [application-context] " + 
applicationContext;
@@@ -591,7 -483,7 +615,11 @@@
                  throw new DomainSubscriptionDoesNotExist("Cartridge 
subscription not found", domainName);
              }
              cartridgeSubscription.removeSubscriptionDomain(domainName);
++<<<<<<< HEAD
 +            new 
DataInsertionAndRetrievalManager().cacheAndPersistSubcription(cartridgeSubscription);
++=======
+             new 
DataInsertionAndRetrievalManager().cacheAndUpdateSubscription(cartridgeSubscription);
++>>>>>>> master
          } catch (PersistenceManagerException e) {
              String errorMsg = "Could not remove domain from cartridge 
subscription: [tenant-id] " + tenantId + " [subscription-alias] " + 
subscriptionAlias +
                      " [domain-name] " + domainName;

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberActivatedEvent.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberActivatedEvent.java
index 3e0d355,e505537..23ef560
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberActivatedEvent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberActivatedEvent.java
@@@ -21,14 -21,9 +21,17 @@@ package org.apache.stratos.messaging.ev
  
  import java.io.Serializable;
  import java.util.*;
++<<<<<<< HEAD
  
  import org.apache.stratos.messaging.domain.topology.Port;
  
 +import java.io.Serializable;
 +import java.util.Collection;
 +import java.util.HashMap;
 +import java.util.Map;
++=======
++>>>>>>> master
 +
  /**
   * This event is fired by Cloud Controller when a member has started it's 
server and
   * applications are ready to serve the incoming requests.

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberTerminatedEvent.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberTerminatedEvent.java
index d8fd990,21aa340..e0c0503
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberTerminatedEvent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/MemberTerminatedEvent.java
@@@ -34,7 -34,6 +34,10 @@@ public clas
      private final String networkPartitionId;
      private final String partitionId;
      private final String memberId;
++<<<<<<< HEAD
 +    private String groupId;
++=======
++>>>>>>> master
      private Properties properties;
  
  
@@@ -66,13 -65,6 +69,16 @@@
          return networkPartitionId;
      }
  
++<<<<<<< HEAD
 +      public String getGroupId() {
 +              return groupId;
 +      }
 +
 +      public void setGroupId(String groupId) {
 +              this.groupId = groupId;
 +      }
++=======
++>>>>>>> master
      public Properties getProperties() {
          return properties;
      }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/TopologyMessageProcessorChain.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
index ec15b09,95b5a07..48905f3
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/util/Util.java
@@@ -106,11 -104,46 +106,52 @@@ public class Util 
      public static Object jsonToObject(String json, Class type) {
          return (new JsonMessage(json, type)).getObject();
      }
 +    
 +    public static String ObjectToJson(Object obj) {
 +      Gson gson = new Gson();
 +      String result = gson.toJson(obj);
 +      return result;
 +    }
  
+ 
+     // Time interval between each ping message sent to topic.
+     private static int averagePingInterval;
+ 
+     // Time interval between each ping message after an error had occurred.
+     private static int failoverPingInterval;
+ 
+     /**
+      * fetch value from system param
+      * @return
+      */
+     public static int getAveragePingInterval() {
+         if (averagePingInterval <= 0) {
+             averagePingInterval = 
Util.getNumericSystemProperty(Constants.DEFAULT_AVERAGE_PING_INTERVAL,Constants.AVERAGE_PING_INTERVAL_PROPERTY);
+         }
+         return averagePingInterval;
+     }
+ 
+     /**
+      * fetch value from system param
+      * @return
+      */
+     public static int getFailoverPingInterval() {
+         if (failoverPingInterval <= 0) {
+             failoverPingInterval = 
Util.getNumericSystemProperty(Constants.DEFAULT_FAILOVER_PING_INTERVAL,Constants.FAILOVER_PING_INTERVAL_PROPERTY);
+         }
+         return failoverPingInterval;
+     }
+ 
+     /**
+      * Method to safely access numeric system properties
+      * @param defaultValue
+      * @return
+      */
+     public static Integer getNumericSystemProperty(Integer defaultValue, 
String propertyKey) {
+         try {
+             return Integer.valueOf(System.getProperty(propertyKey));
+         } catch (NumberFormatException ex) {
+             return defaultValue;
+         }
+     }
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/CartridgeInfoBean.java
index eec247d,dbeb5c5..52973c0
--- 
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
@@@ -20,7 -20,6 +20,10 @@@ package org.apache.stratos.rest.endpoin
  
  import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.PersistenceBean;
  import 
org.apache.stratos.rest.endpoint.bean.cartridge.definition.PropertyBean;
++<<<<<<< HEAD
 +
++=======
++>>>>>>> master
  import javax.xml.bind.annotation.XmlRootElement;
  import java.util.ArrayList;
  import java.util.List;
@@@ -38,14 -37,16 +41,24 @@@ public class CartridgeInfoBean 
      String dataCartridgeType;
      String dataCartridgeAlias;
      boolean commitsEnabled;
++<<<<<<< HEAD
 +
++=======
++>>>>>>> master
      private String serviceGroup;
  
      private PersistenceBean persistence;
  
      private List<PropertyBean> property;
  
++<<<<<<< HEAD
 +    public CartridgeInfoBean() {
++=======
+     private List<String> domains;
+ 
+     public CartridgeInfoBean() {
+         this.domains = new ArrayList<String>();
++>>>>>>> master
      }
  
      public String getCartridgeType() {
@@@ -148,8 -149,8 +161,13 @@@
          return persistence;
      }
  
++<<<<<<< HEAD
 +    public void setPersistence(PersistenceBean persistenceBean) {
 +        this.persistence = persistenceBean;
++=======
+     public void setPersistence(PersistenceBean persistence) {
+         this.persistence = persistence;
++>>>>>>> master
      }
  
      public List<PropertyBean> getProperty() {
@@@ -159,4 -160,9 +177,12 @@@
      public void setProperty(List<PropertyBean> property) {
          this.property = property;
      }
++<<<<<<< HEAD
++=======
+ 
+     public List<String> getDomains() { return domains; }
+ 
+     public void setDomains(List<String> domains) { this.domains = domains; }
+ 
++>>>>>>> master
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index b47ac0d,ee3145c..68dec87
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@@ -19,7 -19,6 +19,10 @@@
  
  package org.apache.stratos.rest.endpoint.bean.util.converter;
  
++<<<<<<< HEAD
 +import org.apache.commons.logging.LogFactory;
++=======
++>>>>>>> master
  import org.apache.commons.lang.StringUtils;
  import org.apache.stratos.cloud.controller.stub.pojo.*;
  import org.apache.stratos.manager.deploy.service.Service;
@@@ -29,8 -29,8 +33,9 @@@ import org.apache.stratos.rest.endpoint
  import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*;
  import 
org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
  import org.apache.stratos.rest.endpoint.bean.cartridge.definition.*;
+ import 
org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
  import org.apache.stratos.rest.endpoint.bean.topology.Member;
 +import org.apache.commons.logging.Log;
  
  import java.util.ArrayList;
  import java.util.Arrays;
@@@ -148,7 -148,7 +153,11 @@@ public class PojoConverter 
          return iaasConfigsArray;
      }
  
++<<<<<<< HEAD
 +    public static Persistence getPersistence(PersistenceBean persistenceBean) 
{
++=======
+      public static Persistence getPersistence(PersistenceBean 
persistenceBean) {
++>>>>>>> master
          Persistence persistence = new Persistence();
          persistence.setPersistanceRequired(persistenceBean.isRequired);
          VolumeBean[] volumeBean = new 
VolumeBean[persistenceBean.volume.size()];

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 9b7fff8,5b1a01e..0654c35
--- 
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
@@@ -23,19 -24,14 +24,28 @@@ import org.apache.commons.lang.StringUt
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
++<<<<<<< HEAD
 +import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
 +import org.apache.stratos.cloud.controller.stub.pojo.CartridgeConfig;
 +import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
 +import 
org.apache.stratos.cloud.controller.stub.pojo.CompositeApplicationDefinition;
 +import org.apache.stratos.cloud.controller.stub.pojo.Property;
++=======
++>>>>>>> master
  import 
org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPartitionExceptionException;
  import 
org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPolicyExceptionException;
  import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeDefinitionExceptionException;
  import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException;
 +import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException;
  import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException;
++<<<<<<< HEAD
 +import 
org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 +import 
org.apache.stratos.manager.composite.application.CompositeApplicationManager;
++=======
+ import org.apache.stratos.cloud.controller.stub.pojo.CartridgeConfig;
+ import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo;
+ import org.apache.stratos.cloud.controller.stub.pojo.Property;
++>>>>>>> master
  import org.apache.stratos.manager.client.AutoscalerServiceClient;
  import org.apache.stratos.manager.client.CloudControllerServiceClient;
  import org.apache.stratos.manager.deploy.service.Service;
@@@ -85,17 -84,15 +100,17 @@@ public class ServiceUtils 
  
      private static Log log = LogFactory.getLog(ServiceUtils.class);
      private static CartridgeSubscriptionManager cartridgeSubsciptionManager = 
new CartridgeSubscriptionManager();
 +    private static ServiceGroupingManager serviceGropingManager = new 
ServiceGroupingManager();
      private static ServiceDeploymentManager serviceDeploymentManager = new 
ServiceDeploymentManager();
 +    private static CompositeApplicationManager compositeApplicationManager = 
new CompositeApplicationManager();
  
-     static StratosAdminResponse deployCartridge (CartridgeDefinitionBean 
cartridgeDefinitionBean, ConfigurationContext ctxt,
-         String userName, String tenantDomain) throws RestAPIException {
+     static void deployCartridge(CartridgeDefinitionBean 
cartridgeDefinitionBean, ConfigurationContext ctxt,
+                                                 String userName, String 
tenantDomain) throws RestAPIException {
  
-         log.info("Starting to deploy a Cartridge [type] 
"+cartridgeDefinitionBean.type);
+         log.info("Starting to deploy a Cartridge [type] " + 
cartridgeDefinitionBean.type);
  
          CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
-         
+ 
          if (cloudControllerServiceClient != null) {
  
              CartridgeConfig cartridgeConfig = 
PojoConverter.populateCartridgeConfigPojo(cartridgeDefinitionBean);
@@@ -104,211 -101,28 +119,207 @@@
                  throw new RestAPIException("Populated CartridgeConfig 
instance is null, cartridge deployment aborted");
              }
  
-                 
-                       // call CC
-                       try {
-                               cloudControllerServiceClient
-                                               
.deployCartridgeDefinition(cartridgeConfig);
-                       } catch (RemoteException e) {
-                               log.error(e.getMessage(), e);
-                               throw new RestAPIException(e.getMessage(), e);
-                       } catch 
(CloudControllerServiceInvalidCartridgeDefinitionExceptionException e) {
-                               String message = 
e.getFaultMessage().getInvalidCartridgeDefinitionException().getMessage();
-                               log.error(message, e);
-                               throw new RestAPIException(message, e);
-                       } catch 
(CloudControllerServiceInvalidIaasProviderExceptionException e) {
-                               String message = 
e.getFaultMessage().getInvalidIaasProviderException().getMessage();
-                               log.error(message, e);
-                               throw new RestAPIException(message, e);
-                       }
-                 
-             log.info("Successfully deployed Cartridge [type] 
"+cartridgeDefinitionBean.type);
-                 
-         }
  
-         StratosAdminResponse stratosAdminResponse = new 
StratosAdminResponse();
-         stratosAdminResponse.setMessage("Successfully deployed cartridge 
definition with type " + cartridgeDefinitionBean.type);
-         return stratosAdminResponse;
+             // call CC
+             try {
+                 cloudControllerServiceClient
+                         .deployCartridgeDefinition(cartridgeConfig);
+             } catch (RemoteException e) {
+                 log.error(e.getMessage(), e);
+                 throw new RestAPIException(e.getMessage(), e);
+             } catch 
(CloudControllerServiceInvalidCartridgeDefinitionExceptionException e) {
+                 String message = 
e.getFaultMessage().getInvalidCartridgeDefinitionException().getMessage();
+                 log.error(message, e);
+                 throw new RestAPIException(message, e);
+             } catch 
(CloudControllerServiceInvalidIaasProviderExceptionException e) {
+                 String message = 
e.getFaultMessage().getInvalidIaasProviderException().getMessage();
+                 log.error(message, e);
+                 throw new RestAPIException(message, e);
+             }
+ 
+             log.info("Successfully deployed Cartridge [type] " + 
cartridgeDefinitionBean.type);
+ 
+         }
      }
 +    
 +    // Grouping
 +    /*
 +    static StratosAdminResponse 
deployApplication(CompositeApplicationDefinitionBean applicationDefinitionBean, 
ConfigurationContext ctxt,
 +            String userName, String tenantDomain) throws RestAPIException {
 +
 +              log.info("Starting to deploy a application " + 
applicationDefinitionBean);
 +              
 +              if (log.isDebugEnabled()) {
 +                      log.debug("application data id:" + 
applicationDefinitionBean.applicationId + " /alias: " + 
 +                                      applicationDefinitionBean.alias);
 +                      if (applicationDefinitionBean.components != null) {
 +                              log.debug("application config groups size " + 
applicationDefinitionBean.components.size());
 +                              for (ComponentDefinition cfg : 
applicationDefinitionBean.components) {
 +                                      log.debug("listing application config 
groups "  + cfg.alias + " /sub " + 
 +                                             cfg.subscribables + " /dep " + 
cfg.dependencies);
 +                                      if (cfg.dependencies != null) {
 +                                              log.debug("listing application 
group dependencies: kill: " +  
 +                                                     
cfg.dependencies.kill_behavior + " / startup: " + 
 +                                                     
cfg.dependencies.startup_order);
 +                                              if 
(cfg.dependencies.startup_order != null) {
 +                                                      for 
(ConfigDependencies.Pair pair :  cfg.dependencies.startup_order) {
 +                                                              
log.debug("listing dependencies pairs : " + pair.getKey() + " / " + 
pair.getValue());
 +                                                      }
 +                                              }
 +                                      }
 +                              }
 +                      } else {
 +                              log.debug("no config group in application");
 +                      }
 +
 +              }
 +
 +              // convert to json
 +              String applicationId = applicationDefinitionBean.applicationId;
 +              
 +              if (log.isDebugEnabled()) {
 +                      log.debug("publishing application created event " + 
applicationId);
 +              }
 +              
 +              // convert to domain object - move to ojoConverted
 +              ConfigCompositeApplication app = 
PojoConverter.convertToCompositeApplication(applicationDefinitionBean);
 +              if (log.isDebugEnabled()) {
 +                      log.debug("converted application to 
CompositeApplication " + app);
 +              }
 +              CompositeApplicationManager manager = new 
CompositeApplicationManager();
 +              
 +              
 +                      try {
 +                              manager.deployCompositeApplication(app);
 +                      } catch (ADCException e) {
 +                              // TODO Auto-generated catch block
 +                              e.printStackTrace();
 +                              String message = e.getMessage();
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                      }
 +              
 +              log.info("l [type] " + applicationDefinitionBean);
 +              // deploy to cloud controller
 +              CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
 +            
 +              
 +              if (log.isDebugEnabled()) {
 +                      log.debug("deployeing composite app in cloud 
controller");
 +              }
 +            
 +            
ServiceUtils.deployCompositeApplicationDefinition(applicationDefinitionBean, 
ctxt, userName, tenantDomain);
 +               
 +            if (log.isDebugEnabled()) {
 +                      log.debug("done deployeing composite app in cloud 
controller");
 +              }
 +
 +              StratosAdminResponse stratosAdminResponse = new 
StratosAdminResponse();
 +              stratosAdminResponse.setMessage("Successfully deployed 
application definition w" + applicationDefinitionBean);
 +              return stratosAdminResponse;
 +    } */
 +    /*
 +    static StratosAdminResponse deployCompositeApplicationDefinition 
(CompositeApplicationDefinitionBean compositeApplicationDefinition, 
ConfigurationContext ctxt,
 +            String userName, String tenantDomain) throws RestAPIException {
 +
 +            log.info("Starting to deploy composite application definition "+  
compositeApplicationDefinition);
 +            
 +            CompositeApplicationDefinition appConfig = 
PojoConverter.convertToCompositeApplicationForCC(compositeApplicationDefinition);
 +            
 +
 +            CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
 +            
 +            if (cloudControllerServiceClient != null) {
 +                      // call CC
 +              try {
 +                                      
cloudControllerServiceClient.deployCompositeApplicationDefinition(appConfig);
 +                              } catch (RemoteException e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      log.error(e.getMessage(), e);
 +                              throw new RestAPIException(e.getMessage(), e);
 +                              } catch 
(CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException 
e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      //String message = 
e.getFaultMessage().getInvalidCompositeApplicationDefinitionException().getMessage();
 +                                      String message = 
"CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException";
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                              } catch 
(CloudControllerServiceInvalidIaasProviderExceptionException e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      String message = 
e.getFaultMessage().getInvalidIaasProviderException().getMessage();
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                              }
 +              
 +                log.info("Successfully deployed composite application to 
Cloud Controller");
 +                    
 +            }
 +
 +            StratosAdminResponse stratosAdminResponse = new 
StratosAdminResponse();
 +            stratosAdminResponse.setMessage("Successfully deployed composite 
application to cloud controller");
 +            return stratosAdminResponse;
 +        }
 +*/
 +    static void deployCompositeApplicationDefintion (CompositeAppDefinition 
compositeAppDefinition, ConfigurationContext ctxt,
 +                                                                     String 
userName, String tenantDomain)
 +            throws RestAPIException {
 +
 +        int tenantId = ApplicationManagementUtil.getTenantId(ctxt);
 +
 +        try {
 +            
compositeApplicationManager.deployCompositeApplication(compositeAppDefinition, 
tenantId, tenantDomain, userName);
 +
 +        } catch (CompositeApplicationDefinitionException e) {
 +            throw new RestAPIException(e);
 +        } catch (PersistenceManagerException e) {
 +            throw new RestAPIException(e);
 +        } catch (CompositeApplicationException e) {
 +            throw new RestAPIException(e);
 +        }
 +    }
 +    
 +    static void unDeployApplication(String configCompositeApplicationAlias, 
ConfigurationContext ctxt,
 +            String userName, String tenantDomain) throws RestAPIException {
 +
 +              log.info("Starting to undeploy a composite application 
definition " + configCompositeApplicationAlias);
 +              
 +              CloudControllerServiceClient cloudControllerServiceClient = 
getCloudControllerServiceClient();
 +            
 +            if (cloudControllerServiceClient != null) {
 +              try {
 +                      if (log.isDebugEnabled()) {
 +                              log.debug("trying to undeploy composite 
application definition " + configCompositeApplicationAlias);
 +                      }
 +                                      
cloudControllerServiceClient.unDeployCompositeApplicationDefinition(configCompositeApplicationAlias);
 +                              } catch (RemoteException e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      String message = "Remote 
ExceptionException";
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                              } catch 
(CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException 
e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      String message = 
"CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException";
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                              } catch 
(CloudControllerServiceInvalidIaasProviderExceptionException e) {
 +                                      // TODO Auto-generated catch block
 +                                      e.printStackTrace();
 +                                      String message = 
"CloudControllerServiceInvalidIaasProviderExceptionException";
 +                              log.error(message, e);
 +                              throw new RestAPIException(message, e);
 +                              }
 +            } else {
 +              if (log.isDebugEnabled()) {
 +                      log.debug("cloud controller client is null while trying 
to undeploy composite application definition");
 +              }
 +            }
 +              
 +              log.info(String.format("[type] %s", 
configCompositeApplicationAlias));
 +    }
  
      @SuppressWarnings("unused")
      private static DeploymentPolicy[] intersection(
@@@ -1181,7 -973,6 +1170,10 @@@
          
subscriptionData.setRepositoryPassword(cartridgeInfoBean.getRepoPassword());
          
subscriptionData.setCommitsEnabled(cartridgeInfoBean.isCommitsEnabled());
          subscriptionData.setServiceGroup(cartridgeInfoBean.getServiceGroup());
++<<<<<<< HEAD
 +        
++=======
++>>>>>>> master
  
          PersistenceBean persistenceBean = cartridgeInfoBean.getPersistence();
          if(persistenceBean != null) {
@@@ -1192,9 -983,8 +1184,13 @@@
          }
  
          /*
++<<<<<<< HEAD
 +        if (cartridgeInfoBean.getPersistence() != null) {
 +
++=======
++>>>>>>> master
          if (cartridgeInfoBean.isPersistanceRequired()) {
+         if (cartridgeInfoBean.getPersistence() != null) {
              // Add persistence related properties to PersistenceContext
              PersistenceContext persistenceContext = new PersistenceContext();
              
persistenceContext.setPersistanceRequiredProperty(IS_VOLUME_REQUIRED, 
String.valueOf(cartridgeInfoBean.isPersistanceRequired()));
@@@ -1206,19 -996,24 +1202,28 @@@
              subscriptionData.setPersistanceCtxt(persistenceContext);
          }
          */
++<<<<<<< HEAD
 +
++=======
++>>>>>>> master
          //subscribe
-         return 
cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
- 
+         SubscriptionInfo subscriptionInfo = null;
+         try{
+               subscriptionInfo = 
cartridgeSubsciptionManager.subscribeToCartridgeWithProperties(subscriptionData);
+         }catch(Exception e){
+               throw new RestAPIException(e.getMessage(), e);
+         }
+         
+         return subscriptionInfo;
      }
  
-     public static org.apache.stratos.rest.endpoint.bean.topology.Cluster 
getCluster (String cartridgeType, String subscriptionAlias, 
ConfigurationContext configurationContext) throws RestAPIException {
+     public static org.apache.stratos.rest.endpoint.bean.topology.Cluster 
getCluster(String cartridgeType, String subscriptionAlias, ConfigurationContext 
configurationContext) throws RestAPIException {
  
          Cluster cluster = 
TopologyClusterInformationModel.getInstance().getCluster(ApplicationManagementUtil.getTenantId(configurationContext)
-                 ,cartridgeType , subscriptionAlias);
-         if(cluster == null) {
-             throw new RestAPIException("No matching cluster found for 
[cartridge type]: "+cartridgeType+ " [alias] "+subscriptionAlias);
-         } else{
+                 , cartridgeType, subscriptionAlias);
+         if (cluster == null) {
+             throw new RestAPIException("No matching cluster found for 
[cartridge type]: " + cartridgeType + " [alias] " + subscriptionAlias);
+         } else {
              return PojoConverter.populateClusterPojos(cluster);
          }
      }
@@@ -1278,7 -1089,6 +1299,10 @@@
              subscriptionData.setTenantAdminUsername(userName);
              subscriptionData.setRepositoryType("git");
              //subscriptionData.setPayloadProperties(props);
++<<<<<<< HEAD
 +            //subscriptionData.setProperties(props);
++=======
++>>>>>>> master
              subscriptionData.setPrivateRepository(false);
  
              cartridgeSubscription =
@@@ -1289,7 -1099,6 +1313,10 @@@
  
              Properties lbProperties = new Properties();
              lbProperties.setPayloadProperties(props);
++<<<<<<< HEAD
 +            lbProperties.setProperties(props);
++=======
++>>>>>>> master
              
cartridgeSubsciptionManager.registerCartridgeSubscription(cartridgeSubscription,
 lbProperties);
              
              if(log.isDebugEnabled()) {
@@@ -1388,49 -1185,97 +1403,136 @@@
              log.error(msg, e);
              throw new RestAPIException(msg, e);
          }
-         
-         StratosAdminResponse stratosAdminResponse = new 
StratosAdminResponse();
-         stratosAdminResponse.setMessage("Successfully sent the repository 
synchronization request for " + cartridgeSubscription.getAlias());
-         return stratosAdminResponse;
+     }
+ 
+     public static void addSubscriptionDomains(ConfigurationContext 
configurationContext, String cartridgeType,
+                                                              String 
subscriptionAlias, 
+                                                              
SubscriptionDomainRequest request) 
+                                                                        throws 
RestAPIException {
+         try {
+             int tenantId = 
ApplicationManagementUtil.getTenantId(configurationContext);
+ 
+             for 
(org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean
 subscriptionDomain : request.domains) {
+                 boolean isDomainExists = 
isSubscriptionDomainExists(configurationContext, cartridgeType, 
subscriptionAlias, subscriptionDomain.domainName);
+                 if (isDomainExists) {
+                     String message = "Subscription domain " + 
subscriptionDomain.domainName + " exists";
+                     throw new RestAPIException(Status.INTERNAL_SERVER_ERROR, 
message);
+                 }
+             }
+ 
+             for 
(org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean
 subscriptionDomain : request.domains) {
+                               
+               cartridgeSubsciptionManager.addSubscriptionDomain(tenantId, 
subscriptionAlias, 
+                               subscriptionDomain.domainName, 
subscriptionDomain.applicationContext);
+                       }
+         } catch (Exception e) {
+             log.error(e.getMessage(), e);
+             throw new RestAPIException(e.getMessage(), e);
+         }
+     }
+ 
+     public static boolean isSubscriptionDomainExists(ConfigurationContext 
configurationContext, String cartridgeType,
+                                                      String 
subscriptionAlias, String domain) throws RestAPIException {
+         try {
+             int tenantId = 
ApplicationManagementUtil.getTenantId(configurationContext);
+             SubscriptionDomainBean subscriptionDomain = 
PojoConverter.populateSubscriptionDomainPojo(cartridgeSubsciptionManager.getSubscriptionDomain(tenantId,
+                     subscriptionAlias, domain));
+ 
+             if (subscriptionDomain.domainName != null) {
+                 return true;
+             } else {
+                 return false;
+             }
+         } catch (Exception e) {
+             log.error(e.getMessage(), e);
+             throw new RestAPIException(e.getMessage(), e);
+         }
+ 
+     }
+ 
+     public static List<SubscriptionDomainBean> 
getSubscriptionDomains(ConfigurationContext configurationContext, String 
cartridgeType,
+                                                       String 
subscriptionAlias) throws RestAPIException {
+         try {
+             int tenantId = 
ApplicationManagementUtil.getTenantId(configurationContext);
+             return 
PojoConverter.populateSubscriptionDomainPojos(cartridgeSubsciptionManager.getSubscriptionDomains(tenantId,
 subscriptionAlias));
+         } catch (Exception e) {
+             log.error(e.getMessage(), e);
+             throw new RestAPIException(e.getMessage(), e);
+         }
+     }
+     
+       public static SubscriptionDomainBean 
getSubscriptionDomain(ConfigurationContext configurationContext, String 
cartridgeType,
+                       String subscriptionAlias, String domain) throws 
RestAPIException {
+               try {
+                       int tenantId = ApplicationManagementUtil
+                                       .getTenantId(configurationContext);
+                       SubscriptionDomainBean subscriptionDomain = 
PojoConverter.populateSubscriptionDomainPojo(cartridgeSubsciptionManager.getSubscriptionDomain(tenantId,
+                                       subscriptionAlias, domain));
+                       
+                       if (subscriptionDomain == null) {
+                               String message = "Could not find a subscription 
[domain] "+domain+ " for Cartridge [type] "
+                                                       +cartridgeType+ " and 
[alias] "+subscriptionAlias;
+                               log.error(message);
+                               throw new RestAPIException(Status.NOT_FOUND, 
message);
+                       }
+                       
+                       return subscriptionDomain;
+                       
+               } catch (Exception e) {
+                       log.error(e.getMessage(), e);
+                       throw new RestAPIException(e.getMessage(), e);
+               }
+       }
+ 
+     public static void removeSubscriptionDomain(ConfigurationContext 
configurationContext, String cartridgeType,
+                                                                 String 
subscriptionAlias, String domain) throws RestAPIException, 
DomainMappingExistsException {
+         try {
+             int tenantId = 
ApplicationManagementUtil.getTenantId(configurationContext);
+             cartridgeSubsciptionManager.removeSubscriptionDomain(tenantId, 
subscriptionAlias, domain);
+         } catch (Exception e) {
+             log.error(e.getMessage(), e);
+             throw new RestAPIException(e.getMessage(), e);
+         }
+ 
      }
  
 +    static void deployServiceGroupDefinition (ServiceGroupDefinition 
serviceGroupDefinition) throws RestAPIException {
 +
 +        try {
 +            
serviceGropingManager.deployServiceGroupDefinition(serviceGroupDefinition);
 +
 +        } catch (InvalidServiceGroupException e) {
 +            throw new RestAPIException(e);
 +        } catch (ServiceGroupDefinitioException e) {
 +            throw new RestAPIException(e);
 +        } catch (ADCException e) {
 +            throw new RestAPIException(e);
 +        } catch 
(CloudControllerServiceUnregisteredCartridgeExceptionException e) {
 +            throw new RestAPIException(e);
 +        }
 +
 +        log.info("Successfully deployed the Service Group Definition with 
name " + serviceGroupDefinition.getName());
 +    }
 +
 +    static ServiceGroupDefinition getServiceGroupDefinition (String 
serviceGroupDefinitionName) throws RestAPIException {
 +
 +        try {
 +            return 
serviceGropingManager.getServiceGroupDefinition(serviceGroupDefinitionName);
 +
 +        } catch (ServiceGroupDefinitioException e) {
 +            throw new RestAPIException(e);
 +        }
 +    }
 +
 +    static void undeployServiceGroupDefinition (String 
serviceGroupDefinitionName) throws RestAPIException {
 +
 +        try {
 +            
serviceGropingManager.undeployServiceGroupDefinition(serviceGroupDefinitionName);
 +
 +        } catch (ServiceGroupDefinitioException e) {
 +            throw new RestAPIException(e);
 +        }
 +
 +        log.info("Successfully undeployed the Service Group Definition with 
name " + serviceGroupDefinitionName);
 +    }
  }

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
----------------------------------------------------------------------
diff --cc 
components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
index 8303bee,fa5057d..e50214e
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java
@@@ -30,7 -29,6 +30,10 @@@ import org.apache.stratos.manager.dto.C
  import org.apache.stratos.manager.dto.SubscriptionInfo;
  import org.apache.stratos.manager.exception.DomainMappingExistsException;
  import org.apache.stratos.manager.exception.ServiceDoesNotExistException;
++<<<<<<< HEAD
 +import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
++=======
++>>>>>>> master
  import org.apache.stratos.manager.subscription.CartridgeSubscription;
  import org.apache.stratos.manager.subscription.SubscriptionDomain;
  import org.apache.stratos.rest.endpoint.ServiceHolder;
@@@ -72,7 -69,6 +74,10 @@@ import javax.ws.rs.core.Context
  import javax.ws.rs.core.MediaType;
  import javax.ws.rs.core.Response;
  import javax.ws.rs.core.UriInfo;
++<<<<<<< HEAD
 +
++=======
++>>>>>>> master
  import java.net.URI;
  import java.util.ArrayList;
  import java.util.List;
@@@ -245,44 -145,6 +252,47 @@@ public class StratosAdmin extends Abstr
  
          ServiceUtils.undeployCartridge(cartridgeType);
          return Response.noContent().build();
++<<<<<<< HEAD
 +    }
 +
 +    @POST
 +    @Path("/group/definition/")
 +    @Produces("application/json")
 +    @Consumes("application/json")
 +    @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 +    @SuperTenantService(true)
 +    public Response deployServiceGroupDefinition (ServiceGroupDefinition 
serviceGroupDefinition)
 +            throws RestAPIException {
 +
 +        ServiceUtils.deployServiceGroupDefinition(serviceGroupDefinition);
 +        URI url =  
uriInfo.getAbsolutePathBuilder().path(serviceGroupDefinition.getName()).build();
 +        return Response.created(url).build();
 +    }
 +
 +    @GET
 +    @Path("/group/definition/{groupDefinitionName}")
 +    @Produces("application/json")
 +    @Consumes("application/json")
 +    @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 +    public Response getServiceGroupDefinition 
(@PathParam("groupDefinitionName") String groupDefinitionName)
 +            throws RestAPIException {
 +        Response.ResponseBuilder rb = 
Response.ok().entity(ServiceUtils.getServiceGroupDefinition(groupDefinitionName));
 +        return rb.build();
 +    }
 +
 +    @DELETE
 +    @Path("/group/definition/{groupDefinitionName}")
 +    @Produces("application/json")
 +    @Consumes("application/json")
 +    @AuthorizationAction("/permission/protected/manage/monitor/tenants")
 +    @SuperTenantService(true)
 +    public Response undeployServiceGroupDefinition 
(@PathParam("groupDefinitionName") String groupDefinitionName)
 +            throws RestAPIException {
 +
 +        ServiceUtils.undeployServiceGroupDefinition(groupDefinitionName);
 +        return Response.noContent().build();
++=======
++>>>>>>> master
      }
  
      @POST

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
----------------------------------------------------------------------
diff --cc products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
index 317da88,2636e74..491d52e
--- a/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
+++ b/products/cartridge-agent/modules/distribution/src/main/bin/stratos.sh
@@@ -45,7 -49,27 +49,31 @@@ properties="-Dmb.ip=MB-I
            -Dmonitoring.server.secure.port=MONITORING-SERVER-SECURE-PORT
            -Dmonitoring.server.admin.username=MONITORING-SERVER-ADMIN-USERNAME
            -Dmonitoring.server.admin.password=MONITORING-SERVER-ADMIN-PASSWORD
++<<<<<<< HEAD
 +          -DAPP_PATH=APP-PATH"
++=======
+           -Dlog.file.paths=LOG_FILE_PATHS
+           -DAPP_PATH=APP_PATH
+             -Dsuper.tenant.repository.path=/repository/deployment/server/
+             -Dtenant.repository.path=/repository/tenants/
+           -Dextension.instance.started=instance-started.sh
+             -Dextension.start.servers=start-servers.sh
+             -Dextension.instance.activated=instance-activated.sh
+             -Dextension.artifacts.updated=artifacts-updated.sh
+             -Dextension.clean=clean.sh
+             -Dextension.mount.volumes=mount_volumes.sh
+             -Dextension.member.started=member-started.sh
+             -Dextension.member.activated=member-activated.sh
+             -Dextension.member.suspended=member-suspended.sh
+             -Dextension.member.terminated=member-terminated.sh
+             -Dextension.complete.topology=complete-topology.sh
+             -Dextension.complete.tenant=complete-tenant.sh
+             -Dextension.subscription.domain.added=subscription-domain-added.sh
+             
-Dextension.subscription.domain.removed=subscription-domain-removed.sh
+             -Dextension.artifacts.copy=artifacts-copy.sh
+             -Dextension.tenant.subscribed=tenant-subscribed.sh
+             -Dextension.tenant.unsubscribed=tenant-unsubscribed.sh"
++>>>>>>> master
  
  # Uncomment below line to enable remote debugging
  #debug="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
----------------------------------------------------------------------
diff --cc 
products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
index 45b8d7a,e69de29..1ff5b1f
--- 
a/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
+++ 
b/products/cartridge-agent/modules/distribution/src/main/conf/templates/jndi.properties.template
@@@ -1,25 -1,0 +1,28 @@@
++<<<<<<< HEAD
 +#
 +# Licensed to the Apache Software Foundation (ASF) under one
 +# or more contributor license agreements.  See the NOTICE file
 +# distributed with this work for additional information
 +# regarding copyright ownership.  The ASF licenses this file
 +# to you under the Apache License, Version 2.0 (the
 +# "License"); you may not use this file except in compliance
 +# with the License.  You may obtain a copy of the License at
 +#
 +#     http://www.apache.org/licenses/LICENSE-2.0
 +#
 +# Unless required by applicable law or agreed to in writing,
 +# software distributed under the License is distributed on an
 +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 +# KIND, either express or implied.  See the License for the
 +# specific language governing permissions and limitations
 +# under the License.
 +#
 +# This is a generated file and will be overwritten at the next load balancer 
startup.
 +# Please use loadbalancer.conf for updating mb-ip, mb-port and 
templates/jndi.properties.template
 +# file for updating other configurations.
 +#
 +connectionfactoryName=TopicConnectionFactory
 +connectionfactory.topicConnectionfactory=tcp://$mb_ip:$mb_port
 
+java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
++=======
++>>>>>>> master

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/stratos/blob/aadd589f/products/stratos/modules/distribution/src/main/conf/mincheck.drl
----------------------------------------------------------------------
diff --cc products/stratos/modules/distribution/src/main/conf/mincheck.drl
index b29e991,ceeab48..833293c
--- a/products/stratos/modules/distribution/src/main/conf/mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/mincheck.drl
@@@ -48,10 -48,8 +48,15 @@@ global org.apache.stratos.messaging.dom
  global java.util.Map partitionCtxts;
  global java.lang.String clusterId;
  global java.lang.String lbRef;
++<<<<<<< HEAD
 +global java.lang.String serviceId;
 +
 +global org.apache.stratos.autoscaler.policy.model.AutoscalePolicy 
autoscalePolicy;
 +
++=======
+ global java.lang.Boolean isPrimary;
+ global Integer primaryMemberCount;
++>>>>>>> master
  
  rule "Minimum Rule"
  dialect "mvel"
@@@ -60,14 -58,14 +65,22 @@@
             eval(log.debug("Running minimum rule: [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId()))
               eval(log.debug("[min-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Non terminated member count: " + $ctxt.getNonTerminatedMemberCount()))
               eval(log.debug("[min-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Minimum member count: " + $ctxt.getMinimumMemberCount()))
++<<<<<<< HEAD
 +             eval($ctxt.getNonTerminatedMemberCount() < 
$ctxt.getMinimumMemberCount())
 +             eval(log.debug("Grouping ... checking startup dependencies for " 
+ clusterId))
 +           eval($ctxt.checkStartupDependencies(serviceId, clusterId))
 +           eval(log.debug("startup dependencies successfully checked for" + 
clusterId))
 +
++=======
+              eval ( (isPrimary && (primaryMemberCount < 
$ctxt.getMinimumMemberCount() )) || ( !isPrimary && 
($ctxt.getNonTerminatedMemberCount() < $ctxt.getMinimumMemberCount() )) )
++>>>>>>> master
         then
-              $delegator.delegateSpawn($ctxt, clusterId, lbRef);
-              
+            if (isPrimary){
+               log.debug("[min-check] true  [primary] true   [primary member 
count] " + primaryMemberCount);
+            } else{
+               log.debug("[min-check] true  [primary] false");
+            }
+              $delegator.delegateSpawn($ctxt, clusterId, lbRef, isPrimary);
  end
  
  rule "Terminate Obsoleted Instances"

Reply via email to