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:57 UTC
[3/9] git commit: Retreive partitions/policies from registry at
startup AS refacter, etc
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();
+ }
+ }
+ }
+
+}