http://git-wip-us.apache.org/repos/asf/stratos/blob/8d46fab0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java index 1b8db0e..ea9d242 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java @@ -48,6 +48,7 @@ import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent; import org.apache.stratos.messaging.event.topology.*; import org.apache.stratos.metadata.client.defaults.DefaultMetaDataServiceClient; import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient; +import org.wso2.carbon.registry.core.exceptions.RegistryException; import java.net.URI; import java.net.URISyntaxException; @@ -60,21 +61,19 @@ import java.util.*; public class TopologyBuilder { private static final Log log = LogFactory.getLog(TopologyBuilder.class); - - public static void handleServiceCreated(List<Cartridge> cartridgeList) { + public static void handleServiceCreated(List<Cartridge> cartridgeList) throws RegistryException { Service service; Topology topology = TopologyManager.getTopology(); if (cartridgeList == null) { - log.warn("Cartridge list is empty"); - return; + throw new RuntimeException("Cartridge list is empty"); } - try { - TopologyManager.acquireWriteLock(); for (Cartridge cartridge : cartridgeList) { if (!topology.serviceExists(cartridge.getType())) { - ServiceType serviceType = cartridge.isMultiTenant() ? ServiceType.MultiTenant : ServiceType.SingleTenant; + ServiceType serviceType = cartridge.isMultiTenant() ? + ServiceType.MultiTenant : + ServiceType.SingleTenant; service = new Service(cartridge.getType(), serviceType); Properties properties = new Properties(); @@ -86,32 +85,27 @@ public class TopologyBuilder { propertyArray = cartridge.getProperties().getProperties(); } } - List<Property> propertyList = new ArrayList<Property>(); if (propertyArray != null) { propertyList = Arrays.asList(propertyArray); - if (propertyList != null) { - for (Property property : propertyList) { - properties.setProperty(property.getName(), property.getValue()); - } + for (Property property : propertyList) { + properties.setProperty(property.getName(), property.getValue()); } } } catch (Exception e) { log.error(e); } - service.setProperties(properties); if (cartridge.getPortMappings() != null) { List<PortMapping> portMappings = Arrays.asList(cartridge.getPortMappings()); Port port; //adding ports to the event for (PortMapping portMapping : portMappings) { - port = new Port(portMapping.getProtocol(), - portMapping.getPort(), portMapping.getProxyPort()); + port = new Port(portMapping.getProtocol(), portMapping.getPort(), + portMapping.getProxyPort()); service.addPort(port); } } - topology.addService(service); TopologyManager.updateTopology(topology); } @@ -122,28 +116,22 @@ public class TopologyBuilder { TopologyEventPublisher.sendServiceCreateEvent(cartridgeList); } - public static void handleServiceRemoved(List<Cartridge> cartridgeList) { + public static void handleServiceRemoved(List<Cartridge> cartridgeList) throws RegistryException { Topology topology = TopologyManager.getTopology(); - for (Cartridge cartridge : cartridgeList) { Service service = topology.getService(cartridge.getType()); if (service == null) { - log.warn("Cartridge does not exist [cartidge] " + cartridge); - return; + throw new RuntimeException(String.format("Service %s does not exist", cartridge.getType())); } if (service.getClusters().size() == 0) { - if (topology.serviceExists(cartridge.getType())) { - try { - TopologyManager.acquireWriteLock(); - topology.removeService(cartridge.getType()); - TopologyManager.updateTopology(topology); - } finally { - TopologyManager.releaseWriteLock(); - } - TopologyEventPublisher.sendServiceRemovedEvent(cartridgeList); - } else { - log.warn(String.format("Service %s does not exist..", cartridge.getType())); + try { + TopologyManager.acquireWriteLock(); + topology.removeService(cartridge.getType()); + TopologyManager.updateTopology(topology); + } finally { + TopologyManager.releaseWriteLock(); } + TopologyEventPublisher.sendServiceRemovedEvent(cartridgeList); } else { log.warn("Subscription already exists. Hence not removing the service:" + cartridge.getType() + " from the topology"); @@ -151,11 +139,9 @@ public class TopologyBuilder { } } - - public static void handleApplicationClustersCreated(String appId, List<Cluster> appClusters) { - + public static void handleApplicationClustersCreated(String appId, List<Cluster> appClusters) + throws RegistryException { TopologyManager.acquireWriteLock(); - try { Topology topology = TopologyManager.getTopology(); for (Cluster cluster : appClusters) { @@ -182,8 +168,8 @@ public class TopologyBuilder { } for (PortMapping portMapping : cartridge.getPortMappings()) { - ClusterPortMapping clusterPortMapping = new ClusterPortMapping(appId, - cluster.getClusterId(), portMapping.getName(), portMapping.getProtocol(), portMapping.getPort(), + ClusterPortMapping clusterPortMapping = new ClusterPortMapping(appId, cluster.getClusterId(), + portMapping.getName(), portMapping.getProtocol(), portMapping.getPort(), portMapping.getProxyPort()); if (portMapping.getKubernetesPortType() != null) { clusterPortMapping.setKubernetesPortType(portMapping.getKubernetesPortType()); @@ -200,11 +186,9 @@ public class TopologyBuilder { TopologyEventPublisher.sendApplicationClustersCreated(appId, appClusters); } - public static void handleApplicationClustersRemoved(String appId, - Set<ClusterDataHolder> clusterData) { + public static void handleApplicationClustersRemoved(String appId, Set<ClusterDataHolder> clusterData) + throws RegistryException { TopologyManager.acquireWriteLock(); - - List<Cluster> removedClusters = new ArrayList<Cluster>(); CloudControllerContext context = CloudControllerContext.getInstance(); try { Topology topology = TopologyManager.getTopology(); @@ -213,9 +197,7 @@ public class TopologyBuilder { // remove clusters from CC topology model and remove runtime information for (ClusterDataHolder aClusterData : clusterData) { Service aService = topology.getService(aClusterData.getServiceType()); - if (aService != null) { - removedClusters.add(aService.removeCluster(aClusterData.getClusterId())); - } else { + if (aService == null) { log.warn("Service " + aClusterData.getServiceType() + " not found, " + "unable to remove Cluster " + aClusterData.getClusterId()); } @@ -230,9 +212,7 @@ public class TopologyBuilder { } else { log.info("No cluster data found for application " + appId + " to remove"); } - TopologyManager.updateTopology(topology); - } finally { TopologyManager.releaseWriteLock(); } @@ -240,36 +220,31 @@ public class TopologyBuilder { // Remove cluster port mappings of application CloudControllerContext.getInstance().removeClusterPortMappings(appId); CloudControllerContext.getInstance().persist(); - TopologyEventPublisher.sendApplicationClustersRemoved(appId, clusterData); - } - public static void handleClusterReset(ClusterStatusClusterResetEvent event) { + public static void handleClusterReset(ClusterStatusClusterResetEvent event) throws RegistryException { TopologyManager.acquireWriteLock(); - try { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(event.getServiceName()); if (service == null) { - log.error("Service " + event.getServiceName() + + throw new RuntimeException("Service " + event.getServiceName() + " not found in Topology, unable to update the cluster status to Created"); - return; } Cluster cluster = service.getCluster(event.getClusterId()); if (cluster == null) { - log.error("Cluster " + event.getClusterId() + " not found in Topology, unable to update " + - "status to Created"); - return; + throw new RuntimeException( + "Cluster " + event.getClusterId() + " not found in Topology, unable to update " + + "status to Created"); } ClusterInstance context = cluster.getInstanceContexts(event.getInstanceId()); if (context == null) { - log.warn("Cluster Instance Context is not found for [cluster] " + + throw new RuntimeException("Cluster Instance Context is not found for [cluster] " + event.getClusterId() + " [instance-id] " + event.getInstanceId()); - return; } ClusterStatus status = ClusterStatus.Created; if (context.isStateTransitionValid(status)) { @@ -277,85 +252,65 @@ public class TopologyBuilder { log.info("Cluster Created adding status started for" + cluster.getClusterId()); TopologyManager.updateTopology(topology); //publishing data - TopologyEventPublisher.sendClusterResetEvent(event.getAppId(), event.getServiceName(), - event.getClusterId(), event.getInstanceId()); + TopologyEventPublisher + .sendClusterResetEvent(event.getAppId(), event.getServiceName(), event.getClusterId(), + event.getInstanceId()); } else { - log.warn(String.format("Cluster state transition is not valid: [cluster-id] %s " + - " [instance-id] %s [current-status] %s [status-requested] %s", - event.getClusterId(), event.getInstanceId(), - context.getStatus(), status)); + log.warn(String.format("Cluster state transition is not valid: [cluster-id] %s " + + " [instance-id] %s [current-status] %s [status-requested] %s", event.getClusterId(), + event.getInstanceId(), context.getStatus(), status)); } } finally { TopologyManager.releaseWriteLock(); } - } - public static void handleClusterInstanceCreated(String serviceType, String clusterId, - String alias, String instanceId, String partitionId, - String networkPartitionId) { - + public static void handleClusterInstanceCreated(String serviceType, String clusterId, String alias, + String instanceId, String partitionId, String networkPartitionId) throws RegistryException { TopologyManager.acquireWriteLock(); - try { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(serviceType); if (service == null) { - log.error("Service " + serviceType + + throw new RuntimeException("Service " + serviceType + " not found in Topology, unable to update the cluster status to Created"); - return; } - Cluster cluster = service.getCluster(clusterId); if (cluster == null) { - log.error("Cluster " + clusterId + " not found in Topology, unable to update " + + throw new RuntimeException("Cluster " + clusterId + " not found in Topology, unable to update " + "status to Created"); - return; } - if (cluster.getInstanceContexts(instanceId) != null) { - log.warn("The Instance context for the cluster already exists for [cluster] " + + throw new RuntimeException("The Instance context for the cluster already exists for [cluster] " + clusterId + " [instance-id] " + instanceId); - return; } - ClusterInstance clusterInstance = new ClusterInstance(alias, clusterId, instanceId); clusterInstance.setNetworkPartitionId(networkPartitionId); clusterInstance.setPartitionId(partitionId); cluster.addInstanceContext(instanceId, clusterInstance); TopologyManager.updateTopology(topology); - - ClusterInstanceCreatedEvent clusterInstanceCreatedEvent = - new ClusterInstanceCreatedEvent(serviceType, clusterId, - clusterInstance); + ClusterInstanceCreatedEvent clusterInstanceCreatedEvent = new ClusterInstanceCreatedEvent(serviceType, + clusterId, clusterInstance); clusterInstanceCreatedEvent.setPartitionId(partitionId); TopologyEventPublisher.sendClusterInstanceCreatedEvent(clusterInstanceCreatedEvent); - } finally { TopologyManager.releaseWriteLock(); } } - - public static void handleClusterRemoved(ClusterContext ctxt) { + public static void handleClusterRemoved(ClusterContext ctxt) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(ctxt.getCartridgeType()); String deploymentPolicy; if (service == null) { - log.warn(String.format("Service %s does not exist", - ctxt.getCartridgeType())); - return; + throw new RuntimeException(String.format("Service %s does not exist", ctxt.getCartridgeType())); } - if (!service.clusterExists(ctxt.getClusterId())) { - log.warn(String.format("Cluster %s does not exist for service %s", - ctxt.getClusterId(), + throw new RuntimeException(String.format("Cluster %s does not exist for service %s", ctxt.getClusterId(), ctxt.getCartridgeType())); - return; } - try { TopologyManager.acquireWriteLock(); Cluster cluster = service.removeCluster(ctxt.getClusterId()); @@ -372,7 +327,7 @@ public class TopologyBuilder { * * @param memberContext */ - public static void handleMemberCreatedEvent(MemberContext memberContext) { + public static void handleMemberCreatedEvent(MemberContext memberContext) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(memberContext.getCartridgeType()); String clusterId = memberContext.getClusterId(); @@ -385,12 +340,9 @@ public class TopologyBuilder { String clusterAlias = CloudControllerUtil.getAliasFromClusterId(memberContext.getClusterId()); String lbClusterId = memberContext.getLbClusterId(); long initTime = memberContext.getInitTime(); - if (cluster.memberExists(memberId)) { - log.warn(String.format("Member %s already exists", memberId)); - return; + throw new RuntimeException(String.format("Member %s already exists", memberId)); } - try { TopologyManager.acquireWriteLock(); Member member = new Member(service.getServiceName(), clusterId, memberId, clusterInstanceId, @@ -412,16 +364,10 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - memberContext.getClusterId(), - clusterAlias, - memberContext.getClusterInstanceId(), - memberContext.getCartridgeType(), - memberContext.getNetworkPartitionId(), - memberContext.getPartition().getId(), - memberContext.getMemberId(), - MemberStatus.Created.toString()); + memStatusPublisher.publish(timestamp, applicationId, memberContext.getClusterId(), clusterAlias, + memberContext.getClusterInstanceId(), memberContext.getCartridgeType(), + memberContext.getNetworkPartitionId(), memberContext.getPartition().getId(), + memberContext.getMemberId(), MemberStatus.Created.toString()); } else { log.warn("Member Status Publisher is not enabled"); } @@ -429,7 +375,6 @@ public class TopologyBuilder { } finally { TopologyManager.releaseWriteLock(); } - TopologyEventPublisher.sendMemberCreatedEvent(memberContext); } @@ -438,32 +383,24 @@ public class TopologyBuilder { * * @param memberContext */ - public static void handleMemberInitializedEvent(MemberContext memberContext) { + public static void handleMemberInitializedEvent(MemberContext memberContext) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(memberContext.getCartridgeType()); - if (service == null) { - log.warn(String.format("Service %s does not exist", - memberContext.getCartridgeType())); - return; + throw new RuntimeException(String.format("Service %s does not exist", memberContext.getCartridgeType())); } if (!service.clusterExists(memberContext.getClusterId())) { - log.warn(String.format("Cluster %s does not exist in service %s", - memberContext.getClusterId(), - memberContext.getCartridgeType())); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", memberContext.getClusterId(), + memberContext.getCartridgeType())); } - String applicationId = service.getCluster(memberContext.getClusterId()).getAppId(); String clusterAlias = CloudControllerUtil.getAliasFromClusterId(memberContext.getClusterId()); Member member = service.getCluster(memberContext.getClusterId()). getMember(memberContext.getMemberId()); if (member == null) { - log.warn(String.format("Member %s does not exist", - memberContext.getMemberId())); - return; + throw new RuntimeException(String.format("Member %s does not exist", memberContext.getMemberId())); } - try { TopologyManager.acquireWriteLock(); @@ -481,13 +418,13 @@ public class TopologyBuilder { if (!member.isStateTransitionValid(MemberStatus.Initialized)) { log.error("Invalid state transition from " + member.getStatus() + " to " + MemberStatus.Initialized); - return; } else { Cluster cluster = service.getCluster(memberContext.getClusterId()); String clusterId = cluster.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); - List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices(memberContext.getClusterInstanceId())); + List<KubernetesService> kubernetesServices = Lists + .newArrayList(clusterContext.getKubernetesServices(memberContext.getClusterInstanceId())); if (!kubernetesServices.isEmpty()) { cluster.setKubernetesServices(kubernetesServices); @@ -511,8 +448,8 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.info("Publishing Member Information"); } - String scalingDecisionId = memberContext.getProperties().getProperty( - StratosConstants.SCALING_DECISION_ID).getValue(); + String scalingDecisionId = memberContext.getProperties() + .getProperty(StratosConstants.SCALING_DECISION_ID).getValue(); memInfoPublisher.publish(memberContext.getMemberId(), scalingDecisionId, memberContext.getInstanceMetadata()); } else { @@ -522,16 +459,10 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - memberContext.getClusterId(), - clusterAlias, - memberContext.getClusterInstanceId(), - memberContext.getCartridgeType(), - memberContext.getNetworkPartitionId(), - memberContext.getPartition().getId(), - memberContext.getMemberId(), - MemberStatus.Initialized.toString()); + memStatusPublisher.publish(timestamp, applicationId, memberContext.getClusterId(), clusterAlias, + memberContext.getClusterInstanceId(), memberContext.getCartridgeType(), + memberContext.getNetworkPartitionId(), memberContext.getPartition().getId(), + memberContext.getMemberId(), MemberStatus.Initialized.toString()); } else { log.warn("Member Status Publisher is not enabled"); } @@ -544,31 +475,28 @@ public class TopologyBuilder { } private static int findKubernetesServicePort(String clusterId, Collection<KubernetesService> kubernetesServices, - PortMapping portMapping) { + PortMapping portMapping) { for (KubernetesService kubernetesService : kubernetesServices) { if (kubernetesService.getProtocol().equals(portMapping.getProtocol())) { return kubernetesService.getPort(); } } - throw new RuntimeException("Kubernetes service port not found: [cluster-id] " + clusterId + " [port] " - + portMapping.getPort()); + throw new RuntimeException( + "Kubernetes service port not found: [cluster-id] " + clusterId + " [port] " + portMapping.getPort()); } public static void handleMemberStarted(InstanceStartedEvent instanceStartedEvent) { try { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceStartedEvent.getServiceName()); - if (service == null) { - log.warn(String.format("Service %s does not exist", - instanceStartedEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", instanceStartedEvent.getServiceName())); } if (!service.clusterExists(instanceStartedEvent.getClusterId())) { - log.warn(String.format("Cluster %s does not exist in service %s", - instanceStartedEvent.getClusterId(), - instanceStartedEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", instanceStartedEvent.getClusterId(), + instanceStartedEvent.getServiceName())); } String applicationId = service.getCluster(instanceStartedEvent.getClusterId()).getAppId(); @@ -576,9 +504,8 @@ public class TopologyBuilder { Cluster cluster = service.getCluster(instanceStartedEvent.getClusterId()); Member member = cluster.getMember(instanceStartedEvent.getMemberId()); if (member == null) { - log.warn(String.format("Member %s does not exist", - instanceStartedEvent.getMemberId())); - return; + throw new RuntimeException( + String.format("Member %s does not exist", instanceStartedEvent.getMemberId())); } try { @@ -587,7 +514,6 @@ public class TopologyBuilder { if (!member.isStateTransitionValid(MemberStatus.Starting)) { log.error("Invalid State Transition from " + member.getStatus() + " to " + MemberStatus.Starting); - return; } else { member.setStatus(MemberStatus.Starting); log.info("member started event adding status started"); @@ -605,16 +531,13 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - instanceStartedEvent.getClusterId(), - clusterAlias, - instanceStartedEvent.getClusterInstanceId(), - instanceStartedEvent.getServiceName(), - instanceStartedEvent.getNetworkPartitionId(), - instanceStartedEvent.getPartitionId(), - instanceStartedEvent.getMemberId(), - MemberStatus.Starting.toString()); + memStatusPublisher + .publish(timestamp, applicationId, instanceStartedEvent.getClusterId(), clusterAlias, + instanceStartedEvent.getClusterInstanceId(), + instanceStartedEvent.getServiceName(), + instanceStartedEvent.getNetworkPartitionId(), + instanceStartedEvent.getPartitionId(), instanceStartedEvent.getMemberId(), + MemberStatus.Starting.toString()); } else { log.warn("Member Status Publisher is not enabled"); } @@ -623,29 +546,25 @@ public class TopologyBuilder { TopologyManager.releaseWriteLock(); } } catch (Exception e) { - String message = String.format("Could not handle member started event: [application-id] %s " + - "[service-name] %s [member-id] %s", instanceStartedEvent.getApplicationId(), + String message = String.format("Could not handle member started event: [application-id] %s " + + "[service-name] %s [member-id] %s", instanceStartedEvent.getApplicationId(), instanceStartedEvent.getServiceName(), instanceStartedEvent.getMemberId()); log.warn(message, e); } } - - public static void handleMemberActivated(InstanceActivatedEvent instanceActivatedEvent) { + public static void handleMemberActivated(InstanceActivatedEvent instanceActivatedEvent) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceActivatedEvent.getServiceName()); - if (service == null) { - log.warn(String.format("Service %s does not exist", - instanceActivatedEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", instanceActivatedEvent.getServiceName())); } - Cluster cluster = service.getCluster(instanceActivatedEvent.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - instanceActivatedEvent.getClusterId())); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", instanceActivatedEvent.getClusterId(), + instanceActivatedEvent.getServiceName())); } String applicationId = service.getCluster(instanceActivatedEvent.getClusterId()).getAppId(); @@ -653,17 +572,12 @@ public class TopologyBuilder { Member member = cluster.getMember(instanceActivatedEvent.getMemberId()); if (member == null) { - log.warn(String.format("Member %s does not exist", - instanceActivatedEvent.getMemberId())); - return; + throw new RuntimeException(String.format("Member %s does not exist", instanceActivatedEvent.getMemberId())); } - MemberActivatedEvent memberActivatedEvent = new MemberActivatedEvent( - instanceActivatedEvent.getServiceName(), - instanceActivatedEvent.getClusterId(), - instanceActivatedEvent.getClusterInstanceId(), - instanceActivatedEvent.getMemberId(), - instanceActivatedEvent.getNetworkPartitionId(), + MemberActivatedEvent memberActivatedEvent = new MemberActivatedEvent(instanceActivatedEvent.getServiceName(), + instanceActivatedEvent.getClusterId(), instanceActivatedEvent.getClusterInstanceId(), + instanceActivatedEvent.getMemberId(), instanceActivatedEvent.getNetworkPartitionId(), instanceActivatedEvent.getPartitionId()); // grouping - set grouid @@ -675,7 +589,6 @@ public class TopologyBuilder { if (!member.isStateTransitionValid(MemberStatus.Active)) { log.error("Invalid state transition from [" + member.getStatus() + "] to [" + MemberStatus.Active + "]"); - return; } else { member.setStatus(MemberStatus.Active); @@ -683,8 +596,8 @@ public class TopologyBuilder { try { Cartridge cartridge = CloudControllerContext.getInstance().getCartridge(service.getServiceName()); if (cartridge == null) { - throw new RuntimeException(String.format("Cartridge not found: [cartridge-type] %s", - service.getServiceName())); + throw new RuntimeException( + String.format("Cartridge not found: [cartridge-type] %s", service.getServiceName())); } Port port; @@ -692,7 +605,8 @@ public class TopologyBuilder { List<PortMapping> portMappings = Arrays.asList(cartridge.getPortMappings()); String clusterId = cluster.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); - Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(instanceActivatedEvent.getClusterInstanceId()); + Collection<KubernetesService> kubernetesServices = clusterContext + .getKubernetesServices(instanceActivatedEvent.getClusterInstanceId()); for (PortMapping portMapping : portMappings) { if (!kubernetesServices.isEmpty()) { @@ -731,16 +645,11 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - memberActivatedEvent.getClusterId(), - clusterAlias, - memberActivatedEvent.getClusterInstanceId(), - memberActivatedEvent.getServiceName(), - memberActivatedEvent.getNetworkPartitionId(), - memberActivatedEvent.getPartitionId(), - memberActivatedEvent.getMemberId(), - MemberStatus.Active.toString()); + memStatusPublisher + .publish(timestamp, applicationId, memberActivatedEvent.getClusterId(), clusterAlias, + memberActivatedEvent.getClusterInstanceId(), memberActivatedEvent.getServiceName(), + memberActivatedEvent.getNetworkPartitionId(), memberActivatedEvent.getPartitionId(), + memberActivatedEvent.getMemberId(), MemberStatus.Active.toString()); } else { log.warn("Member Status Publisher is not enabled"); } @@ -751,22 +660,20 @@ public class TopologyBuilder { } public static void handleMemberReadyToShutdown(InstanceReadyToShutdownEvent instanceReadyToShutdownEvent) - throws InvalidMemberException, InvalidCartridgeTypeException { + throws InvalidMemberException, InvalidCartridgeTypeException, RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceReadyToShutdownEvent.getServiceName()); //update the status of the member if (service == null) { - log.warn(String.format("Service %s does not exist", - instanceReadyToShutdownEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", instanceReadyToShutdownEvent.getServiceName())); } Cluster cluster = service.getCluster(instanceReadyToShutdownEvent.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - instanceReadyToShutdownEvent.getClusterId())); - return; + throw new RuntimeException(String.format("Cluster %s does not exist for service %s", + instanceReadyToShutdownEvent.getClusterId(), instanceReadyToShutdownEvent.getServiceName())); } String applicationId = service.getCluster(instanceReadyToShutdownEvent.getClusterId()).getAppId(); @@ -774,26 +681,21 @@ public class TopologyBuilder { Member member = cluster.getMember(instanceReadyToShutdownEvent.getMemberId()); if (member == null) { - log.warn(String.format("Member %s does not exist", - instanceReadyToShutdownEvent.getMemberId())); - return; + throw new RuntimeException( + String.format("Member %s does not exist", instanceReadyToShutdownEvent.getMemberId())); } MemberReadyToShutdownEvent memberReadyToShutdownEvent = new MemberReadyToShutdownEvent( - instanceReadyToShutdownEvent.getServiceName(), - instanceReadyToShutdownEvent.getClusterId(), - instanceReadyToShutdownEvent.getClusterInstanceId(), - instanceReadyToShutdownEvent.getMemberId(), - instanceReadyToShutdownEvent.getNetworkPartitionId(), - instanceReadyToShutdownEvent.getPartitionId()); + instanceReadyToShutdownEvent.getServiceName(), instanceReadyToShutdownEvent.getClusterId(), + instanceReadyToShutdownEvent.getClusterInstanceId(), instanceReadyToShutdownEvent.getMemberId(), + instanceReadyToShutdownEvent.getNetworkPartitionId(), instanceReadyToShutdownEvent.getPartitionId()); //member ReadyToShutDown state change time Long timestamp = null; try { TopologyManager.acquireWriteLock(); if (!member.isStateTransitionValid(MemberStatus.ReadyToShutDown)) { - log.error("Invalid State Transition from " + member.getStatus() + " to " + + throw new RuntimeException("Invalid State Transition from " + member.getStatus() + " to " + MemberStatus.ReadyToShutDown); - return; } member.setStatus(MemberStatus.ReadyToShutDown); log.info("Member Ready to shut down event adding status started"); @@ -811,16 +713,13 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - instanceReadyToShutdownEvent.getClusterId(), - clusterAlias, - instanceReadyToShutdownEvent.getClusterInstanceId(), - instanceReadyToShutdownEvent.getServiceName(), - instanceReadyToShutdownEvent.getNetworkPartitionId(), - instanceReadyToShutdownEvent.getPartitionId(), - instanceReadyToShutdownEvent.getMemberId(), - MemberStatus.ReadyToShutDown.toString()); + memStatusPublisher + .publish(timestamp, applicationId, instanceReadyToShutdownEvent.getClusterId(), clusterAlias, + instanceReadyToShutdownEvent.getClusterInstanceId(), + instanceReadyToShutdownEvent.getServiceName(), + instanceReadyToShutdownEvent.getNetworkPartitionId(), + instanceReadyToShutdownEvent.getPartitionId(), instanceReadyToShutdownEvent.getMemberId(), + MemberStatus.ReadyToShutDown.toString()); } else { log.warn("Member Status Publisher is not enabled"); } @@ -828,45 +727,37 @@ public class TopologyBuilder { } public static void handleMemberMaintenance(InstanceMaintenanceModeEvent instanceMaintenanceModeEvent) - throws InvalidMemberException, InvalidCartridgeTypeException { + throws InvalidMemberException, InvalidCartridgeTypeException, RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(instanceMaintenanceModeEvent.getServiceName()); //update the status of the member if (service == null) { - log.warn(String.format("Service %s does not exist", - instanceMaintenanceModeEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", instanceMaintenanceModeEvent.getServiceName())); } Cluster cluster = service.getCluster(instanceMaintenanceModeEvent.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - instanceMaintenanceModeEvent.getClusterId())); - return; + throw new RuntimeException(String.format("Cluster %s does not exist for service %s", + instanceMaintenanceModeEvent.getClusterId(), instanceMaintenanceModeEvent.getServiceName())); } Member member = cluster.getMember(instanceMaintenanceModeEvent.getMemberId()); if (member == null) { - log.warn(String.format("Member %s does not exist", - instanceMaintenanceModeEvent.getMemberId())); - return; + throw new RuntimeException( + String.format("Member %s does not exist", instanceMaintenanceModeEvent.getMemberId())); } - MemberMaintenanceModeEvent memberMaintenanceModeEvent = new MemberMaintenanceModeEvent( - instanceMaintenanceModeEvent.getServiceName(), - instanceMaintenanceModeEvent.getClusterId(), - instanceMaintenanceModeEvent.getClusterInstanceId(), - instanceMaintenanceModeEvent.getMemberId(), - instanceMaintenanceModeEvent.getNetworkPartitionId(), - instanceMaintenanceModeEvent.getPartitionId()); + instanceMaintenanceModeEvent.getServiceName(), instanceMaintenanceModeEvent.getClusterId(), + instanceMaintenanceModeEvent.getClusterInstanceId(), instanceMaintenanceModeEvent.getMemberId(), + instanceMaintenanceModeEvent.getNetworkPartitionId(), instanceMaintenanceModeEvent.getPartitionId()); try { TopologyManager.acquireWriteLock(); // try update lifecycle state if (!member.isStateTransitionValid(MemberStatus.In_Maintenance)) { - log.error("Invalid State Transition from " + member.getStatus() + " to " - + MemberStatus.In_Maintenance); - return; + throw new RuntimeException( + "Invalid State Transition from " + member.getStatus() + " to " + MemberStatus.In_Maintenance); } member.setStatus(MemberStatus.In_Maintenance); log.info("member maintenance mode event adding status started"); @@ -889,31 +780,25 @@ public class TopologyBuilder { * @param partitionId * @param memberId */ - public static void handleMemberTerminated(String serviceName, String clusterId, - String networkPartitionId, String partitionId, - String memberId) { + public static void handleMemberTerminated(String serviceName, String clusterId, String networkPartitionId, + String partitionId, String memberId) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(serviceName); Properties properties; if (service == null) { - log.warn(String.format("Service %s does not exist", - serviceName)); - return; + throw new RuntimeException(String.format("Service %s does not exist", serviceName)); } Cluster cluster = service.getCluster(clusterId); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - clusterId)); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", clusterId, serviceName)); } String applicationId = service.getCluster(clusterId).getAppId(); String clusterAlias = CloudControllerUtil.getAliasFromClusterId(clusterId); Member member = cluster.getMember(memberId); if (member == null) { - log.warn(String.format("Member %s does not exist", - memberId)); - return; + throw new RuntimeException((String.format("Member %s does not exist", memberId))); } String clusterInstanceId = member.getClusterInstanceId(); @@ -931,9 +816,9 @@ public class TopologyBuilder { } /* @TODO leftover from grouping_poc*/ String groupAlias = null; - TopologyEventPublisher.sendMemberTerminatedEvent(serviceName, clusterId, memberId, - clusterInstanceId, networkPartitionId, - partitionId, properties, groupAlias); + TopologyEventPublisher + .sendMemberTerminatedEvent(serviceName, clusterId, memberId, clusterInstanceId, networkPartitionId, + partitionId, properties, groupAlias); //publishing member status to DAS. MemberStatusPublisher memStatusPublisher = CloudControllerPublisherFactory. @@ -942,65 +827,45 @@ public class TopologyBuilder { if (log.isDebugEnabled()) { log.debug("Publishing Member Status to DAS"); } - memStatusPublisher.publish(timestamp, - applicationId, - member.getClusterId(), - clusterAlias, - member.getClusterInstanceId(), - member.getServiceName(), - member.getNetworkPartitionId(), - member.getPartitionId(), - member.getMemberId(), - MemberStatus.Terminated.toString()); + memStatusPublisher.publish(timestamp, applicationId, member.getClusterId(), clusterAlias, + member.getClusterInstanceId(), member.getServiceName(), member.getNetworkPartitionId(), + member.getPartitionId(), member.getMemberId(), MemberStatus.Terminated.toString()); } else { log.warn("Member Status Publisher is not enabled"); } } - public static void handleMemberSuspended() { - //TODO - try { - TopologyManager.acquireWriteLock(); - } finally { - TopologyManager.releaseWriteLock(); - } - } - - public static void handleClusterActivatedEvent(ClusterStatusClusterActivatedEvent - clusterStatusClusterActivatedEvent) { + public static void handleClusterActivatedEvent( + ClusterStatusClusterActivatedEvent clusterStatusClusterActivatedEvent) throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(clusterStatusClusterActivatedEvent.getServiceName()); //update the status of the cluster if (service == null) { - log.warn(String.format("Service %s does not exist", - clusterStatusClusterActivatedEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", clusterStatusClusterActivatedEvent.getServiceName())); } Cluster cluster = service.getCluster(clusterStatusClusterActivatedEvent.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - clusterStatusClusterActivatedEvent.getClusterId())); - return; + throw new RuntimeException(String.format("Cluster %s does not exist for service %s", + clusterStatusClusterActivatedEvent.getClusterId(), + clusterStatusClusterActivatedEvent.getServiceName())); } String clusterId = cluster.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); if (clusterContext == null) { - log.warn("Cluster context not found: [cluster-id] " + clusterId); - return; + throw new RuntimeException(String.format("Cluster context not found [cluster-id] %s", clusterId)); } - ClusterInstanceActivatedEvent clusterInstanceActivatedEvent = - new ClusterInstanceActivatedEvent( - clusterStatusClusterActivatedEvent.getAppId(), - clusterStatusClusterActivatedEvent.getServiceName(), - clusterStatusClusterActivatedEvent.getClusterId(), - clusterStatusClusterActivatedEvent.getInstanceId()); + ClusterInstanceActivatedEvent clusterInstanceActivatedEvent = new ClusterInstanceActivatedEvent( + clusterStatusClusterActivatedEvent.getAppId(), clusterStatusClusterActivatedEvent.getServiceName(), + clusterStatusClusterActivatedEvent.getClusterId(), clusterStatusClusterActivatedEvent.getInstanceId()); try { TopologyManager.acquireWriteLock(); - Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(clusterStatusClusterActivatedEvent.getInstanceId()); + Collection<KubernetesService> kubernetesServices = clusterContext + .getKubernetesServices(clusterStatusClusterActivatedEvent.getInstanceId()); if (kubernetesServices != null) { @@ -1015,14 +880,18 @@ public class TopologyBuilder { for (String publicIP : publicIPs) { // There can be a String array with null values if (publicIP != null) { - // Using type URI since only http, https, ftp, file, jar protocols are supported in URL + // Using type URI since only http, https, ftp, file, jar protocols are + // supported in URL URI accessURL = new URI(kubernetesService.getProtocol(), null, publicIP, kubernetesService.getPort(), null, null, null); - cluster.addAccessUrl(clusterStatusClusterActivatedEvent.getInstanceId(),accessURL.toString()); + cluster.addAccessUrl(clusterStatusClusterActivatedEvent.getInstanceId(), + accessURL.toString()); clusterInstanceActivatedEvent.addAccessUrl(accessURL.toString()); } else { - log.error(String.format("Could not create access URL for [Kubernetes-service] %s , " + - "since Public IP is not available", kubernetesService.getId())); + log.error(String.format( + "Could not create access URL for [Kubernetes-service] %s , " + + "since Public IP is not available", + kubernetesService.getId())); } } } @@ -1036,10 +905,9 @@ public class TopologyBuilder { ClusterInstance context = cluster.getInstanceContexts(clusterStatusClusterActivatedEvent.getInstanceId()); if (context == null) { - log.warn("Cluster instance context is not found for [cluster] " + + throw new RuntimeException("Cluster instance context is not found for [cluster] " + clusterStatusClusterActivatedEvent.getClusterId() + " [instance-id] " + clusterStatusClusterActivatedEvent.getInstanceId()); - return; } ClusterStatus status = ClusterStatus.Active; if (context.isStateTransitionValid(status)) { @@ -1049,11 +917,10 @@ public class TopologyBuilder { // publish event TopologyEventPublisher.sendClusterActivatedEvent(clusterInstanceActivatedEvent); } else { - log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + - " [instance-id] %s [current-status] %s [status-requested] %s", - clusterStatusClusterActivatedEvent.getClusterId(), clusterStatusClusterActivatedEvent.getInstanceId(), - context.getStatus(), status)); - return; + throw new RuntimeException(String.format("Cluster state transition is not valid: [cluster-id] %s " + + " [instance-id] %s [current-status] %s [status-requested] %s", + clusterStatusClusterActivatedEvent.getClusterId(), + clusterStatusClusterActivatedEvent.getInstanceId(), context.getStatus(), status)); } } finally { TopologyManager.releaseWriteLock(); @@ -1061,38 +928,33 @@ public class TopologyBuilder { } - public static void handleClusterInactivateEvent( - ClusterStatusClusterInactivateEvent clusterInactivateEvent) { + public static void handleClusterInactivateEvent(ClusterStatusClusterInactivateEvent clusterInactivateEvent) + throws RegistryException { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(clusterInactivateEvent.getServiceName()); //update the status of the cluster if (service == null) { - log.warn(String.format("Service %s does not exist", - clusterInactivateEvent.getServiceName())); - return; + throw new RuntimeException( + String.format("Service %s does not exist", clusterInactivateEvent.getServiceName())); } Cluster cluster = service.getCluster(clusterInactivateEvent.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - clusterInactivateEvent.getClusterId())); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", clusterInactivateEvent.getClusterId(), + clusterInactivateEvent.getServiceName())); } - ClusterInstanceInactivateEvent clusterInactivatedEvent1 = - new ClusterInstanceInactivateEvent( - clusterInactivateEvent.getAppId(), - clusterInactivateEvent.getServiceName(), - clusterInactivateEvent.getClusterId(), - clusterInactivateEvent.getInstanceId()); + ClusterInstanceInactivateEvent clusterInactivatedEvent1 = new ClusterInstanceInactivateEvent( + clusterInactivateEvent.getAppId(), clusterInactivateEvent.getServiceName(), + clusterInactivateEvent.getClusterId(), clusterInactivateEvent.getInstanceId()); try { TopologyManager.acquireWriteLock(); ClusterInstance context = cluster.getInstanceContexts(clusterInactivateEvent.getInstanceId()); if (context == null) { - log.warn("Cluster Instance Context is not found for [cluster] " + + throw new RuntimeException("Cluster Instance Context is not found for [cluster] " + clusterInactivateEvent.getClusterId() + " [instance-id] " + clusterInactivateEvent.getInstanceId()); - return; } ClusterStatus status = ClusterStatus.Inactive; if (context.isStateTransitionValid(status)) { @@ -1102,83 +964,66 @@ public class TopologyBuilder { //publishing data TopologyEventPublisher.sendClusterInactivateEvent(clusterInactivatedEvent1); } else { - log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + - " [instance-id] %s [current-status] %s [status-requested] %s", + log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + + " [instance-id] %s [current-status] %s [status-requested] %s", clusterInactivateEvent.getClusterId(), clusterInactivateEvent.getInstanceId(), context.getStatus(), status)); - return; } } finally { TopologyManager.releaseWriteLock(); } } - - private static void deleteAppResourcesFromMetadataService(ApplicationInstanceTerminatedEvent event) { - try { - MetaDataServiceClient metadataClient = new DefaultMetaDataServiceClient(); - metadataClient.deleteApplicationProperties(event.getAppId()); - } catch (Exception e) { - log.error("Error occurred while deleting the application resources frm metadata service ", e); - } - } - - public static void handleClusterTerminatedEvent(ClusterStatusClusterTerminatedEvent event) { - + public static void handleClusterTerminatedEvent(ClusterStatusClusterTerminatedEvent event) + throws RegistryException { TopologyManager.acquireWriteLock(); - try { Topology topology = TopologyManager.getTopology(); Service service = topology.getService(event.getServiceName()); //update the status of the cluster if (service == null) { - log.warn(String.format("Service %s does not exist", - event.getServiceName())); - return; + throw new RuntimeException(String.format("Service %s does not exist", event.getServiceName())); } Cluster cluster = service.getCluster(event.getClusterId()); if (cluster == null) { - log.warn(String.format("Cluster %s does not exist", - event.getClusterId())); - return; + throw new RuntimeException( + String.format("Cluster %s does not exist for service %s", event.getClusterId(), + event.getServiceName())); } ClusterInstance context = cluster.getInstanceContexts(event.getInstanceId()); if (context == null) { - log.warn("Cluster Instance Context is not found for [cluster] " + + throw new RuntimeException("Cluster Instance Context is not found for [cluster] " + event.getClusterId() + " [instance-id] " + event.getInstanceId()); - return; } ClusterStatus status = ClusterStatus.Terminated; if (context.isStateTransitionValid(status)) { context.setStatus(status); - log.info("Cluster Terminated adding status started for and removing the cluster instance" - + cluster.getClusterId()); + log.info("Cluster Terminated adding status started for and removing the cluster instance" + cluster + .getClusterId()); cluster.removeInstanceContext(event.getInstanceId()); TopologyManager.updateTopology(topology); //publishing data - ClusterInstanceTerminatedEvent clusterTerminatedEvent = new ClusterInstanceTerminatedEvent(event.getAppId(), - event.getServiceName(), event.getClusterId(), event.getInstanceId()); + ClusterInstanceTerminatedEvent clusterTerminatedEvent = new ClusterInstanceTerminatedEvent( + event.getAppId(), event.getServiceName(), event.getClusterId(), event.getInstanceId()); TopologyEventPublisher.sendClusterTerminatedEvent(clusterTerminatedEvent); } else { - log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + - " [instance-id] %s [current-status] %s [status-requested] %s", - event.getClusterId(), event.getInstanceId(), - context.getStatus(), status)); - return; + throw new RuntimeException(String.format("Cluster state transition is not valid: [cluster-id] %s " + + " [instance-id] %s [current-status] %s [status-requested] %s", event.getClusterId(), + event.getInstanceId(), context.getStatus(), status)); } } finally { TopologyManager.releaseWriteLock(); } - } - public static void handleClusterTerminatingEvent(ClusterStatusClusterTerminatingEvent event) { + public static void handleClusterTerminatingEvent(ClusterStatusClusterTerminatingEvent event) + throws RegistryException { TopologyManager.acquireWriteLock(); @@ -1193,10 +1038,9 @@ public class TopologyBuilder { } ClusterInstance context = cluster.getInstanceContexts(event.getInstanceId()); if (context == null) { - log.warn("Cluster Instance Context is not found for [cluster] " + + throw new RuntimeException("Cluster Instance Context is not found for [cluster] " + event.getClusterId() + " [instance-id] " + event.getInstanceId()); - return; } ClusterStatus status = ClusterStatus.Terminating; if (context.isStateTransitionValid(status)) { @@ -1204,22 +1048,21 @@ public class TopologyBuilder { log.info("Cluster Terminating started for " + cluster.getClusterId()); TopologyManager.updateTopology(topology); //publishing data - ClusterInstanceTerminatingEvent clusterTerminaingEvent = new ClusterInstanceTerminatingEvent(event.getAppId(), - event.getServiceName(), event.getClusterId(), event.getInstanceId()); + ClusterInstanceTerminatingEvent clusterTerminaingEvent = new ClusterInstanceTerminatingEvent( + event.getAppId(), event.getServiceName(), event.getClusterId(), event.getInstanceId()); TopologyEventPublisher.sendClusterTerminatingEvent(clusterTerminaingEvent); // Remove kubernetes services if available - ClusterContext clusterContext = - CloudControllerContext.getInstance().getClusterContext(event.getClusterId()); + ClusterContext clusterContext = CloudControllerContext.getInstance() + .getClusterContext(event.getClusterId()); KubernetesIaas.removeKubernetesServices(clusterContext, context.getInstanceId()); } else { - log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + - " [instance-id] %s [current-status] %s [status-requested] %s", - event.getClusterId(), event.getInstanceId(), - context.getStatus(), status)); + log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " + + " [instance-id] %s [current-status] %s [status-requested] %s", event.getClusterId(), + event.getInstanceId(), context.getStatus(), status)); } } finally { TopologyManager.releaseWriteLock();
http://git-wip-us.apache.org/repos/asf/stratos/blob/8d46fab0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyManager.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyManager.java index 54be65f..f6f6036 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyManager.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyManager.java @@ -21,10 +21,12 @@ package org.apache.stratos.cloud.controller.messaging.topology; import com.google.gson.Gson; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.cloud.controller.registry.RegistryManager; +import org.apache.stratos.cloud.controller.util.CloudControllerConstants; import org.apache.stratos.cloud.controller.util.CloudControllerUtil; import org.apache.stratos.common.concurrent.locks.ReadWriteLock; import org.apache.stratos.messaging.domain.topology.Topology; - +import org.wso2.carbon.registry.core.exceptions.RegistryException; /** * Persistence and retrieval of Topology from Registry @@ -92,15 +94,15 @@ public class TopologyManager { /** * Update in-memory topology and persist it in registry. * - * @param topology_ + * @param updatedTopology */ - public static void updateTopology(Topology topology_) { + public static void updateTopology(Topology updatedTopology) throws RegistryException { synchronized (TopologyManager.class) { if (log.isDebugEnabled()) { log.debug("Updating topology"); } - topology = topology_; - CloudControllerUtil.persistTopology(topology); + topology = updatedTopology; + RegistryManager.getInstance().persist(CloudControllerConstants.TOPOLOGY_RESOURCE, topology); if (log.isDebugEnabled()) { log.debug(String.format("Topology updated: %s", toJson(topology))); }
