Avoid NPE in toMetadataRecord for jclouds machine

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

Branch: refs/heads/0.6.0
Commit: 2863788cf689ae2cf8e678a15fe28cf27c371dd6
Parents: bb96f77
Author: Aled Sage <[email protected]>
Authored: Mon Nov 18 13:30:46 2013 +0000
Committer: Aled Sage <[email protected]>
Committed: Mon Nov 18 13:30:46 2013 +0000

----------------------------------------------------------------------
 .../location/jclouds/JcloudsSshMachineLocation.java   | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2863788c/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
----------------------------------------------------------------------
diff --git 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
index d23ca8c..282a37f 100644
--- 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
+++ 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsSshMachineLocation.java
@@ -5,6 +5,7 @@ import static brooklyn.util.GroovyJavaMethods.truth;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
@@ -15,7 +16,9 @@ import javax.annotation.Nullable;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.callables.RunScriptOnNode;
 import org.jclouds.compute.domain.ExecResponse;
+import org.jclouds.compute.domain.Hardware;
 import org.jclouds.compute.domain.NodeMetadata;
+import org.jclouds.compute.domain.Processor;
 import org.jclouds.compute.options.RunScriptOptions;
 import org.jclouds.domain.LoginCredentials;
 import org.jclouds.scriptbuilder.domain.InterpretableStatement;
@@ -209,16 +212,19 @@ public class JcloudsSshMachineLocation extends 
SshMachineLocation implements Has
     
     @Override
     public Map<String, String> toMetadataRecord() {
+        Hardware hardware = node.getHardware();
+        List<? extends Processor> processors = (hardware != null) ? 
hardware.getProcessors() : null;
+        
         ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
         builder.putAll(super.toMetadataRecord());
         putIfNotNull(builder, "provider", getParent().getProvider());
         putIfNotNull(builder, "account", getParent().getIdentity());
         putIfNotNull(builder, "serverId", node.getProviderId());
         putIfNotNull(builder, "imageId", node.getImageId());
-        putIfNotNull(builder, "instanceTypeName", 
node.getHardware().getName());
-        putIfNotNull(builder, "instanceTypeId", 
node.getHardware().getProviderId());
-        putIfNotNull(builder, "ram", "" + node.getHardware().getRam());
-        putIfNotNull(builder, "cpus", "" + 
node.getHardware().getProcessors().size());
+        putIfNotNull(builder, "instanceTypeName", (hardware != null ? 
hardware.getName() : null));
+        putIfNotNull(builder, "instanceTypeId", (hardware != null ? 
hardware.getProviderId() : null));
+        putIfNotNull(builder, "ram", "" + (hardware != null ? 
hardware.getRam() : null));
+        putIfNotNull(builder, "cpus", "" + (processors != null ? 
processors.size() : null));
         putIfNotNull(builder, "osName", getOsDetails().getName());
         putIfNotNull(builder, "osArch", getOsDetails().getArch());
         putIfNotNull(builder, "64bit", getOsDetails().is64bit() ? "true" : 
"false");

Reply via email to