Repository: brooklyn-server Updated Branches: refs/heads/master 21c285368 -> 862fef815
Pull-up machine details Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/061cf15e Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/061cf15e Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/061cf15e Branch: refs/heads/master Commit: 061cf15e16ce31eec1b0429592557784096107c1 Parents: 7e813b2 Author: Alasdair Hodge <git...@alasdairhodge.co.uk> Authored: Thu Dec 7 18:47:37 2017 +0000 Committer: Alasdair Hodge <git...@alasdairhodge.co.uk> Committed: Fri Dec 8 09:55:30 2017 +0000 ---------------------------------------------------------------------- .../core/location/AbstractMachineLocation.java | 55 ++++++++++++++++++++ .../location/ssh/SshMachineLocation.java | 49 +---------------- .../jclouds/JcloudsSshMachineLocation.java | 4 +- .../location/winrm/WinRmMachineLocation.java | 8 ++- 4 files changed, 65 insertions(+), 51 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/061cf15e/core/src/main/java/org/apache/brooklyn/core/location/AbstractMachineLocation.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/core/location/AbstractMachineLocation.java b/core/src/main/java/org/apache/brooklyn/core/location/AbstractMachineLocation.java index a248c89..99e2ffe 100644 --- a/core/src/main/java/org/apache/brooklyn/core/location/AbstractMachineLocation.java +++ b/core/src/main/java/org/apache/brooklyn/core/location/AbstractMachineLocation.java @@ -20,11 +20,33 @@ package org.apache.brooklyn.core.location; import java.util.Map; +import org.apache.brooklyn.api.location.MachineDetails; import org.apache.brooklyn.api.location.MachineLocation; +import org.apache.brooklyn.api.location.OsDetails; +import org.apache.brooklyn.config.ConfigKey; +import org.apache.brooklyn.core.config.ConfigKeys; import org.apache.brooklyn.util.collections.MutableMap; +import com.google.common.base.Optional; + public abstract class AbstractMachineLocation extends AbstractLocation implements MachineLocation { + public static final ConfigKey<MachineDetails> MACHINE_DETAILS = ConfigKeys.newConfigKey( + MachineDetails.class, + "machineDetails"); + + public static final ConfigKey<Boolean> DETECT_MACHINE_DETAILS = ConfigKeys.newBooleanConfigKey("detectMachineDetails", + "Attempt to detect machine details automatically.", true); + + protected static final MachineDetails UNKNOWN_MACHINE_DETAILS = new BasicMachineDetails( + new BasicHardwareDetails(-1, -1), + new BasicOsDetails("UNKNOWN", "UNKNOWN", "UNKNOWN") + ); + + private volatile MachineDetails machineDetails; + private final Object machineDetailsLock = new Object(); + + public AbstractMachineLocation() { this(MutableMap.of()); } @@ -33,4 +55,37 @@ public abstract class AbstractMachineLocation extends AbstractLocation implement super(properties); } + /** + * Returns the machine details only if they are already loaded, or available directly as + * config. + */ + protected Optional<MachineDetails> getOptionalMachineDetails() { + MachineDetails result = machineDetails != null ? machineDetails : config().get(MACHINE_DETAILS); + return Optional.fromNullable(result); + } + + @Override + public MachineDetails getMachineDetails() { + synchronized (machineDetailsLock) { + if (machineDetails == null) { + machineDetails = getConfig(MACHINE_DETAILS); + } + if (machineDetails == null) { + boolean detectionEnabled = getConfig(DETECT_MACHINE_DETAILS); + if (!detectionEnabled || !isManaged()) { + return UNKNOWN_MACHINE_DETAILS; + } + machineDetails = detectMachineDetails(); + } + return machineDetails; + } + } + + @Override + public OsDetails getOsDetails() { + return getMachineDetails().getOsDetails(); + } + + protected abstract MachineDetails detectMachineDetails(); + } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/061cf15e/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java index 2078590..7ed83f8 100644 --- a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java +++ b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java @@ -46,7 +46,6 @@ import javax.annotation.Nullable; import org.apache.brooklyn.api.location.MachineDetails; import org.apache.brooklyn.api.location.MachineLocation; -import org.apache.brooklyn.api.location.OsDetails; import org.apache.brooklyn.api.location.PortRange; import org.apache.brooklyn.api.location.PortSupplier; import org.apache.brooklyn.api.mgmt.Task; @@ -59,10 +58,8 @@ import org.apache.brooklyn.core.config.ConfigUtils; import org.apache.brooklyn.core.config.MapConfigKey; import org.apache.brooklyn.core.config.Sanitizer; import org.apache.brooklyn.core.entity.BrooklynConfigKeys; -import org.apache.brooklyn.core.location.BasicHardwareDetails; import org.apache.brooklyn.core.location.AbstractMachineLocation; import org.apache.brooklyn.core.location.BasicMachineDetails; -import org.apache.brooklyn.core.location.BasicOsDetails; import org.apache.brooklyn.core.location.LocationConfigUtils; import org.apache.brooklyn.core.location.LocationConfigUtils.OsCredential; import org.apache.brooklyn.core.location.PortRanges; @@ -106,7 +103,6 @@ import org.slf4j.LoggerFactory; import com.google.common.annotations.Beta; import com.google.common.base.Function; import com.google.common.base.MoreObjects; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Supplier; @@ -173,13 +169,6 @@ public class SshMachineLocation extends AbstractMachineLocation implements Machi public static final ConfigKey<Duration> SSH_CACHE_EXPIRY_DURATION = ConfigKeys.newConfigKey(Duration.class, "sshCacheExpiryDuration", "Expiry time for unused cached ssh connections", Duration.FIVE_MINUTES); - public static final ConfigKey<MachineDetails> MACHINE_DETAILS = ConfigKeys.newConfigKey( - MachineDetails.class, - "machineDetails"); - - public static final ConfigKey<Boolean> DETECT_MACHINE_DETAILS = ConfigKeys.newBooleanConfigKey("detectMachineDetails", - "Attempt to detect machine details automatically. Works with SSH-accessible Linux instances.", true); - @SuppressWarnings("serial") public static final ConfigKey<Iterable<String>> PRIVATE_ADDRESSES = ConfigKeys.newConfigKey( new TypeToken<Iterable<String>>() {}, @@ -209,9 +198,6 @@ public class SshMachineLocation extends AbstractMachineLocation implements Machi @SetFromFlag private Set<Integer> usedPorts; - private volatile MachineDetails machineDetails; - private final Object machineDetailsLock = new Object(); - public static final ConfigKey<String> SSH_HOST = BrooklynConfigKeys.SSH_CONFIG_HOST; public static final ConfigKey<Integer> SSH_PORT = BrooklynConfigKeys.SSH_CONFIG_PORT; @@ -1014,40 +1000,7 @@ public class SshMachineLocation extends AbstractMachineLocation implements Machi } @Override - public OsDetails getOsDetails() { - return getMachineDetails().getOsDetails(); - } - - /** - * Returns the machine details only if they are already loaded, or available directly as - * config. - */ - protected Optional<MachineDetails> getOptionalMachineDetails() { - MachineDetails result = machineDetails != null ? machineDetails : config().get(MACHINE_DETAILS); - return Optional.fromNullable(result); - } - - @Override - public MachineDetails getMachineDetails() { - synchronized (machineDetailsLock) { - if (machineDetails == null) { - machineDetails = getConfig(MACHINE_DETAILS); - } - if (machineDetails == null) { - machineDetails = inferMachineDetails(); - } - } - return machineDetails; - } - - protected MachineDetails inferMachineDetails() { - boolean detectionEnabled = getConfig(DETECT_MACHINE_DETAILS); - if (!detectionEnabled) { - return new BasicMachineDetails(new BasicHardwareDetails(-1, -1), new BasicOsDetails("UNKNOWN", "UNKNOWN", "UNKNOWN")); - } else if (!isManaged()) { - return new BasicMachineDetails(new BasicHardwareDetails(-1, -1), new BasicOsDetails("UNKNOWN", "UNKNOWN", "UNKNOWN")); - } - + protected MachineDetails detectMachineDetails() { Tasks.setBlockingDetails("Waiting for machine details"); try { return BasicMachineDetails.forSshMachineLocationLive(this); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/061cf15e/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocation.java ---------------------------------------------------------------------- diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocation.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocation.java index 26c37ad..c40959d 100644 --- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocation.java +++ b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsSshMachineLocation.java @@ -495,7 +495,7 @@ public class JcloudsSshMachineLocation extends SshMachineLocation implements Jcl } @Override - protected MachineDetails inferMachineDetails() { + protected MachineDetails detectMachineDetails() { Optional<String> name = Optional.absent(); Optional<String> version = Optional.absent(); Optional<String> architecture = Optional.absent(); @@ -539,7 +539,7 @@ public class JcloudsSshMachineLocation extends SshMachineLocation implements Jcl "arch={}, ram={}, #cpus={}", new Object[]{this, name, version, architecture, ram, cpus}); } - return super.inferMachineDetails(); + return super.detectMachineDetails(); } } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/061cf15e/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java ---------------------------------------------------------------------- diff --git a/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java b/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java index 519d6d1..9471096 100644 --- a/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java +++ b/software/winrm/src/main/java/org/apache/brooklyn/location/winrm/WinRmMachineLocation.java @@ -191,7 +191,13 @@ public class WinRmMachineLocation extends AbstractMachineLocation implements Mac } } } - + + @Override + protected MachineDetails detectMachineDetails() { + // TODO: detect actual machine details via winRM + return UNKNOWN_MACHINE_DETAILS; + } + public String getUser() { return config().get(USER); }