You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/02/25 19:54:53 UTC

[18/50] [abbrv] stratos git commit: Adding application policy persist and retrieve operations. Moving activeByDefault property from network partition to application policy. Autoscaler logic changes with application policy

Adding application policy persist and retrieve operations. Moving activeByDefault property from network partition to application policy. Autoscaler logic changes with application policy


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

Branch: refs/heads/master-deployment-policy-fix-merge
Commit: 506e0a4db948b5d3b77182fb4281d546a5a2cec3
Parents: 75579c5
Author: sajhak <sa...@gmail.com>
Authored: Wed Feb 18 19:09:16 2015 +0530
Committer: R-Rajkumar <rr...@gmail.com>
Committed: Wed Feb 25 22:52:10 2015 +0530

----------------------------------------------------------------------
 .../monitor/component/ApplicationMonitor.java   | 81 ++++++++++++++------
 .../autoscaler/pojo/policy/PolicyManager.java   | 53 ++++++++++++-
 .../policy/deployment/ApplicationPolicy.java    | 10 +--
 .../partition/network/NetworkPartition.java     |  9 ---
 .../autoscaler/registry/RegistryManager.java    | 11 +++
 .../services/impl/AutoscalerServiceImpl.java    | 15 ++--
 .../autoscaler/util/AutoscalerConstants.java    |  3 +-
 .../util/AutoscalerObjectConverter.java         | 47 ++++++++++++
 .../beans/partition/NetworkPartitionBean.java   |  9 ---
 .../util/converter/ObjectConverter.java         |  4 -
 .../artifacts/network-partition.json            |  1 -
 11 files changed, 180 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index db50431..d7938ab 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -34,6 +34,8 @@ import org.apache.stratos.autoscaler.monitor.Monitor;
 import org.apache.stratos.autoscaler.monitor.events.*;
 import org.apache.stratos.autoscaler.monitor.events.builder.MonitorStatusEventBuilder;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicyNetworkPartitionReference;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
