brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aleds...@apache.org
Subject [1/8] git commit: Added additional sensors
Date Wed, 09 Jul 2014 14:45:07 GMT
Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 65bc06adc -> 2ebc307a3


Added additional sensors


Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/62c7d20f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/62c7d20f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/62c7d20f

Branch: refs/heads/master
Commit: 62c7d20f2a1477fbe9291d491891eebb6e70c55f
Parents: b158aa3
Author: Martin Harris <github@nakomis.com>
Authored: Fri May 30 12:33:45 2014 +0100
Committer: Martin Harris <github@nakomis.com>
Committed: Tue Jun 17 10:19:57 2014 +0100

----------------------------------------------------------------------
 .../nosql/elasticsearch/ElasticSearchNode.java  |  6 ++++
 .../elasticsearch/ElasticSearchNodeImpl.java    | 38 +++++++++++++++-----
 2 files changed, 36 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/62c7d20f/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
index 30d80e9..32ec9af 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNode.java
@@ -31,4 +31,10 @@ public interface ElasticSearchNode extends SoftwareProcess, DatastoreMixins.HasD
     AttributeSensor<String> NODE_ID = Sensors.newStringSensor("elasticsearch.node.id");
     AttributeSensor<String> NODE_NAME = Sensors.newStringSensor("elasticsearch.node.name");
     AttributeSensor<String> CLUSTER_NAME = Sensors.newStringSensor("elasticsearch.cluster.name");
+    AttributeSensor<Integer> DOCUMENT_COUNT = Sensors.newIntegerSensor("elasticsearch.docs.count");
+    AttributeSensor<Integer> STORE_BYTES = Sensors.newIntegerSensor("elasticsearch.store.bytes");
+    AttributeSensor<Integer> GET_TOTAL = Sensors.newIntegerSensor("elasticsearch.get.total");
+    AttributeSensor<Integer> GET_TIME_IN_MILLIS = Sensors.newIntegerSensor("elasticsearch.get.time.in.millis");
+    AttributeSensor<Integer> SEARCH_QUERY_TOTAL = Sensors.newIntegerSensor("elasticsearch.search.query.total");
+    AttributeSensor<Integer> SEARCH_QUERY_TIME_IN_MILLIS = Sensors.newIntegerSensor("elasticsearch.search.query.time.in.millis");
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/62c7d20f/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
index 92c809c..f25d0bf 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/elasticsearch/ElasticSearchNodeImpl.java
@@ -7,6 +7,7 @@ import brooklyn.event.feed.http.HttpPollConfig;
 import brooklyn.event.feed.http.HttpValueFunctions;
 import brooklyn.event.feed.http.JsonFunctions;
 import brooklyn.location.access.BrooklynAccessUtils;
+import brooklyn.util.http.HttpToolResponse;
 
 import com.google.common.base.Function;
 import com.google.common.base.Functions;
@@ -37,15 +38,20 @@ public class ElasticSearchNodeImpl extends SoftwareProcessImpl implements
Elasti
                 return input.getAsJsonObject().entrySet().iterator().next().getKey();
             }
         };
-        Function<JsonElement, JsonElement> getFirstNode = new Function<JsonElement,
JsonElement>() {
+        
+        Function<JsonElement, JsonElement> getFirstNodeFromNodes = new Function<JsonElement,
JsonElement>() {
             @Override public JsonElement apply(JsonElement input) {
                 return input.getAsJsonObject().entrySet().iterator().next().getValue();
             }
         };
+        
+        Function<HttpToolResponse, JsonElement> getFirstNode = HttpValueFunctions.chain(HttpValueFunctions.jsonContents(),

+            JsonFunctions.walk("nodes"), getFirstNodeFromNodes);
+                
         httpFeed = HttpFeed.builder()
             .entity(this)
             .period(1000)
-            .baseUri(String.format("http://%s:%s/_nodes/_local", hp.getHostText(), hp.getPort()))
+            .baseUri(String.format("http://%s:%s/_nodes/_local/stats", hp.getHostText(),
hp.getPort()))
             .poll(new HttpPollConfig<Boolean>(SERVICE_UP)
                 .onSuccess(HttpValueFunctions.responseCodeEquals(200))
                 .onFailureOrException(Functions.constant(false)))
@@ -53,13 +59,29 @@ public class ElasticSearchNodeImpl extends SoftwareProcessImpl implements
Elasti
                         .onSuccess(HttpValueFunctions.chain(HttpValueFunctions.jsonContents(),
JsonFunctions.walk("nodes"), getNodeId))
                         .onFailureOrException(Functions.constant("")))
             .poll(new HttpPollConfig<String>(NODE_NAME)
-                .onSuccess(HttpValueFunctions.chain(HttpValueFunctions.chain(HttpValueFunctions.jsonContents(),
JsonFunctions.walk("nodes"), getFirstNode), 
-                        JsonFunctions.walk("name"), JsonFunctions.cast(String.class)))
-                .onFailureOrException(Functions.constant("")))
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("name"),
JsonFunctions.cast(String.class)))
+                .onFailureOrException(Functions.<String>constant(null)))
             .poll(new HttpPollConfig<String>(CLUSTER_NAME)
-                .onSuccess(HttpValueFunctions.chain(HttpValueFunctions.chain(HttpValueFunctions.jsonContents(),
JsonFunctions.walk("nodes"), getFirstNode), 
-                        JsonFunctions.walk("settings", "cluster", "name"), JsonFunctions.cast(String.class)))
-                .onFailureOrException(Functions.constant("")))
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("settings",
"cluster", "name"), JsonFunctions.cast(String.class)))
+                .onFailureOrException(Functions.<String>constant(null)))
+            .poll(new HttpPollConfig<Integer>(DOCUMENT_COUNT)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"docs", "count"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
+            .poll(new HttpPollConfig<Integer>(STORE_BYTES)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"store", "size_in_bytes"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
+            .poll(new HttpPollConfig<Integer>(GET_TOTAL)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"get", "total"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
+            .poll(new HttpPollConfig<Integer>(GET_TIME_IN_MILLIS)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"get", "time_in_millis"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
+            .poll(new HttpPollConfig<Integer>(SEARCH_QUERY_TOTAL)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"search", "query_total"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
+            .poll(new HttpPollConfig<Integer>(SEARCH_QUERY_TIME_IN_MILLIS)
+                .onSuccess(HttpValueFunctions.chain(getFirstNode, JsonFunctions.walk("indices",
"search", "query_time_in_millis"), JsonFunctions.cast(Integer.class)))
+                .onFailureOrException(Functions.<Integer>constant(null)))
             .build();
     }
     


Mime
View raw message