http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
index 37580eb..571ba9a 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceUtil.java
@@ -42,70 +42,70 @@ import java.util.Properties;
  */
 public class CloudControllerServiceUtil {
 
-    private static final Log log = 
LogFactory.getLog(CloudControllerServiceUtil.class);
-
-    public static Iaas buildIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
-        return iaasProvider.getIaas();
-    }
-
-    /**
-     * Update the topology, publish statistics to BAM, remove member context
-     * and persist cloud controller context.
-     *
-     * @param memberContext
-     */
-    public static void executeMemberTerminationPostProcess(MemberContext 
memberContext) {
-        if (memberContext == null) {
-            return;
-        }
-
-        String partitionId = memberContext.getPartition() == null ? null : 
memberContext.getPartition().getId();
-
-        // Update the topology
-        
TopologyBuilder.handleMemberTerminated(memberContext.getCartridgeType(),
-                memberContext.getClusterId(), 
memberContext.getNetworkPartitionId(),
-                partitionId, memberContext.getMemberId());
-
-        // Publish statistics to BAM
-        BAMUsageDataPublisher.publish(memberContext.getMemberId(),
-                partitionId,
-                memberContext.getNetworkPartitionId(),
-                memberContext.getClusterId(),
-                memberContext.getCartridgeType(),
-                MemberStatus.Terminated.toString(),
-                null);
-
-        // Remove member context
-        
CloudControllerContext.getInstance().removeMemberContext(memberContext.getClusterId(),
 memberContext.getMemberId());
-
-        // Persist cloud controller context
-        CloudControllerContext.getInstance().persist();
-    }
-
-    public static boolean isValidIpAddress(String ip) {
-        boolean isValid = InetAddresses.isInetAddress(ip);
-        return isValid;
-    }
-
-    public static IaasProvider validatePartitionAndGetIaasProvider(Partition 
partition, IaasProvider iaasProvider) throws InvalidPartitionException {
-        if (iaasProvider != null) {
-            // if this is a IaaS based partition
-            Iaas iaas = iaasProvider.getIaas();
-            PartitionValidator validator = iaas.getPartitionValidator();
-            validator.setIaasProvider(iaasProvider);
-            Properties partitionProperties = 
CloudControllerUtil.toJavaUtilProperties(partition.getProperties());
-            iaasProvider = validator.validate(partition, partitionProperties);
-            return iaasProvider;
-
-        } else {
-            String msg = "Partition is not valid: [partition-id] " + 
partition.getId();
-            log.error(msg);
-            throw new InvalidPartitionException(msg);
-        }
-    }
-
-    public static boolean validatePartition(Partition partition, IaasProvider 
iaasProvider) throws InvalidPartitionException {
-        validatePartitionAndGetIaasProvider(partition, iaasProvider);
-        return true;
-    }
+       private static final Log log = 
LogFactory.getLog(CloudControllerServiceUtil.class);
+
+       public static Iaas buildIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
+               return iaasProvider.getIaas();
+       }
+
+       /**
+        * Update the topology, publish statistics to BAM, remove member context
+        * and persist cloud controller context.
+        *
+        * @param memberContext
+        */
+       public static void executeMemberTerminationPostProcess(MemberContext 
memberContext) {
+               if (memberContext == null) {
+                       return;
+               }
+
+               String partitionId = memberContext.getPartition() == null ? 
null : memberContext.getPartition().getId();
+
+               // Update the topology
+               
TopologyBuilder.handleMemberTerminated(memberContext.getCartridgeType(), 
memberContext.getClusterId(),
+                                                      
memberContext.getNetworkPartitionId(), partitionId,
+                                                      
memberContext.getMemberId());
+
+               Long timeStamp = System.currentTimeMillis();
+               // Publish statistics to BAM
+               BAMUsageDataPublisher.publish(memberContext.getMemberId(), 
partitionId, memberContext.getNetworkPartitionId(),
+                                             memberContext.getClusterId(), 
memberContext.getCartridgeType(),
+                                             
MemberStatus.Terminated.toString(), timeStamp, null, null, null);
+
+               // Remove member context
+               CloudControllerContext.getInstance()
+                                     
.removeMemberContext(memberContext.getClusterId(), memberContext.getMemberId());
+
+               // Persist cloud controller context
+               CloudControllerContext.getInstance().persist();
+       }
+
+       public static boolean isValidIpAddress(String ip) {
+               boolean isValid = InetAddresses.isInetAddress(ip);
+               return isValid;
+       }
+
+       public static IaasProvider 
validatePartitionAndGetIaasProvider(Partition partition, IaasProvider 
iaasProvider)
+                       throws InvalidPartitionException {
+               if (iaasProvider != null) {
+                       // if this is a IaaS based partition
+                       Iaas iaas = iaasProvider.getIaas();
+                       PartitionValidator validator = 
iaas.getPartitionValidator();
+                       validator.setIaasProvider(iaasProvider);
+                       Properties partitionProperties = 
CloudControllerUtil.toJavaUtilProperties(partition.getProperties());
+                       iaasProvider = validator.validate(partition, 
partitionProperties);
+                       return iaasProvider;
+
+               } else {
+                       String msg = "Partition is not valid: [partition-id] " 
+ partition.getId();
+                       log.error(msg);
+                       throw new InvalidPartitionException(msg);
+               }
+       }
+
+       public static boolean validatePartition(Partition partition, 
IaasProvider iaasProvider)
+                       throws InvalidPartitionException {
+               validatePartitionAndGetIaasProvider(partition, iaasProvider);
+               return true;
+       }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
index 77cfea2..35c8bb1 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/InstanceCreator.java
@@ -27,8 +27,6 @@ import org.apache.stratos.cloud.controller.domain.*;
 import 
org.apache.stratos.cloud.controller.exception.CartridgeNotFoundException;
 import org.apache.stratos.cloud.controller.iaases.Iaas;
 import org.apache.stratos.cloud.controller.messaging.topology.TopologyBuilder;
-import 
org.apache.stratos.cloud.controller.statistics.publisher.BAMUsageDataPublisher;
-import org.apache.stratos.messaging.domain.topology.MemberStatus;
 
 import java.util.concurrent.locks.Lock;
 
