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;
     }

Reply via email to