fixing AS issues due to merging
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8b66cbac Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8b66cbac Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8b66cbac Branch: refs/heads/docker-grouping-merge Commit: 8b66cbaca6ad51b6ac8f669d82ac188062c7c723 Parents: fb80e2c Author: R-Rajkumar <[email protected]> Authored: Mon Nov 3 15:21:21 2014 +0530 Committer: R-Rajkumar <[email protected]> Committed: Mon Nov 3 15:21:21 2014 +0530 ---------------------------------------------------------------------- .../stratos/autoscaler/AutoscalerContext.java | 5 +- .../applications/ClusterInformation.java | 2 +- .../applications/MTClusterInformation.java | 2 +- .../applications/STClusterInformation.java | 2 +- .../parser/DefaultApplicationParser.java | 69 +- .../applications/pojo/ApplicationContext.java | 12 - .../applications/topic/ApplicationBuilder.java | 2 +- .../interfaces/AutoScalerServiceInterface.java | 1 - .../AutoscalerTopologyEventReceiver.java | 770 ++++--------------- .../monitor/AbstractClusterMonitor.java | 277 ------- .../monitor/ParentComponentMonitor.java | 2 + .../application/ApplicationMonitorFactory.java | 32 +- .../monitor/cluster/AbstractClusterMonitor.java | 62 +- .../KubernetesServiceClusterMonitor.java | 3 +- .../monitor/cluster/VMClusterMonitor.java | 7 + .../monitor/cluster/VMLbClusterMonitor.java | 9 +- .../cluster/VMServiceClusterMonitor.java | 148 ++-- .../status/checker/StatusChecker.java | 18 +- 18 files changed, 331 insertions(+), 1092 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java index e8553bc..88ff3cf 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/AutoscalerContext.java @@ -23,17 +23,14 @@ package org.apache.stratos.autoscaler; import java.util.HashMap; import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; +import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; /** * It holds all cluster monitors which are active in stratos. */ public class AutoscalerContext { - private static final Log log = LogFactory.getLog(AutoscalerContext.class); private static final AutoscalerContext INSTANCE = new AutoscalerContext(); // Map<ClusterId, AbstractClusterMonitor> http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java index 5fd6d57..e87b13b 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/ClusterInformation.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.stratos.cloud.controller.application; +package org.apache.stratos.autoscaler.applications; public interface ClusterInformation { http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java index a0a59d4..36185f9 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/MTClusterInformation.java @@ -19,7 +19,7 @@ package org.apache.stratos.autoscaler.applications; -import org.apache.stratos.cloud.controller.application.ClusterInformation; +import org.apache.stratos.autoscaler.applications.ClusterInformation; public class MTClusterInformation implements ClusterInformation { http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java index 9a5bea8..f288233 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/STClusterInformation.java @@ -19,7 +19,7 @@ package org.apache.stratos.autoscaler.applications; -import org.apache.stratos.cloud.controller.application.ClusterInformation; +import org.apache.stratos.autoscaler.applications.ClusterInformation; public class STClusterInformation implements ClusterInformation { http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java index 16a14de..ce68f8a 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java @@ -17,41 +17,40 @@ * under the License. */ -package org.apache.stratos.cloud.controller.application.parser; +package org.apache.stratos.autoscaler.applications.parser; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.applications.ApplicationUtils; +import org.apache.stratos.autoscaler.applications.ClusterInformation; import org.apache.stratos.autoscaler.applications.MTClusterInformation; import org.apache.stratos.autoscaler.applications.STClusterInformation; -import org.apache.stratos.autoscaler.applications.pojo.*; +import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext; +import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext; +import org.apache.stratos.autoscaler.applications.pojo.GroupContext; +import org.apache.stratos.autoscaler.applications.pojo.SubscribableContext; +import org.apache.stratos.autoscaler.applications.pojo.SubscribableInfoContext; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.exception.ApplicationDefinitionException; import org.apache.stratos.autoscaler.exception.CartridgeInformationException; import org.apache.stratos.autoscaler.pojo.ServiceGroup; import org.apache.stratos.autoscaler.registry.RegistryManager; -import org.apache.stratos.cloud.controller.application.ClusterInformation; -import org.apache.stratos.cloud.controller.application.MTClusterInformation; -import org.apache.stratos.cloud.controller.application.STClusterInformation; -import org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException; -import org.apache.stratos.cloud.controller.interfaces.ApplicationParser; -import org.apache.stratos.cloud.controller.pojo.*; -import org.apache.stratos.cloud.controller.pojo.Cartridge; -import org.apache.stratos.cloud.controller.pojo.Properties; -import org.apache.stratos.cloud.controller.pojo.application.*; -import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder; -import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder; -import org.apache.stratos.common.constants.StratosConstants; -import org.apache.stratos.messaging.domain.topology.*; import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo; import org.apache.stratos.messaging.domain.applications.Application; import org.apache.stratos.messaging.domain.applications.ClusterDataHolder; import org.apache.stratos.messaging.domain.applications.DependencyOrder; import org.apache.stratos.messaging.domain.applications.Group; -import java.util.*; - /** * Default implementation of the Application Parser. One Application should be processed by one * instance of the DefaultApplicationParser. @@ -123,11 +122,6 @@ public class DefaultApplicationParser implements ApplicationParser { return applicationClusterContexts; } - @Override - public Set<MetaDataHolder> getPayloadData() throws ApplicationDefinitionException { - return metaDataHolders; - } - /** * Extract Group information from Application Definition * @@ -273,7 +267,7 @@ public class DefaultApplicationParser implements ApplicationParser { if (appCtxt.getComponents().getSubscribableContexts() != null) { clusterDataMap = parseLeafLevelSubscriptions(appCtxt.getApplicationId(), appCtxt.getTenantId(), application.getKey(), null, Arrays.asList(appCtxt.getComponents().getSubscribableContexts()), - subscribableInfoCtxts, appCtxt.getProperties()); + subscribableInfoCtxts); application.setClusterData(clusterDataMap); //clusters.addAll(clusterDataHolder.getApplicationClusterContexts()); } @@ -282,7 +276,7 @@ public class DefaultApplicationParser implements ApplicationParser { if (appCtxt.getComponents().getGroupContexts() != null) { application.setGroups(parseGroups(appCtxt.getApplicationId(), appCtxt.getTenantId(), application.getKey(), Arrays.asList(appCtxt.getComponents().getGroupContexts()), - subscribableInfoCtxts, definedGroupCtxts, appCtxt.getProperties())); + subscribableInfoCtxts, definedGroupCtxts)); } // get top level Dependency definitions @@ -347,13 +341,13 @@ public class DefaultApplicationParser implements ApplicationParser { */ private Map<String, Group> parseGroups (String appId, int tenantId, String key, List<GroupContext> groupCtxts, Map<String, SubscribableInfoContext> subscribableInformation, - Map<String, GroupContext> definedGroupCtxts, Properties properties) + Map<String, GroupContext> definedGroupCtxts) throws ApplicationDefinitionException { Map<String, Group> groupAliasToGroup = new HashMap<String, Group>(); for (GroupContext groupCtxt : groupCtxts) { - Group group = parseGroup(appId, tenantId, key, groupCtxt, subscribableInformation, definedGroupCtxts, properties); + Group group = parseGroup(appId, tenantId, key, groupCtxt, subscribableInformation, definedGroupCtxts); groupAliasToGroup.put(group.getAlias(), group); } @@ -424,7 +418,7 @@ public class DefaultApplicationParser implements ApplicationParser { */ private Group parseGroup (String appId, int tenantId, String key, GroupContext groupCtxt, Map<String, SubscribableInfoContext> subscribableInfoCtxts, - Map<String, GroupContext> definedGroupCtxts, Properties properties) + Map<String, GroupContext> definedGroupCtxts) throws ApplicationDefinitionException { // check if are in the defined Group set @@ -452,7 +446,7 @@ public class DefaultApplicationParser implements ApplicationParser { // get group level Subscribables if (groupCtxt.getSubscribableContexts() != null) { clusterDataMap = parseLeafLevelSubscriptions(appId, tenantId, key, groupCtxt.getName(), - Arrays.asList(groupCtxt.getSubscribableContexts()), subscribableInfoCtxts, properties); + Arrays.asList(groupCtxt.getSubscribableContexts()), subscribableInfoCtxts); group.setClusterData(clusterDataMap); } @@ -465,7 +459,7 @@ public class DefaultApplicationParser implements ApplicationParser { subGroupCtxt = definedGroupCtxts.get(subGroupCtxt.getAlias()); Group nestedGroup = parseGroup(appId, tenantId, key, subGroupCtxt, subscribableInfoCtxts, - definedGroupCtxts, properties); + definedGroupCtxts); nestedGroups.put(nestedGroup.getAlias(), nestedGroup); } @@ -569,8 +563,7 @@ public class DefaultApplicationParser implements ApplicationParser { */ private Map<String, ClusterDataHolder> parseLeafLevelSubscriptions (String appId, int tenantId, String key, String groupName, List<SubscribableContext> subscribableCtxts, - Map<String, SubscribableInfoContext> subscribableInfoCtxts, - Properties properties) + Map<String, SubscribableInfoContext> subscribableInfoCtxts) throws ApplicationDefinitionException { Map<String, ClusterDataHolder> clusterDataMap = new HashMap<String, ClusterDataHolder>(); @@ -608,14 +601,12 @@ public class DefaultApplicationParser implements ApplicationParser { String hostname = clusterInfo.getHostName(subscribableCtxt.getAlias(), cartridgeInfo.getHostName()); String clusterId = clusterInfo.getClusterId(subscribableCtxt.getAlias(), subscribableCtxt.getType()); - boolean isKubernetesCluster = StratosConstants.KUBERNETES_DEPLOYER_TYPE.equals(cartridge.getDeployerType()); // create and collect this cluster's information assert subscribableInfoCtxt != null; ApplicationClusterContext appClusterCtxt = createApplicationClusterContext(appId, groupName, cartridgeInfo, key, tenantId, subscribableInfoCtxt.getRepoUrl(), subscribableCtxt.getAlias(), - clusterId, hostname, subscribableInfoCtxt.getDeploymentPolicy(), - false, isKubernetesCluster, subscribableInfoCtxt.getDependencyAliases(), properties); + clusterId, hostname, subscribableInfoCtxt.getDeploymentPolicy(), false, subscribableInfoCtxt.getDependencyAliases()); appClusterCtxt.setAutoscalePolicyName(subscribableInfoCtxt.getAutoscalingPolicy()); this.applicationClusterContexts.add(appClusterCtxt); @@ -640,8 +631,7 @@ public class DefaultApplicationParser implements ApplicationParser { * @param clusterId Cluster id * @param hostname Hostname * @param deploymentPolicy Deployment policy used - * @param isLBCluster if this cluster is an LB - * @param isKubernetesCluster if this cluster is a Kubernetes cluster + * @param isLB if this cluster is an LB * @return ApplicationClusterContext object with relevant information * * @throws ApplicationDefinitionException If any error occurs @@ -649,17 +639,14 @@ public class DefaultApplicationParser implements ApplicationParser { private ApplicationClusterContext createApplicationClusterContext (String appId, String groupName, CartridgeInfo cartridgeInfo, String subscriptionKey, int tenantId, String repoUrl, String alias, String clusterId, String hostname, - String deploymentPolicy, boolean isLBCluster, - boolean isKubernetesCluster, String[] dependencyAliases, - Properties properties) + String deploymentPolicy, boolean isLB, String[] dependencyAliases) throws ApplicationDefinitionException { // Create text payload String textPayload = ApplicationUtils.createPayload(appId, groupName, cartridgeInfo, subscriptionKey, tenantId, clusterId, hostname, repoUrl, alias, null, dependencyAliases).toString(); - return new ApplicationClusterContext(cartridgeInfo.getType(), clusterId, hostname, textPayload, deploymentPolicy, - isLB, isKubernetesCluster, properties); + return new ApplicationClusterContext(cartridgeInfo.getType(), clusterId, hostname, textPayload, deploymentPolicy, isLB); } private CartridgeInfo getCartridge (String cartridgeType) throws ApplicationDefinitionException { http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java index b3560c3..5d97ad5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/pojo/ApplicationContext.java @@ -19,8 +19,6 @@ package org.apache.stratos.autoscaler.applications.pojo; -import org.apache.stratos.cloud.controller.pojo.Properties; - import java.io.Serializable; public class ApplicationContext implements Serializable { @@ -41,8 +39,6 @@ public class ApplicationContext implements Serializable { private SubscribableInfoContext[] subscribableInfoContexts; - private Properties properties; - public ApplicationContext() { } @@ -101,12 +97,4 @@ public class ApplicationContext implements Serializable { public void setTeantAdminUsername(String teantAdminUsername) { this.teantAdminUsername = teantAdminUsername; } - - public Properties getProperties() { - return properties; - } - - public void setProperties(Properties properties) { - this.properties = properties; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java index bf0ad01..a92ce09 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java @@ -25,8 +25,8 @@ import org.apache.stratos.autoscaler.applications.ApplicationHolder; import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext; import org.apache.stratos.autoscaler.exception.DependencyBuilderException; import org.apache.stratos.autoscaler.exception.TopologyInConsistentException; -import org.apache.stratos.autoscaler.monitor.ApplicationMonitorFactory; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; +import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory; import org.apache.stratos.messaging.domain.applications.*; import org.apache.stratos.messaging.domain.topology.Topology; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java index 16e809d..74c9c8c 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/interfaces/AutoScalerServiceInterface.java @@ -1,4 +1,3 @@ -package org.apache.stratos.autoscaler.interfaces; /* * * Licensed to the Apache Software Foundation (ASF) under one http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java index f449560..0f52765 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java @@ -19,57 +19,42 @@ package org.apache.stratos.autoscaler.message.receiver.topology; +import java.util.List; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.AutoscalerContext; +import org.apache.stratos.autoscaler.MemberStatsContext; import org.apache.stratos.autoscaler.NetworkPartitionContext; -import org.apache.stratos.autoscaler.*; +import org.apache.stratos.autoscaler.NetworkPartitionLbHolder; +import org.apache.stratos.autoscaler.PartitionContext; import org.apache.stratos.autoscaler.applications.ApplicationHolder; +import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher; import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; import org.apache.stratos.autoscaler.exception.DependencyBuilderException; -import org.apache.stratos.autoscaler.exception.PartitionValidationException; -import org.apache.stratos.autoscaler.exception.PolicyValidationException; +import org.apache.stratos.autoscaler.exception.TerminationException; import org.apache.stratos.autoscaler.exception.TopologyInConsistentException; -import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublisher; import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.grouping.topic.InstanceNotificationPublisher; -import org.apache.stratos.autoscaler.grouping.topic.StatusEventPublisher; -import org.apache.stratos.autoscaler.monitor.AbstractClusterMonitor; -import org.apache.stratos.autoscaler.monitor.ApplicationMonitorFactory; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory; import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; -import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitorFactory; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; -import org.apache.stratos.autoscaler.monitor.group.GroupMonitor; -import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; -import org.apache.stratos.messaging.domain.topology.Application; -import org.apache.stratos.messaging.domain.topology.ApplicationStatus; -import org.apache.stratos.messaging.domain.topology.Cluster; -import org.apache.stratos.messaging.domain.topology.ClusterDataHolder; -import org.apache.stratos.messaging.domain.topology.ClusterStatus; -import org.apache.stratos.messaging.domain.topology.GroupStatus; -import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; import org.apache.stratos.autoscaler.partition.PartitionManager; import org.apache.stratos.autoscaler.policy.PolicyManager; +import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; import org.apache.stratos.autoscaler.status.checker.StatusChecker; import org.apache.stratos.messaging.domain.applications.Application; import org.apache.stratos.messaging.domain.applications.ApplicationStatus; import org.apache.stratos.messaging.domain.applications.Applications; import org.apache.stratos.messaging.domain.applications.ClusterDataHolder; -import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.Cluster; +import org.apache.stratos.messaging.domain.topology.ClusterStatus; +import org.apache.stratos.messaging.domain.topology.Service; +import org.apache.stratos.messaging.domain.topology.Topology; import org.apache.stratos.messaging.event.Event; -import org.apache.stratos.messaging.event.topology.*; -import org.apache.stratos.messaging.listener.applications.ApplicationUndeployedEventListener; -import org.apache.stratos.messaging.listener.topology.*; -import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager; -import org.apache.stratos.messaging.event.topology.ApplicationActivatedEvent; -import org.apache.stratos.messaging.event.topology.ApplicationCreatedEvent; -import org.apache.stratos.messaging.event.topology.ApplicationTerminatedEvent; -import org.apache.stratos.messaging.event.topology.ApplicationTerminatingEvent; import org.apache.stratos.messaging.event.topology.ApplicationUndeployedEvent; import org.apache.stratos.messaging.event.topology.ClusterActivatedEvent; import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent; @@ -77,33 +62,23 @@ import org.apache.stratos.messaging.event.topology.ClusterInactivateEvent; import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent; import org.apache.stratos.messaging.event.topology.ClusterTerminatedEvent; import org.apache.stratos.messaging.event.topology.ClusterTerminatingEvent; -import org.apache.stratos.messaging.event.topology.GroupActivatedEvent; -import org.apache.stratos.messaging.event.topology.GroupInactivateEvent; -import org.apache.stratos.messaging.event.topology.GroupTerminatedEvent; -import org.apache.stratos.messaging.event.topology.GroupTerminatingEvent; import org.apache.stratos.messaging.event.topology.MemberActivatedEvent; import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent; import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent; import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent; -import org.apache.stratos.messaging.listener.topology.ApplicationActivatedEventListener; -import org.apache.stratos.messaging.listener.topology.ApplicationCreatedEventListener; -import org.apache.stratos.messaging.listener.topology.ApplicationTerminatedEventListener; -import org.apache.stratos.messaging.listener.topology.ApplicationTerminatingEventListener; -import org.apache.stratos.messaging.listener.topology.ApplicationUndeployedEventListener; +import org.apache.stratos.messaging.listener.applications.ApplicationUndeployedEventListener; import org.apache.stratos.messaging.listener.topology.ClusterActivatedEventListener; import org.apache.stratos.messaging.listener.topology.ClusterCreatedEventListener; import org.apache.stratos.messaging.listener.topology.ClusterInActivateEventListener; import org.apache.stratos.messaging.listener.topology.ClusterRemovedEventListener; +import org.apache.stratos.messaging.listener.topology.ClusterResetEventListener; import org.apache.stratos.messaging.listener.topology.ClusterTerminatedEventListener; import org.apache.stratos.messaging.listener.topology.ClusterTerminatingEventListener; import org.apache.stratos.messaging.listener.topology.CompleteTopologyEventListener; -import org.apache.stratos.messaging.listener.topology.GroupActivatedEventListener; -import org.apache.stratos.messaging.listener.topology.GroupInActivateEventListener; -import org.apache.stratos.messaging.listener.topology.GroupTerminatedEventListener; -import org.apache.stratos.messaging.listener.topology.GroupTerminatingEventListener; import org.apache.stratos.messaging.listener.topology.MemberActivatedEventListener; import org.apache.stratos.messaging.listener.topology.MemberMaintenanceListener; import org.apache.stratos.messaging.listener.topology.MemberReadyToShutdownEventListener; +import org.apache.stratos.messaging.listener.topology.MemberStartedEventListener; import org.apache.stratos.messaging.listener.topology.MemberTerminatedEventListener; import org.apache.stratos.messaging.message.receiver.topology.TopologyEventReceiver; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; @@ -221,43 +196,12 @@ public class AutoscalerTopologyEventReceiver implements Runnable { } }); - - /*topologyEventReceiver.addEventListener(new ApplicationCreatedEventListener() { - @Override - protected void onEvent(Event event) { - try { - log.info("[ApplicationCreatedEvent] Received: " + event.getClass()); - ApplicationCreatedEvent applicationCreatedEvent = (ApplicationCreatedEvent) event; - try { - - //acquire read lock - TopologyManager.acquireReadLockForApplication( - applicationCreatedEvent.getApplication().getUniqueIdentifier()); - //start the application monitor - startApplicationMonitor(applicationCreatedEvent.getApplication().getUniqueIdentifier()); - } catch (Exception e) { - String msg = "Error processing event " + e.getLocalizedMessage(); - log.error(msg, e); - } finally { - //release read lock - TopologyManager.releaseReadLockForApplication( - applicationCreatedEvent.getApplication().getUniqueIdentifier()); - } - } catch (ClassCastException e) { - String msg = "Error while casting the event " + e.getLocalizedMessage(); - log.error(msg, e); - } - - } - });*/ - topologyEventReceiver.addEventListener(new ClusterActivatedEventListener() { @Override protected void onEvent(Event event) { log.info("[ClusterActivatedEvent] Received: " + event.getClass()); ClusterActivatedEvent clusterActivatedEvent = (ClusterActivatedEvent) event; - String appId = clusterActivatedEvent.getAppId(); String clusterId = clusterActivatedEvent.getClusterId(); AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId); @@ -291,23 +235,16 @@ public class AutoscalerTopologyEventReceiver implements Runnable { topologyEventReceiver.addEventListener(new ClusterCreatedEventListener() { @Override protected void onEvent(Event event) { - log.info("[ClusterCreatedEvent] Received: " + event.getClass()); - - ClusterCreatedEvent clusterCreatedEvent = (ClusterCreatedEvent) event; - //TODO notify the monitor about cluster creation - } }); topologyEventReceiver.addEventListener(new ClusterInActivateEventListener() { @Override protected void onEvent(Event event) { - log.info("[ClusterInActivateEvent] Received: " + event.getClass()); ClusterInactivateEvent clusterInactivateEvent = (ClusterInactivateEvent) event; - String appId = clusterInactivateEvent.getAppId(); String clusterId = clusterInactivateEvent.getClusterId(); AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId); @@ -351,11 +288,9 @@ public class AutoscalerTopologyEventReceiver implements Runnable { topologyEventReceiver.addEventListener(new ClusterTerminatedEventListener() { @Override protected void onEvent(Event event) { - log.info("[ClusterTerminatedEvent] Received: " + event.getClass()); ClusterTerminatedEvent clusterTerminatedEvent = (ClusterTerminatedEvent) event; - String appId = clusterTerminatedEvent.getAppId(); String clusterId = clusterTerminatedEvent.getClusterId(); AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId); @@ -367,105 +302,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable { } }); - /*topologyEventReceiver.addEventListener(new GroupActivatedEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[GroupActivatedEvent] Received: " + event.getClass()); - - GroupActivatedEvent groupActivatedEvent = (GroupActivatedEvent) event; - String appId = groupActivatedEvent.getAppId(); - String groupId = groupActivatedEvent.getGroupId(); - - ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId); - - //changing the status in the monitor, will notify its parent monitor - if (monitor != null) { - monitor.setStatus(GroupStatus.Active); - } - } - }); - - topologyEventReceiver.addEventListener(new GroupInActivateEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[GroupInActivateEvent] Received: " + event.getClass()); - - GroupInactivateEvent groupInactivateEvent = (GroupInactivateEvent) event; - String appId = groupInactivateEvent.getAppId(); - String groupId = groupInactivateEvent.getGroupId(); - - ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId); - - //changing the status in the monitor, will notify its parent monitor - if (monitor != null) { - monitor.setStatus(GroupStatus.Inactive); - } - - } - }); - - topologyEventReceiver.addEventListener(new GroupTerminatingEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[GroupTerminatingEvent] Received: " + event.getClass()); - - GroupTerminatingEvent groupTerminatingEvent = (GroupTerminatingEvent) event; - String appId = groupTerminatingEvent.getAppId(); - String groupId = groupTerminatingEvent.getGroupId(); - - ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId); - - //changing the status in the monitor, will notify its parent monitor - if (monitor != null) { - monitor.setStatus(GroupStatus.Terminating); - } - - } - }); - - topologyEventReceiver.addEventListener(new GroupTerminatedEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[GroupTerminatedEvent] Received: " + event.getClass()); - - GroupTerminatedEvent groupTerminatedEvent = (GroupTerminatedEvent) event; - String appId = groupTerminatedEvent.getAppId(); - String groupId = groupTerminatedEvent.getGroupId(); - - ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - GroupMonitor monitor = (GroupMonitor) appMonitor.findGroupMonitorWithId(groupId); - - //changing the status in the monitor, will notify its parent monitor - if (monitor != null) { - monitor.setStatus(GroupStatus.Terminated); - } - - } - }); - - topologyEventReceiver.addEventListener(new ApplicationActivatedEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[ApplicationActivatedEvent] Received: " + event.getClass()); - - ApplicationActivatedEvent applicationActivatedEvent = (ApplicationActivatedEvent) event; - String appId = applicationActivatedEvent.getAppId(); - - ApplicationMonitor appMonitor = AutoscalerContext.getInstance().getAppMonitor(appId); - if(appMonitor != null) { - appMonitor.setStatus(ApplicationStatus.Active); - } - } - });*/ - topologyEventReceiver.addEventListener(new ApplicationUndeployedEventListener() { @Override protected void onEvent(Event event) { @@ -482,8 +318,8 @@ public class AutoscalerTopologyEventReceiver implements Runnable { Set<ClusterDataHolder> clusterDataHolders = applicationUndeployedEvent.getClusterData(); if (clusterDataHolders != null) { for (ClusterDataHolder clusterDataHolder : clusterDataHolders) { - ClusterMonitor clusterMonitor = - ((ClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterDataHolder.getClusterId())); + VMClusterMonitor clusterMonitor = + ((VMClusterMonitor) AutoscalerContext.getInstance().getClusterMonitor(clusterDataHolder.getClusterId())); if (clusterMonitor == null) { // Cluster Monitor not found; send Cluster Terminated event to cleanup ClusterStatusEventPublisher.sendClusterTerminatedEvent( @@ -594,269 +430,95 @@ public class AutoscalerTopologyEventReceiver implements Runnable { } }); - - /*topologyEventReceiver.addEventListener(new ApplicationTerminatingEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[ApplicationTerminatingEvent] Received: " + event.getClass()); - - ApplicationTerminatingEvent appTerminatingEvent = (ApplicationTerminatingEvent) event; - - // acquire reead locks for application and relevant clusters - TopologyManager.acquireReadLockForApplication(appTerminatingEvent.getAppId()); - - try { - ApplicationMonitor appMonitor = AutoscalerContext.getInstance(). - getAppMonitor(appTerminatingEvent.getAppId()); - - if (appMonitor != null) { - // update the status as Terminating - appMonitor.setStatus(ApplicationStatus.Terminating); - - } else { - log.warn("Application Monitor cannot be found for the undeployed [application] " - + appTerminatingEvent.getAppId()); - } - - } finally { - TopologyManager. - releaseReadLockForApplication(appTerminatingEvent.getAppId()); - } - } - });*/ - -// topologyEventReceiver.addEventListener(new ApplicationRemovedEventListener() { + topologyEventReceiver.addEventListener(new MemberReadyToShutdownEventListener() { + @Override + protected void onEvent(Event event) { + try { + MemberReadyToShutdownEvent memberReadyToShutdownEvent = (MemberReadyToShutdownEvent) event; + String clusterId = memberReadyToShutdownEvent.getClusterId(); + AutoscalerContext asCtx = AutoscalerContext.getInstance(); + AbstractClusterMonitor monitor; + monitor = asCtx.getClusterMonitor(clusterId); + if (null == monitor) { + if (log.isDebugEnabled()) { + log.debug(String.format("A cluster monitor is not found in autoscaler context " + + "[cluster] %s", clusterId)); + } + return; + } + monitor.handleMemberReadyToShutdownEvent(memberReadyToShutdownEvent); + } catch (Exception e) { + String msg = "Error processing event " + e.getLocalizedMessage(); + log.error(msg, e); + } + } + }); +//TODO delete this if we don't want this +// topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() { // @Override -// protected void onChildEvent(Event event) { +// protected void onEvent(Event event) { +// +// ClusterRemovedEvent clusterRemovedEvent = null; +// try { +// clusterRemovedEvent = (ClusterRemovedEvent) event; +// //TopologyManager.acquireReadLock(); +// TopologyManager.acquireReadLockForCluster(clusterRemovedEvent.getServiceName(), +// clusterRemovedEvent.getClusterId()); // -// log.info("[ApplicationRemovedEvent] Received: " + event.getClass()); +// String clusterId = clusterRemovedEvent.getClusterId(); +// String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy(); // -// ApplicationRemovedEvent applicationRemovedEvent = (ApplicationRemovedEvent) event; +// AbstractClusterMonitor monitor; // -// //acquire read lock -// TopologyManager.acquireReadLockForApplication(applicationRemovedEvent.getApplicationId()); -// Set<ClusterDataHolder> clusterDataHolders = applicationRemovedEvent.getClusterData(); -// if (clusterDataHolders != null) { -// for (ClusterDataHolder clusterData : clusterDataHolders) { -// TopologyManager.acquireReadLockForCluster(clusterData.getServiceType(), -// clusterData.getClusterId()); -// } -// } +// if (clusterRemovedEvent.isLbCluster()) { +// DeploymentPolicy depPolicy = PolicyManager.getInstance(). +// getDeploymentPolicy(deploymentPolicy); +// if (depPolicy != null) { +// List<NetworkPartitionLbHolder> lbHolders = PartitionManager.getInstance() +// .getNetworkPartitionLbHolders(depPolicy); // -// try { -// //TODO remove monitors as well as any starting or pending threads -// ApplicationMonitor monitor = AutoscalerContext.getInstance(). -// getAppMonitor(applicationRemovedEvent.getApplicationId()); -// if (monitor != null) { -// //List<String> clusters = monitor. -// // findClustersOfApplication(applicationRemovedEvent.getApplicationId()); -// for (ClusterDataHolder clusterData : clusterDataHolders) { -// //stopping the cluster monitor and remove it from the AS -// ((ClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterData.getClusterId())). -// setDestroyed(true); -// AutoscalerContext.getInstance().removeMonitor(clusterData.getClusterId()); +// for (NetworkPartitionLbHolder networkPartitionLbHolder : lbHolders) { +// // removes lb cluster ids +// boolean isRemoved = networkPartitionLbHolder.removeLbClusterId(clusterId); +// if (isRemoved) { +// log.info("Removed the lb cluster [id]:" +// + clusterId +// + " reference from Network Partition [id]: " +// + networkPartitionLbHolder +// .getNetworkPartitionId()); +// +// } +// if (log.isDebugEnabled()) { +// log.debug(networkPartitionLbHolder); +// } +// +// } // } -// //removing the application monitor -// AutoscalerContext.getInstance(). -// removeAppMonitor(applicationRemovedEvent.getApplicationId()); +// monitor = AutoscalerContext.getInstance() +// .removeLbMonitor(clusterId); +// // } else { -// log.warn("Application Monitor cannot be found for the removed [application] " -// + applicationRemovedEvent.getApplicationId()); +// monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance() +// .removeMonitor(clusterId); // } // -// -// } finally { -// //release read lock -// if (clusterDataHolders != null) { -// for (ClusterDataHolder clusterData : clusterDataHolders) { -// TopologyManager.releaseReadLockForCluster(clusterData.getServiceType(), -// clusterData.getClusterId()); -// } +// // runTerminateAllRule(monitor); +// if (monitor != null) { +// monitor.destroy(); +// log.info(String.format("Cluster monitor has been removed successfully: [cluster] %s ", +// clusterId)); // } -// TopologyManager.releaseReadLockForApplication(applicationRemovedEvent.getApplicationId()); +// } catch (Exception e) { +// log.error("Error processing event", e); +// } finally { +// //TopologyManager.releaseReadLock(); +// TopologyManager.releaseReadLockForCluster(clusterRemovedEvent.getServiceName(), +// clusterRemovedEvent.getClusterId()); // } -// // } +// // }); - /*topologyEventReceiver.addEventListener(new ApplicationTerminatedEventListener() { - @Override - protected void onEvent(Event event) { - - log.info("[ApplicationTerminatedEvent] Received: " + event.getClass()); - - ApplicationTerminatedEvent applicationRemovedEvent = (ApplicationTerminatedEvent) event; - - // no need to access the locks since the Topology is not accessed - //acquire read lock - //TopologyManager.acquireReadLockForApplication(applicationRemovedEvent.getAppId()); - Set<ClusterDataHolder> clusterDataHolders = applicationRemovedEvent.getClusterData(); -// if (clusterDataHolders != null) { -// for (ClusterDataHolder clusterData : clusterDataHolders) { -// TopologyManager.acquireReadLockForCluster(clusterData.getServiceType(), -// clusterData.getClusterId()); -// } -// } - - try { - //TODO remove monitors as well as any starting or pending threads - ApplicationMonitor monitor = AutoscalerContext.getInstance(). - getAppMonitor(applicationRemovedEvent.getAppId()); - if (monitor != null) { - //List<String> clusters = monitor. - // findClustersOfApplication(applicationRemovedEvent.getApplicationId()); - for (ClusterDataHolder clusterData : clusterDataHolders) { - //stopping the cluster monitor and remove it from the AS - ClusterMonitor clusterMonitor = ((ClusterMonitor) - AutoscalerContext.getInstance().getMonitor(clusterData.getClusterId())); - if (clusterMonitor != null) { - clusterMonitor.setDestroyed(true); - AutoscalerContext.getInstance().removeMonitor(clusterData.getClusterId()); - } else { - log.warn("Cluster Monitor not found for [ cluster id ] " + - clusterData.getClusterId() + ", unable to remove"); - } - } - //removing the application monitor - AutoscalerContext.getInstance(). - removeAppMonitor(applicationRemovedEvent.getAppId()); - } else { - log.warn("Application Monitor cannot be found for the terminated [application] " - + applicationRemovedEvent.getAppId() + ", unable to remove"); - } - - - } finally { - //release read lock -// if (clusterDataHolders != null) { -// for (ClusterDataHolder clusterData : clusterDataHolders) { -// TopologyManager.releaseReadLockForCluster(clusterData.getServiceType(), -// clusterData.getClusterId()); -// } -// } -// TopologyManager.releaseReadLockForApplication(applicationRemovedEvent.getAppId()); - } - - } - }); -*/ - topologyEventReceiver.addEventListener(new MemberReadyToShutdownEventListener() { - @Override - protected void onEvent(Event event) { - try { - MemberReadyToShutdownEvent memberReadyToShutdownEvent = - (MemberReadyToShutdownEvent) event; - AutoscalerContext asCtx = AutoscalerContext.getInstance(); - AbstractClusterMonitor monitor; - String clusterId = memberReadyToShutdownEvent.getClusterId(); - String memberId = memberReadyToShutdownEvent.getMemberId(); - - if (asCtx.monitorExist(clusterId)) { - monitor = (AbstractClusterMonitor) asCtx.getMonitor(clusterId); - } else if (asCtx.lbMonitorExist(clusterId)) { - monitor = asCtx.getLBMonitor(clusterId); - } else { - if (log.isDebugEnabled()) { - log.debug(String.format("A cluster monitor is not found " + - "in autoscaler context [cluster] %s", clusterId)); - } - return; - } - - NetworkPartitionContext nwPartitionCtxt; - nwPartitionCtxt = monitor.getNetworkPartitionCtxt( - memberReadyToShutdownEvent.getNetworkPartitionId()); - - // start a new member in the same Partition - String partitionId = monitor.getPartitionOfMember(memberId); - PartitionContext partitionCtxt = nwPartitionCtxt.getPartitionCtxt(partitionId); - - - // terminate the shutdown ready member - CloudControllerClient ccClient = CloudControllerClient.getInstance(); - ccClient.terminate(memberId); - - // remove from active member list - partitionCtxt.removeActiveMemberById(memberId); - - if (log.isInfoEnabled()) { - log.info(String.format("Member is terminated and removed from the active " + - "members list: [member] %s [partition] %s [cluster] %s ", - memberId, partitionId, clusterId)); - } - } catch (TerminationException e) { - log.error(e); - } - } - - }); - - topologyEventReceiver.addEventListener(new ClusterRemovedEventListener() { - @Override - protected void onEvent(Event event) { - - ClusterRemovedEvent clusterRemovedEvent = null; - try { - clusterRemovedEvent = (ClusterRemovedEvent) event; - //TopologyManager.acquireReadLock(); - TopologyManager.acquireReadLockForCluster(clusterRemovedEvent.getServiceName(), - clusterRemovedEvent.getClusterId()); - - String clusterId = clusterRemovedEvent.getClusterId(); - String deploymentPolicy = clusterRemovedEvent.getDeploymentPolicy(); - - AbstractClusterMonitor monitor; - - if (clusterRemovedEvent.isLbCluster()) { - DeploymentPolicy depPolicy = PolicyManager.getInstance(). - getDeploymentPolicy(deploymentPolicy); - if (depPolicy != null) { - List<NetworkPartitionLbHolder> lbHolders = PartitionManager.getInstance() - .getNetworkPartitionLbHolders(depPolicy); - - for (NetworkPartitionLbHolder networkPartitionLbHolder : lbHolders) { - // removes lb cluster ids - boolean isRemoved = networkPartitionLbHolder.removeLbClusterId(clusterId); - if (isRemoved) { - log.info("Removed the lb cluster [id]:" - + clusterId - + " reference from Network Partition [id]: " - + networkPartitionLbHolder - .getNetworkPartitionId()); - - } - if (log.isDebugEnabled()) { - log.debug(networkPartitionLbHolder); - } - - } - } - monitor = AutoscalerContext.getInstance() - .removeLbMonitor(clusterId); - - } else { - monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance() - .removeMonitor(clusterId); - } - - // runTerminateAllRule(monitor); - if (monitor != null) { - monitor.destroy(); - log.info(String.format("Cluster monitor has been removed successfully: [cluster] %s ", - clusterId)); - } - } catch (Exception e) { - log.error("Error processing event", e); - } finally { - //TopologyManager.releaseReadLock(); - TopologyManager.releaseReadLockForCluster(clusterRemovedEvent.getServiceName(), - clusterRemovedEvent.getClusterId()); - } - } - - }); - topologyEventReceiver.addEventListener(new MemberStartedEventListener() { @Override protected void onEvent(Event event) { @@ -866,176 +528,75 @@ public class AutoscalerTopologyEventReceiver implements Runnable { }); topologyEventReceiver.addEventListener(new MemberTerminatedEventListener() { - @Override - protected void onEvent(Event event) { - - MemberTerminatedEvent memberTerminatedEvent = null; - try { - //TopologyManager.acquireReadLock(); - - memberTerminatedEvent = (MemberTerminatedEvent) event; - String networkPartitionId = memberTerminatedEvent.getNetworkPartitionId(); - String clusterId = memberTerminatedEvent.getClusterId(); - String partitionId = memberTerminatedEvent.getPartitionId(); - AbstractClusterMonitor monitor; - - TopologyManager.acquireReadLockForCluster(memberTerminatedEvent.getServiceName(), - memberTerminatedEvent.getClusterId()); - - if (AutoscalerContext.getInstance().monitorExist(clusterId)) { - monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId); - } else { - //This is LB member - monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId); - } - - NetworkPartitionContext networkPartitionContext = monitor. - getNetworkPartitionCtxt(networkPartitionId); - - PartitionContext partitionContext = networkPartitionContext. - getPartitionCtxt(partitionId); - String memberId = memberTerminatedEvent.getMemberId(); - partitionContext.removeMemberStatsContext(memberId); - - - if (partitionContext.removeTerminationPendingMember(memberId)) { - if (log.isDebugEnabled()) { - log.debug(String.format("Member is removed from termination pending " + - "members list: [member] %s", memberId)); - } - } else if (partitionContext.removePendingMember(memberId)) { - if (log.isDebugEnabled()) { - log.debug(String.format("Member is removed from pending members list: " + - "[member] %s", memberId)); - } - } else if (partitionContext.removeActiveMemberById(memberId)) { - log.warn(String.format("Member is in the wrong list and it is removed " + - "from active members list", memberId)); - } else { - log.warn(String.format("Member is not available in any of the list " + - "active, pending and termination pending", memberId)); - } - - if (log.isInfoEnabled()) { - log.info(String.format("Member stat context has been removed " + - " successfully: [member] %s", memberId)); - } - //Checking whether the cluster state can be changed either from in_active to created/terminating to terminated - StatusChecker.getInstance().onMemberTermination(clusterId); - -// partitionContext.decrementCurrentActiveMemberCount(1); - - - } catch (Exception e) { - log.error("Error processing event", e); - } finally { - //TopologyManager.releaseReadLock(); - TopologyManager.releaseReadLockForCluster(memberTerminatedEvent.getServiceName(), - memberTerminatedEvent.getClusterId()); - } - } - + @Override + protected void onEvent(Event event) { + try { + MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event; + String clusterId = memberTerminatedEvent.getClusterId(); + AbstractClusterMonitor monitor; + AutoscalerContext asCtx = AutoscalerContext.getInstance(); + monitor = asCtx.getClusterMonitor(clusterId); + if (null == monitor) { + if (log.isDebugEnabled()) { + log.debug(String.format("A cluster monitor is not found in autoscaler context " + + "[cluster] %s", clusterId)); + } + return; + } + monitor.handleMemberTerminatedEvent(memberTerminatedEvent); + } catch (Exception e) { + String msg = "Error processing event " + e.getLocalizedMessage(); + log.error(msg, e); + } + } }); topologyEventReceiver.addEventListener(new MemberActivatedEventListener() { - @Override - protected void onEvent(Event event) { - - MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event; - - //TopologyManager.acquireReadLock(); - TopologyManager.acquireReadLockForCluster(memberActivatedEvent.getServiceName(), - memberActivatedEvent.getClusterId()); - - try { - - String networkPartitionId = memberActivatedEvent.getNetworkPartitionId(); - String clusterId = memberActivatedEvent.getClusterId(); - String partitionId = memberActivatedEvent.getPartitionId(); - String memberId = memberActivatedEvent.getMemberId(); - - AbstractClusterMonitor monitor; - - if (AutoscalerContext.getInstance().monitorExist(clusterId)) { - monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId); - } else { - //This is LB member - monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId); - } - - NetworkPartitionContext networkPartitionContext = monitor. - getNetworkPartitionCtxt(networkPartitionId); - - PartitionContext partitionContext = networkPartitionContext. - getPartitionCtxt(partitionId); - - partitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); - // TODO starting the pending clusters which are waiting for this member activation in a cluster - - - if (log.isInfoEnabled()) { - log.info(String.format("Member stat context has been added " + - "successfully: [member] %s", memberId)); - } -// partitionContext.incrementCurrentActiveMemberCount(1); - partitionContext.movePendingMemberToActiveMembers(memberId); - //triggering the status checker - StatusChecker.getInstance().onMemberStatusChange(memberActivatedEvent.getClusterId()); - - } catch (Exception e) { - log.error("Error processing event", e); - } finally { - //TopologyManager.releaseReadLock(); - TopologyManager.releaseReadLockForCluster(memberActivatedEvent.getServiceName(), - memberActivatedEvent.getClusterId()); - } - } + @Override + protected void onEvent(Event event) { + try { + MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event; + String clusterId = memberActivatedEvent.getClusterId(); + AbstractClusterMonitor monitor; + AutoscalerContext asCtx = AutoscalerContext.getInstance(); + monitor = asCtx.getClusterMonitor(clusterId); + if (null == monitor) { + if (log.isDebugEnabled()) { + log.debug(String.format("A cluster monitor is not found in autoscaler context " + + "[cluster] %s", clusterId)); + } + return; + } + monitor.handleMemberActivatedEvent(memberActivatedEvent); + } catch (Exception e) { + String msg = "Error processing event " + e.getLocalizedMessage(); + log.error(msg, e); + } + } }); topologyEventReceiver.addEventListener(new MemberMaintenanceListener() { - @Override - protected void onEvent(Event event) { - - MemberMaintenanceModeEvent memberMaintenanceModeEvent = (MemberMaintenanceModeEvent) event; - - //TopologyManager.acquireReadLock(); - TopologyManager.acquireReadLockForCluster(memberMaintenanceModeEvent.getServiceName(), - memberMaintenanceModeEvent.getClusterId()); - - try { - - String memberId = memberMaintenanceModeEvent.getMemberId(); - String partitionId = memberMaintenanceModeEvent.getPartitionId(); - String networkPartitionId = memberMaintenanceModeEvent.getNetworkPartitionId(); - - PartitionContext partitionContext; - String clusterId = memberMaintenanceModeEvent.getClusterId(); - AbstractClusterMonitor monitor; - - if (AutoscalerContext.getInstance().monitorExist(clusterId)) { - monitor = (AbstractClusterMonitor) AutoscalerContext.getInstance().getMonitor(clusterId); - partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId). - getPartitionCtxt(partitionId); - } else { - monitor = AutoscalerContext.getInstance().getLBMonitor(clusterId); - partitionContext = monitor.getNetworkPartitionCtxt(networkPartitionId). - getPartitionCtxt(partitionId); - } - partitionContext.addMemberStatsContext(new MemberStatsContext(memberId)); - if (log.isDebugEnabled()) { - log.debug(String.format("Member has been moved as pending termination: " + - "[member] %s", memberId)); - } - partitionContext.moveActiveMemberToTerminationPendingMembers(memberId); - - } catch (Exception e) { - log.error("Error processing event", e); - } finally { - //TopologyManager.releaseReadLock(); - TopologyManager.releaseReadLockForCluster(memberMaintenanceModeEvent.getServiceName(), - memberMaintenanceModeEvent.getClusterId()); - } - } + @Override + protected void onEvent(Event event) { + try { + MemberMaintenanceModeEvent maintenanceModeEvent = (MemberMaintenanceModeEvent) event; + String clusterId = maintenanceModeEvent.getClusterId(); + AbstractClusterMonitor monitor; + AutoscalerContext asCtx = AutoscalerContext.getInstance(); + monitor = asCtx.getClusterMonitor(clusterId); + if (null == monitor) { + if (log.isDebugEnabled()) { + log.debug(String.format("A cluster monitor is not found in autoscaler context " + + "[cluster] %s", clusterId)); + } + return; + } + monitor.handleMemberMaintenanceModeEvent(maintenanceModeEvent); + } catch (Exception e) { + String msg = "Error processing event " + e.getLocalizedMessage(); + log.error(msg, e); + } + } }); } @@ -1061,29 +622,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable { terminated = true; } - protected synchronized void startClusterMonitor(Cluster cluster) { - Thread th = null; - - AbstractClusterMonitor monitor; - monitor = AutoscalerContext.getInstance().getClusterMonitor(cluster.getClusterId()); - - if (null == monitor) { - th = new Thread(new ClusterMonitorAdder(cluster)); - } - if (th != null) { - th.start(); - try { - th.join(); - } catch (InterruptedException ignore) { - } - - if (log.isDebugEnabled()) { - log.debug(String.format("Cluster monitor thread has been started successfully: " - + "[cluster] %s ", cluster.getClusterId())); - } - } - } - protected synchronized void startApplicationMonitor(String applicationId) { Thread th = null; if (!AutoscalerContext.getInstance().appMonitorExist(applicationId)) { http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java deleted file mode 100644 index fb23985..0000000 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/AbstractClusterMonitor.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * 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.monitor; - -import org.apache.commons.configuration.XMLConfiguration; -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.monitor.events.MonitorScalingEvent; -import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent; -import org.apache.stratos.autoscaler.monitor.events.MonitorTerminateAllEvent; -import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; -import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator; -import org.apache.stratos.autoscaler.util.AutoScalerConstants; -import org.apache.stratos.autoscaler.util.ConfUtil; -import org.apache.stratos.messaging.domain.topology.*; -import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; -import org.drools.runtime.StatefulKnowledgeSession; -import org.drools.runtime.rule.FactHandle; - -import java.util.Map; - -/** - * Is responsible for monitoring a service cluster. This runs periodically - * and perform minimum instance check and scaling check using the underlying - * rules engine. - */ -abstract public class AbstractClusterMonitor extends Monitor implements Runnable { - - private static final Log log = LogFactory.getLog(AbstractClusterMonitor.class); - // Map<NetworkpartitionId, Network Partition Context> - protected Map<String, NetworkPartitionContext> networkPartitionCtxts; - protected DeploymentPolicy deploymentPolicy; - protected AutoscalePolicy autoscalePolicy; - - - protected FactHandle minCheckFactHandle; - protected FactHandle scaleCheckFactHandle; - protected FactHandle terminateDependencyFactHandle; - protected FactHandle terminateAllFactHandle; - - protected StatefulKnowledgeSession minCheckKnowledgeSession; - protected StatefulKnowledgeSession scaleCheckKnowledgeSession; - protected StatefulKnowledgeSession terminateAllKnowledgeSession; - protected boolean isDestroyed; - - protected String clusterId; - protected String serviceId; - protected String appId; - - protected boolean hasFaultyMember = false; - - protected ClusterStatus status; - - //protected ParentComponentMonitor parent; - - protected AutoscalerRuleEvaluator autoscalerRuleEvaluator; - - // time intereval between two runs of the Monitor. Default is 90000ms. - protected int monitorInterval; - - public AbstractClusterMonitor() { - readConfigurations(); - status = ClusterStatus.Created; - } - - private void readConfigurations() { - - XMLConfiguration conf = ConfUtil.getInstance(null).getConfiguration(); - monitorInterval = conf.getInt(AutoScalerConstants.AUTOSCALER_MONITOR_INTERVAL, 90000); - if (log.isDebugEnabled()) { - log.debug("Cluster Monitor task interval: " + getMonitorInterval()); - } - } - - @Override - public void run() { - // TODO Auto-generated method stub - } - - - public NetworkPartitionContext getNetworkPartitionCtxt(Member member) { - log.info("***** getNetworkPartitionCtxt " + member.getNetworkPartitionId()); - String networkPartitionId = member.getNetworkPartitionId(); - if (networkPartitionCtxts.containsKey(networkPartitionId)) { - log.info("returnnig network partition context " + networkPartitionCtxts.get(networkPartitionId)); - return networkPartitionCtxts.get(networkPartitionId); - } - log.info("returning null getNetworkPartitionCtxt"); - return null; - } - - public String getPartitionOfMember(String memberId) { - for (Service service : TopologyManager.getTopology().getServices()) { - for (Cluster cluster : service.getClusters()) { - if (cluster.memberExists(memberId)) { - return cluster.getMember(memberId).getPartitionId(); - } - } - } - return null; - } - - public void destroy() { - minCheckKnowledgeSession.dispose(); - scaleCheckKnowledgeSession.dispose(); - terminateAllKnowledgeSession.dispose(); - setDestroyed(true); - if (log.isDebugEnabled()) { - log.debug("Cluster Monitor Drools session has been disposed. " + this.toString()); - } - } - - public abstract void terminateAllMembers (); - - public boolean isDestroyed() { - return isDestroyed; - } - - public void setDestroyed(boolean isDestroyed) { - this.isDestroyed = isDestroyed; - } - - public String getServiceId() { - return serviceId; - } - - public void setServiceId(String serviceId) { - this.serviceId = serviceId; - } - - public DeploymentPolicy getDeploymentPolicy() { - return deploymentPolicy; - } - - public void setDeploymentPolicy(DeploymentPolicy deploymentPolicy) { - this.deploymentPolicy = deploymentPolicy; - } - - public AutoscalePolicy getAutoscalePolicy() { - return autoscalePolicy; - } - - public void setAutoscalePolicy(AutoscalePolicy autoscalePolicy) { - this.autoscalePolicy = autoscalePolicy; - } - - public String getClusterId() { - return clusterId; - } - - public void setClusterId(String clusterId) { - this.clusterId = clusterId; - } - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public Map<String, NetworkPartitionContext> getNetworkPartitionCtxts() { - return networkPartitionCtxts; - } - - public NetworkPartitionContext getNetworkPartitionCtxt(String networkPartitionId) { - return networkPartitionCtxts.get(networkPartitionId); - } - - public void setPartitionCtxt(Map<String, NetworkPartitionContext> partitionCtxt) { - this.networkPartitionCtxts = partitionCtxt; - } - - public boolean partitionCtxtAvailable(String partitionId) { - return networkPartitionCtxts.containsKey(partitionId); - } - - public void addNetworkPartitionCtxt(NetworkPartitionContext ctxt) { - this.networkPartitionCtxts.put(ctxt.getId(), ctxt); - } - - public NetworkPartitionContext getPartitionCtxt(String id) { - return this.networkPartitionCtxts.get(id); - } - - public StatefulKnowledgeSession getMinCheckKnowledgeSession() { - return minCheckKnowledgeSession; - } - - public void setMinCheckKnowledgeSession(StatefulKnowledgeSession minCheckKnowledgeSession) { - this.minCheckKnowledgeSession = minCheckKnowledgeSession; - } - - public FactHandle getMinCheckFactHandle() { - return minCheckFactHandle; - } - - public void setMinCheckFactHandle(FactHandle minCheckFactHandle) { - this.minCheckFactHandle = minCheckFactHandle; - } - - - public int getMonitorInterval() { - return monitorInterval; - } - - public ClusterStatus getStatus() { - return status; - } - - public void setStatus(ClusterStatus status) { - - //if(this.status != status) { - this.status = status; - /** - * notifying the parent monitor about the state change - * If the cluster in_active and if it is a in_dependent cluster, - * then won't send the notification to parent. - */ - if (status == ClusterStatus.Inactive && !this.hasDependent) { - log.info("[Cluster] " + clusterId + "is not notifying the parent, " + - "since it is identified as the independent unit"); - - } else if (status == ClusterStatus.Terminating) { - // notify parent - log.info("[Cluster] " + clusterId + " is not notifying the parent, " + - "since it is in Terminating State"); - - } else { - MonitorStatusEventBuilder.handleClusterStatusEvent(this.parent, this.status, this.clusterId); - } - //} - - } - - @Override - public void onChildEvent(MonitorStatusEvent statusEvent) { - - } - - @Override - public void onEvent(MonitorTerminateAllEvent terminateAllEvent) { - - } - - @Override - public void onEvent(MonitorScalingEvent scalingEvent) { - - } - - public boolean isHasFaultyMember() { - return hasFaultyMember; - } - - public void setHasFaultyMember(boolean hasFaultyMember) { - this.hasFaultyMember = hasFaultyMember; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java index 5938077..bd36091 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ParentComponentMonitor.java @@ -31,6 +31,8 @@ import org.apache.stratos.autoscaler.applications.topic.ApplicationsEventPublish import org.apache.stratos.autoscaler.grouping.topic.ClusterStatusEventPublisher; import org.apache.stratos.autoscaler.status.checker.StatusChecker; import org.apache.stratos.messaging.domain.applications.ParentComponent; +import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitorFactory; +import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; import java.util.HashMap; import java.util.List; http://git-wip-us.apache.org/repos/asf/stratos/blob/8b66cbac/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java index 7f3de58..66891d0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/application/ApplicationMonitorFactory.java @@ -18,48 +18,32 @@ */ package org.apache.stratos.autoscaler.monitor.application; +import java.util.Map; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.autoscaler.AutoscalerContext; -import org.apache.stratos.autoscaler.MemberStatsContext; -import org.apache.stratos.autoscaler.NetworkPartitionContext; -import org.apache.stratos.autoscaler.PartitionContext; -import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; -import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; +import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationContext; +import org.apache.stratos.autoscaler.applications.dependency.context.ClusterContext; +import org.apache.stratos.autoscaler.applications.dependency.context.GroupContext; import org.apache.stratos.autoscaler.exception.DependencyBuilderException; import org.apache.stratos.autoscaler.exception.PartitionValidationException; import org.apache.stratos.autoscaler.exception.PolicyValidationException; import org.apache.stratos.autoscaler.exception.TopologyInConsistentException; -import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationContext; -import org.apache.stratos.autoscaler.applications.dependency.context.ClusterContext; -import org.apache.stratos.autoscaler.applications.dependency.context.GroupContext; -import org.apache.stratos.autoscaler.monitor.application.ApplicationMonitor; -import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor; -import org.apache.stratos.autoscaler.grouping.dependency.context.ApplicationContext; -import org.apache.stratos.autoscaler.grouping.dependency.context.ClusterContext; -import org.apache.stratos.autoscaler.grouping.dependency.context.GroupContext; import org.apache.stratos.autoscaler.monitor.Monitor; import org.apache.stratos.autoscaler.monitor.ParentComponentMonitor; import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor; import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitorFactory; import org.apache.stratos.autoscaler.monitor.cluster.VMClusterMonitor; import org.apache.stratos.autoscaler.monitor.group.GroupMonitor; -import org.apache.stratos.autoscaler.partition.PartitionGroup; -import org.apache.stratos.autoscaler.policy.PolicyManager; -import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy; -import org.apache.stratos.autoscaler.status.checker.StatusChecker; -import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition; -import org.apache.stratos.cloud.controller.stub.pojo.MemberContext; import org.apache.stratos.cloud.controller.stub.pojo.Properties; import org.apache.stratos.cloud.controller.stub.pojo.Property; import org.apache.stratos.messaging.domain.applications.Application; import org.apache.stratos.messaging.domain.applications.Group; -import org.apache.stratos.messaging.domain.topology.*; +import org.apache.stratos.messaging.domain.topology.Cluster; +import org.apache.stratos.messaging.domain.topology.Service; +import org.apache.stratos.messaging.domain.topology.Topology; import org.apache.stratos.messaging.message.receiver.applications.ApplicationManager; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; -import org.apache.stratos.messaging.util.Constants; - -import java.util.Map; /** * Factory class to get the Monitors.
