Updated Branches: refs/heads/master 43145f58c -> ca3fdf71b
fix STRATOS-289 Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/ca3fdf71 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/ca3fdf71 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/ca3fdf71 Branch: refs/heads/master Commit: ca3fdf71b6b1cd5372705017ccaccc2c03cdd8af Parents: 43145f5 Author: Lahiru Sandaruwan <[email protected]> Authored: Fri Jan 17 09:41:20 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Fri Jan 17 09:41:20 2014 +0530 ---------------------------------------------------------------------- .../autoscaler/NetworkPartitionContext.java | 169 +++++++++---------- .../autoscaler/api/AutoScalerServiceImpl.java | 28 +-- .../internal/AutoscalerServerComponent.java | 10 +- .../health/AutoscalerHealthStatReceiver.java | 2 +- .../autoscaler/partition/PartitionManager.java | 37 ++-- .../autoscaler/registry/RegistryManager.java | 41 ++--- .../rule/AutoscalerRuleEvaluator.java | 10 +- .../autoscaler/rule/RuleTasksDelegator.java | 22 +-- .../autoscaler/util/AutoScalerConstants.java | 2 +- .../stratos/autoscaler/util/AutoscalerUtil.java | 25 +-- 10 files changed, 177 insertions(+), 169 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 09a8277..9bb5c91 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 @@ -35,15 +35,15 @@ import java.util.Map; */ public class NetworkPartitionContext implements Serializable{ - private static final long serialVersionUID = -8851073480764734511L; private static final Log log = LogFactory.getLog(NetworkPartitionContext.class); + private static final long serialVersionUID = 572769304374110159L; private final String id; - private String defaultLbClusterId; - - private Map<String, String> serviceNameToLBClusterIdMap; - - private Map<String, String> clusterIdToLBClusterIdMap; +// private String defaultLbClusterId; +// +// private Map<String, String> serviceNameToLBClusterIdMap; +// +// private Map<String, String> clusterIdToLBClusterIdMap; private final String partitionAlgorithm; @@ -79,8 +79,8 @@ public class NetworkPartitionContext implements Serializable{ this.id = id; this.partitionAlgorithm = partitionAlgo; this.partitions = partitions; - this.setServiceToLBClusterId(new HashMap<String, String>()); - this.setClusterIdToLBClusterIdMap(new HashMap<String, String>()); +// this.setServiceToLBClusterId(new HashMap<String, String>()); +// this.setClusterIdToLBClusterIdMap(new HashMap<String, String>()); // partitionToMemberCountMap = new HashMap<String, Integer>(); partitionCtxts = new HashMap<String, PartitionContext>(); requestsInFlight = new RequestsInFlight(); @@ -89,86 +89,86 @@ public class NetworkPartitionContext implements Serializable{ } - public String getDefaultLbClusterId() { - - return this.defaultLbClusterId; - - } - - public void setDefaultLbClusterId(final String defaultLbClusterId) { - - this.defaultLbClusterId = defaultLbClusterId; - - } - - public String getLBClusterIdOfService(final String serviceName) { - - return (String) this.serviceNameToLBClusterIdMap.get(serviceName); - - } - - public Map<String, String> getServiceToLBClusterId() { - - return this.serviceNameToLBClusterIdMap; - - } - - public void setServiceToLBClusterId(final Map<String, String> serviceToLBClusterId) { - - this.serviceNameToLBClusterIdMap = serviceToLBClusterId; - - } - - public void addServiceLB(final String serviceName, final String lbClusterId) { - this.serviceNameToLBClusterIdMap.put(serviceName, lbClusterId); - } - - public String getLBClusterIdOfCluster(final String clusterId) { - - return (String) this.clusterIdToLBClusterIdMap.get(clusterId); - - } - - public Map<String, String> getClusterIdToLBClusterIdMap() { - - return this.clusterIdToLBClusterIdMap; - - } - - public void setClusterIdToLBClusterIdMap(final Map<String, String> clusterIdToLBClusterIdMap) { - - this.clusterIdToLBClusterIdMap = clusterIdToLBClusterIdMap; - - } - - - public boolean isLBExist(final String clusterId) { - - return clusterId != null && - (clusterId.equals(this.defaultLbClusterId) || - this.serviceNameToLBClusterIdMap.containsValue(clusterId) || this.clusterIdToLBClusterIdMap.containsValue(clusterId)); - - } - - public boolean isDefaultLBExist() { - - return defaultLbClusterId != null; - - } +// public String getDefaultLbClusterId() { +// +// return this.defaultLbClusterId; +// +// } +// +// public void setDefaultLbClusterId(final String defaultLbClusterId) { +// +// this.defaultLbClusterId = defaultLbClusterId; +// +// } - public boolean isServiceLBExist(String serviceName) { +// public String getLBClusterIdOfService(final String serviceName) { +// +// return (String) this.serviceNameToLBClusterIdMap.get(serviceName); +// +// } - return this.serviceNameToLBClusterIdMap.containsKey(serviceName) && - this.serviceNameToLBClusterIdMap.get(serviceName) != null; +// public Map<String, String> getServiceToLBClusterId() { +// +// return this.serviceNameToLBClusterIdMap; +// +// } +// +// public void setServiceToLBClusterId(final Map<String, String> serviceToLBClusterId) { +// +// this.serviceNameToLBClusterIdMap = serviceToLBClusterId; +// +// } +// +// public void addServiceLB(final String serviceName, final String lbClusterId) { +// this.serviceNameToLBClusterIdMap.put(serviceName, lbClusterId); +// } - } +// public String getLBClusterIdOfCluster(final String clusterId) { +// +// return (String) this.clusterIdToLBClusterIdMap.get(clusterId); +// +// } +// +// public Map<String, String> getClusterIdToLBClusterIdMap() { +// +// return this.clusterIdToLBClusterIdMap; +// +// } +// +// public void setClusterIdToLBClusterIdMap(final Map<String, String> clusterIdToLBClusterIdMap) { +// +// this.clusterIdToLBClusterIdMap = clusterIdToLBClusterIdMap; +// +// } - public boolean isClusterLBExist(String clusterId) { - return this.clusterIdToLBClusterIdMap.containsKey(clusterId) && - this.clusterIdToLBClusterIdMap.get(clusterId) != null; +// public boolean isLBExist(final String clusterId) { +// +// return clusterId != null && +// (clusterId.equals(this.defaultLbClusterId) || +// this.serviceNameToLBClusterIdMap.containsValue(clusterId) || this.clusterIdToLBClusterIdMap.containsValue(clusterId)); +// +// } +// +// public boolean isDefaultLBExist() { +// +// return defaultLbClusterId != null; +// +// } +// +// public boolean isServiceLBExist(String serviceName) { +// +// return this.serviceNameToLBClusterIdMap.containsKey(serviceName) && +// this.serviceNameToLBClusterIdMap.get(serviceName) != null; +// +// } - } +// public boolean isClusterLBExist(String clusterId) { +// +// return this.clusterIdToLBClusterIdMap.containsKey(clusterId) && +// this.clusterIdToLBClusterIdMap.get(clusterId) != null; +// +// } public int getMinInstanceCount() { return minInstanceCount; @@ -222,8 +222,7 @@ public class NetworkPartitionContext implements Serializable{ @Override public String toString() { - return "NetworkPartitionContext [id=" + id + ", defaultLbClusterId=" + defaultLbClusterId + - ", partitionAlgorithm=" + partitionAlgorithm + ", minInstanceCount=" + + return "NetworkPartitionContext [id=" + id + "partitionAlgorithm=" + partitionAlgorithm + ", minInstanceCount=" + minInstanceCount + ", maxInstanceCount=" + maxInstanceCount + "]"; } @@ -494,7 +493,7 @@ public class NetworkPartitionContext implements Serializable{ // public void setPartitions(Partition[] partitions) { // this.partitions = partitions; // for (Partition partition: partitions){ -// partitionToMemberCountMap.put(partition.getId(), 0); +// partitionToMemberCountMap.put(partition.getNetworkPartitionId(), 0); // } // } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 ae1b436..7a4ff9e 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 @@ -18,11 +18,9 @@ */ package org.apache.stratos.autoscaler.api; -import java.util.ArrayList; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.exception.InvalidPartitionException; @@ -36,6 +34,8 @@ import org.apache.stratos.autoscaler.policy.PolicyManager; import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; import org.apache.stratos.cloud.controller.deployment.partition.Partition; +import java.util.ArrayList; + /** * Auto Scaler Service API is responsible getting Partitions and Policies. */ @@ -143,9 +143,9 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ boolean exist = false; for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { - NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + NetworkPartitionLbHolder nwPartitionLbHolder = partitionManager.getNetworkPartitionLbHolder(partitionGroup.getId()); - if (nwPartitionCtxt.isLBExist(lbClusterId)) { + if (nwPartitionLbHolder.isLBExist(lbClusterId)) { exist = true; break; } @@ -163,12 +163,12 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { - NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + NetworkPartitionLbHolder nwPartitionLbHolder = partitionManager.getNetworkPartitionLbHolder(partitionGroup.getId()); - if (!nwPartitionCtxt.isDefaultLBExist()) { + if (!nwPartitionLbHolder.isDefaultLBExist()) { if (log.isDebugEnabled()) { log.debug("Default LB does not exist in [network partition] " + - nwPartitionCtxt.getId() + " of [Deployment Policy] " + + nwPartitionLbHolder.getNetworkPartitionId() + " of [Deployment Policy] " + deploymentPolicyId); } @@ -185,12 +185,12 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { - NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + NetworkPartitionLbHolder nwPartitionLbHolder = partitionManager.getNetworkPartitionLbHolder(partitionGroup.getId()); - if (!nwPartitionCtxt.isServiceLBExist(serviceName)) { + if (!nwPartitionLbHolder.isServiceLBExist(serviceName)) { if (log.isDebugEnabled()) { log.debug("Service LB [service name] "+serviceName+" does not exist in [network partition] " + - nwPartitionCtxt.getId() + " of [Deployment Policy] " + + nwPartitionLbHolder.getNetworkPartitionId() + " of [Deployment Policy] " + deploymentPolicyId); } @@ -207,12 +207,12 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface{ for (PartitionGroup partitionGroup : PolicyManager.getInstance().getDeploymentPolicy(deploymentPolicyId).getPartitionGroups()) { - NetworkPartitionContext nwPartitionCtxt = partitionManager.getNetworkPartition(partitionGroup.getId()); + NetworkPartitionLbHolder nwPartitionLbHolder = partitionManager.getNetworkPartitionLbHolder(partitionGroup.getId()); - if (!nwPartitionCtxt.isClusterLBExist(clusterId)) { + if (!nwPartitionLbHolder.isClusterLBExist(clusterId)) { if (log.isDebugEnabled()) { log.debug("Cluster LB [cluster id] "+clusterId+" does not exist in [network partition] " + - nwPartitionCtxt.getId() + " of [Deployment Policy] " + + nwPartitionLbHolder.getNetworkPartitionId() + " of [Deployment Policy] " + deploymentPolicyId); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 2a1e5df..f3aad50 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,7 +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.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.exception.AutoScalerException; import org.apache.stratos.autoscaler.message.receiver.health.AutoscalerHealthStatReceiver; @@ -90,11 +90,11 @@ public class AutoscalerServerComponent { } // Adding the network partitions stored in registry to the information model - List<NetworkPartitionContext> nwPartitionCtxts = RegistryManager.getInstance().retrieveNetworkPartitions(); - Iterator<NetworkPartitionContext> nwPartitionIterator = nwPartitionCtxts.iterator(); + List<NetworkPartitionLbHolder> nwPartitionHolders = RegistryManager.getInstance().retrieveNetworkPartitionLbHolders(); + Iterator<NetworkPartitionLbHolder> nwPartitionIterator = nwPartitionHolders.iterator(); while (nwPartitionIterator.hasNext()) { - NetworkPartitionContext nwPartition = nwPartitionIterator.next(); - PartitionManager.getInstance().addNetworkPartitionContext(nwPartition); + NetworkPartitionLbHolder nwPartition = nwPartitionIterator.next(); + PartitionManager.getInstance().addNetworkPartitionLbHolder(nwPartition); } List<AutoscalePolicy> asPolicies = RegistryManager.getInstance().retrieveASPolicies(); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/AutoscalerHealthStatReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/AutoscalerHealthStatReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/AutoscalerHealthStatReceiver.java index 7d4ca29..7843088 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/AutoscalerHealthStatReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/health/AutoscalerHealthStatReceiver.java @@ -752,7 +752,7 @@ public class AutoscalerHealthStatReceiver implements Runnable { partitionCtxt.removeActiveMemberById(memberId); - String lbClusterId = AutoscalerRuleEvaluator.getLbClusterId(partitionCtxt, nwPartitionCtxt); + String lbClusterId = AutoscalerRuleEvaluator.getLbClusterId(partitionCtxt, nwPartitionCtxt.getId()); partitionCtxt.addPendingMember(ccClient.spawnAnInstance(partition, clusterId, lbClusterId, nwPartitionCtxt.getId())); if (log.isInfoEnabled()) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 dc6bda4..e39e8c2 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 @@ -21,7 +21,7 @@ package org.apache.stratos.autoscaler.partition; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.exception.AutoScalerException; @@ -47,7 +47,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); * Key - network partition id * Value - reference to NetworkPartition */ - private Map<String, NetworkPartitionContext> networkPartitionContexts; + private Map<String, NetworkPartitionLbHolder> networkPartitionLbHolders; private static class Holder { static final PartitionManager INSTANCE = new PartitionManager(); @@ -58,7 +58,7 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); } private PartitionManager(){ - networkPartitionContexts = new HashMap<String, NetworkPartitionContext>(); + networkPartitionLbHolders = new HashMap<String, NetworkPartitionLbHolder>(); } @@ -95,8 +95,8 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); partitions.put(partition.getId(), partition); } - public NetworkPartitionContext getNetworkPartition(String networkPartitionId) { - return this.networkPartitionContexts.get(networkPartitionId); + public NetworkPartitionLbHolder getNetworkPartitionLbHolder(String networkPartitionId) { + return this.networkPartitionLbHolders.get(networkPartitionId); } public Partition getPartitionById(String partitionId){ @@ -121,12 +121,11 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); public void deployNewNetworkPartitions(DeploymentPolicy depPolicy) { for(PartitionGroup partitionGroup: depPolicy.getPartitionGroups()){ String id = partitionGroup.getId(); - if (!networkPartitionContexts.containsKey(id)) { - NetworkPartitionContext networkPartitionContext = - new NetworkPartitionContext( - id, partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()); - addNetworkPartitionContext(networkPartitionContext); - RegistryManager.getInstance().persistNetworkPartition(networkPartitionContext); + if (!networkPartitionLbHolders.containsKey(id)) { + NetworkPartitionLbHolder networkPartitionLbHolder = + new NetworkPartitionLbHolder(id); + addNetworkPartitionLbHolder(networkPartitionLbHolder); + RegistryManager.getInstance().persistNetworkPartitionIbHolder(networkPartitionLbHolder); } } @@ -135,12 +134,12 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); public void undeployNetworkPartitions(DeploymentPolicy depPolicy) { for(PartitionGroup partitionGroup: depPolicy.getPartitionGroups()){ String id = partitionGroup.getId(); - if (networkPartitionContexts.containsKey(id)) { - NetworkPartitionContext netPartCtx = this.getNetworkPartition(id); + if (networkPartitionLbHolders.containsKey(id)) { + NetworkPartitionLbHolder netPartCtx = this.getNetworkPartitionLbHolder(id); // remove from information model - this.removeNetworkPartitionContext(netPartCtx); + this.removeNetworkPartitionLbHolder(netPartCtx); //remove from the registry - RegistryManager.getInstance().removeNetworkPartition(this.getNetworkPartition(id).getId()); + RegistryManager.getInstance().removeNetworkPartition(this.getNetworkPartitionLbHolder(id).getNetworkPartitionId()); }else{ String errMsg = "Network partition context not found for policy " + depPolicy; log.error(errMsg); @@ -150,12 +149,12 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); } } - private void removeNetworkPartitionContext(NetworkPartitionContext netPartCtx) { - networkPartitionContexts.remove(netPartCtx.getId()); + private void removeNetworkPartitionLbHolder(NetworkPartitionLbHolder nwPartLbHolder) { + networkPartitionLbHolders.remove(nwPartLbHolder.getNetworkPartitionId()); } - public void addNetworkPartitionContext(NetworkPartitionContext ctxt) { - networkPartitionContexts.put(ctxt.getId(), ctxt); + public void addNetworkPartitionLbHolder(NetworkPartitionLbHolder nwPartLbHolder) { + networkPartitionLbHolders.put(nwPartLbHolder.getNetworkPartitionId(), nwPartLbHolder); } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 f886a6c..dd046b3 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,19 +2,19 @@ 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.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; +import org.apache.stratos.autoscaler.exception.AutoScalerException; import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; +import org.apache.stratos.autoscaler.util.AutoScalerConstants; import org.apache.stratos.autoscaler.util.Deserializer; +import org.apache.stratos.autoscaler.util.Serializer; +import org.apache.stratos.autoscaler.util.ServiceReferenceHolder; import org.apache.stratos.cloud.controller.deployment.partition.Partition; 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; -import org.apache.stratos.autoscaler.util.Serializer; import java.util.ArrayList; import java.util.List; @@ -93,11 +93,12 @@ public class RegistryManager { } } - public void persistNetworkPartition(NetworkPartitionContext nwPartitionCtxt) { - String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.NETWORK_PARTITION_RESOURCE + "/"+nwPartitionCtxt.getId(); - persist(nwPartitionCtxt, resourcePath); + public void persistNetworkPartitionIbHolder(NetworkPartitionLbHolder nwPartitionLbHolder) { + String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants + .NETWORK_PARTITION_LB_HOLDER_RESOURCE + "/"+nwPartitionLbHolder.getNetworkPartitionId(); + persist(nwPartitionLbHolder, resourcePath); if(log.isDebugEnabled()) { - log.debug("NetworkPartitionContext written to registry: "+nwPartitionCtxt.toString()); + log.debug("NetworkPartitionContext written to registry: "+nwPartitionLbHolder.toString()); } } @@ -167,37 +168,37 @@ public class RegistryManager { return partitionList; } - public List<NetworkPartitionContext> retrieveNetworkPartitions() { - List<NetworkPartitionContext> nwPartitionList = new ArrayList<NetworkPartitionContext>(); + public List<NetworkPartitionLbHolder> retrieveNetworkPartitionLbHolders() { + List<NetworkPartitionLbHolder> nwPartitionLbHolderList = new ArrayList<NetworkPartitionLbHolder>(); RegistryManager registryManager = RegistryManager.getInstance(); String[] partitionsResourceList = (String[]) registryManager.retrieve(AutoScalerConstants.AUTOSCALER_RESOURCE + - AutoScalerConstants.NETWORK_PARTITION_RESOURCE); + AutoScalerConstants.NETWORK_PARTITION_LB_HOLDER_RESOURCE); if (partitionsResourceList != null) { - NetworkPartitionContext nwPartition; + NetworkPartitionLbHolder nwPartitionLbHolder; 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 (dataObj instanceof NetworkPartitionLbHolder) { + nwPartitionLbHolder = (NetworkPartitionLbHolder) dataObj; if(log.isDebugEnabled()) { - log.debug(String.format("NetworkPartitionContext read from registry: "+nwPartition.toString())); + log.debug(String.format("NetworkPartitionLbHolder read from registry: " + nwPartitionLbHolder.toString())); } - nwPartitionList.add(nwPartition); + nwPartitionLbHolderList.add(nwPartitionLbHolder); } else { return null; } } catch (Exception e) { - String msg = "Unable to retrieve data from Registry. Hence, any historical NetworkPartitionContext will not get reflected."; + String msg = "Unable to retrieve data from Registry. Hence, any historical NetworkPartitionLbHolder will not get reflected."; log.warn(msg, e); } } } } - return nwPartitionList; + return nwPartitionLbHolderList; } public List<AutoscalePolicy> retrieveASPolicies() { @@ -283,7 +284,7 @@ public class RegistryManager { } public void removeNetworkPartition(String networkPartition){ - String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.NETWORK_PARTITION_RESOURCE; + String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE + AutoScalerConstants.NETWORK_PARTITION_LB_HOLDER_RESOURCE; this.delete(resourcePath); if(log.isDebugEnabled()) { log.debug(String.format("Network partition deleted from registry: [id] %s" , http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java index 21ab342..bba7051 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java @@ -21,8 +21,9 @@ package org.apache.stratos.autoscaler.rule; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.PartitionContext; +import org.apache.stratos.autoscaler.partition.PartitionManager; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.*; @@ -145,17 +146,18 @@ public class AutoscalerRuleEvaluator { return ksession; } - public static String getLbClusterId(PartitionContext partitionContext, NetworkPartitionContext ctxt) { + public static String getLbClusterId(PartitionContext partitionContext, String nwpartitionId) { Properties props = partitionContext.getProperties(); String value = (String) props.get(org.apache.stratos.messaging.util.Constants.LOAD_BALANCER_REF); String lbClusterId = null; + NetworkPartitionLbHolder networkPartitionLbHolder = PartitionManager.getInstance().getNetworkPartitionLbHolder(nwpartitionId); if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) { - lbClusterId = ctxt.getDefaultLbClusterId(); + lbClusterId = networkPartitionLbHolder.getDefaultLbClusterId(); } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) { String serviceName = partitionContext.getServiceName(); - lbClusterId = ctxt.getLBClusterIdOfService(serviceName); + lbClusterId = networkPartitionLbHolder.getLBClusterIdOfService(serviceName); } return lbClusterId; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index 7ce2de5..823b4d6 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@ -3,7 +3,7 @@ package org.apache.stratos.autoscaler.rule; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.Constants; -import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.PartitionContext; import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm; import org.apache.stratos.autoscaler.algorithm.OneAfterAnother; @@ -58,12 +58,15 @@ public class RuleTasksDelegator { try { String nwPartitionId = partitionContext.getNetworkPartitionId(); - NetworkPartitionContext ctxt = +// NetworkPartitionContext ctxt = +// PartitionManager.getInstance() +// .getNetworkPartitionLbHolder(nwPartitionId); + NetworkPartitionLbHolder lbHolder = PartitionManager.getInstance() - .getNetworkPartition(nwPartitionId); + .getNetworkPartitionLbHolder(nwPartitionId); - String lbClusterId = getLbClusterId(lbRefType, partitionContext, ctxt); + String lbClusterId = getLbClusterId(lbRefType, partitionContext, lbHolder); MemberContext memberContext = CloudControllerClient.getInstance() @@ -84,18 +87,17 @@ public class RuleTasksDelegator { public static String getLbClusterId(String lbRefType, PartitionContext partitionCtxt, - NetworkPartitionContext nwPartitionCtxt) { + NetworkPartitionLbHolder networkPartitionLbHolder) { String lbClusterId = null; if (lbRefType != null) { if (lbRefType.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) { - lbClusterId = PartitionManager.getInstance().getNetworkPartition(nwPartitionCtxt.getId()).getDefaultLbClusterId(); + lbClusterId = networkPartitionLbHolder.getDefaultLbClusterId(); // lbClusterId = nwPartitionCtxt.getDefaultLbClusterId(); } else if (lbRefType.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) { String serviceName = partitionCtxt.getServiceName(); - lbClusterId = PartitionManager.getInstance().getNetworkPartition(serviceName) - .getLBClusterIdOfService(nwPartitionCtxt.getId()); + lbClusterId = networkPartitionLbHolder.getLBClusterIdOfService(serviceName); // lbClusterId = nwPartitionCtxt.getLBClusterIdOfService(serviceName); } else { log.warn("Invalid LB reference type defined: [value] "+lbRefType); @@ -103,8 +105,8 @@ public class RuleTasksDelegator { } if (log.isDebugEnabled()){ log.debug(String.format("Getting LB id for spawning instance [lb reference] %s ," + - " [partition] %s [network partition] %s [Lb id] %s " , lbRefType, partitionCtxt.getPartitionId(), - nwPartitionCtxt.getId(), lbClusterId)); + " [partition] %s [network partition] %s [Lb id] %s ", lbRefType, partitionCtxt.getPartitionId(), + networkPartitionLbHolder.getNetworkPartitionId(), lbClusterId)); } return lbClusterId; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 9702cc8..5395d96 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,7 +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 NETWORK_PARTITION_LB_HOLDER_RESOURCE = "/network-partitions"; public static final String AS_POLICY_RESOURCE = "/policies/autoscalingPolicies"; public static final String DEPLOYMENT_POLICY_RESOURCE = "/policies/deploymentPolicies"; http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ca3fdf71/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 95ae035..438860c 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 @@ -24,6 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.MemberStatsContext; import org.apache.stratos.autoscaler.NetworkPartitionContext; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; import org.apache.stratos.autoscaler.PartitionContext; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; @@ -132,13 +133,13 @@ public class AutoscalerUtil { if(MemberStatus.Activated.equals(member.getStatus())){ partitionContext.addActiveMember(memberContext); -// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); +// networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); // partitionContext.incrementCurrentActiveMemberCount(1); } else if(MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())){ partitionContext.addPendingMember(memberContext); -// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); +// networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); } else if(MemberStatus.Suspended.equals(member.getStatus())){ // partitionContext.addFaultyMember(memberId); } @@ -215,9 +216,11 @@ public class AutoscalerUtil { // partition group = network partition context for (PartitionGroup partitionGroup : deploymentPolicy.getPartitionGroups()) { - NetworkPartitionContext networkPartitionContext = + NetworkPartitionLbHolder networkPartitionLbHolder = PartitionManager.getInstance() - .getNetworkPartition(partitionGroup.getId()); + .getNetworkPartitionLbHolder(partitionGroup.getId()); +// PartitionManager.getInstance() +// .getNetworkPartitionLbHolder(partitionGroup.getId()); // FIXME pick a random partition Partition partition = partitionGroup.getPartitions()[new Random().nextInt(partitionGroup.getPartitions().length)]; @@ -227,6 +230,8 @@ public class AutoscalerUtil { partitionContext.setNetworkPartitionId(partitionGroup.getId()); partitionContext.setMinimumMemberCount(1);//Here it hard codes the minimum value as one for LB cartridge partitions + NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(), + partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()) ; for (Member member : cluster.getMembers()) { String memberId = member.getMemberId(); if (member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getId())) { @@ -237,12 +242,12 @@ public class AutoscalerUtil { if (MemberStatus.Activated.equals(member.getStatus())) { partitionContext.addActiveMember(memberContext); -// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); +// networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); // partitionContext.incrementCurrentActiveMemberCount(1); } else if (MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())) { partitionContext.addPendingMember(memberContext); -// networkPartitionContext.increaseMemberCountOfPartition(partition.getId(), 1); +// networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1); } else if (MemberStatus.Suspended.equals(member.getStatus())) { // partitionContext.addFaultyMember(memberId); } @@ -266,15 +271,15 @@ public class AutoscalerUtil { String value = props.getProperty(Constants.LOAD_BALANCER_REF); if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) { - networkPartitionContext.setDefaultLbClusterId(clusterId); + networkPartitionLbHolder.setDefaultLbClusterId(clusterId); } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) { String serviceName = cluster.getServiceName(); // TODO: check if this is correct - networkPartitionContext.addServiceLB(serviceName, clusterId); + networkPartitionLbHolder.addServiceLB(serviceName, clusterId); if (loadBalancedServiceType != null && !loadBalancedServiceType.isEmpty()) { - networkPartitionContext.addServiceLB(loadBalancedServiceType, clusterId); + networkPartitionLbHolder.addServiceLB(loadBalancedServiceType, clusterId); if (log.isDebugEnabled()) { log.debug("Added cluster id " + clusterId + " as the LB cluster id for service type " + loadBalancedServiceType); } @@ -384,7 +389,7 @@ public class AutoscalerUtil { // for (PartitionGroup partitionGroup: deploymentPolicy.getPartitionGroups()){ // // NetworkPartitionContext networkPartitionContext -// = PartitionManager.getInstance().getNetworkPartition(partitionGroup.getId()); +// = PartitionManager.getInstance().getNetworkPartitionLbHolder(partitionGroup.getNetworkPartitionId()); // clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext); // } // return null;
