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 <[email protected]>
Authored: Thu Dec 12 17:40:30 2013 +0530
Committer: Nirmal Fernando <[email protected]>
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);
 

Reply via email to