You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2013/12/14 10:41:39 UTC
[1/2] git commit: setting properties of partitions in pojo converter
Updated Branches:
refs/heads/master fa7d5acb0 -> d1ddd6eb7
setting properties of partitions in pojo converter
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/fe3de0cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/fe3de0cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/fe3de0cb
Branch: refs/heads/master
Commit: fe3de0cbe522db8d3469c683e89d0d7615538843
Parents: fa7d5ac
Author: Nirmal Fernando <ni...@apache.org>
Authored: Sat Dec 14 15:08:53 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Sat Dec 14 15:08:53 2013 +0530
----------------------------------------------------------------------
.../rest/endpoint/bean/util/converter/PojoConverter.java | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/fe3de0cb/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 8171299..d6085fb 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@ -314,11 +314,11 @@ public class PojoConverter {
partitionBeans.provider = partition.getProvider();
partitionBeans.partitionMin = partition.getPartitionMin();
partitionBeans.partitionMax = partition.getPartitionMax();
- //properties are not added currently, TODO if required
- //if(partition[i].getProperties() != null) {
- // List<PropertyBean> propertyBeans = getPropertyBeans(partition[i].getProperties());
- // partition.property = propertyBeans;
- //}
+ //properties
+ if(partition.getProperties() != null) {
+ List<PropertyBean> propertyBeans = getPropertyBeans(partition.getProperties());
+ partitionBeans.property = propertyBeans;
+ }
return partitionBeans;
}
[2/2] git commit: persisting network partitions in registry,
retrieve at start up, NetworkPartitionContext should be serializable,
making Partition Manager thread safe
Posted by ni...@apache.org.
persisting network partitions in registry, retrieve at start up, NetworkPartitionContext should be serializable, making Partition Manager thread safe
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/d1ddd6eb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/d1ddd6eb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/d1ddd6eb
Branch: refs/heads/master
Commit: d1ddd6eb7e5ae346c748d6b2d85630455c03c71f
Parents: fe3de0c
Author: Nirmal Fernando <ni...@apache.org>
Authored: Sat Dec 14 15:11:20 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Sat Dec 14 15:11:20 2013 +0530
----------------------------------------------------------------------
.../autoscaler/NetworkPartitionContext.java | 11 ++++-
.../stratos/autoscaler/PartitionContext.java | 4 +-
.../internal/AutoscalerServerComponent.java | 10 +++++
.../autoscaler/partition/PartitionManager.java | 39 +++++++++++-------
.../autoscaler/registry/RegistryManager.java | 42 ++++++++++++++++++++
.../autoscaler/util/AutoScalerConstants.java | 1 +
6 files changed, 90 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
index 1f7f029..ae53601 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/NetworkPartitionContext.java
@@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@@ -29,8 +30,9 @@ import java.util.Map;
* Holds runtime data of a network partition.
*
*/
-public class NetworkPartitionContext {
+public class NetworkPartitionContext implements Serializable {
+ private static final long serialVersionUID = -5458149704820463584L;
private static final Log log = LogFactory.getLog(NetworkPartitionContext.class);
private String id;
@@ -203,6 +205,13 @@ public class NetworkPartitionContext {
+ @Override
+ public String toString() {
+ return "NetworkPartitionContext [id=" + id + ", defaultLbClusterId=" + defaultLbClusterId +
+ ", partitionAlgorithm=" + partitionAlgorithm + ", minInstanceCount=" +
+ minInstanceCount + ", maxInstanceCount=" + maxInstanceCount + "]";
+ }
+
public int getCurrentPartitionIndex() {
return currentPartitionIndex;
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
index 0f46893..2843e16 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/PartitionContext.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -39,8 +40,9 @@ import java.util.concurrent.CopyOnWriteArrayList;
*
*/
-public class PartitionContext {
+public class PartitionContext implements Serializable{
+ private static final long serialVersionUID = 5822689534291741272L;
private static final Log log = LogFactory.getLog(PartitionContext.class);
private String partitionId;
private String serviceName;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/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 e5c7964..a68800b 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
@@ -20,6 +20,7 @@ package org.apache.stratos.autoscaler.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.NetworkPartitionContext;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
import org.apache.stratos.autoscaler.exception.AutoScalerException;
import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageDelegator;
@@ -89,6 +90,15 @@ public class AutoscalerServerComponent {
Partition partition = partitionIterator.next();
PartitionManager.getInstance().addPartitionToInformationModel(partition);
}
+
+ // Adding the network partitions stored in registry to the information model
+ List<NetworkPartitionContext> nwPartitionCtxts = RegistryManager.getInstance().retrieveNetworkPartitions();
+ Iterator<NetworkPartitionContext> nwPartitionIterator = nwPartitionCtxts.iterator();
+ while (nwPartitionIterator.hasNext()) {
+ NetworkPartitionContext nwPartition = nwPartitionIterator.next();
+ PartitionManager.getInstance().addNetworkPartitionContext(nwPartition);
+ }
+
List<AutoscalePolicy> asPolicies = RegistryManager.getInstance().retrieveASPolicies();
Iterator<AutoscalePolicy> asPolicyIterator = asPolicies.iterator();
while (asPolicyIterator.hasNext()) {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/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 d8daead..b80e46e 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
@@ -28,11 +28,9 @@ 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.registry.RegistryManager;
-import org.apache.stratos.autoscaler.util.AutoScalerConstants;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -45,7 +43,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
// Partitions against partitionID
private static Map<String,Partition> partitions = new HashMap<String, Partition>();
- private List<NetworkPartitionContext> networkPartitions;
+// private List<NetworkPartitionContext> networkPartitions;
/*
* Key - partition id
@@ -62,9 +60,6 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
private static PartitionManager instance;
- private String partitionResourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE
- + AutoScalerConstants.PARTITION_RESOURCE + "/";
-
private PartitionManager(){
networkPartitionContexts = new HashMap<String, NetworkPartitionContext>();
// networkPartitions = new ArrayList<NetworkPartitionContext>();
@@ -72,10 +67,14 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
}
public static PartitionManager getInstance(){
- if(null == instance)
- return new PartitionManager();
- else
- return instance;
+ if (instance == null) {
+ synchronized (PartitionManager.class) {
+ if (instance == null) {
+ instance = new PartitionManager();
+ }
+ }
+ }
+ return instance;
}
public boolean partitionExist(String partitionId){
@@ -119,9 +118,9 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
return this.networkPartitionContexts.get(networkPartitionId);
}
- public List<NetworkPartitionContext> getAllNetworkPartitions() {
- return this.networkPartitions;
- }
+// public List<NetworkPartitionContext> getAllNetworkPartitions() {
+// return this.networkPartitions;
+// }
// /**
// * TODO make {@link NetworkPartitionContext}s extensible.
@@ -176,10 +175,20 @@ private static final Log log = LogFactory.getLog(PartitionManager.class);
public void deployNewNetworkPartitions(DeploymentPolicy depPolicy) {
for(PartitionGroup partitionGroup: depPolicy.getPartitionGroups()){
- NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId());
- networkPartitionContexts.put(partitionGroup.getId(), networkPartitionContext);
+ String id = partitionGroup.getId();
+ if (!networkPartitionContexts.containsKey(id)) {
+ NetworkPartitionContext networkPartitionContext =
+ new NetworkPartitionContext(
+ id);
+ addNetworkPartitionContext(networkPartitionContext);
+ RegistryManager.getInstance().persistNetworkPartition(networkPartitionContext);
+ }
}
}
+
+ public void addNetworkPartitionContext(NetworkPartitionContext ctxt) {
+ networkPartitionContexts.put(ctxt.getId(), ctxt);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/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 ba1afdf..c22a0dc 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
@@ -2,6 +2,7 @@ package org.apache.stratos.autoscaler.registry;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.NetworkPartitionContext;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
import org.apache.stratos.autoscaler.util.Deserializer;
@@ -91,6 +92,14 @@ public class RegistryManager {
partition.getId(), partition.getProvider(), partition.getPartitionMin(), partition.getPartitionMax()));
}
}
+
+ public void persistNetworkPartition(NetworkPartitionContext nwPartitionCtxt) {
+ String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.NETWORK_PARTITION_RESOURCE + "/";
+ persist(nwPartitionCtxt, resourcePath);
+ if(log.isDebugEnabled()) {
+ log.debug("NetworkPartitionContext written to registry: "+nwPartitionCtxt.toString());
+ }
+ }
public void persistAutoscalerPolicy(AutoscalePolicy autoscalePolicy) {
String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.AS_POLICY_RESOURCE + "/" + autoscalePolicy.getId();
@@ -158,6 +167,39 @@ public class RegistryManager {
}
return partitionList;
}
+
+ public List<NetworkPartitionContext> retrieveNetworkPartitions() {
+ List<NetworkPartitionContext> nwPartitionList = new ArrayList<NetworkPartitionContext>();
+ RegistryManager registryManager = RegistryManager.getInstance();
+ String[] partitionsResourceList = (String[]) registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE +
+ AutoScalerConstants.NETWORK_PARTITION_RESOURCE);
+
+ if (partitionsResourceList != null) {
+ NetworkPartitionContext nwPartition;
+ for (String resourcePath : partitionsResourceList) {
+ Object serializedObj = registryManager.retrieve(resourcePath);
+ if (serializedObj != null) {
+ try {
+
+ Object dataObj = Deserializer.deserializeFromByteArray((byte[]) serializedObj);
+ if (dataObj instanceof NetworkPartitionContext) {
+ nwPartition = (NetworkPartitionContext) dataObj;
+ if(log.isDebugEnabled()) {
+ log.debug(String.format("NetworkPartitionContext read from registry: "+nwPartition.toString()));
+ }
+ nwPartitionList.add(nwPartition);
+ } else {
+ return null;
+ }
+ } catch (Exception e) {
+ String msg = "Unable to retrieve data from Registry. Hence, any historical NetworkPartitionContext will not get reflected.";
+ log.warn(msg, e);
+ }
+ }
+ }
+ }
+ return nwPartitionList;
+ }
public List<AutoscalePolicy> retrieveASPolicies() {
List<AutoscalePolicy> asPolicyList = new ArrayList<AutoscalePolicy>();
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/d1ddd6eb/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 3530cc3..9702cc8 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,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 NETWORK_PARTITION_RESOURCE = "/network-partitions";
public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies";
public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies";