From cfa51d95f2d8b862933663647d35d3d9f1aec8b2 Mon Sep 17 00:00:00 2001 From: Mark McKenna Date: Sat, 4 Jun 2016 19:01:33 +0100 Subject: [PATCH] Catalog Policy REST API now returns config array --- .../brooklyn/rest/domain/PolicyConfigSummary.java | 6 ++++++ .../brooklyn/rest/transform/CatalogTransformer.java | 12 +++++++++++- .../brooklyn/rest/transform/EntityTransformer.java | 10 ++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicyConfigSummary.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicyConfigSummary.java index dd5950787f..8115ab97a5 100644 --- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicyConfigSummary.java +++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/PolicyConfigSummary.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.google.common.collect.ImmutableMap; +import org.apache.brooklyn.config.ConfigKey; public class PolicyConfigSummary extends ConfigSummary { @@ -44,6 +45,11 @@ public PolicyConfigSummary( this.links = (links == null) ? ImmutableMap.of() : ImmutableMap.copyOf(links); } + public PolicyConfigSummary(ConfigKey config, String label, Double priority, Map links) { + super(config, label, priority); + this.links = links != null ? ImmutableMap.copyOf(links) : null; + } + @Override public Map getLinks() { return links; diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java index 7e0d8bc896..1b89db2680 100644 --- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java +++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/CatalogTransformer.java @@ -19,6 +19,7 @@ package org.apache.brooklyn.rest.transform; import java.net.URI; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -131,7 +132,16 @@ public static CatalogItemSummary catalogItemSummary(BrooklynRestResourceUtils b, } public static CatalogPolicySummary catalogPolicySummary(BrooklynRestResourceUtils b, CatalogItem> item, UriBuilder ub) { - Set config = ImmutableSet.of(); + final Set config = Sets.newLinkedHashSet(); + try{ + final PolicySpec spec = (PolicySpec) b.getCatalog().createSpec((CatalogItem) item); + for (final SpecParameter input : spec.getParameters()){ + config.add(EntityTransformer.policyConfigSummary(input)); + } + }catch (Exception e) { + Exceptions.propagateIfFatal(e); + log.trace("Unable to create policy spec for "+item+": "+e, e); + } return new CatalogPolicySummary(item.getSymbolicName(), item.getVersion(), item.getDisplayName(), item.getJavaType(), item.getPlanYaml(), item.getDescription(), tidyIconLink(b, item, item.getIconUrl(), ub), config, diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java index 731291aeb9..72b9a63032 100644 --- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java +++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/transform/EntityTransformer.java @@ -33,6 +33,7 @@ import org.apache.brooklyn.core.config.render.RendererHints; import org.apache.brooklyn.rest.domain.EntityConfigSummary; import org.apache.brooklyn.rest.domain.EntitySummary; +import org.apache.brooklyn.rest.domain.PolicyConfigSummary; import org.apache.brooklyn.util.collections.MutableMap; import com.google.common.base.Function; @@ -122,6 +123,11 @@ public static EntityConfigSummary entityConfigSummary(ConfigKey config, Strin Map mapOfLinks = links==null ? null : ImmutableMap.copyOf(links); return new EntityConfigSummary(config, label, priority, mapOfLinks); } + + public static PolicyConfigSummary policyConfigSummary(ConfigKey config, String label, Double priority, Map links) { + return new PolicyConfigSummary(config, label, priority, links); + } + /** generates a representation for a given config key, * with label inferred from annoation in the entity class, * and links pointing to the entity and the applicaiton */ @@ -179,4 +185,8 @@ public static EntityConfigSummary entityConfigSummary(SpecParameter input) { return entityConfigSummary(input.getConfigKey(), input.getLabel(), priority, null); } + public static PolicyConfigSummary policyConfigSummary(SpecParameter input) { + Double priority = input.isPinned() ? Double.valueOf(1d) : null; + return policyConfigSummary(input.getConfigKey(), input.getLabel(), priority, null); + } }