@@ -85,15 +83,6 @@ public class InstanceCreator implements Runnable {
             // Update topology
             TopologyBuilder.handleMemberInitializedEvent(memberContext);
 
-            // Publish instance creation statistics to BAM
-            BAMUsageDataPublisher.publish(
-                    memberContext.getMemberId(),
-                    memberContext.getPartition().getId(),
-                    memberContext.getNetworkPartitionId(),
-                    memberContext.getClusterId(),
-                    memberContext.getCartridgeType(),
-                    MemberStatus.Initialized.toString(),
-                    memberContext.getInstanceMetadata());
         } catch (Exception e) {
             String message = String.format("Could not start instance: 
[cartridge-type] %s [cluster-id] %s",
                     memberContext.getCartridgeType(), 
memberContext.getClusterId());

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java
index d5aabbd..c69feef 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/statistics/publisher/BAMUsageDataPublisher.java
@@ -46,168 +46,183 @@ import java.util.List;
  */
 public class BAMUsageDataPublisher {
 
-    private static final Log log = 
LogFactory.getLog(BAMUsageDataPublisher.class);
-
-    private static AsyncDataPublisher dataPublisher;
-    private static StreamDefinition streamDefinition;
-    private static final String cloudControllerEventStreamVersion = "1.0.0";
-
-    public static void publish(String memberId,
-                               String partitionId,
-                               String networkId,
-                               String clusterId,
-                               String serviceName,
-                               String status,
-                               InstanceMetadata metadata) {
-        if (!CloudControllerConfig.getInstance().isBAMDataPublisherEnabled()) {
-            return;
-        }
-        log.debug(CloudControllerConstants.DATA_PUB_TASK_NAME + " cycle 
started.");
-
-        if (dataPublisher == null) {
-            createDataPublisher();
-
-            //If we cannot create a data publisher we should give up
-            //this means data will not be published
-            if (dataPublisher == null) {
-                log.error("Data Publisher cannot be created or found.");
-                release();
-                return;
-            }
-        }
-
-        MemberContext memberContext = 
CloudControllerContext.getInstance().getMemberContextOfMemberId(memberId);
-        String cartridgeType = memberContext.getCartridgeType();
-        Cartridge cartridge = 
CloudControllerContext.getInstance().getCartridge(cartridgeType);
-
-        //Construct the data to be published
-        List<Object> payload = new ArrayList<Object>();
-        // Payload values
-        payload.add(memberId);
-        payload.add(serviceName);
-        payload.add(clusterId);
-        payload.add(handleNull(memberContext.getLbClusterId()));
-        payload.add(handleNull(partitionId));
-        payload.add(handleNull(networkId));
-        if (cartridge != null) {
-            payload.add(handleNull(String.valueOf(cartridge.isMultiTenant())));
-        } else {
-            payload.add("");
-        }
-        payload.add(handleNull(memberContext.getPartition().getProvider()));
-        payload.add(handleNull(status));
-
-        if (metadata != null) {
-            payload.add(metadata.getHostname());
-            payload.add(metadata.getHypervisor());
-            payload.add(String.valueOf(metadata.getRam()));
-            payload.add(metadata.getImageId());
-            payload.add(metadata.getLoginPort());
-            payload.add(metadata.getOperatingSystemName());
-            payload.add(metadata.getOperatingSystemVersion());
-            payload.add(metadata.getOperatingSystemArchitecture());
-            payload.add(String.valueOf(metadata.isOperatingSystem64bit()));
-        } else {
-            payload.add("");
-            payload.add("");
-            payload.add("");
-            payload.add("");
-            payload.add(0);
-            payload.add("");
-            payload.add("");
-            payload.add("");
-            payload.add("");
-        }
-
-        
payload.add(handleNull(Arrays.toString(memberContext.getPrivateIPs())));
-        payload.add(handleNull(Arrays.toString(memberContext.getPublicIPs())));
-        
payload.add(handleNull(Arrays.toString(memberContext.getAllocatedIPs())));
-
-        Event event = new Event();
-        event.setPayloadData(payload.toArray());
-        event.setArbitraryDataMap(new HashMap<String, String>());
-
-        try {
-            if (log.isDebugEnabled()) {
-                log.debug(String.format("Publishing BAM event: [stream] %s 
[version] %s", streamDefinition.getName(), streamDefinition.getVersion()));
-            }
-            dataPublisher.publish(streamDefinition.getName(), 
streamDefinition.getVersion(), event);
-        } catch (AgentException e) {
-            if (log.isErrorEnabled()) {
-                log.error(String.format("Could not publish BAM event: [stream] 
%s [version] %s", streamDefinition.getName(), streamDefinition.getVersion()), 
e);
-            }
-        }
-    }
-
-    private static void release() {
-        CloudControllerContext.getInstance().setPublisherRunning(false);
-    }
-
-    private static StreamDefinition initializeStream() throws Exception {
-        streamDefinition = new StreamDefinition(
-                CloudControllerConstants.CLOUD_CONTROLLER_EVENT_STREAM,
-                cloudControllerEventStreamVersion);
-        streamDefinition.setNickName("cloud.controller");
-        streamDefinition.setDescription("Instances booted up by the Cloud 
Controller");
-        // Payload definition
-        List<Attribute> payloadData = new ArrayList<Attribute>();
-        payloadData.add(new Attribute(CloudControllerConstants.MEMBER_ID_COL, 
AttributeType.STRING));
-        payloadData.add(new 
Attribute(CloudControllerConstants.CARTRIDGE_TYPE_COL, AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.CLUSTER_ID_COL, 
AttributeType.STRING));
-        payloadData.add(new 
Attribute(CloudControllerConstants.LB_CLUSTER_ID_COL, AttributeType.STRING));
-        payloadData.add(new 
Attribute(CloudControllerConstants.PARTITION_ID_COL, AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.NETWORK_ID_COL, 
AttributeType.STRING));
-        payloadData.add(new 
Attribute(CloudControllerConstants.IS_MULTI_TENANT_COL, AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.IAAS_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.STATUS_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.HOST_NAME_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.HYPERVISOR_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.RAM_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.IMAGE_ID_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.LOGIN_PORT_COL, 
AttributeType.INT));
-        payloadData.add(new Attribute(CloudControllerConstants.OS_NAME_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.OS_VERSION_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.OS_ARCH_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.OS_BIT_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.PRIV_IP_COL, 
AttributeType.STRING));
-        payloadData.add(new Attribute(CloudControllerConstants.PUB_IP_COL, 
AttributeType.STRING));
-        payloadData.add(new 
Attribute(CloudControllerConstants.ALLOCATE_IP_COL, AttributeType.STRING));
-        streamDefinition.setPayloadData(payloadData);
-        return streamDefinition;
-    }
-
-
-    private static void createDataPublisher() {
-        //creating the agent
-
-        ServerConfiguration serverConfig = 
CarbonUtils.getServerConfiguration();
-        String trustStorePath = 
serverConfig.getFirstProperty("Security.TrustStore.Location");
-        String trustStorePassword = 
serverConfig.getFirstProperty("Security.TrustStore.Password");
-        String bamServerUrl = serverConfig.getFirstProperty("BamServerURL");
-        String adminUsername = 
CloudControllerConfig.getInstance().getDataPubConfig().getBamUsername();
-        String adminPassword = 
CloudControllerConfig.getInstance().getDataPubConfig().getBamPassword();
-
-        System.setProperty("javax.net.ssl.trustStore", trustStorePath);
-        System.setProperty("javax.net.ssl.trustStorePassword", 
trustStorePassword);
-
-
-        try {
-            dataPublisher = new AsyncDataPublisher("tcp://" + bamServerUrl + 
"", adminUsername, adminPassword);
-            
CloudControllerContext.getInstance().setDataPublisher(dataPublisher);
-            initializeStream();
-            dataPublisher.addStreamDefinition(streamDefinition);
-        } catch (Exception e) {
-            String msg = "Unable to create a data publisher to " + 
bamServerUrl +
-                    ". Usage Agent will not function properly. ";
-            log.error(msg, e);
-            throw new CloudControllerException(msg, e);
-        }
-    }
-
-    private static String handleNull(String val) {
-        if (val == null) {
-            return "";
-        }
-        return val;
-    }
+       private static final Log log = 
LogFactory.getLog(BAMUsageDataPublisher.class);
+
+       private static AsyncDataPublisher dataPublisher;
+       private static StreamDefinition streamDefinition;
+       private static final String cloudControllerEventStreamVersion = "1.0.0";
+
+       public static void publish(String memberId, String partitionId, String 
networkId, String clusterId,
+                                  String clusterInstanceId, String 
serviceName, String status, Long timeStamp,
+                                  String autoscalingReason, Long scalingTime, 
InstanceMetadata metadata) {
+               if 
(!CloudControllerConfig.getInstance().isBAMDataPublisherEnabled()) {
+                       return;
+               }
+               log.debug(CloudControllerConstants.DATA_PUB_TASK_NAME + " cycle 
started.");
+
+               if (dataPublisher == null) {
+                       createDataPublisher();
+
+                       //If we cannot create a data publisher we should give up
+                       //this means data will not be published
+                       if (dataPublisher == null) {
+                               log.error("Data Publisher cannot be created or 
found.");
+                               release();
+                               return;
+                       }
+               }
+
+               MemberContext memberContext = 
CloudControllerContext.getInstance().getMemberContextOfMemberId(memberId);
+               String cartridgeType = memberContext.getCartridgeType();
+               Cartridge cartridge = 
CloudControllerContext.getInstance().getCartridge(cartridgeType);
+               String instanceType =
+                               
CloudControllerContext.getInstance().getIaasProviderOfPartition(cartridgeType, 
partitionId)
+                                                     
.getProperty(CloudControllerConstants.INSTANCE_TYPE);
+
+               //Construct the data to be published
+               List<Object> payload = new ArrayList<Object>();
+               // Payload values
+               payload.add(timeStamp);
+               payload.add(memberId);
+               payload.add(serviceName);
+               payload.add(clusterId);
+               payload.add(clusterInstanceId);
+               payload.add(handleNull(memberContext.getLbClusterId()));
+               payload.add(handleNull(partitionId));
+               payload.add(handleNull(networkId));
+               payload.add(handleNull(instanceType));
+               payload.add(handleNull(autoscalingReason));
+               payload.add(handleNull(scalingTime));
+               if (cartridge != null) {
+                       
payload.add(handleNull(String.valueOf(cartridge.isMultiTenant())));
+               } else {
+                       payload.add("");
+               }
+               
payload.add(handleNull(memberContext.getPartition().getProvider()));
+               payload.add(handleNull(status));
+
+               if (metadata != null) {
+                       payload.add(metadata.getHostname());
+                       payload.add(metadata.getHypervisor());
+                       payload.add(String.valueOf(metadata.getRam()));
+                       payload.add(metadata.getImageId());
+                       payload.add(metadata.getLoginPort());
+                       payload.add(metadata.getOperatingSystemName());
+                       payload.add(metadata.getOperatingSystemVersion());
+                       payload.add(metadata.getOperatingSystemArchitecture());
+                       
payload.add(String.valueOf(metadata.isOperatingSystem64bit()));
+               } else {
+                       payload.add("");
+                       payload.add("");
+                       payload.add("");
+                       payload.add("");
+                       payload.add(0);
+                       payload.add("");
+                       payload.add("");
+                       payload.add("");
+                       payload.add("");
+               }
+
+               
payload.add(handleNull(Arrays.toString(memberContext.getPrivateIPs())));
+               
payload.add(handleNull(Arrays.toString(memberContext.getPublicIPs())));
+               
payload.add(handleNull(Arrays.toString(memberContext.getAllocatedIPs())));
+
+               Event event = new Event();
+               event.setPayloadData(payload.toArray());
+               event.setArbitraryDataMap(new HashMap<String, String>());
+
+               try {
+                       if (log.isDebugEnabled()) {
+                               log.debug(String.format("Publishing BAM event: 
[stream] %s [version] %s", streamDefinition.getName(),
+                                                       
streamDefinition.getVersion()));
+                       }
+                       dataPublisher.publish(streamDefinition.getName(), 
streamDefinition.getVersion(), event);
+               } catch (AgentException e) {
+                       if (log.isErrorEnabled()) {
+                               log.error(String.format("Could not publish BAM 
event: [stream] %s [version] %s",
+                                                       
streamDefinition.getName(), streamDefinition.getVersion()), e);
+                       }
+               }
+       }
+
+       private static void release() {
+               CloudControllerContext.getInstance().setPublisherRunning(false);
+       }
+
+       private static StreamDefinition initializeStream() throws Exception {
+               streamDefinition = new 
StreamDefinition(CloudControllerConstants.CLOUD_CONTROLLER_EVENT_STREAM,
+                                                       
cloudControllerEventStreamVersion);
+               streamDefinition.setNickName("cloud.controller");
+               streamDefinition.setDescription("Instances booted up by the 
Cloud Controller");
+               // Payload definition
+               List<Attribute> payloadData = new ArrayList<Attribute>();
+               payloadData.add(new 
Attribute(CloudControllerConstants.TIME_STAMP, AttributeType.LONG));
+               payloadData.add(new 
Attribute(CloudControllerConstants.MEMBER_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.CARTRIDGE_TYPE_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.CLUSTER_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.CLUSTER_INSTANCE_ID_COL, 
AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.LB_CLUSTER_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.PARTITION_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.NETWORK_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.INSTANCE_TYPE, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.SCALING_REASON, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.SCALING_TIME, AttributeType.LONG));
+               payloadData.add(new 
Attribute(CloudControllerConstants.IS_MULTI_TENANT_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.IAAS_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.STATUS_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.HOST_NAME_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.HYPERVISOR_COL, AttributeType.STRING));
+               payloadData.add(new Attribute(CloudControllerConstants.RAM_COL, 
AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.IMAGE_ID_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.LOGIN_PORT_COL, AttributeType.INT));
+               payloadData.add(new 
Attribute(CloudControllerConstants.OS_NAME_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.OS_VERSION_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.OS_ARCH_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.OS_BIT_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.PRIV_IP_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.PUB_IP_COL, AttributeType.STRING));
+               payloadData.add(new 
Attribute(CloudControllerConstants.ALLOCATE_IP_COL, AttributeType.STRING));
+               streamDefinition.setPayloadData(payloadData);
+               return streamDefinition;
+       }
+
+       private static void createDataPublisher() {
+               //creating the agent
+
+               ServerConfiguration serverConfig = 
CarbonUtils.getServerConfiguration();
+               String trustStorePath = 
serverConfig.getFirstProperty("Security.TrustStore.Location");
+               String trustStorePassword = 
serverConfig.getFirstProperty("Security.TrustStore.Password");
+               String bamServerUrl = 
serverConfig.getFirstProperty("BamServerURL");
+               String adminUsername = 
CloudControllerConfig.getInstance().getDataPubConfig().getBamUsername();
+               String adminPassword = 
CloudControllerConfig.getInstance().getDataPubConfig().getBamPassword();
+
+               System.setProperty("javax.net.ssl.trustStore", trustStorePath);
+               System.setProperty("javax.net.ssl.trustStorePassword", 
trustStorePassword);
+
+               try {
+                       dataPublisher = new AsyncDataPublisher("tcp://" + 
bamServerUrl + "", adminUsername, adminPassword);
+                       
CloudControllerContext.getInstance().setDataPublisher(dataPublisher);
+                       initializeStream();
+                       dataPublisher.addStreamDefinition(streamDefinition);
+               } catch (Exception e) {
+                       String msg = "Unable to create a data publisher to " + 
bamServerUrl +
+                                    ". Usage Agent will not function properly. 
";
+                       log.error(msg, e);
+                       throw new CloudControllerException(msg, e);
+               }
+       }
+
+       private static String handleNull(String val) {
+               if (val == null) {
+                       return "";
+               }
+               return val;
+       }
+
+       private static Long handleNull(Long val) {
+               if (val == null) {
+                       return -1L;
+               }
+               return val;
+       }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index 5e6115f..6d07e7f 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -24,281 +24,267 @@ import java.io.File;
 
 public final class CloudControllerConstants {
 
-    /**
-     * cloud-controller XML file's elements
-     */
-    public static final String CLOUD_CONTROLLER_ELEMENT = "cloudController";
-    public static final String SERIALIZATION_DIR_ELEMENT = "serializationDir";
-    public static final String IAAS_PROVIDERS_ELEMENT = "iaasProviders";
-    public static final String IAAS_PROVIDER_ELEMENT = "iaasProvider";
-    public static final String PARTITION_ELEMENT = "partition";
-    public static final String PARTITIONS_ELEMENT = "partitions";
-    public static final String REGION_ELEMENT = "region";
-    public static final String ZONE_ELEMENT = "zone";
-    public static final String DEPLOYMENT_ELEMENT = "deployment";
-    public static final String PORT_MAPPING_ELEMENT = "portMapping";
-    public static final String APP_TYPES_ELEMENT = "appTypes";
-    public static final String TYPE_ATTR = "type";
-    public static final String HOST_ATTR = "host";
-    public static final String BASE_DIR_ATTR = "baseDir";
-    public static final String PROVIDER_ATTR = "provider";
-    public static final String VERSION_ATTR = "version";
-    public static final String MULTI_TENANT_ATTR = "multiTenant";
-    public static final String PORT_ATTR = "port";
-    public static final String PROXY_PORT_ATTR = "proxyPort";
-    public static final String NAME_ATTR = "name";
-    public static final String APP_SPECIFIC_MAPPING_ATTR = 
"appSpecificMapping";
+       /**
+        * cloud-controller XML file's elements
+        */
+       public static final String CLOUD_CONTROLLER_ELEMENT = "cloudController";
+       public static final String SERIALIZATION_DIR_ELEMENT = 
"serializationDir";
+       public static final String IAAS_PROVIDERS_ELEMENT = "iaasProviders";
+       public static final String IAAS_PROVIDER_ELEMENT = "iaasProvider";
+       public static final String PARTITION_ELEMENT = "partition";
+       public static final String PARTITIONS_ELEMENT = "partitions";
+       public static final String REGION_ELEMENT = "region";
+       public static final String ZONE_ELEMENT = "zone";
+       public static final String DEPLOYMENT_ELEMENT = "deployment";
+       public static final String PORT_MAPPING_ELEMENT = "portMapping";
+       public static final String APP_TYPES_ELEMENT = "appTypes";
+       public static final String TYPE_ATTR = "type";
+       public static final String HOST_ATTR = "host";
+       public static final String BASE_DIR_ATTR = "baseDir";
+       public static final String PROVIDER_ATTR = "provider";
+       public static final String VERSION_ATTR = "version";
+       public static final String MULTI_TENANT_ATTR = "multiTenant";
+       public static final String PORT_ATTR = "port";
+       public static final String PROXY_PORT_ATTR = "proxyPort";
+       public static final String NAME_ATTR = "name";
+       public static final String APP_SPECIFIC_MAPPING_ATTR = 
"appSpecificMapping";
 
-    public static final String CARTRIDGES_ELEMENT = "cartridges";
-    public static final String CARTRIDGE_ELEMENT = "cartridge";
+       public static final String CARTRIDGES_ELEMENT = "cartridges";
+       public static final String CARTRIDGE_ELEMENT = "cartridge";
 
-    public static final String DISPLAY_NAME_ELEMENT = "displayName";
-    public static final String DESCRIPTION_ELEMENT = "description";
-    public static final String PROPERTY_ELEMENT = "property";
-    public static final String PROPERTY_NAME_ATTR = "name";
-    public static final String PROPERTY_VALUE_ATTR = "value";
-    public static final String IMAGE_ID_ELEMENT = "imageId";
-    public static final String SCALE_DOWN_ORDER_ELEMENT = "scaleDownOrder";
-    public static final String SCALE_UP_ORDER_ELEMENT = "scaleUpOrder";
-    public static final String CLASS_NAME_ELEMENT = "className";
-    public static final String PROVIDER_ELEMENT = "provider";
-    public static final String IDENTITY_ELEMENT = "identity";
-    public static final String TYPE_ELEMENT = "type";
-    public static final String SCOPE_ELEMENT = "scope";
-    public static final String ID_ELEMENT = "id";
-    public static final String CREDENTIAL_ELEMENT = "credential";
-    public static final String DEFAULT_SERVICE_ELEMENT = "default";
-    public static final String SERVICE_ELEMENT = "service";
-    public static final String SERVICES_ELEMENT = "services";
-    public static final String DIRECTORY_ELEMENT = "dir";
-    public static final String HTTP_ELEMENT = "http";
-    public static final String HTTPS_ELEMENT = "https";
-    public static final String APP_TYPE_ELEMENT = "appType";
-    public static final String SERVICE_DOMAIN_ATTR = "domain";
-    public static final String SERVICE_SUB_DOMAIN_ATTR = "subDomain";
-    public static final String SERVICE_TENANT_RANGE_ATTR = "tenantRange";
-    public static final String POLICY_NAME = "policyName";
-    public static final String PAYLOAD_ELEMENT = "payload";
-    public static final String DATA_PUBLISHER_ELEMENT = "dataPublisher";
-    public static final String TOPOLOGY_SYNC_ELEMENT = "topologySync";
-    public static final String ENABLE_ATTR = "enable";
-    public static final String BAM_SERVER_ELEMENT = "bamServer";
-    public static final String CRON_ELEMENT = "cron";
-    public static final String BAM_SERVER_ADMIN_USERNAME_ELEMENT = 
"adminUserName";
-    public static final String BAM_SERVER_ADMIN_PASSWORD_ELEMENT = 
"adminPassword";
-    public static final String CASSANDRA_INFO_ELEMENT = "cassandraInfo";
-    public static final String HOST_ELEMENT = "host";
-    public static final String CONNECTION_URL_ELEMENT = "connectionUrl";
-    public static final String HOST_PORT_ELEMENT = "port";
-    public static final String USER_NAME_ELEMENT = "userName";
-    public static final String PASSWORD_ELEMENT = "password";
-    public static final String CLOUD_CONTROLLER_EVENT_STREAM = 
"org.apache.stratos.cloud.controller";
-    public static final String CLOUD_CONTROLLER_COL_FAMILY = 
CLOUD_CONTROLLER_EVENT_STREAM
-            .replaceAll("[/.]", "_");
+       public static final String DISPLAY_NAME_ELEMENT = "displayName";
+       public static final String DESCRIPTION_ELEMENT = "description";
+       public static final String PROPERTY_ELEMENT = "property";
+       public static final String PROPERTY_NAME_ATTR = "name";
+       public static final String PROPERTY_VALUE_ATTR = "value";
+       public static final String IMAGE_ID_ELEMENT = "imageId";
+       public static final String SCALE_DOWN_ORDER_ELEMENT = "scaleDownOrder";
+       public static final String SCALE_UP_ORDER_ELEMENT = "scaleUpOrder";
+       public static final String CLASS_NAME_ELEMENT = "className";
+       public static final String PROVIDER_ELEMENT = "provider";
+       public static final String IDENTITY_ELEMENT = "identity";
+       public static final String TYPE_ELEMENT = "type";
+       public static final String SCOPE_ELEMENT = "scope";
+       public static final String ID_ELEMENT = "id";
+       public static final String CREDENTIAL_ELEMENT = "credential";
+       public static final String DEFAULT_SERVICE_ELEMENT = "default";
+       public static final String SERVICE_ELEMENT = "service";
+       public static final String SERVICES_ELEMENT = "services";
+       public static final String DIRECTORY_ELEMENT = "dir";
+       public static final String HTTP_ELEMENT = "http";
+       public static final String HTTPS_ELEMENT = "https";
+       public static final String APP_TYPE_ELEMENT = "appType";
+       public static final String SERVICE_DOMAIN_ATTR = "domain";
+       public static final String SERVICE_SUB_DOMAIN_ATTR = "subDomain";
+       public static final String SERVICE_TENANT_RANGE_ATTR = "tenantRange";
+       public static final String POLICY_NAME = "policyName";
+       public static final String PAYLOAD_ELEMENT = "payload";
+       public static final String DATA_PUBLISHER_ELEMENT = "dataPublisher";
+       public static final String TOPOLOGY_SYNC_ELEMENT = "topologySync";
+       public static final String ENABLE_ATTR = "enable";
+       public static final String BAM_SERVER_ELEMENT = "bamServer";
+       public static final String CRON_ELEMENT = "cron";
+       public static final String BAM_SERVER_ADMIN_USERNAME_ELEMENT = 
"adminUserName";
+       public static final String BAM_SERVER_ADMIN_PASSWORD_ELEMENT = 
"adminPassword";
+       public static final String CASSANDRA_INFO_ELEMENT = "cassandraInfo";
+       public static final String HOST_ELEMENT = "host";
+       public static final String CONNECTION_URL_ELEMENT = "connectionUrl";
+       public static final String HOST_PORT_ELEMENT = "port";
+       public static final String USER_NAME_ELEMENT = "userName";
+       public static final String PASSWORD_ELEMENT = "password";
+       public static final String CLOUD_CONTROLLER_EVENT_STREAM = 
"org.apache.stratos.cloud.controller";
+       public static final String CLOUD_CONTROLLER_COL_FAMILY = 
CLOUD_CONTROLLER_EVENT_STREAM.replaceAll("[/.]", "_");
 
-    /**
-     * column names
-     */
-    public static final String PAYLOAD_PREFIX = "payload_";
-    public static final String MEMBER_ID_COL = "memberId";
-    public static final String CARTRIDGE_TYPE_COL = "cartridgeType";
-    public static final String CLUSTER_ID_COL = "clusterId";
-    public static final String PARTITION_ID_COL = "partitionId";
-    public static final String NETWORK_ID_COL = "networkId";
-    public static final String ALIAS_COL = "alias";
-    public static final String TENANT_RANGE_COL = "tenantRange";
-    public static final String IS_MULTI_TENANT_COL = "isMultiTenant";
-    public static final String IAAS_COL = "iaas";
-    public static final String STATUS_COL = "status";
-    public static final String HOST_NAME_COL = "hostName";
-    public static final String HYPERVISOR_COL = "hypervisor";
-    public static final String RAM_COL = "ram";
-    public static final String IMAGE_ID_COL = "imageId";
-    public static final String LOGIN_PORT_COL = "loginPort";
-    public static final String OS_NAME_COL = "osName";
-    public static final String OS_VERSION_COL = "osVersion";
-    public static final String OS_ARCH_COL = "osArch";
-    public static final String OS_BIT_COL = "is64bitOS";
-    public static final String PRIV_IP_COL = "privateIPAddresses";
-    public static final String PUB_IP_COL = "publicIPAddresses";
-    public static final String ALLOCATE_IP_COL = "allocateIPAddresses";
+       /**
+        * column names
+        */
+       public static final String PAYLOAD_PREFIX = "payload_";
+       public static final String MEMBER_ID_COL = "memberId";
+       public static final String CARTRIDGE_TYPE_COL = "cartridgeType";
+       public static final String CLUSTER_ID_COL = "clusterId";
+       public static final String CLUSTER_INSTANCE_ID_COL = 
"clusterInstanceId";
+       public static final String PARTITION_ID_COL = "partitionId";
+       public static final String NETWORK_ID_COL = "networkId";
+       public static final String ALIAS_COL = "alias";
+       public static final String TENANT_RANGE_COL = "tenantRange";
+       public static final String IS_MULTI_TENANT_COL = "isMultiTenant";
+       public static final String IAAS_COL = "iaas";
+       public static final String STATUS_COL = "status";
+       public static final String HOST_NAME_COL = "hostName";
+       public static final String HYPERVISOR_COL = "hypervisor";
+       public static final String RAM_COL = "ram";
+       public static final String IMAGE_ID_COL = "imageId";
+       public static final String LOGIN_PORT_COL = "loginPort";
+       public static final String OS_NAME_COL = "osName";
+       public static final String OS_VERSION_COL = "osVersion";
+       public static final String OS_ARCH_COL = "osArch";
+       public static final String OS_BIT_COL = "is64bitOS";
+       public static final String PRIV_IP_COL = "privateIPAddresses";
+       public static final String PUB_IP_COL = "publicIPAddresses";
+       public static final String ALLOCATE_IP_COL = "allocateIPAddresses";
+       public static final String TIME_STAMP = "timeStamp";
+       public static final String SCALING_REASON = "scalingReason";
+       public static final String SCALING_TIME = "scalingTime";
 
-    /**
-     * Properties
-     */
-    public static final String REGION_PROPERTY = "region";
-    public static final String TOPICS_PROPERTY = "topics";
-    public static final String PUBLIC_IP_PROPERTY = "public_ip";
-    public static final String TENANT_ID_PROPERTY = "tenant_id";
-    public static final String ALIAS_PROPERTY = "alias";
-    public static final String AUTO_ASSIGN_IP_PROPERTY = "autoAssignIp";
-    public static final String JCLOUDS_ENDPOINT = "jclouds.endpoint";
-    public static final String CRON_PROPERTY = "cron";
-    public static final String AMQP_CONNECTION_URL_PROPERTY = 
"amqpConnectionUrl";
-    public static final String AMQP_INITIAL_CONTEXT_FACTORY_PROPERTY = 
"amqpInitialContextFactory";
-    public static final String AMQP_TOPIC_CONNECTION_FACTORY_PROPERTY = 
"amqpTopicConnectionFactory";
-    public static final String INSTANCE_TOPIC = "instance/*";
-    // pre define a floating ip
-    public static final String FLOATING_IP_PROPERTY = "floatingIp";
-    public static final String DEFAULT_FLOATING_IP_POOL = 
"defaultFloatingIpPool";
-    public static final String OPENSTACK_NETWORKING_PROVIDER = 
"openstack.networking.provider";
-    public static final String OPENSTACK_NEUTRON_NETWORKING = "neutron";
+       /**
+        * Properties
+        */
+       public static final String REGION_PROPERTY = "region";
+       public static final String TOPICS_PROPERTY = "topics";
+       public static final String PUBLIC_IP_PROPERTY = "public_ip";
+       public static final String TENANT_ID_PROPERTY = "tenant_id";
+       public static final String ALIAS_PROPERTY = "alias";
+       public static final String AUTO_ASSIGN_IP_PROPERTY = "autoAssignIp";
+       public static final String JCLOUDS_ENDPOINT = "jclouds.endpoint";
+       public static final String CRON_PROPERTY = "cron";
+       public static final String AMQP_CONNECTION_URL_PROPERTY = 
"amqpConnectionUrl";
+       public static final String AMQP_INITIAL_CONTEXT_FACTORY_PROPERTY = 
"amqpInitialContextFactory";
+       public static final String AMQP_TOPIC_CONNECTION_FACTORY_PROPERTY = 
"amqpTopicConnectionFactory";
+       public static final String INSTANCE_TOPIC = "instance/*";
+       // pre define a floating ip
+       public static final String FLOATING_IP_PROPERTY = "floatingIp";
+       public static final String DEFAULT_FLOATING_IP_POOL = 
"defaultFloatingIpPool";
+       public static final String OPENSTACK_NETWORKING_PROVIDER = 
"openstack.networking.provider";
+       public static final String OPENSTACK_NEUTRON_NETWORKING = "neutron";
 
-    /**
-     * XPath expressions
-     */
-    public static final String IAAS_PROVIDER_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/" + IAAS_PROVIDERS_ELEMENT + "/"
-            + IAAS_PROVIDER_ELEMENT;
-    public static final String PARTITION_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT
-            + "/" + PARTITIONS_ELEMENT + "/" + PARTITION_ELEMENT;
-    public static final String REGION_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT
-            + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/"
-            + REGION_ELEMENT;
-    public static final String ZONE_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT
-            + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/"
-            + REGION_ELEMENT + "/" + ZONE_ELEMENT;
-    public static final String HOST_XPATH = "/" + CLOUD_CONTROLLER_ELEMENT
-            + "/" + IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/"
-            + REGION_ELEMENT + "/" + ZONE_ELEMENT + "/" + HOST_ELEMENT;
-    public static final String PROPERTY_ELEMENT_XPATH = "/" + PROPERTY_ELEMENT;
-    public static final String IMAGE_ID_ELEMENT_XPATH = "/" + IMAGE_ID_ELEMENT;
-    public static final String SCALE_UP_ORDER_ELEMENT_XPATH = "/"
-            + SCALE_UP_ORDER_ELEMENT;
-    public static final String SCALE_DOWN_ORDER_ELEMENT_XPATH = "/"
-            + SCALE_DOWN_ORDER_ELEMENT;
-    public static final String PROVIDER_ELEMENT_XPATH = "/" + PROPERTY_ELEMENT;
-    public static final String IDENTITY_ELEMENT_XPATH = "/" + IDENTITY_ELEMENT;
-    public static final String CREDENTIAL_ELEMENT_XPATH = "/"
-            + CREDENTIAL_ELEMENT;
-    public static final String SERVICES_ELEMENT_XPATH = "/" + SERVICES_ELEMENT
-            + "/" + SERVICE_ELEMENT;
-    public static final String SERVICE_ELEMENT_XPATH = "/" + SERVICE_ELEMENT;
-    public static final String CARTRIDGE_ELEMENT_XPATH = "/"
-            + CARTRIDGE_ELEMENT;
-    public static final String PAYLOAD_ELEMENT_XPATH = "/" + PAYLOAD_ELEMENT;
-    public static final String HOST_ELEMENT_XPATH = "/" + HOST_ELEMENT;
-    public static final String CARTRIDGES_ELEMENT_XPATH = "/"
-            + CARTRIDGES_ELEMENT + "/" + CARTRIDGE_ELEMENT;
-    public static final String IAAS_PROVIDER_ELEMENT_XPATH = "/"
-            + IAAS_PROVIDER_ELEMENT;
-    public static final String DEPLOYMENT_ELEMENT_XPATH = "/"
-            + DEPLOYMENT_ELEMENT;
-    public static final String PORT_MAPPING_ELEMENT_XPATH = "/"
-            + PORT_MAPPING_ELEMENT;
-    public static final String APP_TYPES_ELEMENT_XPATH = "/"
-            + APP_TYPES_ELEMENT;
+       /**
+        * XPath expressions
+        */
+       public static final String IAAS_PROVIDER_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT;
+       public static final String PARTITION_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
PARTITIONS_ELEMENT + "/" + PARTITION_ELEMENT;
+       public static final String REGION_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" +
+                       REGION_ELEMENT;
+       public static final String ZONE_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" +
+                       REGION_ELEMENT + "/" + ZONE_ELEMENT;
+       public static final String HOST_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
IAAS_PROVIDERS_ELEMENT + "/" + IAAS_PROVIDER_ELEMENT + "/" +
+                       REGION_ELEMENT + "/" + ZONE_ELEMENT + "/" + 
HOST_ELEMENT;
+       public static final String PROPERTY_ELEMENT_XPATH = "/" + 
PROPERTY_ELEMENT;
+       public static final String IMAGE_ID_ELEMENT_XPATH = "/" + 
IMAGE_ID_ELEMENT;
+       public static final String SCALE_UP_ORDER_ELEMENT_XPATH = "/" + 
SCALE_UP_ORDER_ELEMENT;
+       public static final String SCALE_DOWN_ORDER_ELEMENT_XPATH = "/" + 
SCALE_DOWN_ORDER_ELEMENT;
+       public static final String PROVIDER_ELEMENT_XPATH = "/" + 
PROPERTY_ELEMENT;
+       public static final String IDENTITY_ELEMENT_XPATH = "/" + 
IDENTITY_ELEMENT;
+       public static final String CREDENTIAL_ELEMENT_XPATH = "/" + 
CREDENTIAL_ELEMENT;
+       public static final String SERVICES_ELEMENT_XPATH = "/" + 
SERVICES_ELEMENT + "/" + SERVICE_ELEMENT;
+       public static final String SERVICE_ELEMENT_XPATH = "/" + 
SERVICE_ELEMENT;
+       public static final String CARTRIDGE_ELEMENT_XPATH = "/" + 
CARTRIDGE_ELEMENT;
+       public static final String PAYLOAD_ELEMENT_XPATH = "/" + 
PAYLOAD_ELEMENT;
+       public static final String HOST_ELEMENT_XPATH = "/" + HOST_ELEMENT;
+       public static final String CARTRIDGES_ELEMENT_XPATH = "/" + 
CARTRIDGES_ELEMENT + "/" + CARTRIDGE_ELEMENT;
+       public static final String IAAS_PROVIDER_ELEMENT_XPATH = "/" + 
IAAS_PROVIDER_ELEMENT;
+       public static final String DEPLOYMENT_ELEMENT_XPATH = "/" + 
DEPLOYMENT_ELEMENT;
+       public static final String PORT_MAPPING_ELEMENT_XPATH = "/" + 
PORT_MAPPING_ELEMENT;
+       public static final String APP_TYPES_ELEMENT_XPATH = "/" + 
APP_TYPES_ELEMENT;
 
-    public static final String DATA_PUBLISHER_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/" + DATA_PUBLISHER_ELEMENT;
-    public static final String TOPOLOGY_SYNC_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/" + TOPOLOGY_SYNC_ELEMENT;
-    public static final String DATA_PUBLISHER_CRON_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/" + CRON_ELEMENT;
-    public static final String BAM_SERVER_ADMIN_USERNAME_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/"
-            + BAM_SERVER_ADMIN_USERNAME_ELEMENT;
-    public static final String BAM_SERVER_ADMIN_PASSWORD_XPATH = "/"
-            + CLOUD_CONTROLLER_ELEMENT + "/"
-            + BAM_SERVER_ADMIN_PASSWORD_ELEMENT;
-    // public static final String CASSANDRA_HOST_ADDRESS_XPATH =
-    // "/"+CLOUD_CONTROLLER_ELEMENT+
-    // "/"+CASSANDRA_HOST_ADDRESS;
-    // public static final String CASSANDRA_HOST_PORT_XPATH =
-    // "/"+CLOUD_CONTROLLER_ELEMENT+
-    // "/"+CASSANDRA_HOST_PORT;
+       public static final String DATA_PUBLISHER_XPATH = "/" + 
CLOUD_CONTROLLER_ELEMENT + "/" + DATA_PUBLISHER_ELEMENT;
+       public static final String TOPOLOGY_SYNC_XPATH = "/" + 
CLOUD_CONTROLLER_ELEMENT + "/" + TOPOLOGY_SYNC_ELEMENT;
+       public static final String DATA_PUBLISHER_CRON_XPATH = "/" + 
CLOUD_CONTROLLER_ELEMENT + "/" + CRON_ELEMENT;
+       public static final String BAM_SERVER_ADMIN_USERNAME_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
BAM_SERVER_ADMIN_USERNAME_ELEMENT;
+       public static final String BAM_SERVER_ADMIN_PASSWORD_XPATH =
+                       "/" + CLOUD_CONTROLLER_ELEMENT + "/" + 
BAM_SERVER_ADMIN_PASSWORD_ELEMENT;
+       // public static final String CASSANDRA_HOST_ADDRESS_XPATH =
+       // "/"+CLOUD_CONTROLLER_ELEMENT+
+       // "/"+CASSANDRA_HOST_ADDRESS;
+       // public static final String CASSANDRA_HOST_PORT_XPATH =
+       // "/"+CLOUD_CONTROLLER_ELEMENT+
+       // "/"+CASSANDRA_HOST_PORT;
 
-    /**
-     * Secret Manager related aliases.
-     */
-    public static final String ALIAS_ATTRIBUTE = "secretAlias";
-    public static final String ALIAS_ATTRIBUTE_PREFIX = "svns";
-    public static final String ALIAS_NAMESPACE = 
"http://org.wso2.securevault/configuration";;
+       /**
+        * Secret Manager related aliases.
+        */
+       public static final String ALIAS_ATTRIBUTE = "secretAlias";
+       public static final String ALIAS_ATTRIBUTE_PREFIX = "svns";
+       public static final String ALIAS_NAMESPACE = 
"http://org.wso2.securevault/configuration";;
 
-    /**
-     * Payload related constants
-     */
-    public static final String PAYLOAD_NAME = "payload";
-    public static final String ENTRY_SEPARATOR = ",";
+       /**
+        * Payload related constants
+        */
+       public static final String PAYLOAD_NAME = "payload";
+       public static final String ENTRY_SEPARATOR = ",";
 
-    /**
-     * Publisher task related constants
-     */
-    public static final String DATA_PUB_TASK_TYPE = 
"CLOUD_CONTROLLER_DATA_PUBLISHER_TASK";
-    // default is : data publisher will run in first second of every minute
-    public static final String PUB_CRON_EXPRESSION = "1 * * * * ? *";
-    public static final String DATA_PUB_TASK_NAME = 
"CartridgeInstanceDataPublisher";
-    public static final String DEFAULT_BAM_SERVER_USER_NAME = "admin";
-    public static final String DEFAULT_BAM_SERVER_PASSWORD = "admin";
-    public static final String DEFAULT_CASSANDRA_URL = "localhost:9160";
-    public static final String DEFAULT_CASSANDRA_USER = "admin";
-    public static final String DEFAULT_CASSANDRA_PASSWORD = "admin";
-    public static final String DEFAULT_CASSANDRA_CLUSTER_NAME = "Test Cluster";
-    public static final String DEFAULT_CASSANDRA_KEY_SPACE = "EVENT_KS";
+       /**
+        * Publisher task related constants
+        */
+       public static final String DATA_PUB_TASK_TYPE = 
"CLOUD_CONTROLLER_DATA_PUBLISHER_TASK";
+       // default is : data publisher will run in first second of every minute
+       public static final String PUB_CRON_EXPRESSION = "1 * * * * ? *";
+       public static final String DATA_PUB_TASK_NAME = 
"CartridgeInstanceDataPublisher";
+       public static final String DEFAULT_BAM_SERVER_USER_NAME = "admin";
+       public static final String DEFAULT_BAM_SERVER_PASSWORD = "admin";
+       public static final String DEFAULT_CASSANDRA_URL = "localhost:9160";
+       public static final String DEFAULT_CASSANDRA_USER = "admin";
+       public static final String DEFAULT_CASSANDRA_PASSWORD = "admin";
+       public static final String DEFAULT_CASSANDRA_CLUSTER_NAME = "Test 
Cluster";
+       public static final String DEFAULT_CASSANDRA_KEY_SPACE = "EVENT_KS";
 
-    /**
-     * Directories
-     */
-    public static final String SERVICES_DIR = CarbonUtils.getCarbonRepository()
-            + File.separator + "services" + File.separator;
+       /**
+        * Directories
+        */
+       public static final String SERVICES_DIR =
+                       CarbonUtils.getCarbonRepository() + File.separator + 
"services" + File.separator;
 
-    /**
-     * Topology sync related constants
-     */
-    public static final String TOPOLOGY_FILE_PATH = CarbonUtils
-            .getCarbonConfigDirPath()
-            + File.separator
-            + "service-topology.conf";
-    public static final String TOPOLOGY_SYNC_CRON = "1 * * * * ? *";
-    public static final String TOPOLOGY_SYNC_TASK_NAME = "TOPOLOGY_SYNC_TASK";
-    public static final String TOPOLOGY_SYNC_TASK_TYPE = 
"TOPOLOGY_SYNC_TASK_TYPE";
-    public static final String AMQP_CONNECTION_URL = 
"amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'";
-    public static final String AMQP_INITIAL_CONTEXT_FACTORY = 
"org.wso2.andes.jndi.PropertiesFileInitialContextFactory";
-    public static final String AMQP_TOPIC_CONNECTION_FACTORY = 
"qpidConnectionfactory";
+       /**
+        * Topology sync related constants
+        */
+       public static final String TOPOLOGY_FILE_PATH =
+                       CarbonUtils.getCarbonConfigDirPath() + File.separator + 
"service-topology.conf";
+       public static final String TOPOLOGY_SYNC_CRON = "1 * * * * ? *";
+       public static final String TOPOLOGY_SYNC_TASK_NAME = 
"TOPOLOGY_SYNC_TASK";
+       public static final String TOPOLOGY_SYNC_TASK_TYPE = 
"TOPOLOGY_SYNC_TASK_TYPE";
+       public static final String AMQP_CONNECTION_URL =
+                       
"amqp://admin:admin@clientID/carbon?brokerlist='tcp://localhost:5672'";
+       public static final String AMQP_INITIAL_CONTEXT_FACTORY = 
"org.wso2.andes.jndi.PropertiesFileInitialContextFactory";
+       public static final String AMQP_TOPIC_CONNECTION_FACTORY = 
"qpidConnectionfactory";
 
-    /**
-     * Persistence
-     */
-    public static final String DATA_RESOURCE = "/cloud.controller/data";
-    public static final String TOPOLOGY_RESOURCE = 
"/cloud.controller/topology";
-    public static final String AVAILABILITY_ZONE = "availabilityZone";
-    public static final String KEY_PAIR = "keyPair";
-    public static final String HOST = "host";
-    public static final String SECURITY_GROUP_IDS = "securityGroupIds";
-    public static final String SECURITY_GROUPS = "securityGroups";
-    public static final String SUBNET_ID = "subnetId";
-    public static final String TAGS = "tags";
-    public static final String TAGS_AS_KEY_VALUE_PAIRS_PREFIX = "tag:";
-    public static final String AUTO_ASSIGN_IP = "autoAssignIp";
-    public static final String BLOCK_UNTIL_RUNNING = "blockUntilRunning";
-    public static final String INSTANCE_TYPE = "instanceType";
-    public static final String ASSOCIATE_PUBLIC_IP_ADDRESS = 
"associatePublicIpAddress";
-    public static final String LB_CLUSTER_ID_COL = "lbclusterId";
-    public static final String NETWORK_INTERFACES = "networkInterfaces";
-    public static final String NETWORK_FIXED_IP = "fixedIp";
-    public static final String NETWORK_PORT = "portUuid";
-    public static final String NETWORK_UUID = "networkUuid";
+       /**
+        * Persistence
+        */
+       public static final String DATA_RESOURCE = "/cloud.controller/data";
+       public static final String TOPOLOGY_RESOURCE = 
"/cloud.controller/topology";
+       public static final String AVAILABILITY_ZONE = "availabilityZone";
+       public static final String KEY_PAIR = "keyPair";
+       public static final String HOST = "host";
+       public static final String SECURITY_GROUP_IDS = "securityGroupIds";
+       public static final String SECURITY_GROUPS = "securityGroups";
+       public static final String SUBNET_ID = "subnetId";
+       public static final String TAGS = "tags";
+       public static final String TAGS_AS_KEY_VALUE_PAIRS_PREFIX = "tag:";
+       public static final String AUTO_ASSIGN_IP = "autoAssignIp";
+       public static final String BLOCK_UNTIL_RUNNING = "blockUntilRunning";
+       public static final String INSTANCE_TYPE = "instanceType";
+       public static final String ASSOCIATE_PUBLIC_IP_ADDRESS = 
"associatePublicIpAddress";
+       public static final String LB_CLUSTER_ID_COL = "lbclusterId";
+       public static final String NETWORK_INTERFACES = "networkInterfaces";
+       public static final String NETWORK_FIXED_IP = "fixedIp";
+       public static final String NETWORK_PORT = "portUuid";
+       public static final String NETWORK_UUID = "networkUuid";
 
-    // CloudStack specific
-    public static final String USER_NAME = "username";
-    public static final String DOMAIN_ID = "domainId";
-    public static final String DISK_OFFERING = "diskOffering";
-    public static final String NETWORK_IDS = "networkIds";
+       // CloudStack specific
+       public static final String USER_NAME = "username";
+       public static final String DOMAIN_ID = "domainId";
+       public static final String DISK_OFFERING = "diskOffering";
+       public static final String NETWORK_IDS = "networkIds";
 
-    public static final String IS_LOAD_BALANCER = "load.balancer";
+       public static final String IS_LOAD_BALANCER = "load.balancer";
 
-    /**
-     * PortRange min max
-     */
-    public static final int PORT_RANGE_MAX = 65535;
-    public static final int PORT_RANGE_MIN = 1;
+       /**
+        * PortRange min max
+        */
+       public static final int PORT_RANGE_MAX = 65535;
+       public static final int PORT_RANGE_MIN = 1;
 
-    public static final String KUBERNETES_PARTITION_PROVIDER = "kubernetes";
+       public static final String KUBERNETES_PARTITION_PROVIDER = "kubernetes";
 
-    /**
-     * Load balancing ip type enumeration values
-     */
-    public static final String LOADBALANCING_IP_TYPE_PRIVATE = "private";
-    public static final String LOADBALANCING_IP_TYPE_PUBLIC = "public";
+       /**
+        * Load balancing ip type enumeration values
+        */
+       public static final String LOADBALANCING_IP_TYPE_PRIVATE = "private";
+       public static final String LOADBALANCING_IP_TYPE_PUBLIC = "public";
 
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 1275f5c..9cf2007 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -18,197 +18,192 @@
  */
 package org.apache.stratos.common.constants;
 
-
 public class StratosConstants {
 
-    public static final String CLOUD_SERVICE_IS_ACTIVE_PROP_KEY = "active";
-
-    public static final String CLOUD_SERVICE_INFO_STORE_PATH =
-            
"/repository/components/org.apache.stratos/cloud-manager/cloud-services";
-
-    public static final String TENANT_USER_VALIDATION_STORE_PATH =
-            "/repository/components/org.wso2.carbon.validations";
-    public static final String ADMIN_EMAIL_VERIFICATION_FLAG_PATH =
-            "/repository/components/org.wso2.carbon.email-confirmation-flag";
-    public static final String TENANT_DOMAIN_VERIFICATION_FLAG_PATH =
-            "/repository/components/org.wso2.carbon.domain-confirmation-flag";
-
-    public static final String DOMAIN_VALIDATOR_INFO_PATH =
-            "/repository/components/org.wso2.carbon.domain-validator-info";
-
-    public static final String TENANT_CREATION_THEME_PAGE_TOKEN =
-            "/repository/components/org.wso2.carbon.theme-page-token";
-
-    public static final String TENANT_PACKAGE_INFO_PATH =
-            "/repository/components/org.wso2.carbon.package-info";
-
-    public static final String ALL_THEMES_PATH =
-            "/repository/components/org.wso2.carbon.all-themes";
-
-    public static final String THROTTLING_RULES_PATH =
-            "/repository/components/org.wso2.carbon.throttling-rules";
-
-    public static final String ORIGINATED_SERVICE_PATH =
-            "/repository/components/org.wso2.carbon.originated-service";
-
-    public static final String PATH_SEPARATOR = "/";
-
-    public static final String CLOUD_SERVICE_ICONS_STORE_PATH =
-            "/repository/components/org.wso2.carbon.cloud-manager/" +
-                    "cloud-services-icons";
-
-    public static final String VALIDATION_KEY_RESOURCE_NAME = "validation-key";
-    public static final String INCOMING_PATH_DIR = "incoming";
-    public static final String OUTGOING_PATH_DIR = "outgoing";
-    public static final String MULTITENANCY_SCHEDULED_TASK_ID = 
"multitenancyScheduledTask";
-    public static final String MULTITENANCY_VIEWING_TASK_ID = 
"multitenancyViewingTask";
-
-    public static final String INVALID_TENANT = "invalidTenant";
-    public static final String INACTIVE_TENANT = "inactiveTenant";
-    public static final String ACTIVE_TENANT = "activeTenant";
-    public static final String IS_EMAIL_VALIDATED = "isEmailValidated";
-    public static final String IS_CREDENTIALS_ALREADY_RESET = 
"isCredentialsReset";
-    public static final String TENANT_ADMIN = "tenantAdminUsername";
-
-    public static final String CLOUD_MANAGER_SERVICE = "Apache Stratos 
Controller";
-    public static final String CLOUD_IDENTITY_SERVICE = "WSO2 Stratos 
Identity";
-    public static final String CLOUD_GOVERNANCE_SERVICE = "WSO2 Stratos 
Governance";
-    public static final String CLOUD_ESB_SERVICE = "WSO2 Stratos Enterprise 
Service Bus";
-
-    // keystore mgt related Constants
-    public static final String TENANT_KS = "/repository/security/key-stores/";
-    public static final String TENANT_PUB_KEY = "/repository/security/pub-key";
-    public static final String PROP_TENANT_KS_TYPE = "key-store-type";
-    public static final String PROP_TENANT_KS_PASSWD = "key-store-password";
-    public static final String PROP_TENANT_KS_PRIV_KEY_PASSWD = 
"priv-key-password";
-    public static final String PROP_TENANT_KS_ALIAS = "alias";
-
-    // constants related to redirection
-
-    public static final String UNVERIFIED_ACCOUNT_DOMAIN_SUFFIX = 
"-unverified";
-    public static final String TENANT_SPECIFIC_URL_RESOLVED = 
"tenant-sepcific-url-resolved";
-    public static final String SUFFIXED_UNVERIFIED_SESSION_FLAG = 
"temp-suffixed-unverified";
-
-    // metering constants
-    public static final String THROTTLING_ALL_ACTION = "all_actions";
-    public static final String THROTTLING_IN_DATA_ACTION = "in_data_action"; 
//this covers registry capacity + registry bandwidth
-    public static final String THROTTLING_OUT_DATA_ACTION = "out_data_action"; 
//this covers registry bandwidth
-    public static final String THROTTLING_ADD_USER_ACTION = "add_user_action";
-    public static final String THROTTLING_SERVICE_IN_BANDWIDTH_ACTION = 
"service_in_bandwith_action";
-    public static final String THROTTLING_SERVICE_OUT_BANDWIDTH_ACTION = 
"service_out_bandwith_action";
-    public static final String THROTTLING_WEBAPP_IN_BANDWIDTH_ACTION = 
"webapp_in_bandwith_action";
-    public static final String THROTTLING_WEBAPP_OUT_BANDWIDTH_ACTION = 
"webapp_out_bandwith_action";
-    public static final String THROTTLING_SERVICE_REQUEST_ACTION = 
"service_request_action";
-    public static final String THROTTLING_SERVICE_RESPONSE_ACTION = 
"service_response_action";
-
-    // the session attribute to keep track whether the registry action 
validated
-    // and the usage persisted
-    public static final String REGISTRY_ACTION_VALIDATED_SESSION_ATTR = 
"registryActionValidated";
-    public static final String REGISTRY_USAGE_PERSISTED_SESSION_ATTR = 
"usagePersited";
-
-    // Metering servlet attributes
-    public static final String SERVICE_NAME_SERVLET_ATTR = 
"meteringServiceName";
-    public static final String TENANT_ID_SERVLET_ATTR = "tenantId";
-    public static final String ADMIN_SERVICE_SERVLET_ATTR = "adminService";
-
-    // * as a Service impl related constants
-    public static final String ORIGINATED_SERVICE = "originatedService";
-
-    // Configuration file name
-    public static final String STRATOS_CONF_FILE = "stratos.xml";
-    //public static final String STRATOS_CONF_LOC = "repository/conf/";
-    //public static final String STRATOS_CONF_FILE_WITH_PATH = 
STRATOS_CONF_LOC + STRATOS_CONF_FILE;
-
-    // EULA location
-    public static final String STRATOS_EULA = "eula.xml";
-
-    // EULA default text.
-    public static final String STRATOS_EULA_DEFAULT_TEXT =
-            "Please refer to: " + StratosConstants.STRATOS_TERMS_OF_USAGE +
-                    " for terms and usage and " + 
StratosConstants.STRATOS_PRIVACY_POLICY +
-                    " for privacy policy of WSO2 Stratos.";
-
-    // Web location of Terms of Usage and privacy policy
-    public static final String STRATOS_TERMS_OF_USAGE =
-            "http://wso2.com/cloud/services/terms-of-use/";;
-    public static final String STRATOS_PRIVACY_POLICY =
-            "http://wso2.com/cloud/services/privacy-policy/";;
-    public static final String MULTITENANCY_FREE_PLAN = "Demo";
-    public static final String MULTITENANCY_SMALL_PLAN = "SMB";
-    public static final String MULTITENANCY_MEDIUM_PLAN = "Professional";
-    public static final String MULTITENANCY_LARGE_PLAN = "Enterprise";
-    public static final String EMAIL_CONFIG = "email";
-    public static final String MULTITENANCY_CONFIG_FOLDER = "multitenancy";
-
-    // Cloud controller - payload
-    public static final String MEMBER_ID = "MEMBER_ID";
-    public static final String LB_CLUSTER_ID = "LB_CLUSTER_ID";
-    public static final String NETWORK_PARTITION_ID = "NETWORK_PARTITION_ID";
-
-    // Kubernetes related constants
-    public static final String KUBERNETES_CLUSTER_ID = "KUBERNETES_CLUSTER_ID";
-    public static final String KUBERNETES_MASTER_PORT = 
"KUBERNETES_MASTER_PORT";
-    public static final String KUBERNETES_MASTER_DEFAULT_PORT = "8080";
-
-    //drools related constants
-    public static final String DROOLS_DIR_NAME = "drools";
-    public static final String SCALE_CHECK_DROOL_FILE = "scaling.drl";
-    public static final String DEPENDENT_SCALE_CHECK_DROOL_FILE = 
"dependent-scaling.drl";
-    public static final String MIN_CHECK_DROOL_FILE = "mincheck.drl";
-    public static final String MAX_CHECK_DROOL_FILE = "maxcheck.drl";
-    public static final String OBSOLETE_CHECK_DROOL_FILE = "obsoletecheck.drl";
-    public static final String MIN_COUNT = "MIN_COUNT";
-
-    // Policy and definition related constants
-    public static final int PUBLIC_DEFINITION = 0;
-
-    // member expiry timeout constants
-    public static final String PENDING_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.pendingMemberExpiryTimeout";
-    public static final String OBSOLETED_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.obsoletedMemberExpiryTimeout";
-    public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.pendingTerminationMemberExpiryTimeout";
-
-    public static final String FILTER_VALUE_SEPARATOR = ",";
-    public static final String TOPOLOGY_APPLICATION_FILTER = 
"stratos.topology.application.filter";
-    public static final String TOPOLOGY_SERVICE_FILTER = 
"stratos.topology.service.filter";
-    public static final String TOPOLOGY_CLUSTER_FILTER = 
"stratos.topology.cluster.filter";
-    public static final String TOPOLOGY_MEMBER_FILTER = 
"stratos.topology.member.filter";
-    public static final String TOPOLOGY_NETWORK_PARTITION_FILTER = 
"stratos.topology.network.partition.filter";
-
-    // to identify a lb cluster
-    public static final String LOAD_BALANCER_REF = "load.balancer.ref";
-    public static final String SERVICE_AWARE_LOAD_BALANCER = 
"service.aware.load.balancer";
-    public static final String DEFAULT_LOAD_BALANCER = "default.load.balancer";
-    public static final String NO_LOAD_BALANCER = "no.load.balancer";
-    public static final String EXISTING_LOAD_BALANCERS = 
"existing.load.balancers";
-
-    public static final long HAZELCAST_INSTANCE_INIT_TIMEOUT = 300000; // 5 min
-
-    public static final String AUTOSCALER_SERVICE_URL = 
"autoscaler.service.url";
-    public static final String CLOUD_CONTROLLER_SERVICE_URL = 
"cloud.controller.service.url";
-    public static final String STRATOS_MANAGER_SERVICE_URL = 
"stratos.manager.service.url";
-
-    public static final String CLOUD_CONTROLLER_CLIENT_SOCKET_TIMEOUT = 
"cc.socket.timeout";
-    public static final String CLOUD_CONTROLLER_CLIENT_CONNECTION_TIMEOUT = 
"cc.connection.timeout";
-    public static final String AUTOSCALER_CLIENT_SOCKET_TIMEOUT = 
"autoscaler.socket.timeout";
-    public static final String AUTOSCALER_CLIENT_CONNECTION_TIMEOUT = 
"autoscaler.connection.timeout";
-    public static final String STRATOS_MANAGER_CLIENT_SOCKET_TIMEOUT = 
"stratos.manager.socket.timeout";
-    public static final String STRATOS_MANAGER_CLIENT_CONNECTION_TIMEOUT = 
"stratos.manager.connection.timeout";
-
-    public static final String DEFAULT_CLIENT_SOCKET_TIMEOUT = "300000";
-    public static final String DEFAULT_CLIENT_CONNECTION_TIMEOUT = "300000";
-
-    // partition algorithm id constants
-    public static final String PARTITION_ROUND_ROBIN_ALGORITHM_ID = 
"round-robin";
-    public static final String PARTITION_WEIGHTED_ROUND_ROBIN_ALGORITHM_ID = 
"weighted-round-robin";
-    public static final String PARTITION_ONE_AFTER_ANOTHER_ALGORITHM_ID = 
"one-after-another";
-    // network partition algorithm id constants
-    public static final String 
NETWORK_PARTITION_ONE_AFTER_ANOTHER_ALGORITHM_ID = "one-after-another";
-    public static final String NETWORK_PARTITION_ALL_AT_ONCE_ALGORITHM_ID = 
"all-at-once";
-    public static final String APPLICATION_POLICY_NETWORK_PARTITION_GROUPS = 
"networkPartitionGroups";
-    public static final String APPLICATION_POLICY_NETWORK_PARTITIONS_SPLITTER 
= "\\|";
-    public static final String 
APPLICATION_POLICY_NETWORK_PARTITION_GROUPS_SPLITTER = ",";
-
-    public static final String NOT_DEFINED = "not-defined";
-    public static final String CLUSTER_INSTANCE_ID = "cluster.instance.id";
+       public static final String CLOUD_SERVICE_IS_ACTIVE_PROP_KEY = "active";
+
+       public static final String CLOUD_SERVICE_INFO_STORE_PATH =
+                       
"/repository/components/org.apache.stratos/cloud-manager/cloud-services";
+
+       public static final String TENANT_USER_VALIDATION_STORE_PATH = 
"/repository/components/org.wso2.carbon.validations";
+       public static final String ADMIN_EMAIL_VERIFICATION_FLAG_PATH =
+                       
"/repository/components/org.wso2.carbon.email-confirmation-flag";
+       public static final String TENANT_DOMAIN_VERIFICATION_FLAG_PATH =
+                       
"/repository/components/org.wso2.carbon.domain-confirmation-flag";
+
+       public static final String DOMAIN_VALIDATOR_INFO_PATH =
+                       
"/repository/components/org.wso2.carbon.domain-validator-info";
+
+       public static final String TENANT_CREATION_THEME_PAGE_TOKEN =
+                       
"/repository/components/org.wso2.carbon.theme-page-token";
+
+       public static final String TENANT_PACKAGE_INFO_PATH = 
"/repository/components/org.wso2.carbon.package-info";
+
+       public static final String ALL_THEMES_PATH = 
"/repository/components/org.wso2.carbon.all-themes";
+
+       public static final String THROTTLING_RULES_PATH = 
"/repository/components/org.wso2.carbon.throttling-rules";
+
+       public static final String ORIGINATED_SERVICE_PATH = 
"/repository/components/org.wso2.carbon.originated-service";
+
+       public static final String PATH_SEPARATOR = "/";
+
+       public static final String CLOUD_SERVICE_ICONS_STORE_PATH =
+                       "/repository/components/org.wso2.carbon.cloud-manager/" 
+ "cloud-services-icons";
+
+       public static final String VALIDATION_KEY_RESOURCE_NAME = 
"validation-key";
+       public static final String INCOMING_PATH_DIR = "incoming";
+       public static final String OUTGOING_PATH_DIR = "outgoing";
+       public static final String MULTITENANCY_SCHEDULED_TASK_ID = 
"multitenancyScheduledTask";
+       public static final String MULTITENANCY_VIEWING_TASK_ID = 
"multitenancyViewingTask";
+
+       public static final String INVALID_TENANT = "invalidTenant";
+       public static final String INACTIVE_TENANT = "inactiveTenant";
+       public static final String ACTIVE_TENANT = "activeTenant";
+       public static final String IS_EMAIL_VALIDATED = "isEmailValidated";
+       public static final String IS_CREDENTIALS_ALREADY_RESET = 
"isCredentialsReset";
+       public static final String TENANT_ADMIN = "tenantAdminUsername";
+
+       public static final String CLOUD_MANAGER_SERVICE = "Apache Stratos 
Controller";
+       public static final String CLOUD_IDENTITY_SERVICE = "WSO2 Stratos 
Identity";
+       public static final String CLOUD_GOVERNANCE_SERVICE = "WSO2 Stratos 
Governance";
+       public static final String CLOUD_ESB_SERVICE = "WSO2 Stratos Enterprise 
Service Bus";
+
+       // keystore mgt related Constants
+       public static final String TENANT_KS = 
"/repository/security/key-stores/";
+       public static final String TENANT_PUB_KEY = 
"/repository/security/pub-key";
+       public static final String PROP_TENANT_KS_TYPE = "key-store-type";
+       public static final String PROP_TENANT_KS_PASSWD = "key-store-password";
+       public static final String PROP_TENANT_KS_PRIV_KEY_PASSWD = 
"priv-key-password";
+       public static final String PROP_TENANT_KS_ALIAS = "alias";
+
+       // constants related to redirection
+
+       public static final String UNVERIFIED_ACCOUNT_DOMAIN_SUFFIX = 
"-unverified";
+       public static final String TENANT_SPECIFIC_URL_RESOLVED = 
"tenant-sepcific-url-resolved";
+       public static final String SUFFIXED_UNVERIFIED_SESSION_FLAG = 
"temp-suffixed-unverified";
+
+       // metering constants
+       public static final String THROTTLING_ALL_ACTION = "all_actions";
+       public static final String THROTTLING_IN_DATA_ACTION = "in_data_action";
+       //this covers registry capacity + registry bandwidth
+       public static final String THROTTLING_OUT_DATA_ACTION = 
"out_data_action"; //this covers registry bandwidth
+       public static final String THROTTLING_ADD_USER_ACTION = 
"add_user_action";
+       public static final String THROTTLING_SERVICE_IN_BANDWIDTH_ACTION = 
"service_in_bandwith_action";
+       public static final String THROTTLING_SERVICE_OUT_BANDWIDTH_ACTION = 
"service_out_bandwith_action";
+       public static final String THROTTLING_WEBAPP_IN_BANDWIDTH_ACTION = 
"webapp_in_bandwith_action";
+       public static final String THROTTLING_WEBAPP_OUT_BANDWIDTH_ACTION = 
"webapp_out_bandwith_action";
+       public static final String THROTTLING_SERVICE_REQUEST_ACTION = 
"service_request_action";
+       public static final String THROTTLING_SERVICE_RESPONSE_ACTION = 
"service_response_action";
+
+       // the session attribute to keep track whether the registry action 
validated
+       // and the usage persisted
+       public static final String REGISTRY_ACTION_VALIDATED_SESSION_ATTR = 
"registryActionValidated";
+       public static final String REGISTRY_USAGE_PERSISTED_SESSION_ATTR = 
"usagePersited";
+
+       // Metering servlet attributes
+       public static final String SERVICE_NAME_SERVLET_ATTR = 
"meteringServiceName";
+       public static final String TENANT_ID_SERVLET_ATTR = "tenantId";
+       public static final String ADMIN_SERVICE_SERVLET_ATTR = "adminService";
+
+       // * as a Service impl related constants
+       public static final String ORIGINATED_SERVICE = "originatedService";
+
+       // Configuration file name
+       public static final String STRATOS_CONF_FILE = "stratos.xml";
+       //public static final String STRATOS_CONF_LOC = "repository/conf/";
+       //public static final String STRATOS_CONF_FILE_WITH_PATH = 
STRATOS_CONF_LOC + STRATOS_CONF_FILE;
+
+       // EULA location
+       public static final String STRATOS_EULA = "eula.xml";
+
+       // EULA default text.
+       public static final String STRATOS_EULA_DEFAULT_TEXT =
+                       "Please refer to: " + 
StratosConstants.STRATOS_TERMS_OF_USAGE +
+                       " for terms and usage and " + 
StratosConstants.STRATOS_PRIVACY_POLICY +
+                       " for privacy policy of WSO2 Stratos.";
+
+       // Web location of Terms of Usage and privacy policy
+       public static final String STRATOS_TERMS_OF_USAGE = 
"http://wso2.com/cloud/services/terms-of-use/";;
+       public static final String STRATOS_PRIVACY_POLICY = 
"http://wso2.com/cloud/services/privacy-policy/";;
+       public static final String MULTITENANCY_FREE_PLAN = "Demo";
+       public static final String MULTITENANCY_SMALL_PLAN = "SMB";
+       public static final String MULTITENANCY_MEDIUM_PLAN = "Professional";
+       public static final String MULTITENANCY_LARGE_PLAN = "Enterprise";
+       public static final String EMAIL_CONFIG = "email";
+       public static final String MULTITENANCY_CONFIG_FOLDER = "multitenancy";
+
+       // Cloud controller - payload
+       public static final String MEMBER_ID = "MEMBER_ID";
+       public static final String LB_CLUSTER_ID = "LB_CLUSTER_ID";
+       public static final String NETWORK_PARTITION_ID = 
"NETWORK_PARTITION_ID";
+
+       // Kubernetes related constants
+       public static final String KUBERNETES_CLUSTER_ID = 
"KUBERNETES_CLUSTER_ID";
+       public static final String KUBERNETES_MASTER_PORT = 
"KUBERNETES_MASTER_PORT";
+       public static final String KUBERNETES_MASTER_DEFAULT_PORT = "8080";
+
+       //drools related constants
+       public static final String DROOLS_DIR_NAME = "drools";
+       public static final String SCALE_CHECK_DROOL_FILE = "scaling.drl";
+       public static final String DEPENDENT_SCALE_CHECK_DROOL_FILE = 
"dependent-scaling.drl";
+       public static final String MIN_CHECK_DROOL_FILE = "mincheck.drl";
+       public static final String MAX_CHECK_DROOL_FILE = "maxcheck.drl";
+       public static final String OBSOLETE_CHECK_DROOL_FILE = 
"obsoletecheck.drl";
+       public static final String MIN_COUNT = "MIN_COUNT";
+       public static final String SCALING_REASON = "SCALING_REASON";
+       public static final String SCALING_TIME = "SCALING_TIME";
+
+       // Policy and definition related constants
+       public static final int PUBLIC_DEFINITION = 0;
+
+       // member expiry timeout constants
+       public static final String PENDING_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.pendingMemberExpiryTimeout";
+       public static final String OBSOLETED_MEMBER_EXPIRY_TIMEOUT = 
"autoscaler.member.obsoletedMemberExpiryTimeout";
+       public static final String PENDING_TERMINATION_MEMBER_EXPIRY_TIMEOUT =
+                       
"autoscaler.member.pendingTerminationMemberExpiryTimeout";
+
+       public static final String FILTER_VALUE_SEPARATOR = ",";
+       public static final String TOPOLOGY_APPLICATION_FILTER = 
"stratos.topology.application.filter";
+       public static final String TOPOLOGY_SERVICE_FILTER = 
"stratos.topology.service.filter";
+       public static final String TOPOLOGY_CLUSTER_FILTER = 
"stratos.topology.cluster.filter";
+       public static final String TOPOLOGY_MEMBER_FILTER = 
"stratos.topology.member.filter";
+       public static final String TOPOLOGY_NETWORK_PARTITION_FILTER = 
"stratos.topology.network.partition.filter";
+
+       // to identify a lb cluster
+       public static final String LOAD_BALANCER_REF = "load.balancer.ref";
+       public static final String SERVICE_AWARE_LOAD_BALANCER = 
"service.aware.load.balancer";
+       public static final String DEFAULT_LOAD_BALANCER = 
"default.load.balancer";
+       public static final String NO_LOAD_BALANCER = "no.load.balancer";
+       public static final String EXISTING_LOAD_BALANCERS = 
"existing.load.balancers";
+
+       public static final long HAZELCAST_INSTANCE_INIT_TIMEOUT = 300000; // 5 
min
+
+       public static final String AUTOSCALER_SERVICE_URL = 
"autoscaler.service.url";
+       public static final String CLOUD_CONTROLLER_SERVICE_URL = 
"cloud.controller.service.url";
+       public static final String STRATOS_MANAGER_SERVICE_URL = 
"stratos.manager.service.url";
+
+       public static final String CLOUD_CONTROLLER_CLIENT_SOCKET_TIMEOUT = 
"cc.socket.timeout";
+       public static final String CLOUD_CONTROLLER_CLIENT_CONNECTION_TIMEOUT = 
"cc.connection.timeout";
+       public static final String AUTOSCALER_CLIENT_SOCKET_TIMEOUT = 
"autoscaler.socket.timeout";
+       public static final String AUTOSCALER_CLIENT_CONNECTION_TIMEOUT = 
"autoscaler.connection.timeout";
+       public static final String STRATOS_MANAGER_CLIENT_SOCKET_TIMEOUT = 
"stratos.manager.socket.timeout";
+       public static final String STRATOS_MANAGER_CLIENT_CONNECTION_TIMEOUT = 
"stratos.manager.connection.timeout";
+
+       public static final String DEFAULT_CLIENT_SOCKET_TIMEOUT = "300000";
+       public static final String DEFAULT_CLIENT_CONNECTION_TIMEOUT = "300000";
+
+       // partition algorithm id constants
+       public static final String PARTITION_ROUND_ROBIN_ALGORITHM_ID = 
"round-robin";
+       public static final String PARTITION_WEIGHTED_ROUND_ROBIN_ALGORITHM_ID 
= "weighted-round-robin";
+       public static final String PARTITION_ONE_AFTER_ANOTHER_ALGORITHM_ID = 
"one-after-another";
+       // network partition algorithm id constants
+       public static final String 
NETWORK_PARTITION_ONE_AFTER_ANOTHER_ALGORITHM_ID = "one-after-another";
+       public static final String NETWORK_PARTITION_ALL_AT_ONCE_ALGORITHM_ID = 
"all-at-once";
+       public static final String APPLICATION_POLICY_NETWORK_PARTITION_GROUPS 
= "networkPartitionGroups";
+       public static final String 
APPLICATION_POLICY_NETWORK_PARTITIONS_SPLITTER = "\\|";
+       public static final String 
APPLICATION_POLICY_NETWORK_PARTITION_GROUPS_SPLITTER = ",";
+
+       public static final String NOT_DEFINED = "not-defined";
+       public static final String CLUSTER_INSTANCE_ID = "cluster.instance.id";
 }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
 
b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
index 56e9164..43b204f 100644
--- 
a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
@@ -84,7 +84,10 @@ dialect "mvel"
 
                         log.info("[dependency-scale] [scale-up] Partition 
available, hence trying to spawn an instance to scale up!" );
                         log.debug("[dependency-scale] [scale-up] " + " 
[partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
-                        delegator.delegateSpawn(partitionContext, clusterId, 
clusterInstanceContext.getId(), isPrimary);
+                        long time = System.currentTimeMillis();
+                        String scalingReason = "Dependency scaling";
+                        delegator.delegateSpawn(partitionContext, clusterId, 
clusterInstanceContext.getId(), isPrimary,scalingReason,time);
+
                         count++;
                     } else {
                         partitionsAvailable = false;

http://git-wip-us.apache.org/repos/asf/stratos/blob/76c7724b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
index e6f8f67..cad9c8f 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/scaling.drl
@@ -164,6 +164,9 @@ dialect "mvel"
                     boolean partitionsAvailable = true;
                     int count = 0;
 
+                    String autoscalingReason = (numberOfRequiredInstances == 
numberOfInstancesReuquiredBasedOnRif)?"Scaling up due to 
RIF":(numberOfRequiredInstances== 
numberOfInstancesReuquiredBasedOnMemoryConsumption)?"Scaling up due to 
MC":"Scaling up due to LA";
+
+
                     while(count != additionalInstances && partitionsAvailable){
 
                         ClusterLevelPartitionContext partitionContext = 
(ClusterLevelPartitionContext) 
partitionAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
@@ -182,7 +185,8 @@ dialect "mvel"
                                 " [laPredictedValue] " + laPredictedValue + " 
[laThreshold] " + laThreshold);
 
                             log.debug("[scale-up] " + " [partition] " + 
partitionContext.getPartitionId() + " [cluster] " + clusterId );
-                            delegator.delegateSpawn(partitionContext, 
clusterId, clusterInstanceContext.getId(), isPrimary);
+                            long scalingTime = System.currentTimeMillis();
+                            delegator.delegateSpawn(partitionContext, 
clusterId, clusterInstanceContext.getId(), 
isPrimary,autoscalingReason,scalingTime);
                             count++;
                         } else {
 

Reply via email to