@@ -310,35 +312,64 @@ public class ApplicationMonitor extends ParentComponentMonitor {
         DeploymentPolicy deploymentPolicy = getDeploymentPolicy(application);
         String instanceId;
 
-        for (NetworkPartition networkPartition :
-                deploymentPolicy.getApplicationLevelNetworkPartitions()) {
-            if (networkPartition.isActiveByDefault()) {
-                ApplicationLevelNetworkPartitionContext context =
-                        new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
-                //If application instances found in the ApplicationsTopology,
-                // then have to add them first before creating new one
-                ApplicationInstance appInstance = (ApplicationInstance) application.
-                        getInstanceByNetworkPartitionId(context.getId());
-                if (appInstance != null) {
-                    //use the existing instance in the Topology to create the data
-                    instanceId = handleApplicationInstanceCreation(application, context, appInstance);
-                    initialStartup = false;
-                } else {
-                    //create new app instance as it doesn't exist in the Topology
-                    instanceId = handleApplicationInstanceCreation(application, context, null);
+        if (deploymentPolicy == null) {
+            //FIXME for docker with deployment policy
+            ApplicationInstance appInstance = createApplicationInstance(application, null);
+            instanceIds.add(appInstance.getInstanceId());
+        } else {
+        	
+        	for (ApplicationPolicyNetworkPartitionReference 
+        			appPolicyNetworkPartition : getNetworkPartitionReferences(application.getUniqueIdentifier())) {
+	            if(appPolicyNetworkPartition.isActiveByDefault()) {
+	            	ApplicationLevelNetworkPartitionContext context =
+                            new ApplicationLevelNetworkPartitionContext(appPolicyNetworkPartition.getNetworkPartitionId());
+                    //If application instances found in the ApplicationsTopology,
+                    // then have to add them first before creating new one
+                    ApplicationInstance appInstance = (ApplicationInstance) application.
+                            getInstanceByNetworkPartitionId(context.getId());
+                    if (appInstance != null) {
+                        //use the existing instance in the Topology to create the data
+                        instanceId = handleApplicationInstanceCreation(application, context, appInstance);
+                        initialStartup = false;
+                    } else {
+                        //create new app instance as it doesn't exist in the Topology
+                        instanceId = handleApplicationInstanceCreation(application, context, null);
 
-                }
-                instanceIds.add(instanceId);
-                log.info("Application instance has been added for the [network partition] " +
-                        networkPartition.getId() + " [appInstanceId] " + instanceId);
+                    }
+                    instanceIds.add(instanceId);
+                    log.info("Application instance has been added for the [network partition] " +
+                    		appPolicyNetworkPartition.getNetworkPartitionId() + " [appInstanceId] " + instanceId);
 
+	            }
             }
+            
         }
 
         startDependency(application, instanceIds);
         return initialStartup;
     }
 
+	private ApplicationPolicyNetworkPartitionReference[] getNetworkPartitionReferences(
+            String applicationId) throws PolicyValidationException {
+	    ApplicationPolicy applicationPolicy = PolicyManager.getInstance().getApplicationPolicy(applicationId);
+	    
+	    if(applicationPolicy == null) {
+	    	String msg = "Application policy is not found "
+	    			+ "for application ["+ applicationId + "] ";
+	    	log.error(msg);
+	    	throw new PolicyValidationException(msg);        		
+	    }
+	    ApplicationPolicyNetworkPartitionReference[] npReference = applicationPolicy.getNetworkPartitionReferences();
+	    
+	    if(npReference == null || npReference.length <= 0) {
+	    	String msg = "Network partition references cannot be found in application policy "+ applicationPolicy+ " is not found "
+	    			+ "for application ["+ applicationId + "] ";
+	    	log.error(msg);        		
+	    	throw new PolicyValidationException(msg);  
+	    }
+	    return npReference;
+    }
+
     private String handleApplicationInstanceCreation(Application application,
                                                      ApplicationLevelNetworkPartitionContext context,
                                                      ApplicationInstance instanceExist) {
@@ -386,15 +417,15 @@ public class ApplicationMonitor extends ParentComponentMonitor {
             instanceId = appInstance.getInstanceId();
 
         } else {
-            for (NetworkPartition networkPartition : deploymentPolicy.
-                    getApplicationLevelNetworkPartitions()) {
+            for (ApplicationPolicyNetworkPartitionReference 
+        			appPolicyNetworkPartition : getNetworkPartitionReferences(application.getUniqueIdentifier())) {
                 //Checking whether any not active NP found
-                if (!networkPartition.isActiveByDefault()) {
+                if (!appPolicyNetworkPartition.isActiveByDefault()) {
 
-                    if (!this.networkPartitionCtxts.containsKey(networkPartition.getId())) {
+                    if (!this.networkPartitionCtxts.containsKey(appPolicyNetworkPartition.getNetworkPartitionId())) {
 
                         ApplicationLevelNetworkPartitionContext context =
-                                new ApplicationLevelNetworkPartitionContext(networkPartition.getId());
+                                new ApplicationLevelNetworkPartitionContext(appPolicyNetworkPartition.getNetworkPartitionId());
 
                         //Setting flags saying that it has been created by burst
                         context.setCreatedOnBurst(true);

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index f7d476c..c505775 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
@@ -32,8 +33,6 @@ import org.apache.stratos.common.clustering.DistributedObjectProvider;
 
 import java.util.Map;
 
-//import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.PartitionManager;
-
 /**
  * Manager class for the purpose of managing Autoscale/Deployment policy definitions.
  */
@@ -43,10 +42,15 @@ public class PolicyManager {
     
     private static final String AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP = "AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP";
     private static final String DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP = "DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP";
+    private static final String APPLICATION_ID_TO_APPLICATION_POLICY_MAP = "APPLICATION_ID_TO_APPLICATION_POLICY_MAP";
     
-    private static Map<String, AutoscalePolicy> autoscalePolicyListMap; //= new HashMap<String, AutoscalePolicy>();
+    private final transient DistributedObjectProvider distributedObjectProvider;
+
+    private static Map<String, AutoscalePolicy> autoscalePolicyListMap;
 
-    private static Map<String, DeploymentPolicy> deploymentPolicyListMap; //= new HashMap<String, DeploymentPolicy>();
+    private static Map<String, DeploymentPolicy> deploymentPolicyListMap;
+    
+    private static Map<String, ApplicationPolicy> applicationPolicyListMap;
     
     /* An instance of a PolicyManager is created when the class is loaded. 
      * Since the class is loaded only once, it is guaranteed that an object of 
@@ -66,6 +70,7 @@ public class PolicyManager {
         DistributedObjectProvider distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
         autoscalePolicyListMap = distributedObjectProvider.getMap(AS_POLICY_ID_TO_AUTOSCALE_POLICY_MAP);
         deploymentPolicyListMap = distributedObjectProvider.getMap(DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
+        applicationPolicyListMap = distributedObjectProvider.getMap(DEPLOYMENT_POLICY_ID_TO_DEPLOYMENT_POLICY_MAP);
     }
 
     // Add the policy to information model and persist.
@@ -297,4 +302,44 @@ public class PolicyManager {
         return null;
     }
 
+	public void addApplicationPolicy(String applicationId,ApplicationPolicy applicationPolicy) throws InvalidPolicyException {
+		if (log.isInfoEnabled()) {
+			log.info(String.format("Adding application policy for application: [id] %s", applicationId));
+		}
+		this.addApplicationPolicyToInformationModel(applicationId, applicationPolicy);
+		RegistryManager.getInstance().persistApplicationPolicy(applicationId,applicationPolicy);
+
+		if (log.isInfoEnabled()) {
+			log.info(String
+			        .format("Application policy is added successfully: [application-id] %s",
+			                applicationId));
+		}
+
+	}
+
+	private void addApplicationPolicyToInformationModel(String applicationId,
+            ApplicationPolicy applicationPolicy) throws InvalidPolicyException {
+        if (!applicationPolicyListMap.containsKey(applicationId)) {
+            if (log.isDebugEnabled()) {
+                log.debug("Adding application policy for application Id: " + applicationId);
+            }
+            applicationPolicyListMap.put(applicationId, applicationPolicy);
+        } else {
+        	String errMsg = "Application policy is already exists for appplication [" + applicationId + "] ";
+        	log.error(errMsg);
+            throw new InvalidPolicyException(errMsg);
+        }
+	    
+    }
+	
+	/**
+	 * Retruns an ApplicationPolicy of a given application
+	 * 
+	 * @param applicationId
+	 * @return
+	 */
+    public ApplicationPolicy getApplicationPolicy(String applicationId) {
+        return applicationPolicyListMap.get(applicationId);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ApplicationPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ApplicationPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ApplicationPolicy.java
index e06b37d..67f7a02 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ApplicationPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ApplicationPolicy.java
@@ -23,14 +23,14 @@ import java.io.Serializable;
 public class ApplicationPolicy implements Serializable{
 
 	private static final long serialVersionUID = -2851334419121310395L;
-	private ApplicationPolicyNetworkPartitionReference[] networkPartitionReference;
+	private ApplicationPolicyNetworkPartitionReference[] networkPartitionReferences;
 	
-	public ApplicationPolicyNetworkPartitionReference[] getNetworkPartitionReference() {
-		return networkPartitionReference;
+	public ApplicationPolicyNetworkPartitionReference[] getNetworkPartitionReferences() {
+		return networkPartitionReferences;
 	}
-	public void setNetworkPartitionReference(
+	public void setNetworkPartitionReferences(
 	        ApplicationPolicyNetworkPartitionReference[] networkPartitionReference) {
-		this.networkPartitionReference = networkPartitionReference;
+		this.networkPartitionReferences = networkPartitionReference;
 	}
 	
 	

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/NetworkPartition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/NetworkPartition.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/NetworkPartition.java
index ef8742f..0c5f22e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/NetworkPartition.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/NetworkPartition.java
@@ -31,7 +31,6 @@ public class NetworkPartition implements Serializable {
 
     private String id;
     private String kubernetesClusterId;
-    private boolean activeByDefault;
     private Partition[] partitions;
 
     public void setPartitions(Partition[] partitions) {
@@ -66,14 +65,6 @@ public class NetworkPartition implements Serializable {
         this.id = id;
     }
 
-    public boolean isActiveByDefault() {
-        return activeByDefault;
-    }
-
-    public void setActiveByDefault(boolean activeByDefault) {
-        this.activeByDefault = activeByDefault;
-    }
-
     public Partition getPartition(String partitionId) {
         for(Partition partition : partitions) {
             if(partition.getId().equals(partitionId)) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 3c48404..bb3a9f5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -28,6 +28,7 @@ import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
@@ -702,4 +703,14 @@ public class RegistryManager {
         }
 
     }
+
+	public void persistApplicationPolicy(String applicationId, ApplicationPolicy applicationPolicy) {
+
+		String resourcePath = AutoscalerConstants.AUTOSCALER_RESOURCE + AutoscalerConstants.APPLICATION_POLICY_RESOURCE + "/" + applicationId;
+        persist(applicationPolicy, resourcePath);
+        if (log.isDebugEnabled()) {
+            log.debug(String.format("Application policy written to registry"));
+        }
+	    
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 1ee4538..e1cf82f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -80,6 +80,10 @@ import org.apache.stratos.metadata.client.defaults.DefaultMetaDataServiceClient;
 import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient;
 import org.apache.stratos.metadata.client.exception.MetaDataServiceClientException;
 import org.wso2.carbon.registry.api.RegistryException;
+import java.rmi.RemoteException;
+import com.google.gdata.wireformats.ObjectConverter;
+import java.text.MessageFormat;
+import java.util.*;
 
 /**
  * Auto Scaler Service API is responsible getting Partitions and Policies.
@@ -253,9 +257,10 @@ public class AutoscalerServiceImpl implements AutoscalerService {
             }
 
             List<NetworkPartition> networkPartitionList = new ArrayList<NetworkPartition>();
-            ApplicationPolicyNetworkPartitionReference[] npReferences = applicationPolicy.getNetworkPartitionReference();
+            ApplicationPolicyNetworkPartitionReference[] npReferences = applicationPolicy.getNetworkPartitionReferences();
             for (ApplicationPolicyNetworkPartitionReference npReference : npReferences) {
-            	NetworkPartition networkPartition = RegistryManager.getInstance().getNetworkPartition(npReference.getNetworkPartitionId());
+				NetworkPartition networkPartition = AutoscalerObjectConverter.convertNetworkParitionStubToPojo(CloudControllerServiceClient
+				                .getInstance().getNetworkPartition(npReference.getNetworkPartitionId()));
             	networkPartitionList.add(networkPartition);            	
             }
             
@@ -266,8 +271,8 @@ public class AutoscalerServiceImpl implements AutoscalerService {
 			updateKubernetesClusterIds(applicationId, networkPartitionList);
 			// TODO -- validate application policy
 			
-			// Add deployment policy
-			//PolicyManager.getInstance().addDeploymentPolicy(deploymentPolicy);
+			// Add application policy
+			PolicyManager.getInstance().addApplicationPolicy(applicationId, applicationPolicy);
 			if(!applicationContext.isMultiTenant()) {
 			    // Add application signup for single tenant applications
 			    addApplicationSignUp(applicationContext, application.getKey());
@@ -715,7 +720,7 @@ public class AutoscalerServiceImpl implements AutoscalerService {
     	
     	// application policy should contain at least one network partition reference
     	ApplicationPolicyNetworkPartitionReference[] networkPartitionReferences = 
-    			applicationPolicy.getNetworkPartitionReference();
+    			applicationPolicy.getNetworkPartitionReferences();
 		if (null == networkPartitionReferences || networkPartitionReferences.length == 0) {
 			String msg = "Invalid Application Policy. "
 					+ "Cause -> Application Policy is not containing any network partition reference";

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
index 7a485cb..f37d9ed 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerConstants.java
@@ -49,6 +49,7 @@ public final class AutoscalerConstants {
 	public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies";
     public static final String APPLICATIONS_RESOURCE = "/applications";
     public static final String APPLICATION_CONTEXTS_RESOURCE = "/applicationContexts";
+    public static final String APPLICATION_POLICY_RESOURCE = "/policies/applicationPolicies";
 
     /**
      * Cluster monitoring  interval
@@ -118,5 +119,5 @@ public final class AutoscalerConstants {
 	public static final String OAUTH_SERVICE_SFX = "services/OAuthAdminService";
 	public static final String IDENTITY_APPLICATION_SERVICE_SFX = "services/IdentityApplicationManagementService";
 	public static final String TOKEN_ENDPOINT_SFX = "oauth2/token";
-	public static final String TERMINATE_DEPENDENTS = "terminate-dependents";
+	public static final String TERMINATE_DEPENDENTS = "terminate-dependents";	
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerObjectConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerObjectConverter.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerObjectConverter.java
index 9a8f4ff..dab8c37 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerObjectConverter.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerObjectConverter.java
@@ -19,7 +19,10 @@
 
 package org.apache.stratos.autoscaler.util;
 
+import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
+import org.apache.stratos.cloud.controller.stub.Property;
 import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.common.Properties;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -65,4 +68,48 @@ public class AutoscalerObjectConverter {
 
         return cloudControllerPartition;
     }
+    
+    
+    public static NetworkPartition convertNetworkParitionStubToPojo(org.apache.stratos.cloud.controller.stub.domain.NetworkPartition np) {
+    	
+    	NetworkPartition networkPartition = new NetworkPartition();
+    	networkPartition.setId(np.getId());
+    	networkPartition.setKubernetesClusterId(np.getKubernetesClusterId());
+    	networkPartition.setPartitions(convertPartitionStubToPojo(np.getPartitions()));
+    	
+    	return networkPartition;
+    }
+
+	private static org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition[] convertPartitionStubToPojo(
+            Partition[] partitions) {
+		
+		List<org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition> partitionList = 
+				new ArrayList<org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition>();
+		
+		for (Partition p : partitions) {
+			org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition partition =
+					new org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition();
+			partition.setDescription(p.getDescription());
+			partition.setId(p.getId());
+			partition.setIsPublic(p.getIsPublic());
+			partition.setKubernetesClusterId(p.getKubernetesClusterId());
+			partition.setProperties(convertProperties(p.getProperties()));
+			partition.setProvider(p.getProvider());
+        }
+		
+	    return partitionList.toArray(
+	    		new org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition[partitions.length]);
+    }
+
+	private static Properties convertProperties(
+            org.apache.stratos.cloud.controller.stub.Properties properties) {
+	    
+		Properties props = new Properties();
+		Property[] propArray = properties.getProperties();
+		for (Property property : propArray) {
+	        props.addProperty(new org.apache.stratos.common.Property(property.getName(),property.getValue()));
+        }
+		
+	    return props;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionBean.java
index a673aa6..9a6cd37 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionBean.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/partition/NetworkPartitionBean.java
@@ -27,7 +27,6 @@ public class NetworkPartitionBean {
 
     private String id;
     private String kubernetesClusterId;
-    private boolean activeByDefault;
     private List<PartitionBean> partitions;
 
     public String getId() {
@@ -46,14 +45,6 @@ public class NetworkPartitionBean {
         this.kubernetesClusterId = kubernetesClusterId;
     }
 
-    public boolean isActiveByDefault() {
-        return activeByDefault;
-    }
-
-    public void setActiveByDefault(boolean activeByDefault) {
-        this.activeByDefault = activeByDefault;
-    }
-
     public List<PartitionBean> getPartitions() {
         return partitions;
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
index f6d9335..851b8f9 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
@@ -449,7 +449,6 @@ public class ObjectConverter {
 
         NetworkPartitionBean networkPartition = new NetworkPartitionBean();
         networkPartition.setId(stubNetworkPartition.getId());
-        networkPartition.setActiveByDefault(stubNetworkPartition.getActiveByDefault());
         if(stubNetworkPartition.getPartitions() != null) {
             List<PartitionBean> partitionList = new ArrayList<PartitionBean>();
             for(org.apache.stratos.autoscaler.stub.deployment.partition.Partition stubPartition :
@@ -471,7 +470,6 @@ public class ObjectConverter {
 
         NetworkPartitionBean networkPartition = new NetworkPartitionBean();
         networkPartition.setId(stubNetworkPartition.getId());
-        networkPartition.setActiveByDefault(stubNetworkPartition.getActiveByDefault());
         if(stubNetworkPartition.getPartitions() != null) {
             List<PartitionBean> partitionList = new ArrayList<PartitionBean>();
             for(Partition stubPartition : stubNetworkPartition.getPartitions()) {
@@ -641,7 +639,6 @@ public class ObjectConverter {
                 new NetworkPartition();
         networkPartition.setId(networkPartitionBean.getId());
         networkPartition.setKubernetesClusterId(networkPartitionBean.getKubernetesClusterId());
-        networkPartition.setActiveByDefault(networkPartitionBean.isActiveByDefault());
         if (networkPartitionBean.getPartitions() != null && !networkPartitionBean.getPartitions().isEmpty()) {
             networkPartition.setPartitions(convertToCCPartitionPojos(networkPartitionBean.getPartitions()));
         }
@@ -653,7 +650,6 @@ public class ObjectConverter {
         org.apache.stratos.cloud.controller.stub.domain.NetworkPartition networkPartition = new org.apache.stratos.cloud.controller.stub.domain.NetworkPartition();
         networkPartition.setId(networkPartitionBean.getId());
         networkPartition.setKubernetesClusterId(networkPartitionBean.getKubernetesClusterId());
-        networkPartition.setActiveByDefault(networkPartitionBean.isActiveByDefault());
         if (networkPartitionBean.getPartitions() != null && !networkPartitionBean.getPartitions().isEmpty()) {
             networkPartition.setPartitions(convertPartitionToCCPartitionPojos(networkPartitionBean.getPartitions()));
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/506e0a4d/samples/applications/single-cartridge/artifacts/network-partition.json
----------------------------------------------------------------------
diff --git a/samples/applications/single-cartridge/artifacts/network-partition.json b/samples/applications/single-cartridge/artifacts/network-partition.json
index 8db54b8..c0d7d07 100644
--- a/samples/applications/single-cartridge/artifacts/network-partition.json
+++ b/samples/applications/single-cartridge/artifacts/network-partition.json
@@ -1,6 +1,5 @@
 {
     "id": "network-partition-1",
-    "activeByDefault": "true",
     "partitions": [
         {
             "id": "p1",