Fix openshift config so location config is used

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2ed42908
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2ed42908
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2ed42908

Branch: refs/heads/master
Commit: 2ed4290854ac22a89d9677ce28ae0db83d4655c2
Parents: a334e0f
Author: graeme.miller <[email protected]>
Authored: Tue May 23 17:35:08 2017 +0100
Committer: graeme.miller <[email protected]>
Committed: Tue May 23 17:35:08 2017 +0100

----------------------------------------------------------------------
 .../location/kubernetes/KubernetesLocation.java | 28 ++++++++++++++------
 1 file changed, 20 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2ed42908/brooklyn-server/locations/container/src/main/java/org/apache/brooklyn/container/location/kubernetes/KubernetesLocation.java
----------------------------------------------------------------------
diff --git 
a/brooklyn-server/locations/container/src/main/java/org/apache/brooklyn/container/location/kubernetes/KubernetesLocation.java
 
b/brooklyn-server/locations/container/src/main/java/org/apache/brooklyn/container/location/kubernetes/KubernetesLocation.java
index 75164e3..65973d9 100644
--- 
a/brooklyn-server/locations/container/src/main/java/org/apache/brooklyn/container/location/kubernetes/KubernetesLocation.java
+++ 
b/brooklyn-server/locations/container/src/main/java/org/apache/brooklyn/container/location/kubernetes/KubernetesLocation.java
@@ -122,6 +122,8 @@ import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.TimeUnit;
 
+import javax.annotation.Nullable;
+
 public class KubernetesLocation extends AbstractLocation implements 
MachineProvisioningLocation<KubernetesMachineLocation>, 
KubernetesLocationConfig {
 
     /*
@@ -999,22 +1001,32 @@ public class KubernetesLocation extends AbstractLocation 
implements MachineProvi
         throw new UnsupportedOperationException();
     }
 
-    /**
-     * @see {@link #lookup(ConfigKey, Entity, ConfigBag, Object)}
-     */
+    /** @see {@link #lookup(ConfigKey, Entity, ConfigBag, Object)} */
     public <T> T lookup(ConfigKey<T> config, Entity entity, ConfigBag setup) {
-        return lookup(config, entity, setup, null);
+        return lookup(config, entity, setup, config.getDefaultValue());
     }
 
     /**
      * Looks up {@link ConfigKey configuration} with the entity value taking 
precedence over the
      * location, and returning a default value (normally {@literal null}) if 
neither is present.
      */
-    public <T> T lookup(ConfigKey<T> config, Entity entity, ConfigBag setup, T 
defaultValue) {
-        Optional<T> entityValue = 
Optional.fromNullable(entity.config().get(config));
-        Optional<T> locationValue = Optional.fromNullable(setup.get(config));
+    public <T> T lookup(final ConfigKey<T> config, Entity entity, ConfigBag 
setup, T defaultValue) {
+        boolean entityConfigPresent = !entity.config().findKeysPresent(new 
Predicate<ConfigKey<?>>() {
+            @Override
+            public boolean apply(@Nullable ConfigKey<?> configKey) {
+                return config.equals(configKey);
+            }
+        }).isEmpty();
+
+        boolean setupBagConfigPresent = setup.containsKey(config);
+
+        if (entityConfigPresent) {
+            return entity.config().get(config);
+        } else if (setupBagConfigPresent) {
+            return setup.get(config);
+        }
 
-        return 
Iterables.getFirst(Optional.presentInstances(Arrays.asList(entityValue, 
locationValue)), defaultValue);
+        return defaultValue;
     }
 
     public void waitForExitCondition(ExitCondition exitCondition) {

Reply via email to