You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2013/12/11 05:21:55 UTC

[1/9] git commit: Partition update in registry

Updated Branches:
  refs/heads/master 85abff74d -> 5ec222424


Partition update in registry


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

Branch: refs/heads/master
Commit: f7c9b9cb21727143e16394ac88b291d5e156650c
Parents: ea115ab
Author: Udara Liyanage <ud...@wso2.com>
Authored: Sat Dec 7 17:05:50 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Sat Dec 7 17:05:50 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/partition/PartitionManager.java  | 22 ++++++++++++++++----
 .../autoscaler/registry/RegistryManager.java    |  3 ++-
 2 files changed, 20 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f7c9b9cb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index 52fd8f7..c86176e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -44,6 +43,9 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 	
 	private static PartitionManager instance;
 	
+	String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
+			+ AutoScalerConstants.PARTITION_RESOURCE + "/";
+	
 	private PartitionManager(){}
 	
 	public static PartitionManager getInstance(){
@@ -62,8 +64,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		if(this.partitionExist(partition.getId()))
 			throw new AutoScalerException("A parition with the ID " +  partitionId + " already exist.");
 				
-		String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
-    			+ AutoScalerConstants.PARTITION_RESOURCE + "/" + partition.getId();
+		String resourcePath= this.partitionResourcePath + partition.getId();
 		
         RegistryManager regManager = RegistryManager.getInstance();     
         
@@ -81,6 +82,8 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		return true;
 	}
 	
