You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2013/12/12 13:11:44 UTC

git commit: persisting data holder of CC and handling cartridge undeployment

Updated Branches:
  refs/heads/master 32a905ecc -> e2c0a2a25


persisting data holder of CC and handling cartridge undeployment


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

Branch: refs/heads/master
Commit: e2c0a2a25059e6287e189f23d9a52adc12e13562
Parents: 32a905e
Author: Nirmal Fernando <ni...@apache.org>
Authored: Thu Dec 12 17:40:30 2013 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Thu Dec 12 17:41:27 2013 +0530

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        | 99 ++++++--------------
 .../cloud/controller/pojo/Cartridge.java        |  9 --
 .../runtime/FasterLookUpDataHolder.java         |  4 +
 .../controller/topology/TopologyBuilder.java    | 52 +++++-----
 4 files changed, 55 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e2c0a2a2/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 34adae5..5ba44ea 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -215,57 +215,17 @@ public class CloudControllerServiceImpl implements CloudControllerService {
 					currentData.setClusterIdToContext(serializedObj.getClusterIdToContext());
 					currentData.setMemberIdToContext(serializedObj.getMemberIdToContext());
 					currentData.setClusterIdToMemberContext(serializedObj.getClusterIdToMemberContext());
+					currentData.setCartridges(serializedObj.getCartridges());
 
-					// traverse through current Service Contexts
-//					for (ServiceContext ctxt : currentData.getServiceCtxtList()) {
-//						// traverse through serialized Service Contexts
-//						for (ServiceContext serializedCtxt : serializedObj
-//								.getServiceCtxtList()) {
-//							// if a matching Service Context found
-//							if (ctxt.equals(serializedCtxt)) {
-//								// persisted node ids of this Service Context
-//								List<Object> nodeIds = serializedObj
-//										.getNodeIdsOfServiceCtxt(serializedCtxt);
-//								for (Object nodeIdObj : nodeIds) {
-//									String nodeId = (String) nodeIdObj;
-//
-//									// assign persisted data
-//									currentData.addNodeId(nodeId, ctxt);
-//
-//								}
-//
-//								ctxt.setIaasContextMap(serializedCtxt
-//										.getIaasCtxts());
-//								appendToPublicIpProperty(
-//										serializedCtxt
-//												.getProperty(CloudControllerConstants.PUBLIC_IP_PROPERTY),
-//										ctxt);
-//
-//								// assign lastly used IaaS
-//								if (serializedCtxt.getCartridge() != null
-//										&& serializedCtxt.getCartridge()
-//												.getLastlyUsedIaas() != null) {
-//
-//									if (ctxt.getCartridge() == null) {
-//										// load Cartridge
-//										ctxt.setCartridge(loadCartridge(
-//												ctxt.getCartridgeType(),
-//												serializedObj.getCartridges()));
-//									}
-//
-//									IaasProvider serializedIaas = serializedCtxt
-//											.getCartridge().getLastlyUsedIaas();
-//									ctxt.getCartridge().setLastlyUsedIaas(
-//											serializedIaas);
-//
-//								}
-//							}
-//						}
-//					}
-
-					log.debug("Data is retrieved from registry.");
+					if(log.isDebugEnabled()) {
+					    
+					    log.debug("Cloud Controller Data is retrieved from registry.");
+					}
 				} else {
-					log.debug("No data is persisted in registry.");
+				    if(log.isDebugEnabled()) {
+				        
+				        log.debug("Cloud Controller Data cannot be found in registry.");
+				    }
 				}
 			} catch (Exception e) {
 
@@ -316,7 +276,17 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         }
         
         // TODO transaction begins
+        String cartridgeType = cartridge.getType();
+        if(dataHolder.getCartridge(cartridgeType) != null) {
+            if (dataHolder.getCartridges().remove(cartridge)) {
+                log.info("Successfully undeployed the Cartridge definition: " + cartridgeType);
+            }
+        }
+        
         dataHolder.addCartridge(cartridge);
+        
+        // persist
+        persist();
 
         List<Cartridge> cartridgeList = new ArrayList<Cartridge>();
         cartridgeList.add(cartridge);
@@ -324,11 +294,18 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         TopologyBuilder.handleServiceCreated(cartridgeList);
         // transaction ends
         
-        log.info("Successfully deployed the Cartridge definition: " + cartridge.getType());
+        log.info("Successfully deployed the Cartridge definition: " + cartridgeType);
     }
 
     public void undeployCartridgeDefinition(String cartridgeType) {
 
+        Cartridge cartridge = null;
+        if((cartridge = dataHolder.getCartridge(cartridgeType)) != null) {
+            if (dataHolder.getCartridges().remove(cartridge)) {
+                persist();
+                log.info("Successfully undeployed the Cartridge definition: " + cartridgeType);
+            }
+        }
     }
     
     @Override
@@ -1005,6 +982,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
 	    dataHolder.addClusterContext(new ClusterContext(clusterId, cartridgeType, payload, hostName));
 	    TopologyBuilder.handleClusterCreated(registrant);
 	    
+	    persist();
+	    
 		return true;
 	}
 
@@ -1062,26 +1041,8 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         dataHolder.removeClusterContext(clusterId);
         dataHolder.removeMemberContext(clusterId);
         
