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 2021/05/27 18:20:52 UTC
[brooklyn-server] branch master updated (f07efeb -> 9221c54)
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git.
from f07efeb This closes #1176
new 74f61cf Added decorateWithHierarchySpecTag(..) method to be used to create spec tags when deployign blueprints
new aa95afa Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
new daba0bb added customizable summary
new 54aa018 Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
new 150bee1 Merge branch 'master' into spec-hierarchy-tag
new 6938a98 Added option to populate the display name with the spec name if missing
new e184653 Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
new 0a33ad6 Added API impl
new d0d8fdf Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
new 1a2be8d Made sure there are not plans with duplicate summaries
new 79b1a83 Added support for SpecTags and creation for types when added to the catalog
new db93ff8 Added argument for custom summary
new 77c23ea Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
new fbd7391 Fixed tests and implementation to support other map tags
new 1c8e7ef This closes #1175
new daf623c fix unneeded (and unavail for me) imports re LDAP
new 9221c54 fix test
The 17 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../api/internal/AbstractBrooklynObjectSpec.java | 5 ++
.../spi/creation/CampTypePlanTransformer.java | 4 +-
.../CatalogYamlEntityOsgiTypeRegistryTest.java | 33 +++++++-
.../brooklyn/catalog/CatalogYamlEntityTest.java | 8 ++
.../catalog/internal/BasicBrooklynCatalog.java | 1 +
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 94 ++++++++++++++++++++++
.../core/typereg/AbstractTypePlanTransformer.java | 22 +++++
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../brooklyn/core/typereg/RegisteredTypes.java | 18 ++++-
.../internal/StaticTypePlanTransformer.java | 6 +-
.../typereg/ExampleXmlTypePlanTransformer.java | 8 +-
.../org/apache/brooklyn/rest/api/EntityApi.java | 12 +++
.../brooklyn/rest/resources/EntityResource.java | 8 ++
.../security/provider/LdapSecurityProvider.java | 14 +---
.../rest/resources/EntityResourceTest.java | 1 +
15 files changed, 213 insertions(+), 23 deletions(-)
[brooklyn-server] 05/17: Merge branch 'spec-hierarchy-tag' of
github.com:iuliana/brooklyn-server into spec-hierarchy-tag
Posted by he...@apache.org.
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 54aa018b8ad118a78364962874716d129bee0768
Merge: aa95afa daba0bb
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 10:57:30 2021 +0100
Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
.../org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[brooklyn-server] 12/17: Added support for SpecTags and creation
for types when added to the catalog
Posted by he...@apache.org.
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 79b1a83ea6d5aa1cd2cbb72e0338ae1680569a57
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Wed May 26 17:27:44 2021 +0100
Added support for SpecTags and creation for types when added to the catalog
---
.../CatalogYamlEntityOsgiTypeRegistryTest.java | 33 ++++++++++++++++++++++
.../catalog/internal/BasicBrooklynCatalog.java | 1 +
.../brooklyn/core/typereg/RegisteredTypes.java | 15 +++++++++-
3 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
index 7aa4a6a..ab1c46e 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
@@ -20,7 +20,9 @@ package org.apache.brooklyn.camp.brooklyn.catalog;
import java.util.Map;
import org.apache.brooklyn.api.typereg.RegisteredType;
+import org.apache.brooklyn.camp.brooklyn.spi.creation.CampTypePlanTransformer;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
+import org.apache.brooklyn.core.mgmt.BrooklynTags;
import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.core.typereg.RegisteredTypePredicates;
import org.apache.brooklyn.entity.stock.BasicEntity;
@@ -34,6 +36,9 @@ import org.testng.annotations.Test;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+
/** Variant of parent tests using OSGi, bundles, and type registry, instead of lightweight non-osgi catalog */
@Test
public class CatalogYamlEntityOsgiTypeRegistryTest extends CatalogYamlEntityTest {
@@ -210,6 +215,34 @@ public class CatalogYamlEntityOsgiTypeRegistryTest extends CatalogYamlEntityTest
deleteCatalogRegisteredType(symbolicName);
}
+ @Test
+ public void testAddCatalogItemWithHierarchyTag() throws Exception {
+ String symbolicName = "my.catalog.app.id.load";
+ addCatalogItems(
+ "brooklyn.catalog:",
+ " id: " + symbolicName,
+ " version: " + TEST_VERSION,
+ " tags:",
+ " - "+ BrooklynTags.YAML_SPEC_HIERARCHY +": ",
+ " format: " + CampTypePlanTransformer.FORMAT,
+ " summary: Plan for " + symbolicName,
+ " contents: | " ,
+ " line 1" ,
+ " line 2" ,
+ " itemType: entity",
+ " item: " + BasicEntity.class.getName());
+
+ RegisteredType item = mgmt().getTypeRegistry().get(symbolicName, TEST_VERSION);
+ assertTrue(item.getTags().stream().anyMatch(tag -> tag instanceof BrooklynTags.SpecTag));
+
+ BrooklynTags.SpecTag specTag = (BrooklynTags.SpecTag) item.getTags().stream().filter(x -> x instanceof BrooklynTags.SpecTag).findFirst().orElse(null);
+ assertEquals(specTag.getSpecList().size(), 1);
+ Asserts.assertEquals(((Map<String,String>)specTag.getSpecList().get(0)).get("format"), CampTypePlanTransformer.FORMAT);
+ Asserts.assertEquals(((Map<String,String>)specTag.getSpecList().get(0)).get("summary"), "Plan for " + symbolicName);
+
+ deleteCatalogRegisteredType(symbolicName);
+ }
+
// also runs many other tests from super, here using the osgi/type-registry appraoch
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
index 17bc166..5cf49b4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
@@ -661,6 +661,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
catalogMetadata.put("tags", MutableSet.copyOf(getFirstAs(parentMetadata, Collection.class, "tags").orNull())
.putAll(getFirstAs(itemMetadataWithoutItemDef, Collection.class, "tags").orNull()) );
+
// brooklyn.libraries we treat specially, to append the list, with the child's list preferred in classloading order
// `libraries` is supported in some places as a legacy syntax; it should always be `brooklyn.libraries` for new apps
// TODO in 0.8.0 require brooklyn.libraries, don't allow "libraries" on its own
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
index 5792248..e58d34d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
@@ -333,7 +333,20 @@ public class RegisteredTypes {
@Beta
public static RegisteredType addTag(RegisteredType type, Object tag) {
if (tag!=null) {
- ((BasicRegisteredType)type).tags.add( tag );
+ if (tag instanceof Map) {
+ Map<String,Object> mapTag = (Map<String,Object>) tag;
+ if(mapTag.containsKey(BrooklynTags.YAML_SPEC_HIERARCHY)) {
+ Map<String,String> hierarchySpecTag = (Map<String,String>) mapTag.get(BrooklynTags.YAML_SPEC_HIERARCHY);
+ BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
+ .format(hierarchySpecTag.get("format"))
+ .summary(hierarchySpecTag.get("summary"))
+ .contents(hierarchySpecTag.get("contents"))
+ .build();
+ ((BasicRegisteredType)type).tags.add( currentSpecTag );
+ }
+ } else {
+ ((BasicRegisteredType) type).tags.add(tag);
+ }
}
return type;
}
[brooklyn-server] 15/17: This closes #1175
Posted by he...@apache.org.
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 1c8e7ef722114e6355cffb79446225cccf390bc4
Merge: f07efeb fbd7391
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Thu May 27 18:34:40 2021 +0100
This closes #1175
.../api/internal/AbstractBrooklynObjectSpec.java | 5 ++
.../spi/creation/CampTypePlanTransformer.java | 4 +-
.../CatalogYamlEntityOsgiTypeRegistryTest.java | 33 +++++++-
.../brooklyn/catalog/CatalogYamlEntityTest.java | 8 ++
.../catalog/internal/BasicBrooklynCatalog.java | 1 +
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 94 ++++++++++++++++++++++
.../core/typereg/AbstractTypePlanTransformer.java | 22 +++++
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../brooklyn/core/typereg/RegisteredTypes.java | 18 ++++-
.../internal/StaticTypePlanTransformer.java | 6 +-
.../typereg/ExampleXmlTypePlanTransformer.java | 8 +-
.../org/apache/brooklyn/rest/api/EntityApi.java | 12 +++
.../brooklyn/rest/resources/EntityResource.java | 8 ++
.../rest/resources/EntityResourceTest.java | 4 +-
14 files changed, 210 insertions(+), 15 deletions(-)
[brooklyn-server] 10/17: Made sure there are not plans with
duplicate summaries
Posted by he...@apache.org.
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 1a2be8d1a1dd6f4cfbd795ac93d276065e750951
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Tue May 25 17:19:36 2021 +0100
Made sure there are not plans with duplicate summaries
---
.../apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java | 2 ++
.../org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
index 57e18ad..96e91f6 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
@@ -266,6 +266,8 @@ public class CatalogYamlEntityTest extends AbstractYamlTest {
// tests that the plan tag was set
assertTrue(entity.tags().getTags().stream().anyMatch(tag -> tag instanceof BrooklynTags.SpecTag));
+ BrooklynTags.SpecTag specTag = (BrooklynTags.SpecTag) entity.tags().getTags().stream().filter(tag -> tag instanceof BrooklynTags.SpecTag).findAny().orElse(null);
+ assertEquals(specTag.getSpecList().size(), 2);
deleteCatalogRegisteredType(referencedSymbolicName);
deleteCatalogRegisteredType(referrerSymbolicName);
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 3a28a87..5b051e8 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -164,7 +164,7 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format) {
BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
.format(format)
- .summary(format + " plan for " + (Strings.isNonBlank(type.getDisplayName())? type.getDisplayName() : spec.getDisplayName()))
+ .summary(format + " plan for " + (Strings.isNonBlank(type.getSymbolicName())? type.getSymbolicName() : type.getDisplayName()))
.contents(type.getPlan().getPlanData())
.build();
[brooklyn-server] 11/17: Added argument for custom summary
Posted by he...@apache.org.
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 db93ff862b0e6821df8cf50fc255131c5802e755
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Wed May 26 15:22:38 2021 +0100
Added argument for custom summary
---
.../camp/brooklyn/spi/creation/CampTypePlanTransformer.java | 2 +-
.../apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 8 ++++++--
.../brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../brooklyn/core/catalog/internal/StaticTypePlanTransformer.java | 4 ++--
.../brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java | 2 +-
5 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
index 8dc8508..b76cd19 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
@@ -106,7 +106,7 @@ public class CampTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
try {
- return decorateWithHierarchySpecTag(new CampResolver(mgmt, type, context).createSpec(), type, FORMAT);
+ return decorateWithHierarchySpecTag(new CampResolver(mgmt, type, context).createSpec(), type, FORMAT, null);
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
String message = null;
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 5b051e8..acff741 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -161,10 +161,14 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected abstract Object createBean(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception;
- protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format) {
+ protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format, final String summary) {
+ final String specSummary = Strings.isBlank(summary)
+ ? format + " plan for " + (Strings.isNonBlank(type.getSymbolicName())? type.getSymbolicName() : type.getDisplayName())
+ : summary;
+
BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
.format(format)
- .summary(format + " plan for " + (Strings.isNonBlank(type.getSymbolicName())? type.getSymbolicName() : type.getDisplayName()))
+ .summary(specSummary)
.contents(type.getPlan().getPlanData())
.build();
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
index 196a254..6bfe0a7 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
@@ -65,7 +65,7 @@ public class JavaClassNameTypePlanTransformer extends AbstractTypePlanTransforme
@SuppressWarnings({ "unchecked" })
@Override
protected AbstractBrooklynObjectSpec<?,?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
- return decorateWithHierarchySpecTag(RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context)), type, FORMAT);
+ return decorateWithHierarchySpecTag(RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context)), type, FORMAT, null);
}
@Override
diff --git a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
index ff3ec69..2524564 100644
--- a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
+++ b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
@@ -93,9 +93,9 @@ public class StaticTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
if (REGISTERED_SPECS.containsKey(type.getSymbolicName()))
- return decorateWithHierarchySpecTag(get(type.getSymbolicName()), type, FORMAT);
+ return decorateWithHierarchySpecTag(get(type.getSymbolicName()), type, FORMAT, null );
if (type.getPlan().getPlanData()!=null && REGISTERED_SPECS.containsKey(type.getPlan().getPlanData()))
- return decorateWithHierarchySpecTag(get((String)type.getPlan().getPlanData()), type, FORMAT);
+ return decorateWithHierarchySpecTag(get((String)type.getPlan().getPlanData()), type, FORMAT, null);
return null;
}
diff --git a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
index b82031c..be3bd54 100644
--- a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
+++ b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
@@ -69,7 +69,7 @@ public class ExampleXmlTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
return decorateWithHierarchySpecTag(toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
- isApplicationExpected(type, context) ? 0 : 1), type, "example-xml");
+ isApplicationExpected(type, context) ? 0 : 1), type, "example-xml", null);
}
private static boolean isApplicationExpected(RegisteredType type, RegisteredTypeLoadingContext context) {
[brooklyn-server] 04/17: Merge branch 'master' into
spec-hierarchy-tag
Posted by he...@apache.org.
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 150bee1b3c12028fd2dba6bf68e15738a8a34fa9
Merge: daba0bb 32730a7
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 10:39:20 2021 +0100
Merge branch 'master' into spec-hierarchy-tag
DEPENDENCIES | 172 ++++-------
.../apache/brooklyn/api/mgmt/EntityManager.java | 32 +-
.../BrooklynComponentTemplateResolver.java | 88 ++++--
.../spi/creation/BrooklynEntityMatcher.java | 2 +-
.../spi/creation/EntitySpecConfiguration.java | 2 +-
.../brooklyn/spi/dsl/BrooklynDslInterpreter.java | 4 +-
.../spi/dsl/DslDeferredPropertyAccess.java | 83 +++--
.../spi/dsl/methods/BrooklynDslCommon.java | 52 +++-
.../brooklyn/spi/dsl/methods/DslComponent.java | 98 +++++-
.../camp/brooklyn/spi/dsl/parse/DslParser.java | 4 +-
.../camp/brooklyn/AbstractWindowsYamlTest.java | 2 +-
.../camp/brooklyn/ConfigParametersYamlTest.java | 1 +
.../camp/brooklyn/WindowsYamlLiveTest.java | 201 +++++--------
.../CatalogYamlEntityOsgiTypeRegistryTest.java | 27 +-
core/pom.xml | 9 -
.../org/apache/brooklyn/core/BrooklynVersion.java | 2 +-
.../catalog/internal/BasicBrooklynCatalog.java | 6 +-
.../brooklyn/core/config/ConfigConstraints.java | 122 ++++----
.../core/config/ConstraintViolationException.java | 190 +++++++++++-
.../apache/brooklyn/core/config/MapConfigKey.java | 30 +-
.../vault/VaultExternalConfigSupplier.java | 53 +++-
.../vault/VaultUserPassExternalConfigSupplier.java | 16 +-
.../internal/AbstractCollectionConfigKey.java | 17 +-
.../config/internal/AbstractConfigMapImpl.java | 37 ++-
.../core/enricher/EnricherDynamicType.java | 2 +-
.../brooklyn/core/entity/AbstractApplication.java | 6 +-
.../brooklyn/core/entity/AbstractEntity.java | 24 +-
.../brooklyn/core/entity/EntityDynamicType.java | 14 +-
.../core/entity/internal/ConfigUtilsInternal.java | 55 ++++
.../location/internal/LocationDynamicType.java | 2 +-
.../brooklyn/core/mgmt/BrooklynTaskTags.java | 25 +-
.../mgmt/internal/AbstractManagementContext.java | 10 +-
.../mgmt/internal/BrooklynGarbageCollector.java | 5 +-
.../mgmt/internal/EntityManagementSupport.java | 78 +++--
.../core/mgmt/internal/EntityManagerInternal.java | 13 +-
.../core/mgmt/internal/LocalEntityManager.java | 102 ++++---
.../mgmt/internal/NonDeploymentEntityManager.java | 13 +-
.../org/apache/brooklyn/core/objs/AdjunctType.java | 62 +---
.../brooklyn/core/objs/BasicSpecParameter.java | 6 +-
.../brooklyn/core/objs/BrooklynDynamicType.java | 40 ++-
.../core/objs/proxy/InternalEntityFactory.java | 144 +++++----
.../brooklyn/core/policy/PolicyDynamicType.java | 2 +-
.../resolve/jackson/AsPropertyIfAmbiguous.java | 21 +-
.../jackson/BrooklynJacksonSerializationUtils.java | 21 ++
.../brooklyn/entity/group/DynamicClusterImpl.java | 6 +-
.../LocalhostMachineProvisioningLocation.java | 8 +
.../apache/brooklyn/util/core/ResourceUtils.java | 10 +
.../brooklyn/util/core/osgi/BundleMaker.java | 3 +-
.../brooklyn/util/core/task/ValueResolver.java | 10 +
.../core/config/ConfigKeyConstraintTest.java | 34 +++
.../MapListAndOtherStructuredConfigKeyTest.java | 35 ++-
.../PropertiesFileExternalConfigSupplierTest.java | 5 -
.../vault/VaultExternalConfigSupplierLiveTest.java | 1 -
.../brooklyn/core/entity/EntityAssertsTest.java | 8 +-
.../brooklyn/core/entity/EntityConfigTest.java | 6 +-
.../core/entity/proxying/EntityManagerTest.java | 75 ++++-
.../entity/proxying/InternalEntityFactoryTest.java | 10 +-
.../brooklyn/core/mgmt/DeployFailureTest.java | 5 +-
.../brooklyn/core/mgmt/ha/HotStandbyTest.java | 53 ++--
.../core/mgmt/osgi/OsgiVersionMoreEntityTest.java | 2 +-
karaf/features/src/main/feature/feature.xml | 17 +-
.../resources/brooklyn/logback-logger-excludes.xml | 9 +-
parent/pom.xml | 3 +-
pom.xml | 18 +-
.../org/apache/brooklyn/rest/api/BundleApi.java | 20 +-
.../org/apache/brooklyn/rest/api/EntityApi.java | 9 +
.../brooklyn/rest/domain/RelationSummary.java | 72 +++++
.../apache/brooklyn/rest/domain/RelationType.java | 79 +++++
.../BrooklynSecurityProviderFilterHelper.java | 25 +-
.../BrooklynSecurityProviderFilterJavax.java | 25 +-
.../rest/resources/ApplicationResource.java | 5 +-
.../brooklyn/rest/resources/BundleResource.java | 24 +-
.../brooklyn/rest/resources/EntityResource.java | 22 +-
.../brooklyn/rest/resources/TypeResource.java | 9 +-
.../security/provider/LdapSecurityProvider.java | 73 ++++-
.../brooklyn/rest/transform/TypeTransformer.java | 10 +-
.../brooklyn/rest/util/DefaultExceptionMapper.java | 6 +-
.../brooklyn/rest/util/EntityRelationUtils.java | 49 +++
.../rest/util/MultiSessionAttributeAdapter.java | 112 ++++---
.../rest/resources/ApplicationResourceTest.java | 11 -
.../rest/resources/BundleAndTypeResourcesTest.java | 10 +-
.../resources/EntityRelationsResourceTest.java | 162 ++++++++++
.../rest/resources/LocationResourceTest.java | 48 ++-
.../provider/LdapSecurityProviderTest.java | 73 +++++
.../rest/testing/BrooklynRestResourceTest.java | 11 +
.../test/resources/localhost.default.location.zip | Bin 0 -> 19629 bytes
server-cli/DEPENDENCIES | 168 ++++-------
.../OnTheFlyDynamicLocationPatternRebindTest.java} | 8 +-
.../OnTheFlyDynamicLocationPatternTest.java} | 6 +-
.../{clocker => onthefly}/StubAttributes.java | 2 +-
.../{clocker => onthefly}/StubContainer.java | 2 +-
.../{clocker => onthefly}/StubContainerImpl.java | 2 +-
.../StubContainerLocation.java | 2 +-
.../dynamic/{clocker => onthefly}/StubHost.java | 2 +-
.../{clocker => onthefly}/StubHostImpl.java | 2 +-
.../{clocker => onthefly}/StubHostLocation.java | 2 +-
.../{clocker => onthefly}/StubInfrastructure.java | 2 +-
.../StubInfrastructureImpl.java | 2 +-
.../StubInfrastructureLocation.java | 2 +-
.../{clocker => onthefly}/StubResolver.java | 2 +-
.../{clocker => onthefly}/StubResolverTest.java | 2 +-
.../dynamic/{clocker => onthefly}/StubUtils.java | 2 +-
.../base/AbstractSoftwareProcessStreamsTest.java | 20 +-
...nillaSoftwareProcessStreamsIntegrationTest.java | 2 +-
.../base/VanillaSoftwareProcessStreamsTest.java | 142 +++++++++
.../VanillaWindowsProcessWinrmStreamsLiveTest.java | 4 +-
.../location/winrm/PlainWinRmExecTaskFactory.java | 70 +----
.../internal/winrm/winrm4j/FilteringXmlWriter.java | 335 ---------------------
.../internal/winrm/winrm4j/PrettyXmlWriter.java | 92 +++---
.../internal/winrm/winrm4j/ErrorXmlWriterTest.java | 109 -------
.../winrm/winrm4j/PrettyXmlWriterTest.java | 21 +-
.../java/org/apache/brooklyn/config/ConfigMap.java | 8 +-
.../java/org/apache/brooklyn/test/Asserts.java | 71 ++++-
.../org/apache/brooklyn/util/text/Strings.java | 17 ++
.../org/apache/brooklyn/util/text/StringsTest.java | 11 +
115 files changed, 2663 insertions(+), 1515 deletions(-)
[brooklyn-server] 16/17: fix unneeded (and unavail for me) imports
re LDAP
Posted by he...@apache.org.
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 daf623c3ea19d07e11370ae89e8da84270144e47
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Thu May 27 18:52:34 2021 +0100
fix unneeded (and unavail for me) imports re LDAP
---
.../rest/security/provider/LdapSecurityProvider.java | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/provider/LdapSecurityProvider.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/provider/LdapSecurityProvider.java
index 75e1a97..ceb15d5 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/provider/LdapSecurityProvider.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/provider/LdapSecurityProvider.java
@@ -18,35 +18,29 @@
*/
package org.apache.brooklyn.rest.security.provider;
+import com.google.common.base.CharMatcher;
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import java.util.function.Supplier;
-
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.config.StringConfigMap;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.rest.BrooklynWebConfig;
-import org.apache.brooklyn.rest.util.MultiSessionAttributeAdapter;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.text.Strings;
-import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
-import sun.util.resources.cldr.dav.LocaleNames_dav;
-
/**
* A {@link SecurityProvider} implementation that relies on LDAP to authenticate.
*
[brooklyn-server] 13/17: Merge branch 'spec-hierarchy-tag' of
github.com:iuliana/brooklyn-server into spec-hierarchy-tag
Posted by he...@apache.org.
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 77c23ea5d07133ace3d742ee6f17ee6a127b6964
Merge: 79b1a83 db93ff8
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Wed May 26 17:28:06 2021 +0100
Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
.../camp/brooklyn/spi/creation/CampTypePlanTransformer.java | 2 +-
.../apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 8 ++++++--
.../brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../brooklyn/core/catalog/internal/StaticTypePlanTransformer.java | 4 ++--
.../brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java | 2 +-
5 files changed, 11 insertions(+), 7 deletions(-)
[brooklyn-server] 08/17: Added API impl
Posted by he...@apache.org.
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 <iu...@cloudsoft.io>
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);
[brooklyn-server] 06/17: Added option to populate the display name
with the spec name if missing
Posted by he...@apache.org.
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 6938a98a7e2c216d43deedc9797669456a77e08e
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 11:55:44 2021 +0100
Added option to populate the display name with the spec name if missing
---
.../org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 1e44e18..3a28a87 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -164,7 +164,7 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format) {
BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
.format(format)
- .summary(format + " plan for " + type.getDisplayName())
+ .summary(format + " plan for " + (Strings.isNonBlank(type.getDisplayName())? type.getDisplayName() : spec.getDisplayName()))
.contents(type.getPlan().getPlanData())
.build();
[brooklyn-server] 17/17: fix test
Posted by he...@apache.org.
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 9221c54432bf07736e7662602796e3e6319ffb3e
Author: Alex Heneveld <al...@cloudsoftcorp.com>
AuthorDate: Thu May 27 19:20:40 2021 +0100
fix test
---
.../java/org/apache/brooklyn/rest/resources/EntityResourceTest.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
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 6485c43..59af350 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,13 +114,14 @@ 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 + "/speclist")
+ response = client().path("/applications/" + appName + "/entities/" + appName + "/spec")
.accept(acceptMimeType)
.get();
} else {
- response = client().path("/applications/" + appName + "/entities/" + appName + "/speclist")
+ response = client().path("/applications/" + appName + "/entities/" + appName + "/spec")
.get();
}
+ HttpAsserts.assertHealthyStatusCode(response.getStatus());
String data = response.readEntity(String.class);
assertEquals(data.trim(), yaml.trim());
[brooklyn-server] 02/17: Merge branch 'spec-hierarchy-tag' of
github.com:iuliana/brooklyn-server into spec-hierarchy-tag
Posted by he...@apache.org.
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 aa95afaebc598656e1d3c7ea0219e9b78bcbee0b
Merge: 5947556 74f61cf
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 09:32:45 2021 +0100
Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
.../api/internal/AbstractBrooklynObjectSpec.java | 5 ++
.../spi/creation/CampTypePlanTransformer.java | 4 +-
.../brooklyn/catalog/CatalogYamlEntityTest.java | 6 ++
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 86 ++++++++++++++++++++++
.../core/typereg/AbstractTypePlanTransformer.java | 18 +++++
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../internal/StaticTypePlanTransformer.java | 6 +-
.../typereg/ExampleXmlTypePlanTransformer.java | 8 +-
8 files changed, 126 insertions(+), 9 deletions(-)
[brooklyn-server] 07/17: Merge branch 'spec-hierarchy-tag' of
github.com:iuliana/brooklyn-server into spec-hierarchy-tag
Posted by he...@apache.org.
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 e1846532cf13e28ca2b19782a1a09138f77893f5
Merge: 54aa018 6938a98
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 11:56:48 2021 +0100
Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
.../spi/dsl/DslDeferredPropertyAccess.java | 8 ++++++
.../apache/brooklyn/core/config/MapConfigKey.java | 30 +++++++++++++++++-----
.../internal/AbstractCollectionConfigKey.java | 17 +++++++-----
.../core/typereg/AbstractTypePlanTransformer.java | 2 +-
.../brooklyn/util/core/task/ValueResolver.java | 7 +++++
.../MapListAndOtherStructuredConfigKeyTest.java | 17 ++++++++++++
6 files changed, 68 insertions(+), 13 deletions(-)
[brooklyn-server] 14/17: Fixed tests and implementation to support
other map tags
Posted by he...@apache.org.
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 fbd7391d3be027ef23c5b7a27caf0b3883e9fb4e
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Wed May 26 17:59:26 2021 +0100
Fixed tests and implementation to support other map tags
---
.../brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java | 4 +---
.../java/org/apache/brooklyn/core/typereg/RegisteredTypes.java | 9 ++++-----
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
index ab1c46e..a0c193e 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityOsgiTypeRegistryTest.java
@@ -29,7 +29,6 @@ import org.apache.brooklyn.entity.stock.BasicEntity;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.collections.CollectionFunctionals;
import org.apache.brooklyn.util.osgi.VersionedName;
-import org.apache.brooklyn.util.text.StringEscapes.JavaStringEscapes;
import org.apache.brooklyn.util.yaml.Yamls;
import org.testng.annotations.Test;
@@ -233,13 +232,12 @@ public class CatalogYamlEntityOsgiTypeRegistryTest extends CatalogYamlEntityTest
" item: " + BasicEntity.class.getName());
RegisteredType item = mgmt().getTypeRegistry().get(symbolicName, TEST_VERSION);
- assertTrue(item.getTags().stream().anyMatch(tag -> tag instanceof BrooklynTags.SpecTag));
+ assertTrue(item.getTags().stream().anyMatch(tag -> tag instanceof BrooklynTags.SpecTag));
BrooklynTags.SpecTag specTag = (BrooklynTags.SpecTag) item.getTags().stream().filter(x -> x instanceof BrooklynTags.SpecTag).findFirst().orElse(null);
assertEquals(specTag.getSpecList().size(), 1);
Asserts.assertEquals(((Map<String,String>)specTag.getSpecList().get(0)).get("format"), CampTypePlanTransformer.FORMAT);
Asserts.assertEquals(((Map<String,String>)specTag.getSpecList().get(0)).get("summary"), "Plan for " + symbolicName);
-
deleteCatalogRegisteredType(symbolicName);
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
index e58d34d..838879e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/RegisteredTypes.java
@@ -25,12 +25,10 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.StreamSupport;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import com.google.common.collect.Iterators;
import org.apache.brooklyn.api.catalog.CatalogItem;
import org.apache.brooklyn.api.catalog.CatalogItem.CatalogItemType;
import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
@@ -61,6 +59,7 @@ import org.apache.brooklyn.util.text.NaturalOrderComparator;
import org.apache.brooklyn.util.text.Strings;
import org.apache.brooklyn.util.text.VersionComparator;
import org.apache.brooklyn.util.yaml.Yamls;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -333,14 +332,14 @@ public class RegisteredTypes {
@Beta
public static RegisteredType addTag(RegisteredType type, Object tag) {
if (tag!=null) {
- if (tag instanceof Map) {
+ if (tag instanceof Map &&( (Map<String,Object>) tag).containsKey(BrooklynTags.YAML_SPEC_HIERARCHY)) {
Map<String,Object> mapTag = (Map<String,Object>) tag;
if(mapTag.containsKey(BrooklynTags.YAML_SPEC_HIERARCHY)) {
Map<String,String> hierarchySpecTag = (Map<String,String>) mapTag.get(BrooklynTags.YAML_SPEC_HIERARCHY);
BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
.format(hierarchySpecTag.get("format"))
- .summary(hierarchySpecTag.get("summary"))
- .contents(hierarchySpecTag.get("contents"))
+ .summary(StringUtils.isNotBlank(hierarchySpecTag.get("summary"))? hierarchySpecTag.get("summary") : "Plan for " + type.getSymbolicName())
+ .contents(StringUtils.isNotBlank(hierarchySpecTag.get("contents"))? hierarchySpecTag.get("contents") : "n/a")
.build();
((BasicRegisteredType)type).tags.add( currentSpecTag );
}
[brooklyn-server] 03/17: added customizable summary
Posted by he...@apache.org.
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 daba0bbd4b0e730bf278d5cbb5984d145552782b
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Mon May 24 10:38:41 2021 +0100
added customizable summary
---
.../org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index 3278aa7..1e44e18 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -164,7 +164,7 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format) {
BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
.format(format)
- .summary("CAMP plan for " + type.getDisplayName())
+ .summary(format + " plan for " + type.getDisplayName())
.contents(type.getPlan().getPlanData())
.build();
[brooklyn-server] 09/17: Merge branch 'spec-hierarchy-tag' of
github.com:iuliana/brooklyn-server into spec-hierarchy-tag
Posted by he...@apache.org.
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 d0d8fdf8715df71e72f44567a81057a50c49ebeb
Merge: e184653 0a33ad6
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Tue May 25 09:27:50 2021 +0100
Merge branch 'spec-hierarchy-tag' of github.com:iuliana/brooklyn-server into spec-hierarchy-tag
.../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(-)
[brooklyn-server] 01/17: Added decorateWithHierarchySpecTag(..)
method to be used to create spec tags when deployign blueprints
Posted by he...@apache.org.
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 74f61cf98fe5d892d3542a33b95e6cee09ca26bd
Author: iuliana <iu...@cloudsoft.io>
AuthorDate: Fri May 21 16:32:18 2021 +0100
Added decorateWithHierarchySpecTag(..) method to be used to create spec tags when deployign blueprints
---
.../api/internal/AbstractBrooklynObjectSpec.java | 5 ++
.../spi/creation/CampTypePlanTransformer.java | 4 +-
.../brooklyn/catalog/CatalogYamlEntityTest.java | 6 ++
.../apache/brooklyn/core/mgmt/BrooklynTags.java | 86 ++++++++++++++++++++++
.../core/typereg/AbstractTypePlanTransformer.java | 18 +++++
.../typereg/JavaClassNameTypePlanTransformer.java | 2 +-
.../internal/StaticTypePlanTransformer.java | 6 +-
.../typereg/ExampleXmlTypePlanTransformer.java | 8 +-
8 files changed, 126 insertions(+), 9 deletions(-)
diff --git a/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java b/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
index f6ee41a..8cd4e60 100644
--- a/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
+++ b/api/src/main/java/org/apache/brooklyn/api/internal/AbstractBrooklynObjectSpec.java
@@ -28,6 +28,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import com.google.common.base.Predicate;
import org.apache.brooklyn.api.mgmt.EntityManager;
import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.api.objs.BrooklynObject;
@@ -296,6 +297,10 @@ public abstract class AbstractBrooklynObjectSpec<T, SpecT extends AbstractBrookl
return ImmutableSet.copyOf(tags);
}
+ public final Object getTag(Predicate<Object> predicate) {
+ return tags.stream().filter(predicate::apply).findAny().orElse(null);
+ }
+
/**
* A list of configuration options that the entity supports.
*/
diff --git a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
index 9170083..8dc8508 100644
--- a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
+++ b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/CampTypePlanTransformer.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.camp.brooklyn.spi.creation;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.function.BiFunction;
import org.apache.brooklyn.api.internal.AbstractBrooklynObjectSpec;
@@ -27,6 +28,7 @@ import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry.RegisteredTypeKind;
import org.apache.brooklyn.api.typereg.RegisteredType;
import org.apache.brooklyn.api.typereg.RegisteredType.TypeImplementationPlan;
import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
+import org.apache.brooklyn.core.mgmt.BrooklynTags;
import org.apache.brooklyn.core.typereg.*;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
@@ -104,7 +106,7 @@ public class CampTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
try {
- return new CampResolver(mgmt, type, context).createSpec();
+ return decorateWithHierarchySpecTag(new CampResolver(mgmt, type, context).createSpec(), type, FORMAT);
} catch (Exception e) {
Exceptions.propagateIfFatal(e);
String message = null;
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
index 7340640..57e18ad 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlEntityTest.java
@@ -22,7 +22,10 @@ import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Throwables;
import java.util.Collection;
import java.util.Set;
+
+import org.apache.brooklyn.api.objs.BrooklynObject;
import org.apache.brooklyn.core.entity.Dumper;
+import org.apache.brooklyn.core.mgmt.BrooklynTags;
import org.apache.brooklyn.util.collections.MutableSet;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
@@ -261,6 +264,9 @@ public class CatalogYamlEntityTest extends AbstractYamlTest {
Entity entity = Iterables.getOnlyElement(app.getChildren());
assertEquals(entity.getEntityType().getName(), TestEntity.class.getName());
+ // tests that the plan tag was set
+ assertTrue(entity.tags().getTags().stream().anyMatch(tag -> tag instanceof BrooklynTags.SpecTag));
+
deleteCatalogRegisteredType(referencedSymbolicName);
deleteCatalogRegisteredType(referrerSymbolicName);
}
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 e0cc2d6..ff165e1 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
@@ -21,7 +21,9 @@ package org.apache.brooklyn.core.mgmt;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import com.google.common.base.MoreObjects;
import org.apache.brooklyn.util.collections.MutableList;
import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -30,12 +32,14 @@ import com.google.common.annotations.Beta;
import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
+import org.apache.brooklyn.util.collections.MutableMap;
/** @since 0.7.0 some strongly typed tags for reference; note these may migrate elsewhere! */
@Beta
public class BrooklynTags {
public static final String YAML_SPEC_KIND = "yaml_spec";
+ public static final String YAML_SPEC_HIERARCHY = "yaml_spec_hierarchy";
public static final String NOTES_KIND = "notes";
public static final String OWNER_ENTITY_ID = "owner_entity_id";
public static final String ICON_URL = "icon_url";
@@ -80,6 +84,88 @@ public class BrooklynTags {
}
}
+ public static class SpecTag implements Serializable {
+ private static final long serialVersionUID = 3805124696862755492L;
+
+ @JsonProperty
+ final String kind;
+
+ @JsonProperty
+ final List<Object> specList;
+
+ public SpecTag(@JsonProperty("kind")String kind, @JsonProperty("specList")List<Object> specList) {
+ this.kind = kind;
+ this.specList = specList;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .omitNullValues()
+ .add("kind", kind)
+ .add("specList", specList)
+ .toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SpecTag specTag = (SpecTag) o;
+ return Objects.equal(kind, specTag.kind) && Objects.equal(specList, specTag.specList) ;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(kind, specList);
+ }
+
+ public String getKind() {
+ return kind;
+ }
+
+ public List<Object> getSpecList() {
+ return specList;
+ }
+
+ public void push(SpecTag currentSpecTag) {
+ // usually the list has a single element here, if
+ currentSpecTag.getSpecList().forEach(e -> specList.add(0, e));
+ }
+ }
+
+ public static class HierarchySpecTagBuilder {
+ private String format;
+ private String summary;
+ private Object contents;
+
+ public HierarchySpecTagBuilder format(final String format) {
+ this.format = format;
+ return this;
+ }
+
+ public HierarchySpecTagBuilder summary(final String summary) {
+ this.summary = summary;
+ return this;
+ }
+
+ public HierarchySpecTagBuilder contents(final Object contents) {
+ this.contents = contents;
+ return this;
+ }
+
+
+ public SpecTag build() {
+ return new SpecTag(BrooklynTags.YAML_SPEC_HIERARCHY, MutableList.of(
+ MutableMap.of(
+ "format", format,
+ "summary", summary,
+ "contents", contents
+ )
+ ));
+ }
+ }
+
public static class ListTag<T> {
@JsonIgnore
final List<T> list;
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
index d1e28ac..3278aa7 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/AbstractTypePlanTransformer.java
@@ -25,6 +25,7 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.typereg.RegisteredType;
import org.apache.brooklyn.api.typereg.RegisteredTypeLoadingContext;
import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
+import org.apache.brooklyn.core.mgmt.BrooklynTags;
import org.apache.brooklyn.util.exceptions.Exceptions;
import org.apache.brooklyn.util.guava.Maybe;
import org.apache.brooklyn.util.javalang.JavaClassNames;
@@ -159,5 +160,22 @@ public abstract class AbstractTypePlanTransformer implements BrooklynTypePlanTra
protected abstract AbstractBrooklynObjectSpec<?,?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception;
protected abstract Object createBean(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception;
+
+ protected AbstractBrooklynObjectSpec<?,?> decorateWithHierarchySpecTag(AbstractBrooklynObjectSpec<?, ?> spec, RegisteredType type, final String format) {
+ BrooklynTags.SpecTag currentSpecTag = new BrooklynTags.HierarchySpecTagBuilder()
+ .format(format)
+ .summary("CAMP plan for " + type.getDisplayName())
+ .contents(type.getPlan().getPlanData())
+ .build();
+
+ Object specTagObj = spec.getTag(tag -> tag instanceof BrooklynTags.SpecTag);
+ if(specTagObj != null) {
+ BrooklynTags.SpecTag specTag = (BrooklynTags.SpecTag) specTagObj;
+ specTag.push(currentSpecTag);
+ } else {
+ spec.tag(currentSpecTag);
+ }
+ return spec;
+ }
}
diff --git a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
index 53cb84a..196a254 100644
--- a/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/typereg/JavaClassNameTypePlanTransformer.java
@@ -65,7 +65,7 @@ public class JavaClassNameTypePlanTransformer extends AbstractTypePlanTransforme
@SuppressWarnings({ "unchecked" })
@Override
protected AbstractBrooklynObjectSpec<?,?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
- return RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context));
+ return decorateWithHierarchySpecTag(RegisteredTypes.newSpecInstance(mgmt, (Class<? extends BrooklynObject>) getType(type, context)), type, FORMAT);
}
@Override
diff --git a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
index af1ab0b..ff3ec69 100644
--- a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
+++ b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/StaticTypePlanTransformer.java
@@ -93,9 +93,9 @@ public class StaticTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
if (REGISTERED_SPECS.containsKey(type.getSymbolicName()))
- return get(type.getSymbolicName());
+ return decorateWithHierarchySpecTag(get(type.getSymbolicName()), type, FORMAT);
if (type.getPlan().getPlanData()!=null && REGISTERED_SPECS.containsKey(type.getPlan().getPlanData()))
- return get((String)type.getPlan().getPlanData());
+ return decorateWithHierarchySpecTag(get((String)type.getPlan().getPlanData()), type, FORMAT);
return null;
}
@@ -108,6 +108,4 @@ public class StaticTypePlanTransformer extends AbstractTypePlanTransformer {
public static AbstractBrooklynObjectSpec<?, ?> get(String typeName) {
return REGISTERED_SPECS.get(typeName);
}
-
-
}
diff --git a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
index c058d7b..b82031c 100644
--- a/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
+++ b/core/src/test/java/org/apache/brooklyn/core/typereg/ExampleXmlTypePlanTransformer.java
@@ -41,8 +41,10 @@ import org.w3c.dom.Node;
* how implementations are meant to be written. */
public class ExampleXmlTypePlanTransformer extends AbstractTypePlanTransformer {
+ public static final String FORMAT = "example-xml";
+
protected ExampleXmlTypePlanTransformer() {
- super("example-xml", "Example XML", "Illustration of writing a transformer");
+ super(FORMAT, "Example XML", "Illustration of writing a transformer");
}
@Override
@@ -66,8 +68,8 @@ public class ExampleXmlTypePlanTransformer extends AbstractTypePlanTransformer {
@Override
protected AbstractBrooklynObjectSpec<?, ?> createSpec(RegisteredType type, RegisteredTypeLoadingContext context) throws Exception {
- return toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
- isApplicationExpected(type, context) ? 0 : 1);
+ return decorateWithHierarchySpecTag(toEntitySpec(parseXml((String)type.getPlan().getPlanData()),
+ isApplicationExpected(type, context) ? 0 : 1), type, "example-xml");
}
private static boolean isApplicationExpected(RegisteredType type, RegisteredTypeLoadingContext context) {