64 bit support and fetching jclouds 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/c3821217 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/c3821217 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/c3821217 Branch: refs/heads/0.4.0 Commit: c3821217d63a21fe1e2cb6ea732ad70fb65d6100 Parents: e7fb0d4 Author: David Ribeiro Alves <[email protected]> Authored: Fri Oct 5 19:35:38 2012 -0500 Committer: David Ribeiro Alves <[email protected]> Committed: Fri Oct 5 19:35:38 2012 -0500 ---------------------------------------------------------------------- api/src/main/java/brooklyn/location/OsDetails.java | 1 + .../brooklyn/location/basic/BasicOsDetails.java | 14 ++++++++++++-- .../location/basic/jclouds/JcloudsLocation.java | 17 +++++++++++++++++ .../basic/jclouds/StandaloneJcloudsTest.java | 5 +++++ 4 files changed, 35 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3821217/api/src/main/java/brooklyn/location/OsDetails.java ---------------------------------------------------------------------- diff --git a/api/src/main/java/brooklyn/location/OsDetails.java b/api/src/main/java/brooklyn/location/OsDetails.java index d770413..32bb54d 100644 --- a/api/src/main/java/brooklyn/location/OsDetails.java +++ b/api/src/main/java/brooklyn/location/OsDetails.java @@ -9,6 +9,7 @@ public interface OsDetails { String getName(); String getArch(); String getVersion(); + boolean is64bit(); // * <tr><td><code>os.name</code></td> // * <td>Operating system name</td></tr> http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3821217/core/src/main/java/brooklyn/location/basic/BasicOsDetails.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/location/basic/BasicOsDetails.java b/core/src/main/java/brooklyn/location/basic/BasicOsDetails.java index 095b6fb..6a6fdb7 100644 --- a/core/src/main/java/brooklyn/location/basic/BasicOsDetails.java +++ b/core/src/main/java/brooklyn/location/basic/BasicOsDetails.java @@ -5,9 +5,14 @@ import brooklyn.location.OsDetails; public class BasicOsDetails implements OsDetails { final String name, arch, version; + final boolean is64bit; public BasicOsDetails(String name, String arch, String version) { - this.name = name; this.arch = arch; this.version = version; + this(name,arch,version, arch != null && arch.contains("64")); + } + + public BasicOsDetails(String name, String arch, String version, boolean is64Bit) { + this.name = name; this.arch = arch; this.version = version; this.is64bit = is64Bit; } /** java property os.name (human readable name); e.g. "Mac OS X" */ @@ -41,7 +46,12 @@ public class BasicOsDetails implements OsDetails { public boolean isMac() { return getName()!=null && getName().equals(OsNames.MAC_OS_X); } - + + @Override + public boolean is64bit() { + return is64bit; + } + @Override public String toString() { return "OS["+name+";"+arch+";"+version+"]"; http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3821217/core/src/main/java/brooklyn/location/basic/jclouds/JcloudsLocation.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/brooklyn/location/basic/jclouds/JcloudsLocation.java b/core/src/main/java/brooklyn/location/basic/jclouds/JcloudsLocation.java index 7a77d7f..3f805c8 100644 --- a/core/src/main/java/brooklyn/location/basic/jclouds/JcloudsLocation.java +++ b/core/src/main/java/brooklyn/location/basic/jclouds/JcloudsLocation.java @@ -25,6 +25,8 @@ import java.util.concurrent.TimeoutException; import javax.annotation.Nullable; +import brooklyn.location.OsDetails; +import brooklyn.location.basic.BasicOsDetails; import org.jclouds.Constants; import org.jclouds.compute.ComputeService; import org.jclouds.compute.ComputeServiceContext; @@ -1189,6 +1191,21 @@ public class JcloudsLocation extends AbstractLocation implements MachineProvisio return (credentials != null) ? credentials.getPassword() : null; } } + + @Override + public OsDetails getOsDetails() { + if (node.getOperatingSystem() != null) { + return new BasicOsDetails( + node.getOperatingSystem().getName() != null + ? node.getOperatingSystem().getName() : "linux", + node.getOperatingSystem().getArch() != null + ? node.getOperatingSystem().getArch() : BasicOsDetails.OsArchs.I386, + node.getOperatingSystem().getVersion() != null + ? node.getOperatingSystem().getVersion() : "unknown", + node.getOperatingSystem().is64Bit()); + } + return super.getOsDetails(); + } } private static double toDouble(Object v) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c3821217/core/src/test/java/brooklyn/location/basic/jclouds/StandaloneJcloudsTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/brooklyn/location/basic/jclouds/StandaloneJcloudsTest.java b/core/src/test/java/brooklyn/location/basic/jclouds/StandaloneJcloudsTest.java index 724f282..1f9c479 100644 --- a/core/src/test/java/brooklyn/location/basic/jclouds/StandaloneJcloudsTest.java +++ b/core/src/test/java/brooklyn/location/basic/jclouds/StandaloneJcloudsTest.java @@ -28,6 +28,7 @@ import org.jclouds.sshj.config.SshjSshClientModule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; +import org.testng.AssertJUnit; import org.testng.annotations.Test; import brooklyn.config.BrooklynProperties; @@ -37,6 +38,8 @@ import com.google.common.base.Throwables; import com.google.common.collect.Iterables; import com.google.common.io.Files; +import static org.testng.Assert.assertNotNull; + public class StandaloneJcloudsTest { public static final Logger LOG = LoggerFactory.getLogger(StandaloneJcloudsTest.class); @@ -76,6 +79,8 @@ public class StandaloneJcloudsTest { node = Iterables.getOnlyElement(nodes, null); if (node == null) throw new IllegalStateException("No nodes returned"); + assertNotNull(node.getOperatingSystem()); + Credentials nodeCredentials = node.getCredentials(); final LoginCredentials expectedCredentials = LoginCredentials.fromCredentials(nodeCredentials);
