You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/05/22 11:39:25 UTC
[05/11] incubator-brooklyn git commit: Mirror summary for
BrooklynEntityMirror
Mirror summary for BrooklynEntityMirror
Also extract the catalogItemId in a separate attribute for easier access.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/644d6cd0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/644d6cd0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/644d6cd0
Branch: refs/heads/master
Commit: 644d6cd0244d02c5d8ee6ae7c5cc53398067ead7
Parents: d0cbcf3
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Tue May 12 16:03:51 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Tue May 19 23:22:59 2015 +0300
----------------------------------------------------------------------
.../entity/brooklynnode/BrooklynEntityMirror.java | 7 +++++++
.../brooklynnode/BrooklynEntityMirrorImpl.java | 18 ++++++++++++++----
.../BrooklynEntityMirrorIntegrationTest.java | 8 ++++++++
3 files changed, 29 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/644d6cd0/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirror.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirror.java b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirror.java
index 6cd8709..b19c9dc 100644
--- a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirror.java
+++ b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirror.java
@@ -18,6 +18,8 @@
*/
package brooklyn.entity.brooklynnode;
+import java.util.Map;
+
import brooklyn.catalog.Catalog;
import brooklyn.config.ConfigKey;
import brooklyn.entity.Entity;
@@ -54,6 +56,11 @@ public interface BrooklynEntityMirror extends Entity {
"Frequency to poll for client sensors", Duration.FIVE_SECONDS);
public static final AttributeSensor<String> MIRROR_STATUS = Sensors.newStringSensor("brooklyn.mirror.monitoring_status");
+ @SuppressWarnings("rawtypes")
+ public static final AttributeSensor<Map> MIRROR_SUMMARY = Sensors.newSensor(Map.class, "brooklyn.mirror.summary",
+ "The json map returned by the entity rest endpoint (ie the EntitySummary model)");
+ public static final AttributeSensor<String> MIRROR_CATALOG_ITEM_ID = Sensors.newStringSensor("brooklyn.mirror.catalog_item_id",
+ "The catalog item id of the mirrored entity in the remote brooklyn");
public EntityHttpClient http();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/644d6cd0/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
index 80b19f5..48ed3a8 100644
--- a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
+++ b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
@@ -51,6 +51,16 @@ import com.google.common.net.MediaType;
import com.google.gson.Gson;
public class BrooklynEntityMirrorImpl extends AbstractEntity implements BrooklynEntityMirror {
+ @SuppressWarnings("rawtypes")
+ private class MirrorSummary implements Function<HttpToolResponse, Map> {
+ @Override
+ public Map apply(HttpToolResponse input) {
+ Map<?, ?> entitySummary = new Gson().fromJson(input.getContentAsString(), Map.class);
+ String catalogItemId = (String)entitySummary.get("catalogItemId");
+ setAttribute(MIRROR_CATALOG_ITEM_ID, catalogItemId);
+ return entitySummary;
+ }
+ }
private HttpFeed mirror;
@@ -108,14 +118,13 @@ public class BrooklynEntityMirrorImpl extends AbstractEntity implements Brooklyn
}
};
- String sensorsUri = Urls.mergePaths(mirroredEntityUrl, "sensors/current-state");
-
final BrooklynEntityMirrorImpl self = this;
mirror = HttpFeed.builder().entity(this)
- .baseUri(sensorsUri)
+ .baseUri(mirroredEntityUrl)
.credentialsIfNotNull(getConfig(BrooklynNode.MANAGEMENT_USER), getConfig(BrooklynNode.MANAGEMENT_PASSWORD))
.period(getConfig(POLL_PERIOD))
.poll(HttpPollConfig.forMultiple()
+ .suburl("/sensors/current-state")
.onSuccess(mirrorSensors)
.onFailureOrException(new Function<Object, Void>() {
@Override
@@ -130,7 +139,8 @@ public class BrooklynEntityMirrorImpl extends AbstractEntity implements Brooklyn
}
return null;
}
- })).build();
+ }))
+ .poll(HttpPollConfig.forSensor(MIRROR_SUMMARY).onSuccess(new MirrorSummary())).build();
populateEffectors();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/644d6cd0/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
----------------------------------------------------------------------
diff --git a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
index 4ec0ddb..bb50f5a 100644
--- a/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
+++ b/usage/launcher/src/test/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorIntegrationTest.java
@@ -19,6 +19,7 @@
package brooklyn.entity.brooklynnode;
import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -104,7 +105,10 @@ public class BrooklynEntityMirrorIntegrationTest {
public void testServiceMirroring() throws Exception {
setUpServer();
+ String catalogItemId = "test-catalog-item:1.0";
+ String catalogItemIdGA = "test-catalog-item:1.0-GA";
serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "austria");
+ serverApp.setCatalogItemId(catalogItemId);
String serviceId = serverApp.getId();
Entity mirror = localApp.addChild(EntitySpec.create(BrooklynEntityMirror.class)
@@ -115,10 +119,14 @@ public class BrooklynEntityMirrorIntegrationTest {
);
EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "austria");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, BrooklynEntityMirror.MIRROR_CATALOG_ITEM_ID, catalogItemId);
+ assertTrue(mirror.getAttribute(BrooklynEntityMirror.MIRROR_SUMMARY) != null, "entity summary is null");
log.info("Sensors mirrored are: "+((EntityInternal)mirror).getAllAttributes());
serverApp.setAttribute(TestApplication.MY_ATTRIBUTE, "bermuda");
+ serverApp.setCatalogItemId(catalogItemIdGA);
EntityTestUtils.assertAttributeEqualsEventually(mirror, TestApplication.MY_ATTRIBUTE, "bermuda");
+ EntityTestUtils.assertAttributeEqualsEventually(mirror, BrooklynEntityMirror.MIRROR_CATALOG_ITEM_ID, catalogItemIdGA);
serverApp.stop();
assertUnmanagedEventually(mirror);