You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by sa...@apache.org on 2014/03/12 12:56:43 UTC

[1/2] git commit: Fixing STRATOS-508. Removing subsription check when adding clusters to cluster map in information model. Modify LoadBalancerCategory to fix LB cluster-id issue

Repository: incubator-stratos
Updated Branches:
  refs/heads/master 172740958 -> 4097941c8


Fixing STRATOS-508. Removing subsription check when adding clusters to cluster map in information model. Modify LoadBalancerCategory to fix LB cluster-id issue


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/7b3a26d5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/7b3a26d5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/7b3a26d5

Branch: refs/heads/master
Commit: 7b3a26d5a46ec0809c2854ac35b220e1747dda35
Parents: 9694fa2
Author: Sajith Kariyawasam <sa...@wso2.com>
Authored: Wed Mar 12 17:22:03 2014 +0530
Committer: Sajith Kariyawasam <sa...@wso2.com>
Committed: Wed Mar 12 17:22:03 2014 +0530

----------------------------------------------------------------------
 .../lb/category/LoadBalancerCategory.java       |  86 +++++
 .../manager/CartridgeSubscriptionManager.java   |  14 +-
 .../RegistryBasedPersistenceManager.java        |   5 +-
 .../utils/CartridgeSubscriptionUtils.java       |   4 +-
 .../model/TopologyClusterInformationModel.java  | 315 +++----------------
 .../StratosManagerTopologyReceiver.java         | 149 ++-------
 6 files changed, 185 insertions(+), 388 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
