Repository: brooklyn-server Updated Branches: refs/heads/master e25832b26 -> 9ebc32c10
DynamicFabric: add support for firstMemberSpec Just like DynamicCluster does. Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/cd29cdfb Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/cd29cdfb Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/cd29cdfb Branch: refs/heads/master Commit: cd29cdfb94f6e058ca9dd19b3636d03a8db52740 Parents: d7b8b0c Author: Richard Downer <[email protected]> Authored: Wed Jun 7 11:13:17 2017 +0100 Committer: Richard Downer <[email protected]> Committed: Wed Jun 7 11:13:17 2017 +0100 ---------------------------------------------------------------------- .../apache/brooklyn/entity/group/DynamicFabric.java | 4 ++++ .../brooklyn/entity/group/DynamicFabricImpl.java | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cd29cdfb/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabric.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabric.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabric.java index 07fea0a..2f50511 100644 --- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabric.java +++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabric.java @@ -54,6 +54,10 @@ public interface DynamicFabric extends AbstractGroup, Startable, Fabric { ConfigKey<EntitySpec<?>> MEMBER_SPEC = ConfigKeys.newConfigKey( new TypeToken<EntitySpec<?>>() {}, "dynamiccfabric.memberspec", "entity spec for creating new cluster members", null); + @SetFromFlag("firstMemberSpec") + ConfigKey<EntitySpec<?>> FIRST_MEMBER_SPEC = ConfigKeys.newConfigKey( + new TypeToken<EntitySpec<?>>() {}, "dynamiccfabric.firstmemberspec", "entity spec for creating new cluster members", null); + @SetFromFlag("displayNamePrefix") ConfigKey<String> DISPLAY_NAME_PREFIX = ConfigKeys.newStringConfigKey( "dynamicfabric.displayNamePrefix", "Display name prefix, for created children"); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/cd29cdfb/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabricImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabricImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabricImpl.java index 75ca4dc..ec03987 100644 --- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabricImpl.java +++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicFabricImpl.java @@ -78,6 +78,10 @@ public class DynamicFabricImpl extends AbstractGroupImpl implements DynamicFabri sensors().set(SERVICE_UP, false); } + protected EntitySpec<?> getFirstMemberSpec() { + return getConfig(FIRST_MEMBER_SPEC); + } + protected EntitySpec<?> getMemberSpec() { return getConfig(MEMBER_SPEC); } @@ -272,10 +276,15 @@ public class DynamicFabricImpl extends AbstractGroupImpl implements DynamicFabri } protected Entity createCluster(Location location, Map flags) { - EntitySpec<?> memberSpec = getMemberSpec(); + EntitySpec<?> memberSpec = null; + if (getMembers().isEmpty()) memberSpec = getFirstMemberSpec(); + if (memberSpec == null) memberSpec = getMemberSpec(); + if (memberSpec == null) { throw new IllegalStateException("No member spec nor entity factory supplied for dynamic fabric "+this); } - return addChild(EntitySpec.create(memberSpec).configure(flags)); + EntitySpec<?> specConfigured = EntitySpec.create(memberSpec).configure(flags); + if (location!=null) specConfigured.location(location); + return addChild(specConfigured); } }