-		//subDomain = checkSubDomain(subDomain);
-
-		// find the service context
-//		ServiceContext subjectedSerCtxt = dataHolder
-//				.getServiceContextFromDomain(clusterId);
+        persist();
         
-        
-        
-//        TopologyBuilder.handleClusterRemoved(subjectedSerCtxt);
-
-//		if (subjectedSerCtxt == null) {
-//			throw new UnregisteredClusterException(
-//					"No registered service found for domain: " + clusterId);
-//		}
-//
-//		// get the service definition file.
-//		File serviceDefFile = subjectedSerCtxt.getFile();
-//
-//		// delete that file, so that it gets automatically undeployed.
-//		return serviceDefFile.delete();
 	}
 
 		

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e2c0a2a2/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java
index f01be17..d52e52b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/Cartridge.java
@@ -183,14 +183,6 @@ public class Cartridge implements Serializable{
         this.lastlyUsedIaas = lastlyUsedIaas;
     }
 
-//    public boolean isJcloudsObjectsBuilt() {
-//        return isJcloudsObjectsBuilt;
-//    }
-//
-//    public void setJcloudsObjectsBuilt(boolean isJcloudsObjectsBuilt) {
-//        this.isJcloudsObjectsBuilt = isJcloudsObjectsBuilt;
-//    }
-
 	public String getDisplayName() {
 		return displayName;
 	}
@@ -216,7 +208,6 @@ public class Cartridge implements Serializable{
     }
 	
 	public void reset(){
-//		lastlyUsedIaas = null;
 	}
 
 	public List<String> getDeploymentDirs() {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e2c0a2a2/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
index 6533efb..b63a2a5 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
@@ -242,6 +242,10 @@ public class FasterLookUpDataHolder implements Serializable{
 	public List<Cartridge> getCartridges() {
 		return cartridges;
 	}
+	
+	public void setCartridges(List<Cartridge> cartridges) {
+	    this.cartridges = cartridges;
+	}
 
 	public Cartridge getCartridge(String cartridgeType) {
 		for (Cartridge cartridge : cartridges) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/e2c0a2a2/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 19c279b..bfc94b4 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
@@ -105,43 +105,33 @@ public class TopologyBuilder {
         try {
             TopologyManager.getInstance().acquireWriteLock();
             service = topology.getService(registrant.getCartridgeType());
-//            if (service == null) {
-//                service = new Service(registrant.getClusterId());
-//                Cluster cluster = new Cluster(registrant.getCartridgeType(),
-//                                              registrant.getClusterId(),
-//                                              registrant.getAutoScalerPolicyName());
-//                cluster.setHostName(registrant.getHostName());
-//                cluster.setTenantRange(registrant.getTenantRange());
-//                cluster.setAutoscalePolicyName(registrant.getAutoScalerPolicyName());
-//                service.addCluster(cluster);
-//                topology.addService(service);
-//            } else {
             Properties props = CloudControllerUtil.toJavaUtilProperties(registrant.getProperties());
             
             String property = props.getProperty(Constants.IS_LOAD_BALANCER);
             boolean isLb = property != null ? Boolean.parseBoolean(property) : false;
             
             Cluster cluster;
-                if (service.clusterExists(registrant.getClusterId())) {
-                    //update the cluster
-                    cluster = service.getCluster(registrant.getClusterId());
-                    cluster.addHostName(registrant.getHostName());
-                    cluster.setAutoscalePolicyName(registrant.getAutoScalerPolicyName());
-                    cluster.setTenantRange(registrant.getTenantRange());
-                    cluster.setProperties(props);
-                    cluster.setLbCluster(isLb);
-                } else {
-                    cluster = new Cluster(registrant.getCartridgeType(),
-                            registrant.getClusterId(),
-                            registrant.getAutoScalerPolicyName());
-                    cluster.addHostName(registrant.getHostName());
-                    cluster.setTenantRange(registrant.getTenantRange());
-                    cluster.setAutoscalePolicyName(registrant.getAutoScalerPolicyName());
-                    cluster.setProperties(props);
-                    cluster.setLbCluster(isLb);
-                    service.addCluster(cluster);
-                }
-//            }
+            if (service.clusterExists(registrant.getClusterId())) {
+                // update the cluster
+                cluster = service.getCluster(registrant.getClusterId());
+                cluster.addHostName(registrant.getHostName());
+                cluster.setAutoscalePolicyName(registrant.getAutoScalerPolicyName());
+                cluster.setTenantRange(registrant.getTenantRange());
+                cluster.setProperties(props);
+                cluster.setLbCluster(isLb);
+                cluster.setDeploymentPolicyName(registrant.getDeploymentPolicyName());
+                
+            } else {
+                cluster =
+                          new Cluster(registrant.getCartridgeType(), registrant.getClusterId(),
+                                      registrant.getAutoScalerPolicyName());
+                cluster.addHostName(registrant.getHostName());
+                cluster.setTenantRange(registrant.getTenantRange());
+                cluster.setProperties(props);
+                cluster.setLbCluster(isLb);
+                cluster.setDeploymentPolicyName(registrant.getDeploymentPolicyName());
+                service.addCluster(cluster);
+            }
             TopologyManager.getInstance().updateTopology(topology);
             TopologyEventSender.sendClusterCreatedEvent(registrant);