index 906d2a9..3352935 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lb/category/LoadBalancerCategory.java
@@ -19,11 +19,28 @@
 
 package org.apache.stratos.manager.lb.category;
 
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 import org.apache.stratos.manager.behaviour.CartridgeMgtBehaviour;
+import org.apache.stratos.manager.dao.Cluster;
+import org.apache.stratos.manager.deploy.service.Service;
+import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.exception.AlreadySubscribedException;
+import org.apache.stratos.manager.exception.PersistenceManagerException;
+import org.apache.stratos.manager.payload.PayloadData;
+import org.apache.stratos.manager.repository.Repository;
+import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
+import org.apache.stratos.manager.subscriber.Subscriber;
+import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils;
 
 public abstract class LoadBalancerCategory extends CartridgeMgtBehaviour {
 
     private String loadBalancedServiceType;
+	private boolean isLoadBalancedServiceMultiTenant;
+	private static Log log = LogFactory.getLog(LoadBalancerCategory.class);
 
     public String getLoadBalancedServiceType() {
         return loadBalancedServiceType;
@@ -32,4 +49,73 @@ public abstract class LoadBalancerCategory extends CartridgeMgtBehaviour {
     public void setLoadBalancedServiceType(String loadBalancedServiceType) {
         this.loadBalancedServiceType = loadBalancedServiceType;
     }
+    
+	public PayloadData create(String alias, Cluster cluster,
+			Subscriber subscriber, Repository repository,
+			CartridgeInfo cartridgeInfo, String subscriptionKey,
+			Map<String, String> customPayloadEntries) throws ADCException,
+			AlreadySubscribedException {
+
+		String clusterId;
+
+		if (isLoadBalancedServiceMultiTenant) {
+			// the load balancer should be already up and running from service
+			// cluster deployment
+
+			// get the cluster domain and host name from deployed Service
+
+			Service deployedLBService;
+			try {
+				deployedLBService = new DataInsertionAndRetrievalManager()
+						.getService(cartridgeInfo.getType());
+
+			} catch (PersistenceManagerException e) {
+				String errorMsg = "Error in checking if Service is available is PersistenceManager";
+				log.error(errorMsg, e);
+				throw new ADCException(errorMsg, e);
+			}
+
+			if (deployedLBService == null) {
+				String errorMsg = "There is no deployed Service for type "
+						+ cartridgeInfo.getType();
+				log.error(errorMsg);
+				throw new ADCException(errorMsg);
+			}
+
+			if(log.isDebugEnabled()){
+				log.debug(" Setting cluster Domain : " + deployedLBService.getClusterId());
+				log.debug(" Setting Host Name : " + deployedLBService.getHostName());
+			}
+			
+			// set the cluster and hostname
+			cluster.setClusterDomain(deployedLBService.getClusterId());
+			cluster.setHostName(deployedLBService.getHostName());
+
+		} else {
+			clusterId = alias + "." + cartridgeInfo.getType() + ".domain";
+
+			// limit the cartridge alias to 30 characters in length
+			if (clusterId.length() > 30) {
+				clusterId = CartridgeSubscriptionUtils.limitLengthOfString(
+						clusterId, 30);
+			}
+			cluster.setClusterDomain(clusterId);
+			// set hostname
+			cluster.setHostName(alias + "." + cluster.getHostName());
+		}
+
+		return createPayload(cartridgeInfo, subscriptionKey, subscriber,
+				cluster, repository, alias, customPayloadEntries);
+	}
+
+	public boolean isLoadBalancedServiceMultiTenant() {
+		return isLoadBalancedServiceMultiTenant;
+	}
+
+	public void setLoadBalancedServiceMultiTenant(
+			boolean isLoadBalancedServiceMultiTenant) {
+		this.isLoadBalancedServiceMultiTenant = isLoadBalancedServiceMultiTenant;
+	}
+	
+	
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index bfc62de..9688fff 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@ -115,7 +115,7 @@ public class CartridgeSubscriptionManager {
                     subscriptionData.getDeploymentPolicyName(), lbConfig);
 
             // subscribe to LB
-            lbCartridgeSubscription = subscribeToLB (subscriptionData, lbDataCtxt);
+            lbCartridgeSubscription = subscribeToLB (subscriptionData, lbDataCtxt, cartridgeInfo);
 
             lbCartridgeSubscriptionProperties =  new Properties();
             if (lbDataCtxt.getLbProperperties() != null && !lbDataCtxt.getLbProperperties().isEmpty()) {
@@ -149,12 +149,14 @@ public class CartridgeSubscriptionManager {
         return registerCartridgeSubscription(serviceCartridgeSubscription, serviceCartridgeSubscriptionProperties);
     }
 
-    private CartridgeSubscription subscribeToLB (SubscriptionData subscriptionData, LBDataContext lbDataContext)
+    private CartridgeSubscription subscribeToLB (SubscriptionData subscriptionData, LBDataContext lbDataContext,
+            CartridgeInfo serviceCartridgeInfo)
 
             throws ADCException, InvalidCartridgeAliasException,
             DuplicateCartridgeAliasException, PolicyException, UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
             RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException {
 
+        
         if (lbDataContext.getLbCategory() == null || lbDataContext.getLbCategory().equals(Constants.NO_LOAD_BALANCER)) {
             // no load balancer subscription required
             log.info("No LB subscription required for the Subscription with alias: " + subscriptionData.getCartridgeAlias() + ", type: " +
@@ -185,6 +187,9 @@ public class CartridgeSubscriptionManager {
         }
         // Set the load balanced service type
         loadBalancerCategory.setLoadBalancedServiceType(subscriptionData.getCartridgeType());
+        
+		// Set if the load balanced service is multi tenant or not
+        loadBalancerCategory.setLoadBalancedServiceMultiTenant(serviceCartridgeInfo.getMultiTenant());
 
         // Create the CartridgeSubscription instance
         CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.getLBCartridgeSubscriptionInstance(lbDataContext, loadBalancerCategory);
@@ -323,8 +328,9 @@ public class CartridgeSubscriptionManager {
             cartridgeSubscription.removeSubscription();
 
             // Remove the information from Topology Model
-            TopologyClusterInformationModel.getInstance().removeCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias());
+            // Not needed now. TopologyModel is now changed so that information is taken from subscriptions
+            //TopologyClusterInformationModel.getInstance().removeCluster(cartridgeSubscription.getSubscriber().getTenantId(),
+            //        cartridgeSubscription.getType(), cartridgeSubscription.getAlias());
 
             // remove subscription
             try {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
index 0070e82..6ecee93 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
@@ -174,7 +174,10 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
                     log.debug("Traversing resource path " + subscriptionResourcePath);
                 }
 
-                cartridgeSubscriptions.addAll(traverseAndGetCartridgeSubscriptions(subscriptionResourcePath));
+                Collection<CartridgeSubscription> cartridgeSubscriptionSet = traverseAndGetCartridgeSubscriptions(subscriptionResourcePath);
+				if (cartridgeSubscriptionSet != null) {
+					cartridgeSubscriptions.addAll(cartridgeSubscriptionSet);
+				}
             }
 
         } else {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
index e8b572c..9ee5d71 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java
@@ -81,9 +81,9 @@ public class CartridgeSubscriptionUtils {
         }
 
         //TODO:remove. we do not want to know about the tenant rance in subscription!
-        if(cartridgeInfo.getMultiTenant() || subscriber.getTenantId() == -1234) {  //TODO: fix properly
+        if(cartridgeInfo.getMultiTenant()) {  //TODO: fix properly
             basicPayloadData.setTenantRange("*");
-        } else {
+        } else if (subscriber != null) {
             basicPayloadData.setTenantRange(String.valueOf(subscriber.getTenantId()));
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java
index a6ac140..67b8592 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/model/TopologyClusterInformationModel.java
@@ -19,13 +19,19 @@
 
 package org.apache.stratos.manager.topology.model;
 
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
 import org.apache.stratos.messaging.domain.topology.Cluster;
-import org.apache.stratos.messaging.domain.topology.Member;
-
-import java.util.*;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 public class TopologyClusterInformationModel {
 
@@ -33,14 +39,15 @@ public class TopologyClusterInformationModel {
 
     private Map<Integer, Set<CartridgeTypeContext>> tenantIdToCartridgeTypeContextMap;
     private static TopologyClusterInformationModel topologyClusterInformationModel;
+    private Map<String, Cluster> clusterIdToClusterMap;
 
     //locks
     private static volatile ReentrantReadWriteLock lock = new ReentrantReadWriteLock(true);
-    private static volatile ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
     private static volatile ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock();
 
     private TopologyClusterInformationModel() {
         tenantIdToCartridgeTypeContextMap = new HashMap<Integer, Set<CartridgeTypeContext>>();
+        clusterIdToClusterMap = new HashMap<String, Cluster>();
     }
 
     public static TopologyClusterInformationModel getInstance () {
@@ -54,269 +61,44 @@ public class TopologyClusterInformationModel {
 
         return topologyClusterInformationModel;
     }
-
-    public void addCluster (int tenantId, String cartridgeType, String subscriptionAlias, Cluster cluster) {
-
-        Set<CartridgeTypeContext> cartridgeTypeContextSet = null;
-        Set<SubscriptionAliasContext> subscriptionAliasContextSet = null;
-
-        writeLock.lock();
-        try {
-            //check if a set of CartridgeTypeContext instances already exist for given tenant Id
-            cartridgeTypeContextSet = tenantIdToCartridgeTypeContextMap.get(tenantId);
-            if(cartridgeTypeContextSet != null) {
-                CartridgeTypeContext cartridgeTypeContext = null;
-                //iterate through the set
-                Iterator<CartridgeTypeContext> typeCtxIterator = cartridgeTypeContextSet.iterator();
-                while (typeCtxIterator.hasNext()) {
-                    //see if the set contains a CartridgeTypeContext instance with the given cartridge type
-                    cartridgeTypeContext = typeCtxIterator.next();
-                    if (cartridgeTypeContext.getType().equals(cartridgeType)){
-                        //if so, get the SubscriptionAliasContext set
-                        subscriptionAliasContextSet = cartridgeTypeContext.getSubscriptionAliasContextSet();
-                        break;
-                    }
-                }
-                //check if a SubscriptionAliasContext set is not found
-                if(subscriptionAliasContextSet == null) {
-                    //no SubscriptionAliasContext instance
-                    //create a new SubscriptionAliasContext instance
-                    SubscriptionAliasContext subscriptionAliasContext = new SubscriptionAliasContext(subscriptionAlias,
-                            cluster);
-                    //create a SubscriptionAliasContext set
-                    subscriptionAliasContextSet = new HashSet<SubscriptionAliasContext>();
-                    //add the created SubscriptionAliasContext instance to SubscriptionAliasContext set
-                    subscriptionAliasContextSet.add(subscriptionAliasContext);
-                    //set it to the CartridgeTypeContext instance
-                    cartridgeTypeContext = new CartridgeTypeContext(cartridgeType);
-                    cartridgeTypeContext.setSubscriptionAliasContextSet(subscriptionAliasContextSet);
-                    //add to the cartridgeTypeContextSet
-                    cartridgeTypeContextSet.add(cartridgeTypeContext);
-
-                    if (log.isDebugEnabled()) {
-                        log.debug("New cluster added : " + cluster.toString());
-                        Collection<Member> members = cluster.getMembers();
-                        if (members != null && !members.isEmpty()) {
-                            for (Member member : members) {
-                                log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                            }
-                        }
-                    }
-
-                } else {
-                    //iterate through the set
-                    /*Iterator<SubscriptionAliasContext> aliasIterator = subscriptionAliasContextSet.iterator();
-                    while (aliasIterator.hasNext()) {
-                        //see if the set contains a SubscriptionAliasContext instance with the given alias
-                        SubscriptionAliasContext subscriptionAliasContext = aliasIterator.next();
-                        if (subscriptionAliasContext.getSubscriptionAlias().equals(subscriptionAlias)) {
-                            //remove the existing one
-                            aliasIterator.remove();
-                            break;
-                        }
-                    }*/
-                    // remove the existing one
-                    boolean existingClusterRemoved = subscriptionAliasContextSet.remove(new SubscriptionAliasContext(subscriptionAlias, null));
-
-                    //now, add the new cluster object
-                    subscriptionAliasContextSet.add(new SubscriptionAliasContext(subscriptionAlias, cluster));
-
-                    if (log.isDebugEnabled()) {
-                        // check if cluster was overwritten
-                        if (existingClusterRemoved) {
-                            log.debug("Existing cluster found, updated : " + cluster.toString());
-                            Collection<Member> members = cluster.getMembers();
-                            if (members != null && !members.isEmpty()) {
-                                for (Member member : members) {
-                                    log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                                }
-                            }
-                        } else {
-                            log.debug("New cluster added : " + cluster.toString());
-                            Collection<Member> members = cluster.getMembers();
-                            if (members != null && !members.isEmpty()) {
-                                for (Member member : members) {
-                                    log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                                }
-                            }
-                        }
-                    }
-                }
-
-            } else {
-                //no entries for this tenant, go from down to top creating relevant objects and populating them
-                //create a new SubscriptionAliasContext instance
-                SubscriptionAliasContext subscriptionAliasContext = new SubscriptionAliasContext(subscriptionAlias,
-                        cluster);
-                //create a SubscriptionAliasContext set
-                subscriptionAliasContextSet = new HashSet<SubscriptionAliasContext>();
-                //add the created SubscriptionAliasContext instance to SubscriptionAliasContext set
-                subscriptionAliasContextSet.add(subscriptionAliasContext);
-
-                //create a new CartridgeTypeContext instance
-                CartridgeTypeContext cartridgeTypeContext = new CartridgeTypeContext(cartridgeType);
-                //link the SubscriptionAliasContextSet to it
-                cartridgeTypeContext.setSubscriptionAliasContextSet(subscriptionAliasContextSet);
-
-                //Create CartridgeTypeContext instance
-                cartridgeTypeContextSet = new HashSet<CartridgeTypeContext>();
-                //link the SubscriptionAliasContext set to CartridgeTypeContext instance
-                //////////////cartridgeTypeContext.setSubscriptionAliasContextSet(subscriptionAliasContextSet);
-                cartridgeTypeContextSet.add(cartridgeTypeContext);
-
-                //link the CartridgeTypeContext set to the [tenant Id -> CartridgeTypeContext] map
-                tenantIdToCartridgeTypeContextMap.put(tenantId, cartridgeTypeContextSet);
-
-                if (log.isDebugEnabled()) {
-                    log.debug("New cluster added : " + cluster.toString());
-                    Collection<Member> members = cluster.getMembers();
-                    if (members != null && !members.isEmpty()) {
-                        for (Member member : members) {
-                            log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                        }
-                    }
-                }
-            }
-
-        } finally {
-            writeLock.unlock();
-        }
-    }
+    
+    public void addCluster (Cluster cluster) {
+    	if(log.isDebugEnabled()) {
+    		log.debug(" Adding cluster ["+cluster.getClusterId()+"] ");
+    	}
+    	clusterIdToClusterMap.put(cluster.getClusterId(), cluster);
+    }   
 
     public Cluster getCluster (int tenantId, String cartridgeType, String subscriptionAlias) {
-
-        Set<CartridgeTypeContext> cartridgeTypeContextSet = null;
-        Set<SubscriptionAliasContext> subscriptionAliasContextSet = null;
-
-        readLock.lock();
-        try {
-            //check if a set of CartridgeTypeContext instances already exist for given tenant Id
-            cartridgeTypeContextSet = tenantIdToCartridgeTypeContextMap.get(tenantId);
-            if(cartridgeTypeContextSet != null) {
-                CartridgeTypeContext cartridgeTypeContext = null;
-                //iterate through the set
-                Iterator<CartridgeTypeContext> typeCtxIterator = cartridgeTypeContextSet.iterator();
-                while (typeCtxIterator.hasNext()) {
-                    //see if the set contains a CartridgeTypeContext instance with the given cartridge type
-                    cartridgeTypeContext = typeCtxIterator.next();
-                    if (cartridgeTypeContext.getType().equals(cartridgeType)){
-                        //if so, get the SubscriptionAliasContext set
-                        subscriptionAliasContextSet = cartridgeTypeContext.getSubscriptionAliasContextSet();
-                        break;
-                    }
-                }
-                if(subscriptionAliasContextSet != null) {
-                    //iterate through the set
-                    Iterator<SubscriptionAliasContext> aliasIterator = subscriptionAliasContextSet.iterator();
-                    while (aliasIterator.hasNext()) {
-                        //see if the set contains a SubscriptionAliasContext instance with the given alias
-                        SubscriptionAliasContext subscriptionAliasContext = aliasIterator.next();
-                        if (subscriptionAliasContext.equals(new SubscriptionAliasContext(subscriptionAlias, null))) {
-
-                            if (log.isDebugEnabled()) {
-                                log.debug("Matching cluster found for tenant " + tenantId + ", type " + cartridgeType +
-                                        ", subscription alias " + subscriptionAlias + ": " + subscriptionAliasContext.getCluster().toString());
-                                Collection<Member> members = subscriptionAliasContext.getCluster().getMembers();
-                                if (members != null && !members.isEmpty()) {
-                                    for (Member member : members) {
-                                        log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                                    }
-                                }
-                            }
-
-                            return subscriptionAliasContext.getCluster();
-                        }
-                    }
-                }
-            }
-
-        } finally {
-            readLock.unlock();
-        }
-
-        return null;
+    	
+       	DataInsertionAndRetrievalManager dx = new DataInsertionAndRetrievalManager();
+    	String clusterId = dx.getCartridgeSubscription(tenantId, subscriptionAlias).getClusterDomain();
+    	Cluster cluster = clusterIdToClusterMap.get(clusterId);
+    	if(log.isDebugEnabled()) {
+    		log.debug(" Found cluster ["+cluster+"] with id ["+clusterId+"] ");
+    	}
+    	return cluster;
     }
-
+    
     public Set<Cluster> getClusters (int tenantId, String cartridgeType) {
-
-        Set<CartridgeTypeContext> cartridgeTypeContextSet = null;
-        Set<SubscriptionAliasContext> subscriptionAliasContextSet = null;
-        Set<Cluster> clusterSet = new HashSet<Cluster>();
-
-        readLock.lock();
-        try {
-            cartridgeTypeContextSet = tenantIdToCartridgeTypeContextMap.get(tenantId);
-            if(cartridgeTypeContextSet != null) {
-                //iterate through the set
-                Iterator<CartridgeTypeContext> typeCtxIterator = cartridgeTypeContextSet.iterator();
-                while (typeCtxIterator.hasNext()) {
-                    //iterate and get each of SubscriptionAliasContext sets
-                    CartridgeTypeContext cartridgeTypeContext = typeCtxIterator.next();
-
-                    if (cartridgeType != null) {
-                        // check if CartridgeTypeContext instance matches the cartridgeType
-                        if (cartridgeTypeContext.equals(new CartridgeTypeContext(cartridgeType))) {
-
-                            subscriptionAliasContextSet = cartridgeTypeContext.getSubscriptionAliasContextSet();
-
-                            if (subscriptionAliasContextSet != null) {
-                                //iterate and convert to Cluster set
-                                Iterator<SubscriptionAliasContext> aliasCtxIterator = subscriptionAliasContextSet.iterator();
-
-                                while (aliasCtxIterator.hasNext()) {
-                                    Cluster cluster = aliasCtxIterator.next().getCluster();
-                                    // add the cluster to the set
-                                    clusterSet.add(cluster);
-
-                                    if (log.isDebugEnabled()) {
-                                        log.debug("Matching cluster found for tenant " + tenantId + " : " + cluster.toString());
-                                        Collection<Member> members = cluster.getMembers();
-                                        if (members != null && !members.isEmpty()) {
-                                            for (Member member : members) {
-                                                log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                        }
-
-                    } else {
-                        // no cartridgeType specified
-                        subscriptionAliasContextSet = cartridgeTypeContext.getSubscriptionAliasContextSet();
-
-                        if (subscriptionAliasContextSet != null) {
-                            //iterate and convert to Cluster set
-                            Iterator<SubscriptionAliasContext> aliasCtxIterator = subscriptionAliasContextSet.iterator();
-
-                            //clusterSet = new HashSet<Cluster>();
-                            while (aliasCtxIterator.hasNext()) {
-                                Cluster cluster = aliasCtxIterator.next().getCluster();
-                                // add the cluster to the set
-                                clusterSet.add(cluster);
-
-                                if (log.isDebugEnabled()) {
-                                    log.debug("Matching cluster found for tenant " + tenantId + ", type " + cartridgeType + " : " + cluster.toString());
-                                    Collection<Member> members = cluster.getMembers();
-                                    if (members != null && !members.isEmpty()) {
-                                        for (Member member : members) {
-                                            log.debug("[ " + member.getServiceName() + ", " + member.getClusterId() + ", "+ member.getMemberId()  + " ]");
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-        } finally {
-            readLock.unlock();
-        }
-
-        return clusterSet;
+    	Set<Cluster> clusterSet = new HashSet<Cluster>();
+    	DataInsertionAndRetrievalManager dx = new DataInsertionAndRetrievalManager();
+    	Collection<CartridgeSubscription> subscriptions = null;
+    	if(cartridgeType != null) {
+    		subscriptions = dx.getCartridgeSubscriptions(tenantId, cartridgeType);
+    	}else {
+    		subscriptions = dx.getCartridgeSubscriptions(tenantId);
+    	}    		
+    	
+		if (subscriptions != null) {
+			for (CartridgeSubscription cartridgeSubscription : subscriptions) {
+				String clusterId = cartridgeSubscription.getClusterDomain();
+				clusterSet.add(clusterIdToClusterMap.get(clusterId));
+			}
+		}
+    	return clusterSet;
     }
-
+   
     public void removeCluster (int tenantId, String cartridgeType, String subscriptionAlias) {
 
         Set<CartridgeTypeContext> cartridgeTypeContextSet = null;
@@ -364,6 +146,13 @@ public class TopologyClusterInformationModel {
             writeLock.unlock();
         }
     }
+    
+    public void removeCluster (String clusterId) {
+    	if(log.isDebugEnabled()) {
+    		log.debug(" Removing cluster ["+clusterId+"] ");    		
+    	}
+    	clusterIdToClusterMap.remove(clusterId);
+    }
 
     private class CartridgeTypeContext {
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/7b3a26d5/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyReceiver.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyReceiver.java
index 75e4b67..75f9752 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyReceiver.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyReceiver.java
@@ -21,22 +21,31 @@ package org.apache.stratos.manager.topology.receiver;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
-import org.apache.stratos.manager.subscription.CartridgeSubscription;
 import org.apache.stratos.manager.topology.model.TopologyClusterInformationModel;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Member;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.event.Event;
-import org.apache.stratos.messaging.event.topology.*;
-import org.apache.stratos.messaging.listener.topology.*;
+import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
+import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
+import org.apache.stratos.messaging.event.topology.InstanceSpawnedEvent;
+import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
+import org.apache.stratos.messaging.event.topology.MemberStartedEvent;
+import org.apache.stratos.messaging.event.topology.MemberSuspendedEvent;
+import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
+import org.apache.stratos.messaging.listener.topology.ClusterCreatedEventListener;
+import org.apache.stratos.messaging.listener.topology.ClusterRemovedEventListener;
+import org.apache.stratos.messaging.listener.topology.CompleteTopologyEventListener;
+import org.apache.stratos.messaging.listener.topology.InstanceSpawnedEventListener;
+import org.apache.stratos.messaging.listener.topology.MemberActivatedEventListener;
+import org.apache.stratos.messaging.listener.topology.MemberStartedEventListener;
+import org.apache.stratos.messaging.listener.topology.MemberSuspendedEventListener;
+import org.apache.stratos.messaging.listener.topology.MemberTerminatedEventListener;
 import org.apache.stratos.messaging.message.processor.topology.TopologyMessageProcessorChain;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyEventMessageDelegator;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyReceiver;
 
-import java.util.Set;
-
 public class StratosManagerTopologyReceiver implements Runnable {
 
     private static final Log log = LogFactory.getLog(StratosManagerTopologyReceiver.class);
@@ -71,19 +80,10 @@ public class StratosManagerTopologyReceiver implements Runnable {
                     for (Service service : TopologyManager.getTopology().getServices()) {
                         //iterate through all clusters
                         for (Cluster cluster : service.getClusters()) {
-                            //get subscription details
-                            Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(cluster.getClusterId());
-
-                            if(cartridgeSubscriptions != null) {
-                                // iterate and do the relevant changes
-                                for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-                                    //add the information to Topology Cluster Info. model
-                                    TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                            cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                                }
+                              TopologyClusterInformationModel.getInstance().addCluster(cluster);
                             }
                         }
-                    }
+                
                 } finally {
                     TopologyManager.releaseReadLock();
                 }
@@ -98,10 +98,6 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 log.info("********** [ClusterCreatedEventListener] Received: " + event.getClass() + " **********");
 
                 ClusterCreatedEvent clustercreatedEvent = (ClusterCreatedEvent) event;
-                //get subscription details
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clustercreatedEvent.getClusterId());
-
-                if(cartridgeSubscriptions != null) {
 
                     String serviceType = clustercreatedEvent.getServiceName();
                     //acquire read lock
@@ -109,48 +105,28 @@ public class StratosManagerTopologyReceiver implements Runnable {
 
                     try {
                         Cluster cluster = TopologyManager.getTopology().getService(serviceType).getCluster(clustercreatedEvent.getClusterId());
-
-                        // iterate and do the relevant changes
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            //add the information to Topology Cluster Info. model
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
 
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
                     }
-                }
+                
             }
         });
 
 
-        // Removal of cluster is done in the unsubscription, therefore commenting this listener.
         //Cluster Removed event listner
-        /*processorChain.addEventListener(new ClusterRemovedEventListener() {
+        processorChain.addEventListener(new ClusterRemovedEventListener() {
             @Override
             protected void onEvent(Event event) {
 
                 log.info("********** [ClusterRemovedEventListener] Received: " + event.getClass() + " **********");
 
                 ClusterRemovedEvent clusterRemovedEvent = (ClusterRemovedEvent) event;
-
-                Set<CartridgeSubscription> cartridgeSubscriptions =
-                        getCartridgeSubscription(clusterRemovedEvent.getClusterId());
-
-                if(cartridgeSubscriptions != null) {
-
-                    // iterate
-                    for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-                        //add the information to Topology Cluster Info. model
-                        TopologyClusterInformationModel.getInstance().removeCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                cartridgeSubscription.getType(), cartridgeSubscription.getAlias());
-                    }
-                }
+                TopologyClusterInformationModel.getInstance().removeCluster(clusterRemovedEvent.getClusterId());
             }
-        });*/
+        });
         
         
       //Instance Spawned event listner
@@ -164,29 +140,18 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 InstanceSpawnedEvent instanceSpawnedEvent = (InstanceSpawnedEvent) event;
 
                 String clusterDomain = instanceSpawnedEvent.getClusterId();
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clusterDomain);
-
-                if(cartridgeSubscriptions != null) {
-
+                
                     String serviceType = instanceSpawnedEvent.getServiceName();
                     //acquire read lock
                     TopologyManager.acquireReadLock();
 
                     try {
                         Cluster cluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterDomain);
-
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
-
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
-                    }
-                }
-
+                    }                
             }
         });
 
@@ -200,28 +165,18 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 MemberStartedEvent memberStartedEvent = (MemberStartedEvent) event;
 
                 String clusterDomain = memberStartedEvent.getClusterId();
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clusterDomain);
-
-                if(cartridgeSubscriptions != null) {
-
+          
                     String serviceType = memberStartedEvent.getServiceName();
                     //acquire read lock
                     TopologyManager.acquireReadLock();
 
                     try {
                         Cluster cluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterDomain);
-
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
-
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
                     }
-                }
 
             }
         });
@@ -236,9 +191,6 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 MemberActivatedEvent memberActivatedEvent = (MemberActivatedEvent) event;
 
                 String clusterDomain = memberActivatedEvent.getClusterId();
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clusterDomain);
-
-                if(cartridgeSubscriptions != null) {
 
                     String serviceType = memberActivatedEvent.getServiceName();
                     //acquire read lock
@@ -246,19 +198,11 @@ public class StratosManagerTopologyReceiver implements Runnable {
 
                     try {
                         Cluster cluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterDomain);
-
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
-
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
-                    }
-                }
-
+                    }                
             }
         });
 
@@ -272,9 +216,6 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 MemberSuspendedEvent memberSuspendedEvent = (MemberSuspendedEvent) event;
 
                 String clusterDomain = memberSuspendedEvent.getClusterId();
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clusterDomain);
-
-                if(cartridgeSubscriptions != null) {
 
                     String serviceType = memberSuspendedEvent.getServiceName();
                     //acquire read lock
@@ -282,19 +223,12 @@ public class StratosManagerTopologyReceiver implements Runnable {
 
                     try {
                         Cluster cluster = TopologyManager.getTopology().getService(serviceType).getCluster(clusterDomain);
-
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
 
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
                     }
-                }
-
             }
         });
 
@@ -308,9 +242,6 @@ public class StratosManagerTopologyReceiver implements Runnable {
                 MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event;
 
                 String clusterDomain = memberTerminatedEvent.getClusterId();
-                Set<CartridgeSubscription> cartridgeSubscriptions = getCartridgeSubscription(clusterDomain);
-
-                if(cartridgeSubscriptions != null) {
 
                     String serviceType = memberTerminatedEvent.getServiceName();
                     //acquire read lock
@@ -345,35 +276,17 @@ public class StratosManagerTopologyReceiver implements Runnable {
                                     TopologyManager.releaseWriteLock();
                                 }
                         }
-
-                        for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
-                            TopologyClusterInformationModel.getInstance().addCluster(cartridgeSubscription.getSubscriber().getTenantId(),
-                                    cartridgeSubscription.getType(), cartridgeSubscription.getAlias(), cluster);
-                        }
-
+                        TopologyClusterInformationModel.getInstance().addCluster(cluster);
                     } finally {
                         //release read lock
                         TopologyManager.releaseReadLock();
                     }
