You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/03/13 09:04:46 UTC

camel git commit: CAMEL-10986: Add master route policy

Repository: camel
Updated Branches:
  refs/heads/master 2efb85f1d -> efbccd439


CAMEL-10986: Add master route policy


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

Branch: refs/heads/master
Commit: efbccd4399e54d0bf05f7c13484d5a2a7925990f
Parents: 2efb85f
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Mar 13 10:01:39 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Mar 13 10:01:39 2017 +0100

----------------------------------------------------------------------
 .../policy/MasterRoutePolicy.java               | 55 ++++++++++++++++++++
 1 file changed, 55 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/efbccd43/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java
----------------------------------------------------------------------
diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java
index 437cf2a..aa80095 100644
--- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java
+++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java
@@ -18,9 +18,15 @@ package org.apache.camel.component.zookeepermaster.policy;
 
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Route;
+import org.apache.camel.api.management.ManagedAttribute;
+import org.apache.camel.api.management.ManagedOperation;
+import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.component.zookeepermaster.CamelNodeState;
 import org.apache.camel.component.zookeepermaster.ContainerIdFactory;
 import org.apache.camel.component.zookeepermaster.DefaultContainerIdFactory;
@@ -37,6 +43,7 @@ import org.apache.curator.framework.CuratorFramework;
  * is controlled by this route policy which will start/stop the route accordingly to being
  * the master in the zookeeper cluster group.
  */
+@ManagedResource(description = "Managed MasterRoutePolicy")
 public class MasterRoutePolicy extends RoutePolicySupport implements CamelContextAware {
 
     private CuratorFramework curator;
@@ -77,6 +84,7 @@ public class MasterRoutePolicy extends RoutePolicySupport implements CamelContex
         this.zkRoot = zkRoot;
     }
 
+    @ManagedAttribute(description = "The name of the cluster group to use")
     public String getGroupName() {
         return groupName;
     }
@@ -110,6 +118,7 @@ public class MasterRoutePolicy extends RoutePolicySupport implements CamelContex
         this.curator = curator;
     }
 
+    @ManagedAttribute(description = "Timeout in millis to use when connecting to the zookeeper ensemble")
     public int getMaximumConnectionTimeout() {
         return maximumConnectionTimeout;
     }
@@ -121,6 +130,7 @@ public class MasterRoutePolicy extends RoutePolicySupport implements CamelContex
         this.maximumConnectionTimeout = maximumConnectionTimeout;
     }
 
+    @ManagedAttribute(description = "The url for the zookeeper ensemble")
     public String getZooKeeperUrl() {
         return zooKeeperUrl;
     }
@@ -143,6 +153,51 @@ public class MasterRoutePolicy extends RoutePolicySupport implements CamelContex
         this.zooKeeperPassword = zooKeeperPassword;
     }
 
+    @ManagedAttribute(description = "Are we connected to ZooKeeper")
+    public boolean isConnected() {
+        if (groupListener == null) {
+            return false;
+        }
+        return groupListener.getGroup().isConnected();
+    }
+
+    @ManagedAttribute(description = "Are we the master")
+    public boolean isMaster() {
+        if (groupListener == null) {
+            return false;
+        }
+        return groupListener.getGroup().isMaster();
+    }
+
+    @ManagedOperation(description = "Information about all the slaves")
+    public String slaves() {
+        if (groupListener == null) {
+            return null;
+        }
+        try {
+            return new ObjectMapper()
+                .enable(SerializationFeature.INDENT_OUTPUT)
+                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+                .writeValueAsString(groupListener.getGroup().slaves());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    @ManagedOperation(description = "Information about the last event in the cluster group")
+    public String lastEvent() {
+        if (groupListener == null) {
+            return null;
+        }
+        Object event = groupListener.getGroup().getLastState();
+        return event != null ? event.toString() : null;
+    }
+
+    @ManagedOperation(description = "Information about this node")
+    public String thisNode() {
+        return thisNodeState != null ? thisNodeState.toString() : null;
+    }
+
     @Override
     public void onInit(Route route) {
         super.onInit(route);