Repository: incubator-brooklyn Updated Branches: refs/heads/master e38b4b757 -> d8a9a6f9b
allow open ports to be specified in provisioning properties Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/18b6c712 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/18b6c712 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/18b6c712 Branch: refs/heads/master Commit: 18b6c712d5651d1fa654a7692b08740312965b42 Parents: 4f1eb45 Author: Robert Moss <[email protected]> Authored: Sun Apr 12 11:27:03 2015 +0100 Committer: Robert Moss <[email protected]> Committed: Sun Apr 12 11:27:03 2015 +0100 ---------------------------------------------------------------------- .../entity/basic/SoftwareProcessImpl.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/18b6c712/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java ---------------------------------------------------------------------- diff --git a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java index 3ce61f1..fed2830 100644 --- a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java +++ b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java @@ -21,6 +21,8 @@ package brooklyn.entity.basic; import groovy.time.TimeDuration; import java.util.Collection; +import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.Timer; @@ -421,7 +423,8 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft } /** returns the ports that this entity wants to use; - * default implementation returns 22 plus first value for each PortAttributeSensorAndConfigKey config key PortRange. + * default implementation returns 22 plus first value for each PortAttributeSensorAndConfigKey config key PortRange + * and any ports specified in provisioning properties as required. */ protected Collection<Integer> getRequiredOpenPorts() { Set<Integer> ports = MutableSet.of(22); @@ -429,8 +432,21 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft if (PortRange.class.isAssignableFrom(k.getType())) { PortRange p = (PortRange)getConfig(k); if (p != null && !p.isEmpty()) ports.add(p.iterator().next()); + } + } + + Map<String, Object> provisioningProperties = getConfig(PROVISIONING_PROPERTIES); + if(provisioningProperties.containsKey("required.ports")){ + Object requiredPorts = provisioningProperties.get("required.ports"); + if (requiredPorts instanceof Integer){ + ports.add((Integer)requiredPorts); + }else if (requiredPorts instanceof List) { + for(Object o : (List<?>)requiredPorts){ + if(o instanceof Integer) ports.add((Integer)o); + } } } + log.debug("getRequiredOpenPorts detected default {} for {}", ports, this); return ports; }