-                }
-
             }
         });
 
         return processorChain;
     }
 
-    private Set<CartridgeSubscription> getCartridgeSubscription(String clusterDomain) {
-
-        try {
-            return new DataInsertionAndRetrievalManager().getCartridgeSubscriptionForCluster(clusterDomain);
-
-        } catch (Exception e) {
-            log.error("Error getting subscription information for cluster " + clusterDomain, e);
-            return null;
-        }
-    }
 
     @Override
     public void run() {


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos

Posted by sa...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/4097941c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/4097941c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/4097941c

Branch: refs/heads/master
Commit: 4097941c8d1bcc13bcea7a79dce9f2ffe284ee34
Parents: 7b3a26d 1727409
Author: Sajith Kariyawasam <sa...@wso2.com>
Authored: Wed Mar 12 17:23:11 2014 +0530
Committer: Sajith Kariyawasam <sa...@wso2.com>
Committed: Wed Mar 12 17:23:11 2014 +0530

----------------------------------------------------------------------
 .../stratos/cli/RestCommandLineService.java     |   2 +-
 .../apache/stratos/cli/StratosApplication.java  |   4 +-
 .../stratos/cli/commands/CartridgesCommand.java |  67 ----------
 .../cli/commands/ListCartridgeInfoCommand.java  | 127 -------------------
 .../cli/commands/ListCartridgesCommand.java     |  67 ++++++++++
 .../SubscribedCartridgeInfoCommand.java         | 127 +++++++++++++++++++
 6 files changed, 197 insertions(+), 197 deletions(-)
----------------------------------------------------------------------