You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/10/24 12:19:33 UTC
git commit: adding cluster and group in-active listeners for topology
and application status in the receiver side
Repository: stratos
Updated Branches:
refs/heads/4.0.0-grouping 25221cc3f -> fe38bdcfc
adding cluster and group in-active listeners for topology and application status in the receiver side
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fe38bdcf
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fe38bdcf
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fe38bdcf
Branch: refs/heads/4.0.0-grouping
Commit: fe38bdcfc5f761ef46e78a5db3c0e7f34141f8d9
Parents: 25221cc
Author: reka <rt...@gmail.com>
Authored: Fri Oct 24 15:48:07 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Fri Oct 24 15:49:15 2014 +0530
----------------------------------------------------------------------
.../grouping/topic/StatusEventPublisher.java | 72 +++++--------------
.../AutoscalerTopologyEventReceiver.java | 14 ----
.../status/checker/StatusChecker.java | 16 ++++-
.../ApplicationStatusTopicReceiver.java | 16 +++++
.../controller/topology/TopologyBuilder.java | 74 ++++++++++++++++++++
.../topology/TopologyEventPublisher.java | 17 +++++
6 files changed, 141 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
index 668161a..630ffd2 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/topic/StatusEventPublisher.java
@@ -11,6 +11,7 @@ import org.apache.stratos.messaging.event.application.status.ApplicationActivate
import org.apache.stratos.messaging.event.application.status.ApplicationInactivatedEvent;
import org.apache.stratos.messaging.event.application.status.ApplicationTerminatedEvent;
import org.apache.stratos.messaging.event.application.status.ClusterActivatedEvent;
+import org.apache.stratos.messaging.event.application.status.ClusterInActivateEvent;
import org.apache.stratos.messaging.event.application.status.ClusterMaintenanceModeEvent;
import org.apache.stratos.messaging.event.application.status.GroupActivatedEvent;
import org.apache.stratos.messaging.event.topology.*;
@@ -32,10 +33,10 @@ public class StatusEventPublisher {
" [cluster]: " + clusterId);
}
- //TODO cluster
- ClusterCreatedEvent clusterActivatedEvent = new ClusterCreatedEvent(appId, serviceName, null);
- publishEvent(clusterActivatedEvent);
+ ClusterCreatedEvent clusterCreatedEvent = new ClusterCreatedEvent(appId, serviceName, clusterId);
+
+ publishEvent(clusterCreatedEvent);
}
public static void sendClusterActivatedEvent(String appId, String serviceName, String clusterId) {
@@ -45,7 +46,8 @@ public class StatusEventPublisher {
" [cluster]: " + clusterId);
}
- ClusterActivatedEvent clusterActivatedEvent = new ClusterActivatedEvent(appId, serviceName, clusterId);
+ ClusterActivatedEvent clusterActivatedEvent =
+ new ClusterActivatedEvent(appId, serviceName, clusterId);
publishEvent(clusterActivatedEvent);
}
@@ -57,9 +59,10 @@ public class StatusEventPublisher {
" [cluster]: " + clusterId);
}
- /*ClusterActivatedEvent clusterActivatedEvent = new ClusterActivatedEvent(appId, serviceName, clusterId);
+ ClusterInActivateEvent clusterInActivateEvent =
+ new ClusterInActivateEvent(appId, serviceName, clusterId);
- publishEvent(clusterActivatedEvent);*/
+ publishEvent(clusterInActivateEvent);
}
public static void sendClusterTerminatingEvent(String appId, String serviceName, String clusterId) {
@@ -68,7 +71,7 @@ public class StatusEventPublisher {
log.info("Publishing Cluster in-activate event for [application]: " + appId +
" [cluster]: " + clusterId);
}
-
+ //TODO
/*ClusterActivatedEvent clusterActivatedEvent = new ClusterActivatedEvent(appId, serviceName, clusterId);
publishEvent(clusterActivatedEvent);*/
@@ -80,36 +83,12 @@ public class StatusEventPublisher {
log.info("Publishing Cluster in-activate event for [application]: " + appId +
" [cluster]: " + clusterId);
}
-
- /*ClusterActivatedEvent clusterActivatedEvent = new ClusterActivatedEvent(appId, serviceName, clusterId);
+ //TODO
+ /* Cluster clusterActivatedEvent = new ClusterActivatedEvent(appId, serviceName, clusterId);
publishEvent(clusterActivatedEvent);*/
}
- public static void sendClusterInMaintenanceEvent(String appId, String serviceName, String clusterId) {
-
- if (log.isInfoEnabled()) {
- log.info("Publishing Cluster in_maintenance event for [application]: " + appId +
- " [cluster]: " + clusterId);
- }
-
- ClusterMaintenanceModeEvent clusterInMaintenanceEvent =
- new ClusterMaintenanceModeEvent(appId, serviceName, clusterId);
-
- publishEvent(clusterInMaintenanceEvent);
- }
-
- public static void sendGroupCreatedEvent(String appId, String groupId) {
-
- if (log.isInfoEnabled()) {
- log.info("Publishing Group activated event for [application]: " + appId +
- " [group]: " + groupId);
- }
-
-/*
- publishEvent(groupActivatedEvent);*/
- }
-
public static void sendGroupActivatedEvent(String appId, String groupId) {
if (log.isInfoEnabled()) {
@@ -141,9 +120,9 @@ public class StatusEventPublisher {
" [group]: " + groupId);
}
- GroupInActivateEvent groupInActivateEvent = new GroupInActivateEvent(appId, groupId);
+ GroupInTerminatingEvent groupInTerminatingEvent = new GroupInTerminatingEvent(appId, groupId);
- publishEvent(groupInActivateEvent);
+ publishEvent(groupInTerminatingEvent);
}
public static void sendGroupTerminatedEvent(String appId, String groupId) {
@@ -153,9 +132,9 @@ public class StatusEventPublisher {
" [group]: " + groupId);
}
- GroupInActivateEvent groupInActivateEvent = new GroupInActivateEvent(appId, groupId);
+ GroupInTerminatedEvent groupInTerminatedEvent = new GroupInTerminatedEvent(appId, groupId);
- publishEvent(groupInActivateEvent);
+ publishEvent(groupInTerminatedEvent);
}
public static void sendApplicationActivatedEvent(String appId) {
@@ -179,27 +158,14 @@ public class StatusEventPublisher {
publishEvent(applicationInActivatedEvent);
}
- public static void sendGroupInMaintenanceEvent(String appId, String groupId) {
-
+ public static void sendApplicationTerminatedEvent (String appId, Set<ClusterDataHolder> clusterData) {
if (log.isInfoEnabled()) {
- log.info("Publishing Group in_maintenance event for [application]: " + appId +
- " [group]: " + groupId);
+ log.info("Publishing Application terminated event for [application]: " + appId);
}
- GroupMaintenanceModeEvent groupMaintenanceModeEvent =
- new GroupMaintenanceModeEvent(appId, groupId);
-
- publishEvent(groupMaintenanceModeEvent);
- }
-
- public static void sendApplicationTerminatingEvent (String appId) {
- // TODO: implement
- }
-
- public static void sendApplicationTerminatedEvent (String appId, Set<ClusterDataHolder> clusterData) {
-
ApplicationTerminatedEvent applicationTerminatedEvent =
new ApplicationTerminatedEvent(appId, clusterData);
+
publishEvent(applicationTerminatedEvent);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
index 211bcd2..ce5aff0 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/message/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -155,8 +155,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
clusterMonitor.setStatus(ClusterStatus.Active);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onClusterStatusChange(clusterId, appId);
}
});
@@ -174,8 +172,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
clusterMonitor.setStatus(ClusterStatus.Created);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onClusterStatusChange(clusterId, appId);
}
});
@@ -194,8 +190,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
clusterMonitor.setStatus(ClusterStatus.Inactive);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onClusterStatusChange(clusterId, appId);
}
});
@@ -215,8 +209,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
monitor.setStatus(GroupStatus.Active);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onGroupStatusChange(groupId, appId);
}
});
@@ -236,8 +228,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
monitor.setStatus(GroupStatus.Inactive);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onGroupStatusChange(groupId, appId);
}
});
@@ -257,8 +247,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
monitor.setStatus(GroupStatus.Terminating);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onGroupStatusChange(groupId, appId);
}
});
@@ -278,8 +266,6 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
//changing the status in the monitor, will notify its parent monitor
monitor.setStatus(GroupStatus.Terminated);
- //starting the status checker to decide on the status of it's parent
- //StatusChecker.getInstance().onGroupStatusChange(groupId, appId);
}
});
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
index 1366bf8..7aef08e 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/status/checker/StatusChecker.java
@@ -285,7 +285,21 @@ public class StatusChecker {
} else if (parent instanceof Group) {
//send activation to the parent
log.info("sending group terminated : " + parent.getUniqueIdentifier());
- //StatusEventPublisher.sendGroupInActivateEvent(appId, parent.getUniqueIdentifier());
+ StatusEventPublisher.sendGroupTerminatedEvent(appId, parent.getUniqueIdentifier());
+ }
+ } else if (groups.isEmpty() && clusterStatus == ClusterStatus.Terminating ||
+ clusterData.isEmpty() && groupStatus == GroupStatus.Terminating ||
+ groupStatus == GroupStatus.Terminating && clusterStatus == ClusterStatus.Terminating) {
+ //send the terminated event
+ if (parent instanceof Application) {
+ //send application activated event
+ log.info("sending app terminating: " + appId);
+ StatusEventPublisher.sendApplicationTerminatedEvent(appId, parent.getClusterDataRecursively());
+ //StatusEventPublisher.sendApp(appId);
+ } else if (parent instanceof Group) {
+ //send activation to the parent
+ log.info("sending group terminating : " + parent.getUniqueIdentifier());
+ StatusEventPublisher.sendGroupTerminatedEvent(appId, parent.getUniqueIdentifier());
}
} else {
log.warn("Clusters/groups not found in this [component] " + appId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/status/receiver/ApplicationStatusTopicReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/status/receiver/ApplicationStatusTopicReceiver.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/status/receiver/ApplicationStatusTopicReceiver.java
index 3a3be45..604602b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/status/receiver/ApplicationStatusTopicReceiver.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/status/receiver/ApplicationStatusTopicReceiver.java
@@ -21,6 +21,7 @@ package org.apache.stratos.cloud.controller.application.status.receiver;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
+import org.apache.stratos.messaging.domain.topology.Cluster;
import org.apache.stratos.messaging.event.Event;
import org.apache.stratos.messaging.event.application.status.*;
import org.apache.stratos.messaging.listener.application.status.*;
@@ -71,6 +72,13 @@ public class ApplicationStatusTopicReceiver implements Runnable {
}
});
+ statusEventReceiver.addEventListener(new ClusterInActivateEventListener() {
+ @Override
+ protected void onEvent(Event event) {
+ TopologyBuilder.handleClusterInActivateEvent((ClusterInActivateEvent) event);
+ }
+ });
+
statusEventReceiver.addEventListener(new GroupActivatedEventListener() {
@Override
protected void onEvent(Event event) {
@@ -79,6 +87,14 @@ public class ApplicationStatusTopicReceiver implements Runnable {
}
});
+ statusEventReceiver.addEventListener(new GroupInactivateEventListener() {
+ @Override
+ protected void onEvent(Event event) {
+ TopologyBuilder.handleGroupInActiveEvent((GroupInactivateEvent) event);
+
+ }
+ });
+
statusEventReceiver.addEventListener(new GroupTerminatedEventListener() {
@Override
protected void onEvent(Event event) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/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 9b21c55..484cf99 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
@@ -44,6 +44,7 @@ import org.apache.stratos.messaging.event.instance.status.InstanceMaintenanceMod
import org.apache.stratos.messaging.event.instance.status.InstanceReadyToShutdownEvent;
import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent;
import org.apache.stratos.messaging.event.topology.*;
+import org.apache.stratos.messaging.event.topology.ClusterInActivateEvent;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
import java.util.*;
@@ -774,6 +775,44 @@ public class TopologyBuilder {
TopologyEventPublisher.sendClusterActivatedEvent(clusterActivatedEvent1);
}
+ public static void handleClusterInActivateEvent(
+ org.apache.stratos.messaging.event.application.status.ClusterInActivateEvent clusterInActivateEvent) {
+ 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;
+ }
+
+ Cluster cluster = service.getCluster(clusterInActivateEvent.getClusterId());
+ if (cluster == null) {
+ log.warn(String.format("Cluster %s does not exist",
+ clusterInActivateEvent.getClusterId()));
+ return;
+ }
+
+ ClusterInActivateEvent clusterActivatedEvent1 =
+ new ClusterInActivateEvent(
+ clusterInActivateEvent.getAppId(),
+ clusterInActivateEvent.getServiceName(),
+ clusterInActivateEvent.getClusterId());
+ try {
+ TopologyManager.acquireWriteLock();
+ //cluster.setStatus(Status.Activated);
+ cluster.setStatus(ClusterStatus.Inactive);
+
+ log.info("Cluster in-active adding status started");
+
+ TopologyManager.updateTopology(topology);
+ } finally {
+ TopologyManager.releaseWriteLock();
+ }
+ //publishing data
+ TopologyEventPublisher.sendClusterInActivateEvent(clusterActivatedEvent1);
+ }
+
public static void handleGroupActivatedEvent(GroupActivatedEvent groupActivatedEvent) {
Topology topology = TopologyManager.getTopology();
Application application = topology.getApplication(groupActivatedEvent.getAppId());
@@ -1003,6 +1042,41 @@ public class TopologyBuilder {
}
}
+ public static void handleGroupInActiveEvent(GroupInactivateEvent event) {
+ Topology topology = TopologyManager.getTopology();
+ Application application = topology.getApplication(event.getAppId());
+ //update the status of the Group
+ if (application == null) {
+ log.warn(String.format("Application %s does not exist",
+ event.getAppId()));
+ return;
+ }
+
+ Group group = application.getGroupRecursively(event.getGroupId());
+ if (group == null) {
+ log.warn(String.format("Group %s does not exist",
+ event.getGroupId()));
+ return;
+ }
+
+ GroupInActivateEvent groupInActivateEvent =
+ new GroupInActivateEvent(
+ event.getAppId(),
+ event.getGroupId());
+ try {
+ TopologyManager.acquireWriteLock();
+ group.setStatus(GroupStatus.Inactive);
+ log.info("Group in-active adding status started");
+
+ TopologyManager.updateTopology(topology);
+ } finally {
+ TopologyManager.releaseWriteLock();
+ }
+ //publishing data
+ TopologyEventPublisher.sendGroupInActiveEvent(groupInActivateEvent);
+ }
+
+
public static void handleGroupTerminatedEvent(GroupInTerminatedEvent event) {
Topology topology = TopologyManager.getTopology();
Application application = topology.getApplication(event.getAppId());
http://git-wip-us.apache.org/repos/asf/stratos/blob/fe38bdcf/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
index 21d8267..9f69ee2 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
@@ -204,6 +204,14 @@ public class TopologyEventPublisher {
publishEvent(clusterActivatedEvent);
}
+ public static void sendClusterInActivateEvent(ClusterInActivateEvent clusterInActiveEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing cluster in-active event: [service] %s [cluster] %s [appId] %s",
+ clusterInActiveEvent.getServiceName(), clusterInActiveEvent.getClusterId() , clusterInActiveEvent.getAppId()));
+ }
+ publishEvent(clusterInActiveEvent);
+ }
+
public static void sendMemberTerminatedEvent(String serviceName, String clusterId, String networkPartitionId,
String partitionId, String memberId, Properties properties, String groupId) {
@@ -265,6 +273,15 @@ public class TopologyEventPublisher {
publishEvent(applicationTerminatedEvent);
}
+ public static void sendGroupInActiveEvent(GroupInActivateEvent groupInActivateEvent) {
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Publishing group in-active event: [appId] %s",
+ groupInActivateEvent.getAppId()));
+ }
+ publishEvent(groupInActivateEvent);
+ }
+
+
public static void sendGroupTerminatedEvent(GroupTerminatedEvent groupTerminatedTopologyEvent) {
if(log.isInfoEnabled()) {
log.info(String.format("Publishing group terminated event: [appId] %s",