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);
