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 2017/09/13 08:06:58 UTC
[1/2] brooklyn-server git commit: added highlights to policy endpoint
Repository: brooklyn-server
Updated Branches:
refs/heads/master a26e8f569 -> b9f14e556
added highlights to policy endpoint
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/962b7770
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/962b7770
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/962b7770
Branch: refs/heads/master
Commit: 962b777052907b80b93c39dee09dfd976cc87ea9
Parents: 3d650c9
Author: graeme.miller <gr...@cloudsoftcorp.com>
Authored: Thu Sep 7 13:14:42 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Mon Sep 11 13:30:30 2017 +0100
----------------------------------------------------------------------
.../api/mgmt/rebind/mementos/PolicyMemento.java | 3 +
.../apache/brooklyn/api/objs/EntityAdjunct.java | 3 +
.../brooklyn/api/objs/HighlightTuple.java | 81 ++++++++++++++++++++
.../core/mgmt/rebind/RebindIteration.java | 1 +
.../mgmt/rebind/dto/BasicPolicyMemento.java | 17 +++-
.../mgmt/rebind/dto/MementosGenerators.java | 4 +-
.../core/objs/AbstractEntityAdjunct.java | 30 ++++++++
.../core/policy/basic/BasicPolicyTest.java | 18 +++++
.../autoscaling/AutoScalerPolicyRebindTest.java | 34 ++++++++
.../brooklyn/rest/domain/PolicySummary.java | 15 +++-
.../rest/transform/PolicyTransformer.java | 7 +-
.../rest/resources/PolicyResourceTest.java | 24 +++++-
.../testing/mocks/RestMockSimplePolicy.java | 3 +
13 files changed, 233 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java b/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java
index bfec7af..1c96c8e 100644
--- a/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java
+++ b/api/src/main/java/org/apache/brooklyn/api/mgmt/rebind/mementos/PolicyMemento.java
@@ -21,6 +21,7 @@ package org.apache.brooklyn.api.mgmt.rebind.mementos;
import java.util.Map;
import org.apache.brooklyn.api.mgmt.rebind.RebindSupport;
+import org.apache.brooklyn.api.objs.HighlightTuple;
/**
* Represents the state of an policy, so that it can be reconstructed (e.g. after restarting brooklyn).
@@ -32,4 +33,6 @@ import org.apache.brooklyn.api.mgmt.rebind.RebindSupport;
public interface PolicyMemento extends Memento {
Map<String, Object> getConfig();
+
+ Map<String, HighlightTuple> getHighlights();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java b/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java
index 674d7f2..7127134 100644
--- a/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java
+++ b/api/src/main/java/org/apache/brooklyn/api/objs/EntityAdjunct.java
@@ -18,6 +18,8 @@
*/
package org.apache.brooklyn.api.objs;
+import java.util.Map;
+
import javax.annotation.Nullable;
/**
@@ -50,4 +52,5 @@ public interface EntityAdjunct extends BrooklynObject {
*/
@Nullable String getUniqueTag();
+ Map<String, HighlightTuple> getHighlights();
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/api/src/main/java/org/apache/brooklyn/api/objs/HighlightTuple.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/objs/HighlightTuple.java b/api/src/main/java/org/apache/brooklyn/api/objs/HighlightTuple.java
new file mode 100644
index 0000000..d31b317
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/objs/HighlightTuple.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.api.objs;
+
+public class HighlightTuple {
+
+ private String description;
+ private long time;
+ private String taskId;
+
+ //required for JSON de-serialisation
+ private HighlightTuple(){
+
+ }
+
+ public HighlightTuple(String description, long time, String taskId) {
+ this.description = description;
+ this.time = time;
+ this.taskId = taskId;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ public void setTime(long time) {
+ this.time = time;
+ }
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public void setTaskId(String taskId) {
+ this.taskId = taskId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ HighlightTuple that = (HighlightTuple) o;
+
+ if (time != that.time) return false;
+ if (description != null ? !description.equals(that.description) : that.description != null) return false;
+ return taskId != null ? taskId.equals(that.taskId) : that.taskId == null;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = description != null ? description.hashCode() : 0;
+ result = 31 * result + (int) (time ^ (time >>> 32));
+ result = 31 * result + (taskId != null ? taskId.hashCode() : 0);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
index e927e1a..76a4d31 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindIteration.java
@@ -1228,6 +1228,7 @@ public abstract class RebindIteration {
policy = policyFactory.constructPolicy(policyClazz);
FlagUtils.setFieldsFromFlags(ImmutableMap.of("id", id), policy);
((AbstractPolicy)policy).setManagementContext(managementContext);
+ ((AbstractPolicy)policy).setHighlights(memento.getHighlights());
} else {
LOG.warn("Deprecated rebind of policy without no-arg constructor; " +
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BasicPolicyMemento.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BasicPolicyMemento.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BasicPolicyMemento.java
index dfaa616..7a3c442 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BasicPolicyMemento.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/BasicPolicyMemento.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.Map;
import org.apache.brooklyn.api.mgmt.rebind.mementos.PolicyMemento;
+import org.apache.brooklyn.api.objs.HighlightTuple;
import org.apache.brooklyn.core.config.Sanitizer;
import com.google.common.base.MoreObjects;
@@ -42,15 +43,20 @@ public class BasicPolicyMemento extends AbstractMemento implements PolicyMemento
public static class Builder extends AbstractMemento.Builder<Builder> {
protected Map<String,Object> config = Maps.newLinkedHashMap();
+ protected Map<String,HighlightTuple> highlights = Maps.newLinkedHashMap();
public Builder from(PolicyMemento other) {
super.from(other);
config.putAll(other.getConfig());
+ highlights.putAll(other.getHighlights());
return this;
}
public Builder config(Map<String,?> vals) {
config.putAll(vals); return this;
}
+ public Builder highlights(Map<String,HighlightTuple> vals) {
+ highlights.putAll(vals); return this;
+ }
public PolicyMemento build() {
return new BasicPolicyMemento(this);
}
@@ -58,6 +64,7 @@ public class BasicPolicyMemento extends AbstractMemento implements PolicyMemento
private Map<String,Object> config;
private Map<String, Object> fields;
+ private Map<String, HighlightTuple> highlights;
@SuppressWarnings("unused") // For deserialisation
private BasicPolicyMemento() {}
@@ -66,6 +73,7 @@ public class BasicPolicyMemento extends AbstractMemento implements PolicyMemento
protected BasicPolicyMemento(Builder builder) {
super(builder);
config = toPersistedMap(builder.config);
+ highlights = toPersistedMap(builder.highlights);
}
@Deprecated
@@ -84,9 +92,14 @@ public class BasicPolicyMemento extends AbstractMemento implements PolicyMemento
public Map<String, Object> getConfig() {
return fromPersistedMap(config);
}
-
+
+ @Override
+ public Map<String, HighlightTuple> getHighlights() {
+ return highlights;
+ }
+
@Override
protected MoreObjects.ToStringHelper newVerboseStringHelper() {
- return super.newVerboseStringHelper().add("config", Sanitizer.sanitize(getConfig()));
+ return super.newVerboseStringHelper().add("config", Sanitizer.sanitize(getConfig())).add("highlights", highlights);
}
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java
index e3969cb..1b0700f 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/dto/MementosGenerators.java
@@ -259,7 +259,9 @@ public class MementosGenerators {
Object value = configValueToPersistable(entry.getValue(), policy, key.getName());
builder.config.put(key.getName(), value);
}
-
+
+ builder.highlights(policy.getHighlights());
+
Map<String, Object> persistableFlags = MutableMap.<String, Object>builder()
.putAll(FlagUtils.getFieldsWithFlagsExcludingModifiers(policy, Modifier.STATIC ^ Modifier.TRANSIENT))
.remove("id")
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
index df11ed0..2b8d938 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
@@ -23,6 +23,7 @@ import static org.apache.brooklyn.util.JavaGroovyEquivalents.groovyTruth;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -36,6 +37,7 @@ import org.apache.brooklyn.api.mgmt.SubscriptionHandle;
import org.apache.brooklyn.api.objs.BrooklynObject;
import org.apache.brooklyn.api.objs.Configurable;
import org.apache.brooklyn.api.objs.EntityAdjunct;
+import org.apache.brooklyn.api.objs.HighlightTuple;
import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.api.sensor.Sensor;
import org.apache.brooklyn.api.sensor.SensorEventListener;
@@ -109,6 +111,13 @@ public abstract class AbstractEntityAdjunct extends AbstractBrooklynObject imple
@SetFromFlag(value="uniqueTag")
protected String uniqueTag;
+ private Map<String, HighlightTuple> highlights = new HashMap<>();
+
+ public static String HIGHLIGHT_NAME_LAST_ACTION = "lastAction";
+ public static String HIGHLIGHT_NAME_LAST_CONFIRMATION= "lastConfirmation";
+ public static String HIGHLIGHT_NAME_LAST_VIOLATION= "lastViolation";
+ public static String HIGHLIGHT_NAME_TRIGGERS = "triggers";
+
public AbstractEntityAdjunct() {
this(Collections.emptyMap());
}
@@ -128,6 +137,10 @@ public abstract class AbstractEntityAdjunct extends AbstractBrooklynObject imple
}
}
+ protected void addHighlight(String name, HighlightTuple tuple) {
+ highlights.put(name, tuple);
+ }
+
/**
* @deprecated since 0.7.0; only used for legacy brooklyn types where constructor is called directly
*/
@@ -549,6 +562,23 @@ public abstract class AbstractEntityAdjunct extends AbstractBrooklynObject imple
}
@Override
+ public Map<String, HighlightTuple> getHighlights() {
+ HashMap<String, HighlightTuple> highlightsToReturn = new HashMap<>();
+ highlightsToReturn.putAll(highlights);
+ return highlightsToReturn;
+ }
+
+ /**
+ * Should only be used for rebind
+ * @param highlights
+ */
+ public void setHighlights(Map<String, HighlightTuple> highlights) {
+ if(highlights != null) {
+ this.highlights.putAll(highlights);
+ }
+ }
+
+ @Override
public String toString() {
return MoreObjects.toStringHelper(getClass()).omitNullValues()
.add("name", name)
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java b/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
index 26f3915..4da4188 100644
--- a/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/policy/basic/BasicPolicyTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertTrue;
import java.util.Map;
+import org.apache.brooklyn.api.objs.HighlightTuple;
import org.apache.brooklyn.api.policy.PolicySpec;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.BasicConfigKey;
@@ -70,6 +71,11 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
}
}
+ //make visable for testing
+ @Override
+ protected void addHighlight(String name, HighlightTuple tuple) {
+ super.addHighlight(name, tuple);
+ }
}
@Test
@@ -106,4 +112,16 @@ public class BasicPolicyTest extends BrooklynAppUnitTestSupport {
assertEquals(policy.getUniqueTag(), "x");
}
+ @Test
+ public void testHighlights() throws Exception {
+ MyPolicy policy = new MyPolicy();
+
+ HighlightTuple highlight = new HighlightTuple("TEST_DESCRIPTION", 123L, "456");
+ policy.addHighlight("testHighlightName", highlight);
+
+ Map<String, HighlightTuple> highlights = policy.getHighlights();
+
+ assertEquals(1, highlights.size());
+ assertEquals(highlight, highlights.get("testHighlightName"));
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
index 07d01ea..10e67e9 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicyRebindTest.java
@@ -19,17 +19,22 @@
package org.apache.brooklyn.policy.autoscaling;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.location.LocationSpec;
+import org.apache.brooklyn.api.objs.HighlightTuple;
+import org.apache.brooklyn.api.policy.Policy;
import org.apache.brooklyn.api.sensor.AttributeSensor;
import org.apache.brooklyn.core.entity.EntityAsserts;
import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.location.SimulatedLocation;
import org.apache.brooklyn.core.mgmt.rebind.RebindTestFixtureWithApp;
+import org.apache.brooklyn.core.objs.AbstractEntityAdjunct;
import org.apache.brooklyn.core.sensor.BasicNotificationSensor;
import org.apache.brooklyn.core.sensor.Sensors;
import org.apache.brooklyn.core.test.entity.TestApplication;
@@ -105,6 +110,7 @@ public class AutoScalerPolicyRebindTest extends RebindTestFixtureWithApp {
assertEquals(newPolicy.getConfig(AutoScalerPolicy.POOL_OK_SENSOR), POOL_OK_SENSOR);
assertEquals(newPolicy.getConfig(AutoScalerPolicy.MAX_SIZE_REACHED_SENSOR), MAX_SIZE_REACHED_SENSOR);
assertEquals(newPolicy.getConfig(AutoScalerPolicy.MAX_REACHED_NOTIFICATION_DELAY), Duration.of(7, TimeUnit.MILLISECONDS));
+ assertTrue(newPolicy.getHighlights().isEmpty());
}
@Test
@@ -131,4 +137,32 @@ public class AutoScalerPolicyRebindTest extends RebindTestFixtureWithApp {
((EntityInternal)newCluster).sensors().set(METRIC_SENSOR, 1);
EntityAsserts.assertGroupSizeEqualsEventually(newCluster, 1);
}
+
+ @Test
+ public void testAutoScalerHighlightAfterRebind() throws Exception {
+ origCluster.start(ImmutableList.of(origLoc));
+ origCluster.policies().add(AutoScalerPolicy.builder()
+ .name("myname")
+ .metric(METRIC_SENSOR)
+ .entityWithMetric(origCluster)
+ .metricUpperBound(10)
+ .metricLowerBound(100)
+ .minPoolSize(1)
+ .maxPoolSize(3)
+ .buildSpec());
+
+ Map<String, HighlightTuple> highlights = new HashMap<>();
+ highlights.put("testNameTask", new HighlightTuple("testDescription", 123L, "testTaskId"));
+
+
+ Policy originalPolicy = origCluster.policies().iterator().next();
+ ((AbstractEntityAdjunct)originalPolicy).setHighlights(highlights);
+
+ TestApplication newApp = rebind();
+
+ DynamicCluster newCluster = (DynamicCluster) Iterables.getOnlyElement(newApp.getChildren());
+ AutoScalerPolicy newPolicy = (AutoScalerPolicy) Iterables.getOnlyElement(newCluster.policies());
+
+ assertEquals(originalPolicy.getHighlights(), newPolicy.getHighlights());
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicySummary.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicySummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicySummary.java
index a52ef53..ce9c9e0 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicySummary.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicySummary.java
@@ -27,6 +27,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.google.common.collect.ImmutableMap;
+import org.apache.brooklyn.api.objs.HighlightTuple;
+
public class PolicySummary implements HasName, HasId, Serializable {
private static final long serialVersionUID = -5086680835225136768L;
@@ -37,18 +39,21 @@ public class PolicySummary implements HasName, HasId, Serializable {
private final String catalogItemId;
private final Status state;
private final Map<String, URI> links;
+ private final Map<String, HighlightTuple> highlights;
public PolicySummary(
@JsonProperty("id") String id,
@JsonProperty("name") String name,
@JsonProperty("catalogItemId") String catalogItemId,
@JsonProperty("state") Status state,
+ @JsonProperty("highlights") Map<String, HighlightTuple> highlights,
@JsonProperty("links") Map<String, URI> links) {
this.id = id;
this.name = name;
this.catalogItemId = catalogItemId;
this.state = state;
this.links = (links == null) ? ImmutableMap.<String, URI> of() : ImmutableMap.copyOf(links);
+ this.highlights = (highlights == null) ? ImmutableMap.of() : ImmutableMap.copyOf(highlights);
}
@Override
@@ -73,6 +78,10 @@ public class PolicySummary implements HasName, HasId, Serializable {
return links;
}
+ public Map<String, HighlightTuple> getHighlights() {
+ return highlights;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -82,12 +91,13 @@ public class PolicySummary implements HasName, HasId, Serializable {
Objects.equals(name, that.name) &&
Objects.equals(catalogItemId, that.catalogItemId) &&
state == that.state &&
- Objects.equals(links, that.links);
+ Objects.equals(highlights, that.highlights) &&
+ Objects.equals(links, that.links) ;
}
@Override
public int hashCode() {
- return Objects.hash(id, name, catalogItemId, state, links);
+ return Objects.hash(id, name, catalogItemId, state, highlights, links);
}
@Override
@@ -97,6 +107,7 @@ public class PolicySummary implements HasName, HasId, Serializable {
", name='" + name + '\'' +
", catalogItemId='" + catalogItemId + '\'' +
", state=" + state +
+ ", highlights=" + highlights +
", links=" + links +
'}';
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java
index 18e7d57..8dad949 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/PolicyTransformer.java
@@ -65,7 +65,12 @@ public class PolicyTransformer {
.put("entity", entityUri)
.build();
- return new PolicySummary(policy.getId(), policy.getDisplayName(), policy.getCatalogItemId(), ApplicationTransformer.statusFromLifecycle(Policies.getPolicyStatus(policy)), links);
+ return new PolicySummary( policy.getId(),
+ policy.getDisplayName(),
+ policy.getCatalogItemId(),
+ ApplicationTransformer.statusFromLifecycle(Policies.getPolicyStatus(policy)),
+ policy.getHighlights(),
+ links);
}
public static PolicyConfigSummary policyConfigSummary(BrooklynRestResourceUtils utils, ApplicationSummary application, Entity entity, Policy policy, ConfigKey<?> config, UriBuilder ub) {
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/PolicyResourceTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/PolicyResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/PolicyResourceTest.java
index 1ba41cc..c555c9c 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/PolicyResourceTest.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/PolicyResourceTest.java
@@ -28,12 +28,12 @@ import java.util.Set;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import org.apache.brooklyn.rest.util.WebResourceUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import org.apache.brooklyn.api.objs.HighlightTuple;
import org.apache.brooklyn.rest.domain.ApplicationSpec;
import org.apache.brooklyn.rest.domain.EntitySpec;
import org.apache.brooklyn.rest.domain.PolicyConfigSummary;
@@ -45,6 +45,7 @@ import org.apache.brooklyn.rest.testing.mocks.RestMockSimplePolicy;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
+
import javax.ws.rs.core.GenericType;
@Test(singleThreaded = true,
@@ -140,4 +141,25 @@ public class PolicyResourceTest extends BrooklynRestResourceTest {
.get(String.class);
assertEquals(configVal, expectedVal);
}
+
+ @Test
+ public void testHighlights() throws Exception {
+ Set<PolicySummary> policies = client().path(ENDPOINT).get(new GenericType<Set<PolicySummary>>() {});
+
+ assertEquals(policies.size(), 1);
+ PolicySummary policySummary = policies.iterator().next();
+
+ Map<String, HighlightTuple> highlights = policySummary.getHighlights();
+
+ assertEquals(highlights.size(), 2);
+ HighlightTuple highlightTupleTask = highlights.get("testNameTask");
+ assertEquals(highlightTupleTask.getDescription(), "testDescription");
+ assertEquals(highlightTupleTask.getTime(), 123L);
+ assertEquals(highlightTupleTask.getTaskId(), "testTaskId");
+
+ HighlightTuple highlightTupleNoTask = highlights.get("testNameNoTask");
+ assertEquals(highlightTupleNoTask.getDescription(), "testDescription");
+ assertEquals(highlightTupleNoTask.getTime(), 123L);
+ assertEquals(highlightTupleNoTask.getTaskId(), null);
+ }
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/962b7770/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
index cdab1ab..9f142c3 100644
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
+++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/testing/mocks/RestMockSimplePolicy.java
@@ -18,6 +18,7 @@
*/
package org.apache.brooklyn.rest.testing.mocks;
+import org.apache.brooklyn.api.objs.HighlightTuple;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.BasicConfigKey;
import org.apache.brooklyn.core.policy.AbstractPolicy;
@@ -32,6 +33,8 @@ public class RestMockSimplePolicy extends AbstractPolicy {
public RestMockSimplePolicy() {
super();
+ this.addHighlight("testNameTask", new HighlightTuple("testDescription", 123L, "testTaskId"));
+ this.addHighlight("testNameNoTask", new HighlightTuple("testDescription", 123L, null));
}
@SetFromFlag("sampleConfig")
[2/2] brooklyn-server git commit: This closes #813
Posted by he...@apache.org.
This closes #813
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b9f14e55
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b9f14e55
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b9f14e55
Branch: refs/heads/master
Commit: b9f14e556c296e27ae35398c9e9d87b9a995933d
Parents: a26e8f5 962b777
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Wed Sep 13 09:06:43 2017 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Sep 13 09:06:43 2017 +0100
----------------------------------------------------------------------
.../api/mgmt/rebind/mementos/PolicyMemento.java | 3 +
.../apache/brooklyn/api/objs/EntityAdjunct.java | 3 +
.../brooklyn/api/objs/HighlightTuple.java | 81 ++++++++++++++++++++
.../core/mgmt/rebind/RebindIteration.java | 1 +
.../mgmt/rebind/dto/BasicPolicyMemento.java | 17 +++-
.../mgmt/rebind/dto/MementosGenerators.java | 4 +-
.../core/objs/AbstractEntityAdjunct.java | 30 ++++++++
.../core/policy/basic/BasicPolicyTest.java | 18 +++++
.../autoscaling/AutoScalerPolicyRebindTest.java | 34 ++++++++
.../brooklyn/rest/domain/PolicySummary.java | 15 +++-
.../rest/transform/PolicyTransformer.java | 7 +-
.../rest/resources/PolicyResourceTest.java | 24 +++++-
.../testing/mocks/RestMockSimplePolicy.java | 3 +
13 files changed, 233 insertions(+), 7 deletions(-)
----------------------------------------------------------------------