This is an automated email from the ASF dual-hosted git repository. heneveld pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git
commit 0a33ad619955a1402f39b22dcea99b22e6940eb9 Author: iuliana <[email protected]> AuthorDate: Tue May 25 09:27:24 2021 +0100 Added API impl --- .../java/org/apache/brooklyn/core/mgmt/BrooklynTags.java | 8 ++++++++ .../main/java/org/apache/brooklyn/rest/api/EntityApi.java | 12 ++++++++++++ .../org/apache/brooklyn/rest/resources/EntityResource.java | 8 ++++++++ .../apache/brooklyn/rest/resources/EntityResourceTest.java | 4 ++-- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java index ff165e1..11264ed 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/BrooklynTags.java @@ -245,6 +245,14 @@ public class BrooklynTags { return null; } + public static SpecTag findHierarchySpecTag(String kind, Iterable<Object> tags) { + for (Object object: tags) { + if (object instanceof SpecTag && kind.equals((((SpecTag) object).kind))) + return (SpecTag) object; + } + return null; + } + public static List<NamedStringTag> findAll(String kind, Iterable<Object> tags) { List<NamedStringTag> result = MutableList.of(); for (Object object: tags) { diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java index 5bbd5b3..f51c854 100644 --- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java +++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/EntityApi.java @@ -252,4 +252,16 @@ public interface EntityApi { @PathParam("application") String application, @ApiParam(value = "Entity ID or name", required = true) @PathParam("entity") String entity); + + @GET + @Path("/{entity}/speclist") + @ApiOperation(value = "Get the list of YAML spec used to create the entity, if available") + @ApiResponses(value = { + @ApiResponse(code = 404, message = "Application or entity missing") + }) + public List<Object> getSpecList( + @ApiParam(value = "Application ID or name", required = true) + @PathParam("application") String application, + @ApiParam(value = "Entity ID or name", required = true) + @PathParam("entity") String entity); } diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java index fdd5ea7..7bd5797 100644 --- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java +++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/EntityResource.java @@ -55,6 +55,7 @@ import org.apache.brooklyn.rest.transform.TaskTransformer; import org.apache.brooklyn.rest.util.EntityRelationUtils; import org.apache.brooklyn.rest.util.WebResourceUtils; import org.apache.brooklyn.util.collections.MutableList; +import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.ResourceUtils; import org.apache.brooklyn.util.time.Duration; import org.slf4j.Logger; @@ -311,4 +312,11 @@ public class EntityResource extends AbstractBrooklynRestResource implements Enti return null; return (String) WebResourceUtils.getValueForDisplay(spec.getContents(), false, true); } + + @Override + public List<Object> getSpecList(String applicationId, String entityId) { + Entity entity = brooklyn().getEntity(applicationId, entityId); + BrooklynTags.SpecTag specTag = BrooklynTags.findHierarchySpecTag(BrooklynTags.YAML_SPEC_HIERARCHY, entity.tags().getTags()); + return (List<Object>) resolving( specTag.getSpecList()).preferJson(true).resolve(); + } } diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java index 62ee189..6485c43 100644 --- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java +++ b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/EntityResourceTest.java @@ -114,11 +114,11 @@ public class EntityResourceTest extends BrooklynRestResourceTest { // Retrieve the yaml spec, and confirm it is as expected (not wrapped in quotes, and treating \n sensibly) Response response; if (acceptMimeType != null) { - response = client().path("/applications/" + appName + "/entities/" + appName + "/spec") + response = client().path("/applications/" + appName + "/entities/" + appName + "/speclist") .accept(acceptMimeType) .get(); } else { - response = client().path("/applications/" + appName + "/entities/" + appName + "/spec") + response = client().path("/applications/" + appName + "/entities/" + appName + "/speclist") .get(); } String data = response.readEntity(String.class);
