Updated Branches: refs/heads/master cbe7b4c6f -> 9504cbb21
use arrays for partitions groups instead of List since axis2 does not support objects with list. Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/9504cbb2 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/9504cbb2 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/9504cbb2 Branch: refs/heads/master Commit: 9504cbb2181d549bcbdb461b01928e8e2eeba5c3 Parents: cbe7b4c Author: Udara Liyanage <[email protected]> Authored: Fri Dec 6 15:19:43 2013 -0500 Committer: Udara Liyanage <[email protected]> Committed: Fri Dec 6 15:19:43 2013 -0500 ---------------------------------------------------------------------- .../stratos/autoscaler/ClusterContext.java | 6 +++- .../stratos/autoscaler/PartitionContext.java | 20 ++++++++++++-- .../deployment/policy/DeploymentPolicy.java | 25 +++++++++++++---- .../internal/AutoscalerServerComponent.java | 29 ++++++++++++++++++++ .../autoscaler/partition/PartitionManager.java | 5 ++-- .../processors/AutoscalerTopologyReceiver.java | 11 +++++--- .../autoscaler/util/AutoScalerConstants.java | 6 ++++ .../stratos/autoscaler/util/AutoscalerUtil.java | 6 ++-- 8 files changed, 91 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java index 2e9acf4..b844ccc 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/ClusterContext.java @@ -65,7 +65,7 @@ public class ClusterContext { private Map<String, String> memberPartitionMap; private DeploymentPolicy deploymentPolicy; - public ClusterContext(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy, List<Partition> partitions) { + public ClusterContext(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy, Partition[] partitions) { this.clusterId = clusterId; this.serviceId = serviceId; @@ -274,5 +274,9 @@ public class ClusterContext { public String getPartitonOfMember(String memberId){ return this.memberPartitionMap.get(memberId); } + + public boolean memberExist(String memberId){ + return this.memberPartitionMap.containsKey(memberId); + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 741e509..10cd652 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 @@ -50,6 +50,9 @@ public class PartitionContext { // members to be terminated private List<String> obsoletedMembers; + // Contains the members that CEP notified as faulty members. + private List<String> faultyMembers; + // active members private List<MemberContext> activeMembers; @@ -59,6 +62,7 @@ public class PartitionContext { this.pendingMembers = new ArrayList<MemberContext>(); this.activeMembers = new ArrayList<MemberContext>(); this.obsoletedMembers = new CopyOnWriteArrayList<String>(); + this.faultyMembers = new CopyOnWriteArrayList<String>(); Thread th = new Thread(new PendingMemberWatcher(this)); th.start(); } @@ -160,6 +164,18 @@ public class PartitionContext { public boolean removeObsoleteMember(String memberId) { return this.obsoletedMembers.remove(memberId); } + + public void addFaultyMember(String memberId) { + this.faultyMembers.add(memberId); + } + + public boolean removeFaultyMember(String memberId) { + return this.faultyMembers.remove(memberId); + } + + public List<String> getFaultyMembers() { + return this.faultyMembers; + } public long getExpiryTime() { return expiryTime; @@ -172,7 +188,7 @@ public class PartitionContext { public List<String> getObsoletedMembers() { return obsoletedMembers; } - + public void setObsoletedMembers(List<String> obsoletedMembers) { this.obsoletedMembers = obsoletedMembers; } @@ -218,5 +234,5 @@ public class PartitionContext { } } - } + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 c253d9a..c955fff 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,7 @@ public class DeploymentPolicy implements Serializable{ private static final long serialVersionUID = 5675507196284400099L; private String id; private PartitionGroup[] partitionGroups; - private List<Partition> allPartitions; + private Partition[] allPartitions; /** * Gets the value of the id property. @@ -64,22 +64,27 @@ public class DeploymentPolicy implements Serializable{ @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) { Partition[] partitions = partitionGroup.getPartitions(); if(partitions != null) { - allPartitions.addAll(Arrays.asList(partitions)); + partitionslist.addAll(Arrays.asList(partitions)); } } + + this.allPartitions = partitionslist.toArray(new Partition[0]); } - public List<Partition> getAllPartitions() { + public Partition[] getAllPartitions() { return allPartitions; } - + public Partition getPartitionById(String id){ for(Partition p : this.getAllPartitions()){ if(p.getId().equalsIgnoreCase(id)) @@ -87,6 +92,7 @@ public class DeploymentPolicy implements Serializable{ } return null; } + /** * Gets the value of the partition-groups. */ @@ -95,8 +101,17 @@ public class DeploymentPolicy implements Serializable{ return this.partitionGroups; } + public PartitionGroup getPartitionGroup(String partitionGrpId){ + for(PartitionGroup parGrp : this.getPartitionGroups()){ + if(parGrp.getId().equals(partitionGrpId)) + return parGrp; + + } + return null; + } + public String toString() { - return "Deployment Policy: "+this.id; + return "Deployment Policy: " + this.id; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 a02411d..74a18fd 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 @@ -24,14 +24,23 @@ import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageD import org.apache.stratos.autoscaler.message.receiver.health.HealthEventMessageReceiver; import org.apache.stratos.autoscaler.rule.ExecutorTaskScheduler; import org.apache.stratos.autoscaler.topology.processors.AutoscalerTopologyReceiver; +import org.apache.stratos.autoscaler.util.ServiceReferenceHolder; import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber; import org.apache.stratos.messaging.util.Constants; 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" */ public class AutoscalerServerComponent { @@ -87,4 +96,24 @@ public class AutoscalerServerComponent { log.info("Autoscaler Server Component activated"); } } + + protected void setRegistryService(RegistryService registryService) { + if (log.isDebugEnabled()) { + log.debug("Setting the Registry Service"); + } + try { + ServiceReferenceHolder.getInstance().setRegistry(registryService.getGovernanceSystemRegistry()); + } catch (RegistryException e) { + String msg = "Failed when retrieving Governance System Registry."; + log.error(msg, e); + //throw new CloudControllerException(msg, e); + } + } + + protected void unsetRegistryService(RegistryService registryService) { + if (log.isDebugEnabled()) { + log.debug("Unsetting the Registry Service"); + } + ServiceReferenceHolder.getInstance().setRegistry(null); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 d19c4ec..a17393d 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 @@ -75,8 +75,9 @@ private static final Log log = LogFactory.getLog(PartitionManager.class); return null; } - public List<Partition> getAllPartitions(){ - return Collections.unmodifiableList(new ArrayList<Partition>(partitionListMap.values())); + public Partition[] getAllPartitions(){ + //return Collections.unmodifiableList(new ArrayList<Partition>(partitionListMap.values())); + return partitionListMap.values().toArray(new Partition[0]); } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java index ab77a79..686cfc5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/topology/processors/AutoscalerTopologyReceiver.java @@ -19,6 +19,8 @@ package org.apache.stratos.autoscaler.topology.processors; +import java.util.Collection; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.ClusterContext; @@ -31,6 +33,10 @@ import org.apache.stratos.autoscaler.util.AutoscalerUtil; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.messaging.domain.topology.Service; import org.apache.stratos.messaging.event.Event; +import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent; +import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent; +import org.apache.stratos.messaging.event.topology.MemberActivatedEvent; +import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent; import org.apache.stratos.messaging.listener.topology.ClusterCreatedEventListener; import org.apache.stratos.messaging.listener.topology.ClusterRemovedEventListener; import org.apache.stratos.messaging.listener.topology.CompleteTopologyEventListener; @@ -38,13 +44,10 @@ import org.apache.stratos.messaging.listener.topology.MemberActivatedEventListen import org.apache.stratos.messaging.listener.topology.MemberStartedEventListener; import org.apache.stratos.messaging.listener.topology.MemberTerminatedEventListener; import org.apache.stratos.messaging.listener.topology.ServiceRemovedEventListener; -import org.apache.stratos.messaging.event.topology.*; import org.apache.stratos.messaging.message.processor.topology.TopologyMessageProcessorChain; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventMessageDelegator; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; -import java.util.Collection; - /** * Load balancer topology receiver. */ @@ -56,7 +59,7 @@ public class AutoscalerTopologyReceiver implements Runnable { private boolean terminated; public AutoscalerTopologyReceiver() { - this.topologyReceiver = new TopologyReceiver(createMessageDelegator()); + this.topologyReceiver = new TopologyReceiver(createMessageDelegator()); } @Override http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 de51f9b..da96b74 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 @@ -29,5 +29,11 @@ public final class AutoScalerConstants { public static final String PROPERTY_ELEMENT = "property"; public static final String PROPERTY_NAME_ATTR= "name"; public static final String PROPERTY_VALUE_ATTR = "value"; + + /** + * Persistence + */ + public static final String AUTOSCALER_RESOURCE = "/autoscaler"; + public static final String DATA_RESOURCE = "/data"; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9504cbb2/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 98048a6..caacebd 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 @@ -90,7 +90,7 @@ public class AutoscalerUtil { throw new PolicyValidationException(msg); } - List<Partition> allPartitions = deploymentPolicy.getAllPartitions(); + Partition[] allPartitions = deploymentPolicy.getAllPartitions(); if (allPartitions == null) { String msg = "Deployment Policy's Partitions are null. Policy name: " + @@ -109,7 +109,7 @@ public class AutoscalerUtil { CloudControllerClient.getInstance() .validatePartitionsOfPolicy(cluster.getServiceName(), - allPartitions.toArray(new Partition[0])); + allPartitions); ClusterContext clusterContext = new ClusterContext(cluster.getClusterId(), cluster.getServiceName(), @@ -132,7 +132,7 @@ public class AutoscalerUtil { return clusterContext; } - private static void validateExistenceOfPartions(List<Partition> partitions) throws InvalidPartitionException { + private static void validateExistenceOfPartions(Partition[] partitions) throws InvalidPartitionException { PartitionManager partitionMgr = PartitionManager.getInstance(); for (Partition partition : partitions) { String partitionId = partition.getId();
