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

Reply via email to