+	
+	
 	public Partition getPartitionById(String partitionId){
 		if(partitionExist(partitionId))
 			return partitionListMap.get(partitionId);
@@ -95,7 +98,18 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 	}
 	
 	public boolean validatePartition(Partition partition) throws PartitionValidationException{
-		return CloudControllerClient.getInstance().validatePartition(partition);
+		return true;
+		//return CloudControllerClient.getInstance().validatePartition(partition);
+	}
+
+	public void updatePartition(Partition newPartition,Partition oldPartition) throws RegistryException {
+		if(!oldPartition.getId().equals(newPartition.getId()))
+			throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
+		
+		oldPartition=newPartition;
+		//overwrite the registry resource.
+		RegistryManager.getInstance().persist(
+				newPartition, this.partitionResourcePath + newPartition.getId());
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f7c9b9cb/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 4322e7a..791e4da 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
@@ -56,9 +56,10 @@ public class RegistryManager {
     public void persist(Object dataObj, String resourcePath) throws RegistryException {
     	
         try {
+        	/*
         	if (registryService.resourceExists(resourcePath)) {
                 throw new AutoScalerException("Resource already exist in the registry: " + resourcePath);
-            }
+            }*/
             registryService.beginTransaction();
 
             Resource nodeResource = registryService.newResource();


[9/9] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Posted by ud...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Conflicts:
	components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
	components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
	components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java


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

Branch: refs/heads/master
Commit: 5ec22242411418e94c39d07abddaf77d68109e1b
Parents: 527e4dc 85abff7
Author: Udara Liyanage <ud...@wso2.com>
Authored: Wed Dec 11 09:42:45 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Wed Dec 11 09:42:45 2013 -0500

----------------------------------------------------------------------
 .../adc/mgt/client/AutoscalerServiceClient.java |  36 +-
 .../internal/ADCManagementServerComponent.java  |  13 +
 .../adc/mgt/listener/TopologyEventListner.java  |  40 ++
 .../mgt/subscription/CartridgeSubscription.java |   3 +-
 .../SubscriptionMultiTenantBehaviour.java       |  25 +-
 .../processor/InstanceStatusProcessor.java      | 409 ++++++++++++++++
 .../event/processor/TopologyEventProcessor.java |  33 ++
 .../processor/TopologyEventProcessorChain.java  |  59 +++
 .../topology/model/TopologyClusterModel.java    | 477 +++++++++++++++++++
 .../apache/stratos/autoscaler/Constants.java    |   3 +
 .../autoscaler/NetworkPartitionContext.java     | 171 +++++++
 .../autoscaler/api/AutoScalerServiceImpl.java   |  51 +-
 .../exception/NonExistingLBException.java       |  43 ++
 .../interfaces/AutoScalerServiceInterface.java  |   5 +-
 .../autoscaler/partition/PartitionManager.java  |  74 ++-
 .../cloud/controller/iaases/AWSEC2Iaas.java     |  10 -
 .../controller/iaases/OpenstackNovaIaas.java    |  26 +-
 .../cloud/controller/pojo/Cartridge.java        |  20 +
 .../cloud/controller/pojo/CartridgeConfig.java  |  20 +
 .../cloud/controller/pojo/CartridgeInfo.java    |  10 +
 .../controller/pojo/LoadbalancerConfig.java     |  70 +++
 .../topology/TopologyEventSender.java           |   6 +-
 .../controller/util/CloudControllerUtil.java    |   8 +
 .../messaging/domain/topology/Cluster.java      |  10 +-
 .../event/topology/ClusterCreatedEvent.java     |   2 +-
 .../apache/stratos/rest/endpoint/Constants.java |   6 +-
 .../definition/CartridgeDefinitionBean.java     |   3 +
 .../cartridge/definition/LoadBalancerBean.java  |   4 +
 .../bean/util/converter/PojoConverter.java      |  12 +-
 .../rest/endpoint/services/ServiceUtils.java    | 245 +++++++++-
 .../rest/endpoint/services/StratosAdmin.java    |  48 +-
 .../src/main/resources/AutoScalerService.wsdl   | 122 ++++-
 .../main/resources/CloudControllerService.wsdl  |  21 +-
 33 files changed, 1991 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 40d5e66,23e3c7f..99dac4d
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@@ -22,9 -23,10 +23,11 @@@ import java.util.List
  
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
+ import org.apache.stratos.autoscaler.NetworkPartitionContext;
  import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 +import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
+ import org.apache.stratos.autoscaler.exception.NonExistingLBException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
@@@ -39,9 -41,10 +42,10 @@@ import org.apache.stratos.cloud.control
  public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
  
  	private static final Log log = LogFactory.getLog(AutoScalerServiceImpl.class);
+ 	PartitionManager partitionManager = PartitionManager.getInstance();
  	
  	public Partition[] getAllAvailablePartitions(){
 -		return PartitionManager.getInstance().getAllPartitions();		
 +		return PartitionManager.getInstance().getAllPartitions();
  	}
  	
  	public DeploymentPolicy[] getAllDeploymentPolicies(){
@@@ -97,20 -116,51 +101,49 @@@
  
  	@Override
  	public PartitionGroup[] getPartitionGroups(String deploymentPolicyId) {	
 -		this.getDeploymentPolicy(deploymentPolicyId).getAllPartitions();
 -		return null;
 +		return PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups();
  	}
  
--	@Override
- 	public Partition[] getPartitionsOfDeploymentPolicy(String depPolicy, String partitonGroupId) {
- 		DeploymentPolicy depPol = PolicyManager.getInstance().getDeploymentPolicy(depPolicy);
- 		if(null == depPol)
- 			return null;
- 		
- 		PartitionGroup partGrp = depPol.getPartitionGroup(partitonGroupId);
- 		if(null == partGrp)
+ 	public Partition[] getPartitionsOfDeploymentPolicy(String deploymentPolicyId) {
+ 		DeploymentPolicy depPol = this.getDeploymentPolicy(deploymentPolicyId);
+ 		if(null == depPol) {
  			return null;
+ 		}
  		
- 		return partGrp.getPartitions();
+ 		return depPol.getAllPartitions();
+ 	}
+ 	
+ 	@Override
+     public Partition[] getPartitionsOfGroup(String deploymentPolicyId, String groupId) {
+         DeploymentPolicy depPol = this.getDeploymentPolicy(deploymentPolicyId);
+         if(null == depPol) {
+             return null;
+         }
+         
+         PartitionGroup group = depPol.getPartitionGroup(groupId);
+         
+         if(group == null) {
+             return null;
+         }
+         
+         return group.getPartitions();
+     }
+ 	
+ 	public void checkLBExistence(String clusterId) throws NonExistingLBException {
+         List<NetworkPartitionContext> nwPartitions = partitionManager.getAllNetworkPartitions();
+         boolean exist = false;
+         for (NetworkPartitionContext networkPartition : nwPartitions) {
+             if(networkPartition.isLBExist(clusterId)) {
+                 exist = true;
+                 break;
+             }
+         }
+         
+         if(!exist) {
+             String msg = "LB with [cluster id] "+clusterId+" does not exist.";
+             log.error(msg);
+             throw new NonExistingLBException(msg);
+         }
  	}
  
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 49c0e9c,46d5806..c6b22a9
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@@ -1,7 -1,7 +1,8 @@@
  package org.apache.stratos.autoscaler.interfaces;
  
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 +import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
+ import org.apache.stratos.autoscaler.exception.NonExistingLBException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
  import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/5ec22242/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index 63c228e,4e1aeaf..2f86704
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@@ -42,12 -48,20 +48,23 @@@ private static final Log log = LogFacto
  	// Partitions against partitionID
  	private static Map<String,Partition> partitionListMap = new HashMap<String, Partition>();
  	
+ 	private List<NetworkPartitionContext> networkPartitions;
+ 	
+ 	/*
+ 	 * Key - partition id
+ 	 * Value - reference to NetworkPartition 
+ 	 */
+ 	private Map<String, NetworkPartitionContext> partitionIdToNetworkPartition;
+ 	
  	private static PartitionManager instance;
  	
- 	String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
++	private String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
 +			+ AutoScalerConstants.PARTITION_RESOURCE + "/";
 +	
- 	private PartitionManager(){}
+ 	private PartitionManager(){
+ 	    networkPartitions = new ArrayList<NetworkPartitionContext>();
+ 	    partitionIdToNetworkPartition = new HashMap<String, NetworkPartitionContext>();
+ 	}
  	
  	public static PartitionManager getInstance(){
  		if(null == instance)
@@@ -74,8 -86,13 +91,14 @@@
          
          try {
          	this.validatePartition(partition);
-         	RegistryManager.getInstance().persist(partition, resourcePath);
 -			regManager.persist(partition, resourcePath);
 -	        partitionListMap.put(partitionId, partition);	
 -	        
++
++        	regManager.persist(partition, resourcePath);
 +			addPartitionToInformationModel(partition);	
++				              
+ 	        // register network partition
+ 	        NetworkPartitionContext nwPartition = getOrAddNetworkPartition(partition);
+ 	        this.partitionIdToNetworkPartition.put(partitionId, nwPartition);
+ 	        
  		} catch (RegistryException e) {
  			throw new AutoScalerException(e);
  		} catch(PartitionValidationException e){
@@@ -86,13 -103,46 +109,51 @@@
  		return true;
  	}
  	
++	
 +	public void addPartitionToInformationModel(Partition partition) {
 +		partitionListMap.put(partition.getId(), partition);
 +	}
++		
+ 	public NetworkPartitionContext getNetworkPartitionOfPartition(String partitionId) {
+ 	    return this.partitionIdToNetworkPartition.get(partitionId);
+ 	}
  	
+ 	public List<NetworkPartitionContext> getAllNetworkPartitions() {
+ 	    return this.networkPartitions;
+ 	}
  	
- 	
- 	public Partition getPartitionById(String partitionId){
+ 	/**
+ 	 * TODO make {@link NetworkPartitionContext}s extensible.
+ 	 * @param partition
+ 	 */
+ 	protected NetworkPartitionContext getOrAddNetworkPartition(Partition partition) {
+ 
+ 	    if(partition == null) {
+ 	        return null;
+ 	    }
+ 	    String provider = partition.getProvider();
+ 	    String region = null;
+ 	    Properties properties = partition.getProperties();
+         if (properties != null) {
+             for (Property prop : properties.getProperties()) {
+                 if(Constants.REGION_PROPERTY.equals(prop.getName())) {
+                     region = prop.getValue();
+                     break;
+                 }
+             }
+         }
+         NetworkPartitionContext networkPar = new NetworkPartitionContext(provider, region);
+         if(!this.networkPartitions.contains(networkPar)){
+             this.networkPartitions.add(networkPar);
+         } else {
+             int idx = this.networkPartitions.indexOf(networkPar);
+             networkPar = this.networkPartitions.get(idx);
+         }
+         
+         return networkPar;
+     }
+ 
+     public Partition getPartitionById(String partitionId){
  		if(partitionExist(partitionId))
  			return partitionListMap.get(partitionId);
  		else
@@@ -105,8 -155,8 +166,7 @@@
  		
  	}
  	
 -	public boolean validatePartition(Partition partition) throws PartitionValidationException{
 +	public boolean validatePartition(Partition partition) throws PartitionValidationException{				
- 		return true;
- 		//return CloudControllerClient.getInstance().validatePartition(partition);
+ 		return CloudControllerClient.getInstance().validatePartition(partition);
  	}
 -
  }


[5/9] git commit: Deployment policy deploy via registry

Posted by ud...@apache.org.
Deployment policy deploy via registry


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

Branch: refs/heads/master
Commit: 7709385fa04727d86ca46361117ffcd4940e713c
Parents: 96ed75f
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 17:11:22 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 17:11:22 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |  5 +--
 .../interfaces/AutoScalerServiceInterface.java  |  2 +-
 .../internal/AutoscalerServerComponent.java     | 44 ++++++++++++++++++--
 .../autoscaler/policy/PolicyManager.java        |  7 ++--
 4 files changed, 47 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 4067a6d..6ffb204 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -76,9 +76,8 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
 	}
 
 	@Override
-	public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) {
-		// TODO Auto-generated method stub
-		return false;
+	public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException {
+		return PolicyManager.getInstance().deployAutoscalePolicy(aspolicy);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index d0deb75..49c0e9c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@ -16,7 +16,7 @@ public interface AutoScalerServiceInterface {
 	public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
 	
 	public AutoscalePolicy[] getAllAutoScalingPolicy();
-	public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy);
+	public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy) throws InvalidPolicyException;
 	
 	public DeploymentPolicy[] getValidDeploymentPoliciesforCartridge(String cartridgeType) throws  PartitionValidationException;
 	

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index ef872a0..c4f4ae0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@ -23,6 +23,7 @@ import java.util.Iterator;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
 import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
@@ -120,9 +121,16 @@ public class AutoscalerServerComponent {
 			Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
 			while (asItr.hasNext()) {
 				AutoscalePolicy asPolicy = asItr.next();
-				PolicyManager.getInstance().addASPolicyToInformationModel(
-						asPolicy);
+				PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);
 			}
+			
+			ArrayList<DeploymentPolicy> depPolicies = this.retreiveDeploymentPolicies();
+			Iterator<DeploymentPolicy> depItr = depPolicies.iterator();
+			while (depItr.hasNext()) {
+				DeploymentPolicy depPolicy = depItr.next();
+				PolicyManager.getInstance().addDeploymentPolicyToInformationModel(depPolicy);
+			}
+			
 			if (log.isInfoEnabled()) {
 				log.info("Autoscaler Server Component activated");
 			}
@@ -170,7 +178,7 @@ public class AutoscalerServerComponent {
 								return null;
 							}
 						} catch (Exception e) {
-							String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+							String msg = "Unable to retrieve data from Registry. Hence, any historical partitions will not get reflected.";
 							log.warn(msg, e);
 						}
 					}
@@ -198,7 +206,7 @@ public class AutoscalerServerComponent {
 								return null;
 							}
 						} catch (Exception e) {
-							String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+							String msg = "Unable to retrieve data from Registry. Hence, any historical autoscaler policies will not get reflected.";
 							log.warn(msg, e);
 						}
 					}
@@ -207,6 +215,34 @@ public class AutoscalerServerComponent {
 			return asPolicyList;	        
 	}
 	
+	private ArrayList<DeploymentPolicy> retreiveDeploymentPolicies(){
+		ArrayList<DeploymentPolicy> depPolicyList = new ArrayList<DeploymentPolicy>();
+		 String [] depPolicyResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.DEPLOYMENT_POLICY_RESOURCE);
+		 
+	        if (depPolicyResourceList != null) {
+				for (String resourcePath : depPolicyResourceList) {
+					Object asPolicy = registryManager.retrieve(resourcePath);
+
+					if (asPolicy != null) {
+						try {
+
+							Object dataObj = Deserializer
+									.deserializeFromByteArray((byte[]) asPolicy);
+							if (dataObj instanceof DeploymentPolicy) {
+								depPolicyList.add((DeploymentPolicy) dataObj);
+							} else {
+								return null;
+							}
+						} catch (Exception e) {
+							String msg = "Unable to retrieve data from Registry. Hence, any historical deployment policies will not get reflected.";
+							log.warn(msg, e);
+						}
+					}
+				}
+			}
+			return depPolicyList;	        
+	}
+	
 	
 	
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7709385f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 0084cf9..d0de31c 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -68,9 +68,10 @@ public class PolicyManager {
     }
     
     // Add the policy to information model and persist.
-	public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {	
+	public boolean deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {	
 		this.addASPolicyToInformationModel(policy);
-		this.persitASPolicy(asResourcePath+policy.getId(), policy);		
+		this.persitASPolicy(asResourcePath+ policy.getId(), policy);	
+		return true;
 	}
 	
 	// Add the policy to information model and persist.
@@ -102,7 +103,7 @@ public class PolicyManager {
 	
 	private void persitDeploymentPolicy(String depResourcePath, DeploymentPolicy policy){		
 		try {
-			RegistryManager.getInstance().persist(policy, asResourcePath);
+			RegistryManager.getInstance().persist(policy, depResourcePath);
 		} catch (RegistryException e) {
 			throw new AutoScalerException(e);
 		}


[7/9] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Posted by ud...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos


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

Branch: refs/heads/master
Commit: 5efccf20c637690737f107890473a7a7de092de1
Parents: e5fd231 eaf1774
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 18:37:49 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 18:37:49 2013 -0500

----------------------------------------------------------------------
 .../WSO2CEPInFlightRequestPublisher.java        | 13 ++--
 .../extension/api/LoadBalancerStatsReader.java  |  3 +-
 .../TenantAwareLoadBalanceEndpoint.java         | 31 +++++++--
 .../balancer/mediators/ResponseInterceptor.java | 26 +++++--
 ...adBalancerInFlightRequestCountCollector.java | 71 +++++++++++++-------
 .../WSO2CEPInFlightRequestCountObserver.java    | 36 ++++++----
 .../stratos/load/balancer/util/Constants.java   |  3 +
 .../LoadBalancerStatisticsEventBuilder.xml      |  4 +-
 .../AverageRequestsInflightFinder.xml           |  4 +-
 .../GradientOfRequestsInFlightFinder.xml        |  6 +-
 ...SecondDerivativeOfRequestsInFlightFinder.xml |  6 +-
 .../stream-manager-config.xml                   |  9 +--
 .../haproxy/extension/HAProxyStatsReader.java   | 34 +++++-----
 13 files changed, 160 insertions(+), 86 deletions(-)
----------------------------------------------------------------------



[4/9] git commit: Merge branch 'registry'

Posted by ud...@apache.org.
Merge branch 'registry'

Conflicts:
	components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java


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

Branch: refs/heads/master
Commit: 96ed75f14ad13f110eb9b1ae8e6fe2ad27b9da91
Parents: aebdb08 13ca853
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 10:33:48 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 14:58:35 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |  12 +-
 .../interfaces/AutoScalerServiceInterface.java  |   3 +-
 .../internal/AutoscalerServerComponent.java     | 181 ++++++++++++++-----
 .../autoscaler/partition/PartitionManager.java  |  27 ++-
 .../partition/deployers/PartitionDeployer.java  |   2 +-
 .../autoscaler/policy/PolicyManager.java        | 117 +++++-------
 .../deployers/AutoscalerPolicyDeployer.java     |   7 +-
 .../deployers/DeploymentPolicyDeployer.java     |   6 +-
 .../policy/model/AutoscalePolicy.java           |   5 +-
 .../autoscaler/policy/model/LoadAverage.java    |   7 +-
 .../autoscaler/policy/model/LoadThresholds.java |   5 +-
 .../policy/model/MemoryConsumption.java         |   7 +-
 .../policy/model/RequestsInFlight.java          |   7 +-
 .../autoscaler/registry/RegistryManager.java    |  21 ++-
 .../autoscaler/util/AutoScalerConstants.java    |   2 +
 .../stratos/autoscaler/util/AutoscalerUtil.java |   2 +
 .../stratos/autoscaler/util/Deserializer.java   |  96 ++++++++++
 17 files changed, 356 insertions(+), 151 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 584a724,ca47d52..4067a6d
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@@ -24,17 -24,17 +24,14 @@@ import org.apache.commons.logging.Log
  import org.apache.commons.logging.LogFactory;
  import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
--import org.apache.stratos.autoscaler.exception.AutoScalerException;
++import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
  import org.apache.stratos.autoscaler.partition.PartitionManager;
  import org.apache.stratos.autoscaler.policy.PolicyManager;
  import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
--import org.apache.stratos.autoscaler.registry.RegistryManager;
--import org.apache.stratos.autoscaler.util.AutoScalerConstants;
  import org.apache.stratos.cloud.controller.deployment.partition.Partition;
--import org.wso2.carbon.registry.core.exceptions.RegistryException;
  
  /**
   * Auto Scaler Service API is responsible getting Partitions and Policies.
@@@ -74,9 -74,9 +71,8 @@@ public class AutoScalerServiceImpl impl
  	}
  
  	@Override
--	public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) {
--		// TODO Auto-generated method stub
--		return false;
++	public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException {
++		return PolicyManager.getInstance().deployDeploymentscalePolicy(depPolicy);
  	}
  
  	@Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
index 0bf7a86,0bf7a86..d0deb75
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java
@@@ -1,6 -1,6 +1,7 @@@
  package org.apache.stratos.autoscaler.interfaces;
  
  import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
++import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
  import org.apache.stratos.autoscaler.exception.PartitionValidationException;
  import org.apache.stratos.autoscaler.partition.PartitionGroup;
  import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
@@@ -12,7 -12,7 +13,7 @@@ public interface AutoScalerServiceInter
  	public boolean addPartition(Partition partition);
  	
  	public DeploymentPolicy[] getAllDeploymentPolicies();
--	public boolean addDeploymentPolicy(DeploymentPolicy depPolicy);
++	public boolean addDeploymentPolicy(DeploymentPolicy depPolicy) throws InvalidPolicyException;
  	
  	public AutoscalePolicy[] getAllAutoScalingPolicy();
  	public boolean addAutoScalingPolicy(AutoscalePolicy aspolicy);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index 2d05f4e,40cd83a..ef872a0
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@@ -18,34 -18,46 +18,45 @@@
   */
  package org.apache.stratos.autoscaler.internal;
  
+ import java.util.ArrayList;
+ import java.util.Iterator;
+ 
 -import org.apache.commons.collections.IterableMap;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
++import org.apache.stratos.autoscaler.exception.AutoScalerException;
  import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
  import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
+ import org.apache.stratos.autoscaler.partition.PartitionManager;
+ import org.apache.stratos.autoscaler.policy.PolicyManager;
+ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+ import org.apache.stratos.autoscaler.registry.RegistryManager;
  import org.apache.stratos.autoscaler.rule.ExecutorTaskScheduler;
  import org.apache.stratos.autoscaler.topology.AutoscalerTopologyReceiver;
+ import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+ import org.apache.stratos.autoscaler.util.Deserializer;
  import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
  import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
  import org.apache.stratos.messaging.util.Constants;
 -import org.drools.lang.DRLExpressions.type_return;
  import org.osgi.service.component.ComponentContext;
  import org.wso2.carbon.registry.api.RegistryException;
  import org.wso2.carbon.registry.core.service.RegistryService;
  
  /**
-- * @scr.component name=
-- * "org.apache.stratos.autoscaler.internal.AutoscalerServerComponent"
-- * immediate="true"
-- * 
-- * @scr.reference name="registry.service"
-- *                interface=
-- *                "org.wso2.carbon.registry.core.service.RegistryService"
-- *                cardinality="1..1" policy="dynamic" bind="setRegistryService"
-- *                unbind="unsetRegistryService" 
-- */
++* @scr.component name=org.apache.stratos.autoscaler.internal.AutoscalerServerComponent"
++* immediate="true"
++*
++* @scr.reference name="registry.service"
++*                interface=
++*                "org.wso2.carbon.registry.core.service.RegistryService"
++*                cardinality="1..1" policy="dynamic" bind="setRegistryService"
++*                unbind="unsetRegistryService"
++*/
  
  public class AutoscalerServerComponent {
  
      private static final Log log = LogFactory.getLog(AutoscalerServerComponent.class);
++    private RegistryManager registryManager;
  
      protected void activate(ComponentContext componentContext) throws Exception {
  
@@@ -62,39 -74,55 +73,62 @@@
  //        Thread tropologyDelegatorThread = new Thread(tropologyEventMessageDelegator);
  //        tropologyDelegatorThread.start();
  
--        Thread th = new Thread(new AutoscalerTopologyReceiver());
--        th.start();
--        if (log.isDebugEnabled()) {
--            log.debug("Topology message processor thread started");
--        }
--
--        TopicSubscriber healthStatTopicSubscriber = new TopicSubscriber(Constants.HEALTH_STAT_TOPIC);
--        healthStatTopicSubscriber.setMessageListener(new HealthEventMessageReceiver());
--        Thread healthStatTopicSubscriberThread = new Thread(healthStatTopicSubscriber);
--        healthStatTopicSubscriberThread.start();
--        if (log.isDebugEnabled()) {
--            log.debug("Health Stat event message receiver thread started");
--        }
--
--        HealthEventMessageDelegator healthEventMessageDelegator = new HealthEventMessageDelegator();
--        Thread healthDelegatorThread = new Thread(healthEventMessageDelegator);
--        healthDelegatorThread.start();
--
--        if (log.isDebugEnabled()) {
--            log.debug("Health message processor thread started");
--        }
--
--        // Start scheduler for running rules
--        ExecutorTaskScheduler executor = new ExecutorTaskScheduler();
--        Thread executorThread = new Thread(executor);
--        executorThread.start();
--        if(log.isDebugEnabled()) {
--            log.debug("Rules executor thread started");
--        }
- 
-         if(log.isInfoEnabled()) {
-             log.info("Autoscaler Server Component activated");
-         }
+         
 -        // Adding the registry stored partitions to the information model.
 -        ArrayList<Partition> partitions = this.retreivePartitions();
 -        Iterator<Partition> it = partitions.iterator();
 -        while(it.hasNext()){
 -        	Partition par = it.next();
 -        	PartitionManager.getInstance().addPartitionToInformationModel(par);
 -        }
+         
+         // Adding the registry stored AS policies to the information model.
 -        ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
 -        Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
 -        while(asItr.hasNext()){
 -        	AutoscalePolicy asPolicy = asItr.next();
 -        	PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);        	
 -        }        
+         
 -        if(log.isInfoEnabled()) {
 -            log.info("Autoscaler Server Component activated");
 -        }
++        try {
++			Thread th = new Thread(new AutoscalerTopologyReceiver());
++			th.start();
++			if (log.isDebugEnabled()) {
++				log.debug("Topology message processor thread started");
++			}
++			TopicSubscriber healthStatTopicSubscriber = new TopicSubscriber(
++					Constants.HEALTH_STAT_TOPIC);
++			healthStatTopicSubscriber
++					.setMessageListener(new HealthEventMessageReceiver());
++			Thread healthStatTopicSubscriberThread = new Thread(
++					healthStatTopicSubscriber);
++			healthStatTopicSubscriberThread.start();
++			if (log.isDebugEnabled()) {
++				log.debug("Health Stat event message receiver thread started");
++			}
++			HealthEventMessageDelegator healthEventMessageDelegator = new HealthEventMessageDelegator();
++			Thread healthDelegatorThread = new Thread(
++					healthEventMessageDelegator);
++			healthDelegatorThread.start();
++			if (log.isDebugEnabled()) {
++				log.debug("Health message processor thread started");
++			}
++			// Start scheduler for running rules
++			ExecutorTaskScheduler executor = new ExecutorTaskScheduler();
++			Thread executorThread = new Thread(executor);
++			executorThread.start();
++			if (log.isDebugEnabled()) {
++				log.debug("Rules executor thread started");
++			}
++			this.registryManager = RegistryManager.getInstance();
++			// Adding the registry stored partitions to the information model.
++			ArrayList<Partition> partitions = this.retreivePartitions();
++			Iterator<Partition> it = partitions.iterator();
++			while (it.hasNext()) {
++				Partition par = it.next();
++				PartitionManager.getInstance().addPartitionToInformationModel(
++						par);
++			}
++			ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
++			Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
++			while (asItr.hasNext()) {
++				AutoscalePolicy asPolicy = asItr.next();
++				PolicyManager.getInstance().addASPolicyToInformationModel(
++						asPolicy);
++			}
++			if (log.isInfoEnabled()) {
++				log.info("Autoscaler Server Component activated");
++			}
++		} catch (Throwable e) {
++			log.error("Error in Activating the AS component " + e.getStackTrace());
++		}
      }
      
      protected void setRegistryService(RegistryService registryService) {
@@@ -106,7 -134,7 +140,7 @@@
          } catch (RegistryException e) {
          	String msg = "Failed when retrieving Governance System Registry.";
          	log.error(msg, e);
--        	//throw new CloudControllerException(msg, e);
++        	throw new AutoScalerException(msg, e);
          }
  	 }
  
@@@ -116,4 -144,59 +150,63 @@@
          }
          ServiceReferenceHolder.getInstance().setRegistry(null);
  	}
+ 	
+ 	private ArrayList<Partition> retreivePartitions(){
+ 		ArrayList<Partition> partitionList = new ArrayList<Partition>();
 -		 String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
++		 String [] partitionsResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
+ 		 
 -	        for(String resourcePath : partitionsResourceList){
 -	        	 Object partition = RegistryManager.getInstance().retrieve(resourcePath);
 -	        			 
 -	        	 if (partition != null) {
 -	                 try {
 -	                	 
 -	                     Object dataObj = Deserializer
 -	                             .deserializeFromByteArray((byte[]) partition);
 -	                     if(dataObj instanceof Partition) {
 -	                         partitionList.add( (Partition) dataObj);
 -	                     } else {
 -	                         return null;
 -	                     }
 -	                 } catch (Exception e) {
 -	                   String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
 -	                   log.warn(msg, e);
 -	               }
 -	             }	        		        	
 -	        }
 -	        return partitionList;	        
++	        if (partitionsResourceList != null) {
++				for (String resourcePath : partitionsResourceList) {
++					Object partition = registryManager.retrieve(resourcePath);
++
++					if (partition != null) {
++						try {
++
++							Object dataObj = Deserializer
++									.deserializeFromByteArray((byte[]) partition);
++							if (dataObj instanceof Partition) {
++								partitionList.add((Partition) dataObj);
++							} else {
++								return null;
++							}
++						} catch (Exception e) {
++							String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
++							log.warn(msg, e);
++						}
++					}
++				}
++			}
++			return partitionList;	        
+ 	}
+ 	
+ 	private ArrayList<AutoscalePolicy> retreiveASPolicies(){
+ 		ArrayList<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
 -		 String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
++		 String [] partitionsResourceList = (String [])registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
+ 		 
 -	        for(String resourcePath : partitionsResourceList){
 -	        	 Object asPolicy = RegistryManager.getInstance().retrieve(resourcePath);
 -	        			 
 -	        	 if (asPolicy != null) {
 -	                 try {
 -	                	 
 -	                     Object dataObj = Deserializer
 -	                             .deserializeFromByteArray((byte[]) asPolicy);
 -	                     if(dataObj instanceof AutoscalePolicy) {
 -	                    	 asPolicyList.add( (AutoscalePolicy) dataObj);
 -	                     } else {
 -	                         return null;
 -	                     }
 -	                 } catch (Exception e) {
 -	                   String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
 -	                   log.warn(msg, e);
 -	               }
 -	             }	        		        	
 -	        }
 -	        return asPolicyList;	        
++	        if (partitionsResourceList != null) {
++				for (String resourcePath : partitionsResourceList) {
++					Object asPolicy = registryManager.retrieve(resourcePath);
++
++					if (asPolicy != null) {
++						try {
++
++							Object dataObj = Deserializer
++									.deserializeFromByteArray((byte[]) asPolicy);
++							if (dataObj instanceof AutoscalePolicy) {
++								asPolicyList.add((AutoscalePolicy) dataObj);
++							} else {
++								return null;
++							}
++						} catch (Exception e) {
++							String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
++							log.warn(msg, e);
++						}
++					}
++				}
++			}
++			return asPolicyList;	        
+ 	}
+ 	
+ 	
+ 	
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index 52fd8f7,5ace9d5..63c228e
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@@ -69,8 -74,8 +74,8 @@@ private static final Log log = LogFacto
          
          try {
          	this.validatePartition(partition);
--			regManager.persist(partition, resourcePath);
--	        partitionListMap.put(partitionId, partition);	
++        	RegistryManager.getInstance().persist(partition, resourcePath);
++			addPartitionToInformationModel(partition);	
  		} catch (RegistryException e) {
  			throw new AutoScalerException(e);
  		} catch(PartitionValidationException e){
@@@ -94,8 -105,7 +105,8 @@@
  		
  	}
  	
- 	public boolean validatePartition(Partition partition) throws PartitionValidationException{
- 		return CloudControllerClient.getInstance().validatePartition(partition);
+ 	public boolean validatePartition(Partition partition) throws PartitionValidationException{				
 -		return CloudControllerClient.getInstance().validatePartition(partition);
++		return true;
++		//return CloudControllerClient.getInstance().validatePartition(partition);
  	}
- 
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 4ddeaf5,d8a82c9..0084cf9
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@@ -39,12 -43,12 +43,13 @@@ import org.wso2.carbon.registry.core.ex
  public class PolicyManager {
  	
  	private static final Log log = LogFactory.getLog(PolicyManager.class);
+ 
+ 	private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
++	private static final String deploymentPolicyResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.DEPLOYMENT_POLICY_RESOURCE + "/";
  	
  	private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
- 	private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
  	
  	private static Map<String,DeploymentPolicy> deploymentPolicyListMap = new HashMap<String, DeploymentPolicy>();
- 	private static Map<File,String> deploymentPolicyfileNameMap = new HashMap<File, String>();
  	
  	private static PolicyManager instance = null;
  	 
@@@ -52,49 -56,43 +57,57 @@@
      }
  
      public static PolicyManager getInstance() {
 -            if (instance == null) {
 -                    instance = new PolicyManager ();
 +        if (instance == null) {
 +            synchronized (PolicyManager.class){
 +                if (instance == null) {
 +                    instance = new PolicyManager();
 +                }
              }
 -            return instance;
 +        }
 +        return instance;
      }
      
--    /**
--     * Appends the specified policy
--     * @param policyFile
--     * @param policy
--     * @throws InvalidPolicyException
--     */
- 	public void addAutoscalePolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
- 		if(autoscalePolicyfileNameMap.containsKey(policyFile)){
- 			removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
- 			autoscalePolicyfileNameMap.remove(policyFile);
- 		} else{
- 			autoscalePolicyfileNameMap.put(policyFile, policy.getId());
- 		}
- 		if (!autoscalePolicyListMap.containsKey(policy.getId())) {
 -	public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {			
 -		this.persitASPolicy(asResourcePath+policy.getId(), policy);
++    // Add the policy to information model and persist.
++	public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {	
+ 		this.addASPolicyToInformationModel(policy);
++		this.persitASPolicy(asResourcePath+policy.getId(), policy);		
+ 	}
+ 	
++	// Add the policy to information model and persist.
++	public boolean deployDeploymentscalePolicy(DeploymentPolicy policy) throws InvalidPolicyException {	
++		this.addDeploymentPolicyToInformationModel(policy);
++		this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);	
++		return true;
++	}
++		
+ 	public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException{
+ 		if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) {
  			if(log.isDebugEnabled()){
- 				log.debug("Adding policy :" + policy.getId());
- 			}
- 			autoscalePolicyListMap.put(policy.getId(), policy);
+ 				log.debug("Adding policy :" + asPolicy.getId());
+ 			}			
+ 			autoscalePolicyListMap.put(asPolicy.getId(), asPolicy);
  		} else {
- 			throw new InvalidPolicyException("Specified policy [" + policy.getId()
+ 			throw new InvalidPolicyException("Specified policy [" + asPolicy.getId()
  					+ "] already exists");
  		}
  	}
  	
- 	/**
- 	 * Appends the specified policy
- 	 * @param policy
- 	 * @throws InvalidPolicyException
- 	 */
- 	public void addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
- 		addAutoscalePolicy(new File(policy.getId().concat(".xml")), policy);
+ 	private void persitASPolicy(String asResourcePath, AutoscalePolicy policy){		
+ 		try {
+ 			RegistryManager.getInstance().persist(policy, asResourcePath);
+ 		} catch (RegistryException e) {
+ 			throw new AutoScalerException(e);
+ 		}
+ 	}
+ 	
++	private void persitDeploymentPolicy(String depResourcePath, DeploymentPolicy policy){		
++		try {
++			RegistryManager.getInstance().persist(policy, asResourcePath);
++		} catch (RegistryException e) {
++			throw new AutoScalerException(e);
++		}
 +	}
 +	
  	/**
  	 * Removes the specified policy
  	 * @param policy
@@@ -140,19 -126,13 +141,8 @@@
  		return autoscalePolicyListMap.get(id);
  	}
  
--	/**
--     * Appends the specified policy
--     * @param policyFile
--     * @param policy
--     * @throws InvalidPolicyException
--     */
- 	public void addDeploymentPolicy(File policyFile,DeploymentPolicy policy) throws InvalidPolicyException {
- 		if(deploymentPolicyfileNameMap.containsKey(policyFile)){
- 			removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
- 			deploymentPolicyfileNameMap.remove(policyFile);
- 		} else{
- 			deploymentPolicyfileNameMap.put(policyFile, policy.getId());
- 		}
 -	public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
++	// Add the deployment policy to As in memmory information model. Does not persist.
++	public void addDeploymentPolicyToInformationModel(DeploymentPolicy policy) throws InvalidPolicyException {
  		if (!deploymentPolicyListMap.containsKey(policy.getId())) {
  			if(log.isDebugEnabled()){
  				log.debug("Adding policy :" + policy.getId());

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
index d56c4c0,0d1ac36..1a1a00a
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
@@@ -78,7 -77,7 +77,7 @@@ public class DeploymentPolicyDeployer e
  			DeploymentPolicyReader reader = new DeploymentPolicyReader(policyFile);
  			
  			DeploymentPolicy policy = reader.read();
- 			PolicyManager.getInstance().addDeploymentPolicy(policyFile,policy);
 -			PolicyManager.getInstance().addDeploymentPolicy(policy);
++			PolicyManager.getInstance().addDeploymentPolicyToInformationModel(policy);
  
  			log.info("Successfully deployed the policy specified at "
  					+ deploymentFileData.getAbsolutePath());

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 1aa1820,b5ce6be..5be5fd4
--- 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
@@@ -79,4 -81,22 +81,21 @@@ public class RegistryManager 
  
          }
      }
+     
+     public Object retrieve(String resourcePath) {
 -
+         try {
+             Resource resource = registryService.get(resourcePath);
+            
+             return resource.getContent();
+ 
+         } catch (ResourceNotFoundException ignore) {
+             // this means, we've never persisted info in registry
+             return null;
+         } catch (RegistryException e) {
+             String msg = "Failed to retrieve data from registry.";
+             log.error(msg, e);
+             throw new AutoScalerException(msg, e);
+         }
+ 
+     }
  }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/96ed75f1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --cc components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index 462f39f,1a777e5..3530cc3
--- 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
@@@ -35,5 -35,6 +35,7 @@@ public final class AutoScalerConstants 
  	 */
  	public static final String AUTOSCALER_RESOURCE = "/autoscaler";
  	public static final String PARTITION_RESOURCE = "/partitions";
+ 	public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
++	public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies";
         
  }


[8/9] git commit: Refinement to the AS services

Posted by ud...@apache.org.
Refinement to the AS services


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

Branch: refs/heads/master
Commit: 527e4dc8268b88fe0d7d6b65fb416e78bdf46948
Parents: 5efccf2
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 20:21:10 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 20:21:10 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   | 27 +++++---------------
 .../deployment/policy/DeploymentPolicy.java     | 22 +++++-----------
 .../autoscaler/policy/PolicyManager.java        |  6 ++++-
 3 files changed, 18 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 6ffb204..40d5e66 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -41,7 +41,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
 	private static final Log log = LogFactory.getLog(AutoScalerServiceImpl.class);
 	
 	public Partition[] getAllAvailablePartitions(){
-		return PartitionManager.getInstance().getAllPartitions();		
+		return PartitionManager.getInstance().getAllPartitions();
 	}
 	
 	public DeploymentPolicy[] getAllDeploymentPolicies(){
@@ -82,42 +82,27 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
 
 	@Override
 	public Partition getPartition(String partitionId) {
-		for(Partition par: this.getAllAvailablePartitions()){
-			if(par.getId().equals(partitionId)){
-				return par;
-			}
-		}
-		return null;
+		return PartitionManager.getInstance().getPartitionById(partitionId);		
 	}
 
 	@Override
 	public DeploymentPolicy getDeploymentPolicy(String deploymentPolicyId) {
-		for(DeploymentPolicy depPol : this.getAllDeploymentPolicies()){
-			if(depPol.getId().equals(deploymentPolicyId)){
-				return depPol;
-			}
-		}
-		return null;
+		return PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId);
 	}
 
 	@Override
 	public AutoscalePolicy getAutoscalingPolicy(String autoscalingPolicyId) {
-		for(AutoscalePolicy asPol : this.getAllAutoScalingPolicy()){
-			if(asPol.getId().equals(autoscalingPolicyId))
-				return asPol;
-		}
-		return null;
+		return PolicyManager.getInstance().getAutoscalePolicy(autoscalingPolicyId);
 	}
 
 	@Override
 	public PartitionGroup[] getPartitionGroups(String deploymentPolicyId) {	
-		this.getDeploymentPolicy(deploymentPolicyId).getAllPartitions();
-		return null;
+		return PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups();
 	}
 
 	@Override
 	public Partition[] getPartitionsOfDeploymentPolicy(String depPolicy, String partitonGroupId) {
-		DeploymentPolicy depPol = this.getDeploymentPolicy(depPolicy);
+		DeploymentPolicy depPol = PolicyManager.getInstance().getDeploymentPolicy(depPolicy);
 		if(null == depPol)
 			return null;
 		

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
index c955fff..e8b3478 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/deployment/policy/DeploymentPolicy.java
@@ -36,7 +36,6 @@ public class DeploymentPolicy implements Serializable{
     private static final long serialVersionUID = 5675507196284400099L;
     private String id;
 	private PartitionGroup[] partitionGroups;
-	private Partition[] allPartitions;
 
     /**
      * Gets the value of the id property.
@@ -62,27 +61,20 @@ public class DeploymentPolicy implements Serializable{
         this.id = value;
     }
     
-    @SuppressWarnings("unchecked")
     public void setPartitionGroups(PartitionGroup[] groups) {
-    	ArrayList<Partition> partitionslist = new ArrayList<Partition>();
         this.partitionGroups = groups;
-        /*
-        if(allPartitions == null) {
-            allPartitions = new ArrayList<Partition>();
-        }
-        */
-        for (PartitionGroup partitionGroup : groups) {
+    }
+    
+    @SuppressWarnings("unchecked")
+	public Partition[] getAllPartitions() {
+    	ArrayList<Partition> partitionslist = new ArrayList<Partition>();
+    	for (PartitionGroup partitionGroup : this.getPartitionGroups()) {
             Partition[] partitions = partitionGroup.getPartitions();
             if(partitions != null) {
             	partitionslist.addAll(Arrays.asList(partitions));
             }
         }
-        
-       this.allPartitions = partitionslist.toArray(new Partition[0]);
-    }
-    
-    public Partition[] getAllPartitions() {
-        return allPartitions;
+        return partitionslist.toArray(new Partition[0]);
     }
         
     public Partition getPartitionById(String id){

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/527e4dc8/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index d0de31c..c7d4605 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -71,13 +71,17 @@ public class PolicyManager {
 	public boolean deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {	
 		this.addASPolicyToInformationModel(policy);
 		this.persitASPolicy(asResourcePath+ policy.getId(), policy);	
+		
+		log.info("AutoScaling policy  :" + policy.getId() + " is deployed successfully.");
 		return true;
 	}
 	
 	// Add the policy to information model and persist.
 	public boolean deployDeploymentscalePolicy(DeploymentPolicy policy) throws InvalidPolicyException {	
 		this.addDeploymentPolicyToInformationModel(policy);
-		this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);	
+		this.persitDeploymentPolicy(deploymentPolicyResourcePath+ policy.getId(), policy);
+		
+		log.info("Deployment policy  :" + policy.getId() + " is deployed successfully.");
 		return true;
 	}
 		


[3/9] git commit: Retreive partitions/policies from registry at startup AS refacter, etc

Posted by ud...@apache.org.
Retreive partitions/policies from registry at startup
AS refacter, etc


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

Branch: refs/heads/master
Commit: 13ca853af2c686b8a9bffc6a7ce9d70713f4c445
Parents: 976e555
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 10:29:10 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 10:29:10 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |  2 +-
 .../internal/AutoscalerServerComponent.java     | 85 ++++++++++++++++-
 .../autoscaler/partition/PartitionManager.java  | 26 ++----
 .../partition/deployers/PartitionDeployer.java  |  2 +-
 .../autoscaler/policy/PolicyManager.java        | 78 +++-------------
 .../deployers/AutoscalerPolicyDeployer.java     |  7 +-
 .../deployers/DeploymentPolicyDeployer.java     |  6 +-
 .../autoscaler/registry/RegistryManager.java    | 21 ++++-
 .../stratos/autoscaler/util/AutoscalerUtil.java |  3 -
 .../stratos/autoscaler/util/Deserializer.java   | 96 ++++++++++++++++++++
 10 files changed, 231 insertions(+), 95 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 584a724..ca47d52 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -70,7 +70,7 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{
 
 	@Override
 	public boolean addPartition(Partition partition) {
-        return PartitionManager.getInstance().addPartition(partition);
+        return PartitionManager.getInstance().deployNewPartitoion(partition);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
index 2d05f4e..40cd83a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/internal/AutoscalerServerComponent.java
@@ -18,15 +18,27 @@
  */
 package org.apache.stratos.autoscaler.internal;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.commons.collections.IterableMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
 import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver;
+import org.apache.stratos.autoscaler.partition.PartitionManager;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.rule.ExecutorTaskScheduler;
 import org.apache.stratos.autoscaler.topology.AutoscalerTopologyReceiver;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.apache.stratos.autoscaler.util.Deserializer;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
+import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
 import org.apache.stratos.messaging.util.Constants;
+import org.drools.lang.DRLExpressions.type_return;
 import org.osgi.service.component.ComponentContext;
 import org.wso2.carbon.registry.api.RegistryException;
 import org.wso2.carbon.registry.core.service.RegistryService;
@@ -91,7 +103,23 @@ public class AutoscalerServerComponent {
         if(log.isDebugEnabled()) {
             log.debug("Rules executor thread started");
         }
-
+        
+        // Adding the registry stored partitions to the information model.
+        ArrayList<Partition> partitions = this.retreivePartitions();
+        Iterator<Partition> it = partitions.iterator();
+        while(it.hasNext()){
+        	Partition par = it.next();
+        	PartitionManager.getInstance().addPartitionToInformationModel(par);
+        }
+        
+        // Adding the registry stored AS policies to the information model.
+        ArrayList<AutoscalePolicy> asPolicies = this.retreiveASPolicies();
+        Iterator<AutoscalePolicy> asItr = asPolicies.iterator();
+        while(asItr.hasNext()){
+        	AutoscalePolicy asPolicy = asItr.next();
+        	PolicyManager.getInstance().addASPolicyToInformationModel(asPolicy);        	
+        }        
+        
         if(log.isInfoEnabled()) {
             log.info("Autoscaler Server Component activated");
         }
@@ -116,4 +144,59 @@ public class AutoscalerServerComponent {
         }
         ServiceReferenceHolder.getInstance().setRegistry(null);
 	}
+	
+	private ArrayList<Partition> retreivePartitions(){
+		ArrayList<Partition> partitionList = new ArrayList<Partition>();
+		 String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.PARTITION_RESOURCE);
+		 
+	        for(String resourcePath : partitionsResourceList){
+	        	 Object partition = RegistryManager.getInstance().retrieve(resourcePath);
+	        			 
+	        	 if (partition != null) {
+	                 try {
+	                	 
+	                     Object dataObj = Deserializer
+	                             .deserializeFromByteArray((byte[]) partition);
+	                     if(dataObj instanceof Partition) {
+	                         partitionList.add( (Partition) dataObj);
+	                     } else {
+	                         return null;
+	                     }
+	                 } catch (Exception e) {
+	                   String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+	                   log.warn(msg, e);
+	               }
+	             }	        		        	
+	        }
+	        return partitionList;	        
+	}
+	
+	private ArrayList<AutoscalePolicy> retreiveASPolicies(){
+		ArrayList<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
+		 String [] partitionsResourceList = (String [])RegistryManager.getInstance().retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE);
+		 
+	        for(String resourcePath : partitionsResourceList){
+	        	 Object asPolicy = RegistryManager.getInstance().retrieve(resourcePath);
+	        			 
+	        	 if (asPolicy != null) {
+	                 try {
+	                	 
+	                     Object dataObj = Deserializer
+	                             .deserializeFromByteArray((byte[]) asPolicy);
+	                     if(dataObj instanceof AutoscalePolicy) {
+	                    	 asPolicyList.add( (AutoscalePolicy) dataObj);
+	                     } else {
+	                         return null;
+	                     }
+	                 } catch (Exception e) {
+	                   String msg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+	                   log.warn(msg, e);
+	               }
+	             }	        		        	
+	        }
+	        return asPolicyList;	        
+	}
+	
+	
+	
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index 51a10e1..5ace9d5 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@ -60,7 +60,10 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		return partitionListMap.containsKey(partitionId);
 	}
 	
-	public boolean addPartition( Partition partition) throws AutoScalerException{
+	/*
+	 * Deploy a new partition to Auto Scaler.
+	 */
+	public boolean deployNewPartitoion( Partition partition) throws AutoScalerException{
 		String partitionId = partition.getId();
 		if(this.partitionExist(partition.getId()))
 			throw new AutoScalerException("A parition with the ID " +  partitionId + " already exist.");
@@ -83,6 +86,10 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		return true;
 	}
 	
+	public void addPartitionToInformationModel(Partition partition) {
+		partitionListMap.put(partition.getId(), partition);
+	}
+	
 	
 	
 	public Partition getPartitionById(String partitionId){
@@ -98,22 +105,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		
 	}
 	
-	public boolean validatePartition(Partition partition) throws PartitionValidationException{		
+	public boolean validatePartition(Partition partition) throws PartitionValidationException{				
 		return CloudControllerClient.getInstance().validatePartition(partition);
 	}
-
-	public void updatePartition(Partition newPartition,Partition oldPartition){
-		if(!oldPartition.getId().equals(newPartition.getId()))
-			throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
-		
-		oldPartition=newPartition;
-		//overwrite the registry resource.
-		try {
-			RegistryManager.getInstance().persist(
-					newPartition, this.partitionResourcePath + newPartition.getId());
-		} catch (RegistryException e) {
-			throw new AutoScalerException(e);
-		}
-	}
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
index 840f227..216f5d6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
@@ -84,7 +84,7 @@ public class PartitionDeployer extends AbstractDeployer {
             while (it.hasNext()) {
                 Partition partition = it.next();
                 try {
-                    PartitionManager.getInstance().addPartition(partition);                  
+                    PartitionManager.getInstance().deployNewPartitoion(partition);                  
                 } catch (Exception e) {
                     String msg =
                                  "Invalid partition: " + partition.getId() + " in file: " +

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index 65d7e59..d8a82c9 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -47,10 +47,8 @@ public class PolicyManager {
 	private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
 	
 	private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
-	private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
 	
 	private static Map<String,DeploymentPolicy> deploymentPolicyListMap = new HashMap<String, DeploymentPolicy>();
-	private static Map<File,String> deploymentPolicyfileNameMap = new HashMap<File, String>();
 	
 	private static PolicyManager instance = null;
 	 
@@ -70,21 +68,19 @@ public class PolicyManager {
      * @param policy
      * @throws InvalidPolicyException
      */
-	public void addAutoscalePolicy(File policyFile,AutoscalePolicy policy) throws InvalidPolicyException {
-		if(autoscalePolicyfileNameMap.containsKey(policyFile)){
-			removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
-			autoscalePolicyfileNameMap.remove(policyFile);
-		} else{
-			autoscalePolicyfileNameMap.put(policyFile, policy.getId());
-		}
-		if (!autoscalePolicyListMap.containsKey(policy.getId())) {
+	public void deployAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {			
+		this.persitASPolicy(asResourcePath+policy.getId(), policy);
+		this.addASPolicyToInformationModel(policy);
+	}
+	
+	public void addASPolicyToInformationModel(AutoscalePolicy asPolicy) throws InvalidPolicyException{
+		if (!autoscalePolicyListMap.containsKey(asPolicy.getId())) {
 			if(log.isDebugEnabled()){
-				log.debug("Adding policy :" + policy.getId());
-			}
-			autoscalePolicyListMap.put(policy.getId(), policy);
-			this.persitASPolicy(asResourcePath+policy.getId(), policy);
+				log.debug("Adding policy :" + asPolicy.getId());
+			}			
+			autoscalePolicyListMap.put(asPolicy.getId(), asPolicy);
 		} else {
-			throw new InvalidPolicyException("Specified policy [" + policy.getId()
+			throw new InvalidPolicyException("Specified policy [" + asPolicy.getId()
 					+ "] already exists");
 		}
 	}
@@ -96,15 +92,6 @@ public class PolicyManager {
 			throw new AutoScalerException(e);
 		}
 	}
-
-	/**
-	 * Appends the specified policy
-	 * @param policy
-	 * @throws InvalidPolicyException
-	 */
-	public void addAutoscalePolicy(AutoscalePolicy policy) throws InvalidPolicyException {
-		addAutoscalePolicy(new File(policy.getId().concat(".xml")), policy);
-	}
 	
 	/**
 	 * Removes the specified policy
@@ -123,18 +110,6 @@ public class PolicyManager {
 	}
 	
 	/**
-	 * Removes the specified policy
-	 * @param policyFile
-	 * @throws InvalidPolicyException
-	 */
-	public void removeAutoscalePolicy(File policyFile) throws InvalidPolicyException {
-		if(autoscalePolicyfileNameMap.containsKey(policyFile)){
-			removeAutoscalePolicy(autoscalePolicyfileNameMap.get(policyFile));
-			autoscalePolicyfileNameMap.remove(policyFile);
-		} 
-	}
-	
-	/**
 	 * Returns a List of the Autoscale policies contained in this manager.
 	 * @return
 	 */
@@ -157,13 +132,7 @@ public class PolicyManager {
      * @param policy
      * @throws InvalidPolicyException
      */
-	public void addDeploymentPolicy(File policyFile,DeploymentPolicy policy) throws InvalidPolicyException {
-		if(deploymentPolicyfileNameMap.containsKey(policyFile)){
-			removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
-			deploymentPolicyfileNameMap.remove(policyFile);
-		} else{
-			deploymentPolicyfileNameMap.put(policyFile, policy.getId());
-		}
+	public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
 		if (!deploymentPolicyListMap.containsKey(policy.getId())) {
 			if(log.isDebugEnabled()){
 				log.debug("Adding policy :" + policy.getId());
@@ -174,16 +143,7 @@ public class PolicyManager {
 					+ "] already exists");
 		}
 	}
-	
-	/**
-	 * Appends the specified policy
-	 * @param policy
-	 * @throws InvalidPolicyException
-	 */
-	public void addDeploymentPolicy(DeploymentPolicy policy) throws InvalidPolicyException {
-		addDeploymentPolicy(new File(policy.getId().concat(".xml")), policy);
-	}
-	
+		
 	/**
 	 * Removes the specified policy
 	 * @param policy
@@ -201,18 +161,6 @@ public class PolicyManager {
 	}
 	
 	/**
-	 * Removes the specified policy
-	 * @param policyFile
-	 * @throws InvalidPolicyException
-	 */
-	public void removeDeploymentPolicy(File policyFile) throws InvalidPolicyException {
-		if(deploymentPolicyfileNameMap.containsKey(policyFile)){
-			removeDeploymentPolicy(deploymentPolicyfileNameMap.get(policyFile));
-			deploymentPolicyfileNameMap.remove(policyFile);
-		} 
-	}
-	
-	/**
 	 * Returns a List of the Deployment policies contained in this manager.
 	 * @return
 	 */

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
index 141e95b..861dab8 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/AutoscalerPolicyDeployer.java
@@ -78,7 +78,7 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
 			AutoscalerPolicyReader reader = new AutoscalerPolicyReader(policyFile);
 			
 			AutoscalePolicy policy = reader.read();
-			PolicyManager.getInstance().addAutoscalePolicy(policyFile,policy);
+			PolicyManager.getInstance().deployAutoscalePolicy(policy);
 
 			log.info("Successfully deployed the policy specified at "
 					+ deploymentFileData.getAbsolutePath());
@@ -95,7 +95,8 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
 	
 	@Override
 	public void undeploy(String fileName) throws DeploymentException {
-		File policyFile = new File(fileName);
+		/*
+		 
 		String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
 		try {
 			PolicyManager.getInstance().removeAutoscalePolicy(policyFile);
@@ -104,7 +105,7 @@ public class AutoscalerPolicyDeployer extends AbstractDeployer {
 			log.error("unable to remove policy " + policyName , e);
 			throw new DeploymentException("unable to remove policy " + policyName ,e);
 		}
-
+		*/
 	}
 	
 	

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
index d56c4c0..0d1ac36 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/deployers/DeploymentPolicyDeployer.java
@@ -28,7 +28,6 @@ import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
 
 /**
@@ -78,7 +77,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
 			DeploymentPolicyReader reader = new DeploymentPolicyReader(policyFile);
 			
 			DeploymentPolicy policy = reader.read();
-			PolicyManager.getInstance().addDeploymentPolicy(policyFile,policy);
+			PolicyManager.getInstance().addDeploymentPolicy(policy);
 
 			log.info("Successfully deployed the policy specified at "
 					+ deploymentFileData.getAbsolutePath());
@@ -95,6 +94,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
 	
 	@Override
 	public void undeploy(String fileName) throws DeploymentException {
+		/*
 		File policyFile = new File(fileName);
 		String policyName = policyFile.getName().replaceAll("." + fileExt + "$", "");
 		try {
@@ -104,7 +104,7 @@ public class DeploymentPolicyDeployer extends AbstractDeployer {
 			log.error("unable to remove policy " + policyName , e);
 			throw new DeploymentException("unable to remove policy " + policyName ,e);
 		}
-
+		*/
 	}
 	
 	

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/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 791e4da..b5ce6be 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
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
 import org.wso2.carbon.registry.core.Registry;
 import org.wso2.carbon.registry.core.Resource;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.exceptions.ResourceNotFoundException;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
@@ -73,11 +74,29 @@ public class RegistryManager {
             }
         
         } catch (Exception e) {
-            String msg = "Failed to persist the cloud controller data in registry.";
+            String msg = "Failed to persist the data in registry.";
             registryService.rollbackTransaction();
             log.error(msg, e);
             throw new AutoScalerException(msg, e);
 
         }
     }
+    
+    public Object retrieve(String resourcePath) {
+
+        try {
+            Resource resource = registryService.get(resourcePath);
+           
+            return resource.getContent();
+
+        } catch (ResourceNotFoundException ignore) {
+            // this means, we've never persisted info in registry
+            return null;
+        } catch (RegistryException e) {
+            String msg = "Failed to retrieve data from registry.";
+            log.error(msg, e);
+            throw new AutoScalerException(msg, e);
+        }
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 4428336..28527f2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -163,9 +163,6 @@ public class AutoscalerUtil {
         if (!destPartition.isPropertiesSpecified()) {
             destPartition.setProperties(srcPartition.getProperties());
         }
-        
-        // update the partitions with the extra properties in the deployment policy.
-		PartitionManager.getInstance().updatePartition(destPartition, srcPartition);
     }
 
     public static Properties getProperties(final OMElement elt) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/13ca853a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
new file mode 100644
index 0000000..5c97143
--- /dev/null
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/Deserializer.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied.  See the License for the 
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class Deserializer {
+    
+    private static final Log log = LogFactory.getLog(Deserializer.class);
+
+    /**
+     * We deserialize only if the path to the serialized object file is exists.
+     * @param filePath path to the serialized object file
+     * @return the object obtained after deserialization or null if file isn't valid.
+     * @throws Exception
+     */
+    public static Object deserialize(String filePath) throws Exception {
+
+        ObjectInputStream objIn = null; 
+        Object obj = null;
+        
+        if(!new File(filePath).isFile()){
+            return obj;
+        }
+        
+        try {
+
+            objIn = new ObjectInputStream(new FileInputStream(filePath));
+            obj = objIn.readObject();
+
+        } catch (IOException e) {
+            log.error("Failed to deserialize the file at "+filePath , e);
+            throw e;
+            
+        } catch (ClassNotFoundException e) {
+            log.error("Failed to deserialize the file at "+filePath , e);
+            throw e;
+            
+        } finally {
+            if (objIn != null) {
+                objIn.close();
+            }
+        }
+        
+        return obj;
+
+    }
+    
+    /**
+     * Deserialize a byte array and retrieve the object.
+     * @param bytes bytes to be deserialized
+     * @return the deserialized {@link Object}
+     * @throws Exception if the deserialization is failed.
+     */
+    public static Object deserializeFromByteArray(byte[] bytes) throws Exception {
+
+        ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
+        ObjectInput in = null;
+        try {
+            in = new ObjectInputStream(bis);
+            Object o = in.readObject();
+
+            return o;
+
+        } finally {
+            bis.close();
+            if (in != null) {
+                in.close();
+            }
+        }
+    }
+
+}


[6/9] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Posted by ud...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos


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

Branch: refs/heads/master
Commit: e5fd231f552cc20cdfc58fce318a10dd266240c2
Parents: 7709385 de73990
Author: Udara Liyanage <ud...@wso2.com>
Authored: Tue Dec 10 17:12:43 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Tue Dec 10 17:12:43 2013 -0500

----------------------------------------------------------------------
 .../adc/mgt/client/AutoscalerServiceClient.java       |  4 ++--
 .../endpoint/bean/util/converter/PojoConverter.java   | 14 +++++++-------
 .../stratos/rest/endpoint/services/ServiceUtils.java  |  2 +-
 .../pom.xml                                           |  8 ++++++--
 4 files changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------



[2/9] git commit: Registry based deployment for Auto scaler partitions

Posted by ud...@apache.org.
Registry based deployment for Auto scaler partitions


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

Branch: refs/heads/master
Commit: 976e555b5e9d5c8edd0a6967c982ac2ffb90821e
Parents: f7c9b9c
Author: Udara Liyanage <ud...@wso2.com>
Authored: Sat Dec 7 22:00:12 2013 -0500
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Sat Dec 7 22:22:49 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/partition/PartitionManager.java      | 16 ++++++++++------
 .../stratos/autoscaler/policy/PolicyManager.java    | 15 +++++++++++++++
 .../autoscaler/policy/model/AutoscalePolicy.java    |  5 ++++-
 .../autoscaler/policy/model/LoadAverage.java        |  7 +++++--
 .../autoscaler/policy/model/LoadThresholds.java     |  5 ++++-
 .../autoscaler/policy/model/MemoryConsumption.java  |  7 +++++--
 .../autoscaler/policy/model/RequestsInFlight.java   |  7 +++++--
 .../autoscaler/util/AutoScalerConstants.java        |  1 +
 .../stratos/autoscaler/util/AutoscalerUtil.java     |  5 +++++
 9 files changed, 54 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index c86176e..51a10e1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -97,19 +98,22 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
 		
 	}
 	
-	public boolean validatePartition(Partition partition) throws PartitionValidationException{
-		return true;
-		//return CloudControllerClient.getInstance().validatePartition(partition);
+	public boolean validatePartition(Partition partition) throws PartitionValidationException{		
+		return CloudControllerClient.getInstance().validatePartition(partition);
 	}
 
-	public void updatePartition(Partition newPartition,Partition oldPartition) throws RegistryException {
+	public void updatePartition(Partition newPartition,Partition oldPartition){
 		if(!oldPartition.getId().equals(newPartition.getId()))
 			throw new AutoScalerException("Can not update.Id s of the two partitions did not match.");
 		
 		oldPartition=newPartition;
 		//overwrite the registry resource.
-		RegistryManager.getInstance().persist(
-				newPartition, this.partitionResourcePath + newPartition.getId());
+		try {
+			RegistryManager.getInstance().persist(
+					newPartition, this.partitionResourcePath + newPartition.getId());
+		} catch (RegistryException e) {
+			throw new AutoScalerException(e);
+		}
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
index f2ab9ae..65d7e59 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/PolicyManager.java
@@ -29,8 +29,12 @@ import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.InvalidPolicyException;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 /**
  * 
@@ -39,6 +43,8 @@ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
 public class PolicyManager {
 	
 	private static final Log log = LogFactory.getLog(PolicyManager.class);
+
+	private static final String asResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE+ AutoScalerConstants.AS_POLICY_RESOURCE + "/";
 	
 	private static Map<String,AutoscalePolicy> autoscalePolicyListMap = new HashMap<String, AutoscalePolicy>();
 	private static Map<File,String> autoscalePolicyfileNameMap = new HashMap<File, String>();
@@ -76,12 +82,21 @@ public class PolicyManager {
 				log.debug("Adding policy :" + policy.getId());
 			}
 			autoscalePolicyListMap.put(policy.getId(), policy);
+			this.persitASPolicy(asResourcePath+policy.getId(), policy);
 		} else {
 			throw new InvalidPolicyException("Specified policy [" + policy.getId()
 					+ "] already exists");
 		}
 	}
 	
+	private void persitASPolicy(String asResourcePath, AutoscalePolicy policy){		
+		try {
+			RegistryManager.getInstance().persist(policy, asResourcePath);
+		} catch (RegistryException e) {
+			throw new AutoScalerException(e);
+		}
+	}
+
 	/**
 	 * Appends the specified policy
 	 * @param policy

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
index 22727a4..9efde70 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/AutoscalePolicy.java
@@ -19,11 +19,14 @@
 
 package org.apache.stratos.autoscaler.policy.model;
 
+import java.io.Serializable;
+
 /**
  * The model class for Autoscale-policy definition.
  */
-public class AutoscalePolicy {
+public class AutoscalePolicy implements Serializable {
 
+	private static final long serialVersionUID = 1754373171598089271L;
 	private LoadThresholds loadThresholds;
 	private String id;
 	private String displayName;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
index a8147f2..9a64de0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadAverage.java
@@ -19,12 +19,15 @@
 
 package org.apache.stratos.autoscaler.policy.model;
 
+import java.io.Serializable;
+
 /**
  * The model class for LoadAverage definition.
  */
-public class LoadAverage {
+public class LoadAverage implements Serializable{
 
-    private float average;
+	private static final long serialVersionUID = -2109860338694123343L;
+	private float average;
     private float secondDerivative;
     private float gradient;
     private float scaleDownMarginOfGradient;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
index abbb868..61677d7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/LoadThresholds.java
@@ -19,11 +19,14 @@
 
 package org.apache.stratos.autoscaler.policy.model;
 
+import java.io.Serializable;
+
 /**
  * The model class for LoadThresholds definition.
  */
-public class LoadThresholds {
+public class LoadThresholds implements Serializable{
 
+	private static final long serialVersionUID = -8148571245537655867L;
 	private RequestsInFlight requestsInFlight;
 	private MemoryConsumption memoryConsumption;
 	private LoadAverage loadAverage;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
index c9a720b..9696f41 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/MemoryConsumption.java
@@ -19,12 +19,15 @@
 
 package org.apache.stratos.autoscaler.policy.model;
 
+import java.io.Serializable;
+
 /**
  * The model class for MemoryConsumption definition.
  */
-public class MemoryConsumption {
+public class MemoryConsumption implements Serializable {
 
-    private float average;
+	private static final long serialVersionUID = 5755634390464664663L;
+	private float average;
     private float secondDerivative;
     private float gradient;
     private float scaleDownMarginOfGradient;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
index fc40016..b56e305 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/policy/model/RequestsInFlight.java
@@ -19,12 +19,15 @@
 
 package org.apache.stratos.autoscaler.policy.model;
 
+import java.io.Serializable;
+
 /**
  * The model class for RequestsInFlight definition.
  */
-public class RequestsInFlight {
+public class RequestsInFlight implements Serializable{
 
-    private float average;
+	private static final long serialVersionUID = 8113964958155294290L;
+	private float average;
     private float secondDerivative;
     private float gradient;
     private float scaleDownMarginOfGradient;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/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 462f39f..1a777e5 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
@@ -35,5 +35,6 @@ public final class AutoScalerConstants {
 	 */
 	public static final String AUTOSCALER_RESOURCE = "/autoscaler";
 	public static final String PARTITION_RESOURCE = "/partitions";
+	public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
        
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/976e555b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index caacebd..4428336 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.ClusterContext;
 import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.InvalidPartitionException;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.PolicyValidationException;
@@ -42,6 +43,7 @@ import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 import org.apache.stratos.cloud.controller.pojo.Properties;
 import org.apache.stratos.cloud.controller.pojo.Property;
 import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 /**
  * This class contains utility methods used by Autoscaler.
@@ -161,6 +163,9 @@ public class AutoscalerUtil {
         if (!destPartition.isPropertiesSpecified()) {
             destPartition.setProperties(srcPartition.getProperties());
         }
+        
+        // update the partitions with the extra properties in the deployment policy.
+		PartitionManager.getInstance().updatePartition(destPartition, srcPartition);
     }
 
     public static Properties getProperties(final OMElement elt) {