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) {
