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 2014/09/22 17:16:19 UTC
[2/3] git commit: Unmanage mirror entity if remote is removed.
Unmanage mirror entity if remote is removed.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/078bcbac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/078bcbac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/078bcbac
Branch: refs/heads/master
Commit: 078bcbac1a733b2f6b0732db36d5632680e97d54
Parents: 0b269ba
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Fri Sep 19 20:19:13 2014 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Fri Sep 19 20:19:13 2014 +0300
----------------------------------------------------------------------
.../brooklynnode/BrooklynEntityMirrorImpl.java | 27 +++++++++++++-------
1 file changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/078bcbac/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 7a25674..a71402f 100644
--- a/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
+++ b/software/base/src/main/java/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
@@ -24,15 +24,17 @@ import java.util.concurrent.Callable;
import javax.annotation.Nullable;
+import org.apache.http.HttpStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import brooklyn.entity.Effector;
import brooklyn.entity.basic.AbstractEntity;
import brooklyn.entity.basic.Attributes;
+import brooklyn.entity.basic.Entities;
import brooklyn.entity.basic.EntityDynamicType;
-import brooklyn.entity.basic.EntityFunctions;
import brooklyn.entity.basic.Lifecycle;
+import brooklyn.entity.basic.ServiceStateLogic;
import brooklyn.entity.effector.EffectorBody;
import brooklyn.event.basic.Sensors;
import brooklyn.event.feed.http.HttpFeed;
@@ -40,7 +42,6 @@ import brooklyn.event.feed.http.HttpPollConfig;
import brooklyn.util.collections.Jsonya;
import brooklyn.util.collections.MutableMap;
import brooklyn.util.config.ConfigBag;
-import brooklyn.util.guava.Functionals;
import brooklyn.util.http.HttpToolResponse;
import brooklyn.util.net.Urls;
import brooklyn.util.task.DynamicTasks;
@@ -48,14 +49,11 @@ import brooklyn.util.task.Tasks;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
-import com.google.common.base.Suppliers;
import com.google.common.net.MediaType;
import com.google.gson.Gson;
public class BrooklynEntityMirrorImpl extends AbstractEntity implements BrooklynEntityMirror {
- private static final Logger log = LoggerFactory.getLogger(BrooklynEntityMirrorImpl.class);
-
private HttpFeed mirror;
@@ -108,16 +106,27 @@ 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)
.credentialsIfNotNull(getConfig(BrooklynNode.MANAGEMENT_USER), getConfig(BrooklynNode.MANAGEMENT_PASSWORD))
.period(getConfig(POLL_PERIOD))
.poll(HttpPollConfig.forMultiple()
.onSuccess(mirrorSensors)
- .onFailureOrException(Functionals.function(EntityFunctions.updatingSensorMapEntry(this, Attributes.SERVICE_PROBLEMS, "mirror-feed",
- Suppliers.ofInstance("error contacting service")
- ))))
- .build();
+ .onFailureOrException(new Function<Object, Void>() {
+ @Override
+ public Void apply(Object input) {
+ ServiceStateLogic.updateMapSensorEntry(self, Attributes.SERVICE_PROBLEMS, "mirror-feed", "error contacting service");
+ if (input instanceof HttpToolResponse) {
+ int responseCode = ((HttpToolResponse)input).getResponseCode();
+ if (responseCode == HttpStatus.SC_NOT_FOUND) {
+ //the remote entity no longer exists
+ Entities.unmanage(self);
+ }
+ }
+ return null;
+ }
+ })).build();
populateEffectors();
}