Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 718445a8a -> 077fb4073
refactoring the Application Topolopgy model - added Map [alias -> ClusterDataHolder] Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/077fb407 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/077fb407 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/077fb407 Branch: refs/heads/4.0.0-grouping Commit: 077fb4073ab285fe6fb82606add6998d17f977f5 Parents: 718445a Author: Isuru Haththotuwa <[email protected]> Authored: Wed Sep 24 13:11:02 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Wed Sep 24 13:11:02 2014 +0530 ---------------------------------------------------------------------- .../autoscaler/grouping/DependencyBuilder.java | 11 ++-- .../stratos/autoscaler/monitor/Monitor.java | 20 +++---- .../status/checker/StatusChecker.java | 27 +++++---- .../application/ApplicationUtils.java | 7 ++- .../parser/DefaultApplicationParser.java | 55 +++++++++--------- .../controller/pojo/ApplicationDataHolder.java | 59 ------------------- .../controller/pojo/ClusterDataHolder.java | 61 -------------------- .../controller/pojo/payload/MetaDataHolder.java | 5 ++ .../controller/topology/TopologyBuilder.java | 9 ++- .../messaging/domain/topology/Application.java | 34 +++++------ .../domain/topology/ClusterDataHolder.java | 44 ++++++++++++++ .../messaging/domain/topology/Group.java | 22 +++---- .../domain/topology/ParentBehavior.java | 10 +--- .../event/topology/ApplicationCreatedEvent.java | 2 +- 14 files changed, 144 insertions(+), 222 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java index a021ce3..4bd47a1 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/DependencyBuilder.java @@ -20,6 +20,7 @@ package org.apache.stratos.autoscaler.grouping; import org.apache.stratos.messaging.domain.topology.*; +import java.util.Collection; import java.util.LinkedList; import java.util.Queue; import java.util.Set; @@ -65,11 +66,11 @@ public class DependencyBuilder { } } - for(Set<String> clusterIds: component.getServiceNameToClusterIdsMap().values()) { - for (String clusterId : clusterIds) { - if(!startup.contains(clusterId)) { - startup.add(clusterId); - } + Collection<ClusterDataHolder> clusterDataHolders = component.getClusterDataMap().values(); + + for(ClusterDataHolder clusterDataHolder : clusterDataHolders) { + if(!startup.contains(clusterDataHolder.getClusterId())) { + startup.add(clusterDataHolder.getClusterId()); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java index 6b299ef..198074f 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/Monitor.java @@ -123,17 +123,15 @@ public abstract class Monitor extends Observable implements Observer { startGroupMonitor(this, dependency, component); } else if (dependency.contains("cartridge")) { - Set<String> clusterIds = component.getClusterIds(dependency); - for (String clusterId : clusterIds) { - Cluster cluster = null; - TopologyManager.acquireReadLock(); - cluster = TopologyManager.getTopology().getService(dependency).getCluster(clusterId); - TopologyManager.releaseReadLock(); - if (cluster != null) { - startClusterMonitor(cluster); - } else { - //TODO throw exception since Topology is inconsistent - } + String clusterId = component.getClusterData(dependency).getClusterId(); + Cluster cluster = null; + TopologyManager.acquireReadLock(); + cluster = TopologyManager.getTopology().getService(dependency).getCluster(clusterId); + TopologyManager.releaseReadLock(); + if (cluster != null) { + startClusterMonitor(cluster); + } else { + //TODO throw exception since Topology is inconsistent } } } else { http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java index e410259..0f7d023 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java @@ -106,7 +106,7 @@ public class StatusChecker { Runnable exGroup = new Runnable() { public void run() { Application application = TopologyManager.getTopology().getApplication(appId); - Map<String, Set<String>> clusterIds = application.getClusterMap(); + Map<String, ClusterDataHolder> clusterIds = application.getClusterDataMap(); Map<String, Group> groups = application.getAliasToGroupMap(); updateChildStatus(clusterId, groups, clusterIds, application); } @@ -155,23 +155,23 @@ public class StatusChecker { } - private boolean updateChildStatus(String id, Map<String, Group> groups, Map<String, Set<String>> clusterIds, ParentBehavior parent) { + private boolean updateChildStatus(String id, Map<String, Group> groups, Map<String, ClusterDataHolder> clusterData, ParentBehavior parent) { boolean groupActive = false; boolean clustersActive = false; boolean groupsActive = false; boolean childFound = false; - if(clusterIds.containsValue(id) || groups.containsKey(id)) { + if(clusterData.containsValue(id) || groups.containsKey(id)) { childFound = true; - if(!clusterIds.isEmpty() && !groups.isEmpty()) { - clustersActive = getClusterStatus(clusterIds); + if(!clusterData.isEmpty() && !groups.isEmpty()) { + clustersActive = getClusterStatus(clusterData); groupsActive = getGroupStatus(groups); groupActive = clustersActive && groupsActive; } else if (!groups.isEmpty()){ groupsActive = getGroupStatus(groups); groupActive = groupsActive; - } else if (!clusterIds.isEmpty()){ - clustersActive = getClusterStatus(clusterIds); + } else if (!clusterData.isEmpty()){ + clustersActive = getClusterStatus(clusterData); groupActive = clustersActive; } else { //TODO warn log @@ -186,7 +186,7 @@ public class StatusChecker { } else { if(!groups.isEmpty()) { for(Group group: groups.values()) { - return updateChildStatus(id, group.getAliasToGroupMap(), group.getClusterMap(), group); + return updateChildStatus(id, group.getAliasToGroupMap(), group.getClusterDataMap(), group); } } @@ -207,17 +207,16 @@ public class StatusChecker { } - private boolean getClusterStatus(Map<String, Set<String>> clusterIds) { + private boolean getClusterStatus(Map<String, ClusterDataHolder> clusterData) { boolean clusterActiveStatus = false; - for(Map.Entry<String, Set<String>> clusterIdsEntry: clusterIds.entrySet()) { - Service service = TopologyManager.getTopology().getService(clusterIdsEntry.getKey()); - for (String clusterId : clusterIdsEntry.getValue()) { - if(service.getCluster(clusterId).getStatus().equals(ClusterStatus.Active)) { + for(Map.Entry<String, ClusterDataHolder> clusterDataHolderEntry: clusterData.entrySet()) { + Service service = TopologyManager.getTopology().getService(clusterDataHolderEntry.getValue().getServiceType()); + if(service.getCluster(clusterDataHolderEntry.getValue().getClusterId()). + getStatus().equals(ClusterStatus.Active)) { clusterActiveStatus = true; } else { clusterActiveStatus = false; } - } } return clusterActiveStatus; } http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java index ce9b112..8559e00 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java @@ -74,7 +74,12 @@ public class ApplicationUtils { SubscribableInfoContext subscribableInfoCtxt, Cartridge cartridge) { - MetaDataHolder metaDataHolder = new MetaDataHolder(appId, subscribableCtxt.getType(), clusterId); + MetaDataHolder metaDataHolder; + if (groupName != null) { + metaDataHolder = new MetaDataHolder(appId, groupName, clusterId); + } else { + metaDataHolder = new MetaDataHolder(appId); + } Properties clusterLevelPayloadProperties = new Properties(); // app id http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java index 341f42a..2dcf955 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java @@ -210,15 +210,15 @@ public class DefaultApplicationParser implements ApplicationParser { // following keeps track of all Clusters created for this application //Set<Cluster> clusters = new HashSet<Cluster>(); //ClusterDataHolder clusterDataHolder = null; - Map<String, Set<String>> serviceNameToClusterIds; + Map<String, ClusterDataHolder> clusterDataMap; if (appCtxt.getComponents() != null) { // get top level Subscribables if (appCtxt.getComponents().getSubscribableContexts() != null) { - serviceNameToClusterIds = parseLeafLevelSubscriptions(appCtxt.getApplicationId(), appCtxt.getTenantId(), + clusterDataMap = parseLeafLevelSubscriptions(appCtxt.getApplicationId(), appCtxt.getTenantId(), application.getKey(), null, Arrays.asList(appCtxt.getComponents().getSubscribableContexts()), subscribableInfoCtxts); - application.setClusterIds(serviceNameToClusterIds); + application.setClusterData(clusterDataMap); //clusters.addAll(clusterDataHolder.getApplicationClusterContexts()); } @@ -336,14 +336,13 @@ public class DefaultApplicationParser implements ApplicationParser { dependencyOrder.setKillbehavior(getKillbehaviour(groupCtxt.getName())); group.setDependencyOrder(dependencyOrder); - //ClusterDataHolder clusterDataHolderOfGroup; - Map<String, Set<String>> serviceNameToClusterIds; + Map<String, ClusterDataHolder> clusterDataMap; // get group level Subscribables if (groupCtxt.getSubscribableContexts() != null) { - serviceNameToClusterIds = parseLeafLevelSubscriptions(appId, tenantId, key, groupCtxt.getName(), + clusterDataMap = parseLeafLevelSubscriptions(appId, tenantId, key, groupCtxt.getName(), Arrays.asList(groupCtxt.getSubscribableContexts()), subscribableInfoCtxts); - group.setClusterIds(serviceNameToClusterIds); + group.setClusterData(clusterDataMap); //clusters.addAll(clusterDataHolderOfGroup.getApplicationClusterContexts()); // if (clusterDataHolder == null) { // clusterDataHolder = clusterDataHolderOfGroup; @@ -456,12 +455,12 @@ public class DefaultApplicationParser implements ApplicationParser { // return subscribableContexts; // } - private Map<String, Set<String>> parseLeafLevelSubscriptions (String appId, int tenantId, String key, String groupName, + private Map<String, ClusterDataHolder> parseLeafLevelSubscriptions (String appId, int tenantId, String key, String groupName, List<SubscribableContext> subscribableCtxts, Map<String, SubscribableInfoContext> subscribableInfoCtxts) throws ApplicationDefinitionException { - Map<String, Set<String>> clusterIdMap = new HashMap<String, Set<String>>(); + Map<String, ClusterDataHolder> clusterDataMap = new HashMap<String, ClusterDataHolder>(); // Set<Cluster> clusters = new HashSet<Cluster>(); //Set<PayloadDataHolder> payloadDataHolders = new HashSet<PayloadDataHolder>(); @@ -508,12 +507,16 @@ public class DefaultApplicationParser implements ApplicationParser { // create cluster level meta data this.metaDataHolders.add(ApplicationUtils.getClusterLevelPayloadData(appId, groupName, tenantId, key, hostname, appClusterCtxt.getTenantRange(), clusterId, subscribableCtxt, subscribableInfoCtxt, cartridge)); + + // add relevant information to the map + clusterDataMap.put(subscribableCtxt.getAlias(), new ClusterDataHolder(subscribableCtxt.getType(), clusterId)); + //////////// //Cluster cluster = getCluster(subscribableCtxt, subscribableInfoCtxt, cartridge); - addClusterId(clusterIdMap, subscribableCtxt.getType(), clusterId); - //clusterIdMap.put(subscribableCtxt.getType(), cluster.getClusterId()); + //addClusterId(clusterDataMap, subscribableCtxt.getType(), clusterId); + //clusterDataMap.put(subscribableCtxt.getType(), cluster.getClusterId()); //clusters.add(cluster); -// if (clusterIdMap.put(subscribableCtxt.getType(), cluster.getClusterId()) != null) { +// if (clusterDataMap.put(subscribableCtxt.getType(), cluster.getClusterId()) != null) { // // Application Definition has same cartridge multiple times at the top-level // handleError("Cartridge [ " + subscribableCtxt.getType() + " ] appears twice in the Application Definition's top level"); // } @@ -523,8 +526,8 @@ public class DefaultApplicationParser implements ApplicationParser { // cluster.getHostNames().get(0)); } - return clusterIdMap; - //return new ClusterDataHolder(clusterIdMap, clusters); + return clusterDataMap; + //return new ClusterDataHolder(clusterDataMap, clusters); //clusterDataHolder.setPayloadDataHolders(payloadDataHolders); } @@ -539,18 +542,18 @@ public class DefaultApplicationParser implements ApplicationParser { return new ApplicationClusterContext(serviceType, clusterId, hostname, textPayload, deploymentPolicy, isLB); } - public void addClusterId (Map<String, Set<String>> serviceNameToClusterIdsMap, String serviceName, String clusterId) { - - if (serviceNameToClusterIdsMap.get(serviceName) == null) { - // not found, create - Set<String> clusterIds = new HashSet<String>(); - clusterIds.add(clusterId); - serviceNameToClusterIdsMap.put(serviceName, clusterIds); - } else { - // the cluster id set already exists, update - serviceNameToClusterIdsMap.get(serviceName).add(clusterId); - } - } +// public void addClusterId (Map<String, Set<String>> serviceNameToClusterIdsMap, String serviceName, String clusterId) { +// +// if (serviceNameToClusterIdsMap.get(serviceName) == null) { +// // not found, create +// Set<String> clusterIds = new HashSet<String>(); +// clusterIds.add(clusterId); +// serviceNameToClusterIdsMap.put(serviceName, clusterIds); +// } else { +// // the cluster id set already exists, update +// serviceNameToClusterIdsMap.get(serviceName).add(clusterId); +// } +// } // private void createClusterContext (String appId, String groupName, String serviceType, String clusterId, // String hostName) throws ApplicationDefinitionException { http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ApplicationDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ApplicationDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ApplicationDataHolder.java deleted file mode 100644 index 601f625..0000000 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ApplicationDataHolder.java +++ /dev/null @@ -1,59 +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.cloud.controller.pojo; - -import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder; -import org.apache.stratos.messaging.domain.topology.Application; -import org.apache.stratos.messaging.domain.topology.Cluster; - -import java.util.Set; - -public class ApplicationDataHolder { - - private Application application; - - private Set<Cluster> clusters; - - private Set<MetaDataHolder> metaDataHolders; - - public Application getApplication() { - return application; - } - - public void setApplication(Application application) { - this.application = application; - } - - public Set<Cluster> getClusters() { - return clusters; - } - - public void setClusters(Set<Cluster> clusters) { - this.clusters = clusters; - } - - public Set<MetaDataHolder> getMetaDataHolders() { - return metaDataHolders; - } - - public void setMetaDataHolders(Set<MetaDataHolder> metaDataHolders) { - this.metaDataHolders = metaDataHolders; - } -} http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterDataHolder.java deleted file mode 100644 index 874d18e..0000000 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ClusterDataHolder.java +++ /dev/null @@ -1,61 +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.cloud.controller.pojo; -// -//import org.apache.stratos.cloud.controller.pojo.payload.PayloadDataHolder; -//import org.apache.stratos.messaging.domain.topology.Cluster; -//import org.apache.stratos.metadata.client.pojo.DataContext; -// -//import java.util.Map; -//import java.util.Set; -// -//public class ClusterDataHolder { -// -// // Cluster Ids map, key = service name -// private Map<String, Set<String>> clusterIdMap; -// -// // Cluster object collection -// private Set<Cluster> clusters; -// -//// // payload related information -//// private Set<PayloadDataHolder> payloadDataHolders; -// -// public ClusterDataHolder (Map<String, Set<String>> clusterIdMap, Set<Cluster> clusters) { -// this.clusterIdMap = clusterIdMap; -// this.clusters = clusters; -// } -// -// public Map<String, Set<String>> getClusterIdMap() { -// return clusterIdMap; -// } -// -// public Set<Cluster> getApplicationClusterContexts() { -// return clusters; -// } -// -// -//// public Set<PayloadDataHolder> getPayloadDataHolders() { -//// return payloadDataHolders; -//// } -//// -//// public void setPayloadDataHolders(Set<PayloadDataHolder> payloadDataHolders) { -//// this.payloadDataHolders = payloadDataHolders; -//// } -//} http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/payload/MetaDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/payload/MetaDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/payload/MetaDataHolder.java index 8ab745e..59bf380 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/payload/MetaDataHolder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/payload/MetaDataHolder.java @@ -35,6 +35,11 @@ public class MetaDataHolder { private Properties properties; + public MetaDataHolder (String appId) { + + this.appId = appId; + } + public MetaDataHolder(String appId, String groupName, String clusterId) { this.appId = appId; http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index a926411..25dc027 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -672,11 +672,10 @@ public class TopologyBuilder { } else { Application application = topology.getApplication(applicationId); // remove clusters - for (Map.Entry<String, Set<String>> serviceNameToClusterIdEntry: - application.getServiceNameToClusterIdsMap().entrySet()) { - Service service = topology.getService(serviceNameToClusterIdEntry.getKey()); - for (String clusterId : serviceNameToClusterIdEntry.getValue()) { - service.removeCluster(clusterId); + for (Map.Entry<String, ClusterDataHolder> clusterDataHolderEntry : application.getClusterDataMap().entrySet()) { + Service service = topology.getService(clusterDataHolderEntry.getValue().getServiceType()); + if (service != null) { + service.removeCluster(clusterDataHolderEntry.getValue().getClusterId()); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java index 55e37e6..cc7c588 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java @@ -40,8 +40,8 @@ public class Application implements ParentBehavior { private DependencyOrder dependencyOrder; // Group Map, key = Group.alias private Map<String, Group> aliasToGroupMap; - // Cluster Id map, key = service name - private Map<String, Set<String>> serviceNameToClusterIdsMap; + // Cluster Id map, key = subscription alias for the cartridge type + private Map<String, ClusterDataHolder> aliasToClusterDataMap; // Application status private Status status; @@ -50,7 +50,7 @@ public class Application implements ParentBehavior { this.key = RandomStringUtils.randomAlphanumeric(16); this.status = Status.Created; aliasToGroupMap = new HashMap<String, Group>(); - serviceNameToClusterIdsMap = new HashMap<String, Set<String>>(); + aliasToClusterDataMap = new HashMap<String, ClusterDataHolder>(); } @Override @@ -74,8 +74,8 @@ public class Application implements ParentBehavior { } @Override - public Map<String, Set<String>> getClusterMap() { - return this.serviceNameToClusterIdsMap; + public Map<String, ClusterDataHolder> getClusterDataMap() { + return this.aliasToClusterDataMap; } @Override @@ -116,6 +116,16 @@ public class Application implements ParentBehavior { return dependencyOrder; } + @Override + public void setClusterData(Map<String, ClusterDataHolder> aliasToClusterData) { + this.aliasToClusterDataMap.putAll(aliasToClusterData); + } + + @Override + public ClusterDataHolder getClusterData(String alias) { + return aliasToClusterDataMap.get(alias); + } + // @Override // public void addClusterId(String serviceName, String clusterId) { // @@ -132,20 +142,6 @@ public class Application implements ParentBehavior { // } // } - @Override - public void setClusterIds(Map<String, Set<String>> serviceNameToClusterIds) { - serviceNameToClusterIdsMap.putAll(serviceNameToClusterIds); - } - - @Override - public Set<String> getClusterIds(String serviceName) { - return serviceNameToClusterIdsMap.get(serviceName); - } - - public Map<String, Set<String>> getServiceNameToClusterIdsMap() { - return serviceNameToClusterIdsMap; - } - public String getId() { return id; } http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java new file mode 100644 index 0000000..cceb4fc --- /dev/null +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ClusterDataHolder.java @@ -0,0 +1,44 @@ +/* + * 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.messaging.domain.topology; + +import java.io.Serializable; + +public class ClusterDataHolder implements Serializable { + + private String serviceType; + + private String clusterId; + + public ClusterDataHolder (String serviceType, String clusterId) { + + this.serviceType = serviceType; + this.clusterId = clusterId; + } + + + public String getServiceType() { + return serviceType; + } + + public String getClusterId() { + return clusterId; + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java index 548aabd..c47667f 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java @@ -36,8 +36,8 @@ public class Group implements ParentBehavior { private DependencyOrder dependencyOrder; // Sub Group Map, key = Group.alias private Map<String, Group> aliasToGroupMap; - // Cluster id map, key = service name - private Map<String, Set<String>> serviceNameToClusterIdsMap; + // Cluster Id map, key = subscription alias for the cartridge type + private Map<String, ClusterDataHolder> aliasToClusterDataMap; // Group status private Status status; @@ -46,7 +46,7 @@ public class Group implements ParentBehavior { this.alias = alias; this.status = Status.Created; aliasToGroupMap = new HashMap<String, Group>(); - serviceNameToClusterIdsMap = new HashMap<String, Set<String>>(); + aliasToClusterDataMap = new HashMap<String, ClusterDataHolder>(); } @Override @@ -70,8 +70,8 @@ public class Group implements ParentBehavior { } @Override - public Map<String,Set<String>> getClusterMap() { - return this.serviceNameToClusterIdsMap; + public Map<String, ClusterDataHolder> getClusterDataMap() { + return this.aliasToClusterDataMap; } @Override @@ -129,17 +129,13 @@ public class Group implements ParentBehavior { // } @Override - public void setClusterIds(Map<String, Set<String>> serviceNameToClusterIds) { - serviceNameToClusterIdsMap.putAll(serviceNameToClusterIds); + public void setClusterData(Map<String, ClusterDataHolder> aliasToClusterData) { + this.aliasToClusterDataMap.putAll(aliasToClusterData); } @Override - public Set<String> getClusterIds(String serviceName) { - return serviceNameToClusterIdsMap.get(serviceName); - } - - public Map<String, Set<String>> getServiceNameToClusterIdsMap() { - return serviceNameToClusterIdsMap; + public ClusterDataHolder getClusterData(String alias) { + return aliasToClusterDataMap.get(alias); } public String getName() { http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java index bfad2ae..d6c7035 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java @@ -34,7 +34,7 @@ public interface ParentBehavior extends Serializable { public Map<String, Group> getAliasToGroupMap(); - public Map<String,Set<String>> getClusterMap(); + public Map<String, ClusterDataHolder> getClusterDataMap(); public Group getGroupRecursively (String groupAlias); @@ -44,11 +44,7 @@ public interface ParentBehavior extends Serializable { public DependencyOrder getDependencyOrder (); -// public void addClusterId (String serviceName, String clusterId); + public void setClusterData (Map<String, ClusterDataHolder> aliasToClusterData); - public void setClusterIds (Map<String,Set<String>> serviceNameToClusterIds); - - public Set<String> getClusterIds(String serviceName); - - public Map<String, Set<String>> getServiceNameToClusterIdsMap(); + public ClusterDataHolder getClusterData (String alias); } http://git-wip-us.apache.org/repos/asf/stratos/blob/077fb407/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ApplicationCreatedEvent.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ApplicationCreatedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ApplicationCreatedEvent.java index 3674eb3..7923667 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ApplicationCreatedEvent.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ApplicationCreatedEvent.java @@ -35,6 +35,6 @@ public class ApplicationCreatedEvent extends TopologyEvent { public String toString() { return "ApplicationCreatedEvent [app id= " + application.getId() + ", groups= " + application.getGroups() + ", clusters= " + - application.getClusterMap().values() + "]"; + application.getClusterDataMap().values() + "]"; } }
