Repository: jclouds
Updated Branches:
  refs/heads/master 2c578d7bc -> f5e1c4764


[SoftLayer] fix SoftLayerTemplateOptions


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f5e1c476
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f5e1c476
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f5e1c476

Branch: refs/heads/master
Commit: f5e1c476447227adfcd6185a56d608c429690a17
Parents: 2c578d7
Author: Andrea Turli <[email protected]>
Authored: Fri Jul 24 16:27:20 2015 +0200
Committer: Andrea Turli <[email protected]>
Committed: Fri Jul 24 19:31:13 2015 +0200

----------------------------------------------------------------------
 .../softlayer/binders/VirtualGuestToJson.java   |  69 ++--
 .../options/SoftLayerTemplateOptions.java       | 340 ++++++++++++-------
 .../SoftLayerComputeServiceAdapter.java         |  56 +--
 .../binders/VirtualGuestToJsonTest.java         |   4 +
 .../SoftLayerComputeServiceContextLiveTest.java |   2 +
 5 files changed, 295 insertions(+), 176 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5e1c476/providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java
----------------------------------------------------------------------
diff --git 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java
 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java
index efdc680..983df04 100644
--- 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java
+++ 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/binders/VirtualGuestToJson.java
@@ -16,19 +16,23 @@
  */
 package org.jclouds.softlayer.binders;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Inject;
 
 import org.jclouds.http.HttpRequest;
 import org.jclouds.json.Json;
 import org.jclouds.rest.Binder;
-import org.jclouds.softlayer.compute.strategy.SoftLayerComputeServiceAdapter;
 import org.jclouds.softlayer.domain.SecuritySshKey;
 import org.jclouds.softlayer.domain.VirtualGuest;
 import org.jclouds.softlayer.domain.VirtualGuestBlockDevice;
+import org.jclouds.softlayer.domain.VirtualGuestNetworkComponent;
 import org.jclouds.softlayer.domain.internal.BlockDevice;
 import org.jclouds.softlayer.domain.internal.BlockDeviceTemplateGroup;
 import org.jclouds.softlayer.domain.internal.Datacenter;
@@ -38,20 +42,18 @@ import 
org.jclouds.softlayer.domain.internal.PrimaryBackendNetworkComponent;
 import org.jclouds.softlayer.domain.internal.PrimaryNetworkComponent;
 import org.jclouds.softlayer.domain.internal.TemplateObject;
 
-import javax.inject.Inject;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.common.base.Function;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 
 /**
  * Converts a VirtualGuest into a json string valid for creating a CCI via 
softlayer api
  * The string is set into the payload of the HttpRequest
- * 
+ *
  */
 public class VirtualGuestToJson implements Binder {
 
@@ -88,7 +90,17 @@ public class VirtualGuestToJson implements Binder {
       boolean localDisk = virtualGuest.isLocalDiskFlag();
 
       String datacenterName = 
checkNotNull(virtualGuest.getDatacenter().getName(), "datacenterName");
-      Set<NetworkComponent> networkComponents = 
createNetworkComponents(virtualGuest);
+      Set<VirtualGuestNetworkComponent> virtualGuestNetworkComponents = 
virtualGuest.getVirtualGuestNetworkComponents();
+      Set<NetworkComponent> networkComponents = Sets.newHashSet();
+      if (virtualGuestNetworkComponents != null) {
+         networkComponents = FluentIterable.from(virtualGuestNetworkComponents)
+                 .transform(new Function<VirtualGuestNetworkComponent, 
NetworkComponent>() {
+                    @Override
+                    public NetworkComponent apply(VirtualGuestNetworkComponent 
virtualGuestNetworkComponent) {
+                       return new 
NetworkComponent(virtualGuestNetworkComponent.getSpeed());
+                    }
+                 }).toSet();
+      }
 
       templateObjectBuilder.hostname(hostname)
                            .domain(domain)
@@ -98,9 +110,11 @@ public class VirtualGuestToJson implements Binder {
                            .localDiskFlag(localDisk)
                            
.dedicatedAccountHostOnlyFlag(virtualGuest.isDedicatedAccountHostOnly())
                            
.privateNetworkOnlyFlag(virtualGuest.isPrivateNetworkOnly())
-                           .datacenter(new Datacenter(datacenterName))
-                           .networkComponents(networkComponents);
+                           .datacenter(new Datacenter(datacenterName));
 
+      if (!networkComponents.isEmpty()) {
+         templateObjectBuilder.networkComponents(networkComponents);
+      }
       if (virtualGuest.getOperatingSystem() != null) {
          String operatingSystemReferenceCode = 
checkNotNull(virtualGuest.getOperatingSystem()
                  .getOperatingSystemReferenceCode(), 
"operatingSystemReferenceCode");
@@ -154,23 +168,6 @@ public class VirtualGuestToJson implements Binder {
       return ImmutableList.copyOf(blockDevices);
    }
 
-   private Set<NetworkComponent> createNetworkComponents(VirtualGuest 
virtualGuest) {
-      if (virtualGuest.getPrimaryNetworkComponent() == null && 
virtualGuest.getPrimaryBackendNetworkComponent() == null) {
-         return null;
-      }
-      ImmutableSet.Builder networkComponents = ImmutableSet.builder();
-      int maxSpeed = SoftLayerComputeServiceAdapter.DEFAULT_MAX_PORT_SPEED;
-
-      if (virtualGuest.getPrimaryNetworkComponent() != null && 
virtualGuest.getPrimaryNetworkComponent().getMaxSpeed() > maxSpeed) {
-         maxSpeed = virtualGuest.getPrimaryNetworkComponent().getMaxSpeed();
-      }
-      if (virtualGuest.getPrimaryBackendNetworkComponent() != null && 
virtualGuest.getPrimaryBackendNetworkComponent().getMaxSpeed() > maxSpeed) {
-         maxSpeed = 
virtualGuest.getPrimaryBackendNetworkComponent().getMaxSpeed();
-      }
-      networkComponents.add(new NetworkComponent(maxSpeed));
-      return networkComponents.build();
-   }
-
    public class BlockDevicesComparator implements Comparator<BlockDevice> {
 
       @Override

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5e1c476/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/options/SoftLayerTemplateOptions.java
----------------------------------------------------------------------
diff --git 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/options/SoftLayerTemplateOptions.java
 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/options/SoftLayerTemplateOptions.java
index 51fd816..2ff3741 100644
--- 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/options/SoftLayerTemplateOptions.java
+++ 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/options/SoftLayerTemplateOptions.java
@@ -22,8 +22,10 @@ import java.util.List;
 import java.util.Map;
 
 import org.jclouds.compute.options.TemplateOptions;
+import org.jclouds.domain.LoginCredentials;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.scriptbuilder.domain.Statement;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.net.InternetDomainName;
 
@@ -32,35 +34,35 @@ import com.google.common.net.InternetDomainName;
  * {@link org.jclouds.compute.ComputeService#createNodesInGroup(String, int, 
TemplateOptions)} and
  * {@link org.jclouds.compute.ComputeService#createNodesInGroup(String, int, 
TemplateOptions)}
  * operations on the <em>gogrid</em> provider.
- * 
+ *
  * <h2>Usage</h2> The recommended way to instantiate a
  * {@link SoftLayerTemplateOptions} object is to statically import
  * {@code SoftLayerTemplateOptions.*} and invoke a static creation method
  * followed by an instance mutator (if needed):
  * <p>
- * 
+ *
  * <pre>
  * import static 
org.jclouds.compute.options.SoftLayerTemplateOptions.Builder.*;
  * ComputeService client = // get connection
  * templateBuilder.options(inboundPorts(22, 80, 8080, 443));
  * Set&lt;? extends NodeMetadata&gt; set = client.createNodesInGroup(tag, 2, 
templateBuilder.build());
  * </pre>
- * 
+ *
  */
 public class SoftLayerTemplateOptions extends TemplateOptions implements 
Cloneable {
 
    protected String domainName = "jclouds.org";
-   protected Optional<List<Integer>> blockDevices = Optional.absent();
-   protected Optional<String> diskType = Optional.absent();
-   protected Optional<Integer> portSpeed = Optional.absent();
-   protected Optional<String> userData = Optional.absent();
-   protected Optional<Integer> primaryNetworkComponentNetworkVlanId = 
Optional.absent();
-   protected Optional<Integer> primaryBackendNetworkComponentNetworkVlanId = 
Optional.absent();
-   protected Optional<Boolean> hourlyBillingFlag = Optional.absent();
-   protected Optional<Boolean> dedicatedAccountHostOnlyFlag = 
Optional.absent();
-   protected Optional<Boolean> privateNetworkOnlyFlag = Optional.absent();
-   protected Optional<String> postInstallScriptUri = Optional.absent();
-   protected Optional<List<Integer>> sshKeys = Optional.absent();
+   protected List<Integer> blockDevices = ImmutableList.of();
+   protected String diskType;
+   protected Integer portSpeed;
+   protected String userData;
+   protected Integer primaryNetworkComponentNetworkVlanId;
+   protected Integer primaryBackendNetworkComponentNetworkVlanId;
+   protected Boolean hourlyBillingFlag;
+   protected Boolean dedicatedAccountHostOnlyFlag;
+   protected Boolean privateNetworkOnlyFlag;
+   protected String postInstallScriptUri;
+   protected List<Integer> sshKeys = ImmutableList.of();
 
    @Override
    public SoftLayerTemplateOptions clone() {
@@ -75,35 +77,19 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
       if (to instanceof SoftLayerTemplateOptions) {
          SoftLayerTemplateOptions eTo = 
SoftLayerTemplateOptions.class.cast(to);
          eTo.domainName(domainName);
-         if (blockDevices.isPresent()) {
-            eTo.blockDevices(blockDevices.get());
-         }
-         if (diskType.isPresent()) {
-            eTo.diskType(diskType.get());
-         }
-         if (portSpeed.isPresent()) {
-            eTo.portSpeed(portSpeed.get());
-         }
-         if (userData.isPresent()) {
-            eTo.userData(userData.get());
-         }
-         if (primaryNetworkComponentNetworkVlanId.isPresent()) {
-            
eTo.primaryNetworkComponentNetworkVlanId(primaryNetworkComponentNetworkVlanId.get());
-         }
-         if (primaryBackendNetworkComponentNetworkVlanId.isPresent()) {
-            
eTo.primaryBackendNetworkComponentNetworkVlanId(primaryBackendNetworkComponentNetworkVlanId.get());
+         if (!blockDevices.isEmpty()) {
+            eTo.blockDevices(blockDevices);
          }
-         if (hourlyBillingFlag.isPresent()) {
-            eTo.hourlyBillingFlag(hourlyBillingFlag.get());
-         }
-         if (dedicatedAccountHostOnlyFlag.isPresent()) {
-            
eTo.dedicatedAccountHostOnlyFlag(dedicatedAccountHostOnlyFlag.get());
-         }
-         if (privateNetworkOnlyFlag.isPresent()) {
-            eTo.privateNetworkOnlyFlag(privateNetworkOnlyFlag.get());
-         }
-         if (sshKeys.isPresent()) {
-            eTo.sshKeys(sshKeys.get());
+         eTo.diskType(diskType);
+         eTo.portSpeed(portSpeed);
+         eTo.userData(userData);
+         
eTo.primaryNetworkComponentNetworkVlanId(primaryNetworkComponentNetworkVlanId);
+         
eTo.primaryBackendNetworkComponentNetworkVlanId(primaryBackendNetworkComponentNetworkVlanId);
+         eTo.hourlyBillingFlag(hourlyBillingFlag);
+         eTo.dedicatedAccountHostOnlyFlag(dedicatedAccountHostOnlyFlag);
+         eTo.privateNetworkOnlyFlag(privateNetworkOnlyFlag);
+         if (!sshKeys.isEmpty()) {
+            eTo.sshKeys(sshKeys);
          }
       }
    }
@@ -111,7 +97,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
    /**
     * will replace the default domain used when ordering virtual guests. Note
     * this needs to contain a public suffix!
-    * 
+    *
     * @see 
org.jclouds.softlayer.features.VirtualGuestApi#createVirtualGuest(org.jclouds.softlayer.domain.VirtualGuest)
     * @see InternetDomainName#hasPublicSuffix
     */
@@ -126,7 +112,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
    public SoftLayerTemplateOptions blockDevices(Iterable<Integer> capacities) {
       for (Integer capacity : checkNotNull(capacities, "capacities"))
          checkNotNull(capacity, "all block devices must be non-empty");
-      this.blockDevices = Optional.<List<Integer>> 
of(ImmutableList.copyOf(capacities));
+      this.blockDevices = ImmutableList.copyOf(capacities);
       return this;
    }
 
@@ -134,61 +120,55 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
       return blockDevices(ImmutableList.copyOf(checkNotNull(capacities, 
"capacities")));
    }
 
-   public SoftLayerTemplateOptions diskType(String diskType) {
-      checkNotNull(diskType, "diskType was null");
-      this.diskType = Optional.of(diskType);
+   public SoftLayerTemplateOptions diskType(@Nullable String diskType) {
+      this.diskType = diskType;
       return this;
    }
 
-   public SoftLayerTemplateOptions portSpeed(Integer portSpeed) {
-      checkNotNull(portSpeed, "portSpeed was null");
-      this.portSpeed = Optional.of(portSpeed);
+   public SoftLayerTemplateOptions portSpeed(@Nullable Integer portSpeed) {
+      this.portSpeed = portSpeed;
       return this;
    }
 
-   public SoftLayerTemplateOptions userData(String userData) {
-      checkNotNull(userData, "userData was null");
-      this.userData = Optional.of(userData);
+   public SoftLayerTemplateOptions userData(@Nullable String userData) {
+      this.userData = userData;
       return this;
    }
 
-   public SoftLayerTemplateOptions 
primaryNetworkComponentNetworkVlanId(Integer 
primaryNetworkComponentNetworkVlanId) {
-      checkNotNull(primaryNetworkComponentNetworkVlanId, 
"primaryNetworkComponentNetworkVlanId was null");
-      this.primaryNetworkComponentNetworkVlanId = 
Optional.of(primaryNetworkComponentNetworkVlanId);
+   public SoftLayerTemplateOptions 
primaryNetworkComponentNetworkVlanId(@Nullable Integer 
primaryNetworkComponentNetworkVlanId) {
+      this.primaryNetworkComponentNetworkVlanId = 
primaryNetworkComponentNetworkVlanId;
       return this;
    }
 
-   public SoftLayerTemplateOptions 
primaryBackendNetworkComponentNetworkVlanId(Integer 
primaryBackendNetworkComponentNetworkVlanId) {
-      checkNotNull(primaryBackendNetworkComponentNetworkVlanId, 
"primaryBackendNetworkComponentNetworkVlanId was null");
-      this.primaryBackendNetworkComponentNetworkVlanId = 
Optional.of(primaryBackendNetworkComponentNetworkVlanId);
+   public SoftLayerTemplateOptions 
primaryBackendNetworkComponentNetworkVlanId(@Nullable Integer 
primaryBackendNetworkComponentNetworkVlanId) {
+      this.primaryBackendNetworkComponentNetworkVlanId = 
primaryBackendNetworkComponentNetworkVlanId;
       return this;
    }
 
-   public SoftLayerTemplateOptions hourlyBillingFlag(boolean 
hourlyBillingFlag) {
-      this.hourlyBillingFlag = Optional.of(hourlyBillingFlag);
+   public SoftLayerTemplateOptions hourlyBillingFlag(@Nullable Boolean 
hourlyBillingFlag) {
+      this.hourlyBillingFlag = hourlyBillingFlag;
       return this;
    }
 
-   public SoftLayerTemplateOptions dedicatedAccountHostOnlyFlag(boolean 
dedicatedAccountHostOnlyFlag) {
-      this.dedicatedAccountHostOnlyFlag = 
Optional.of(dedicatedAccountHostOnlyFlag);
+   public SoftLayerTemplateOptions dedicatedAccountHostOnlyFlag(@Nullable 
Boolean dedicatedAccountHostOnlyFlag) {
+      this.dedicatedAccountHostOnlyFlag = dedicatedAccountHostOnlyFlag;
       return this;
    }
 
-   public SoftLayerTemplateOptions privateNetworkOnlyFlag(boolean 
privateNetworkOnlyFlag) {
-      this.privateNetworkOnlyFlag = Optional.of(privateNetworkOnlyFlag);
+   public SoftLayerTemplateOptions privateNetworkOnlyFlag(@Nullable Boolean 
privateNetworkOnlyFlag) {
+      this.privateNetworkOnlyFlag = privateNetworkOnlyFlag;
       return this;
    }
 
-   public SoftLayerTemplateOptions postInstallScriptUri(String 
postInstallScriptUri) {
-      checkNotNull(postInstallScriptUri, "postInstallScriptUri was null");
-      this.postInstallScriptUri = Optional.of(postInstallScriptUri);
+   public SoftLayerTemplateOptions postInstallScriptUri(@Nullable String 
postInstallScriptUri) {
+      this.postInstallScriptUri = postInstallScriptUri;
       return this;
    }
 
    public SoftLayerTemplateOptions sshKeys(Iterable<Integer> sshKeys) {
       for (Integer sshKey : checkNotNull(sshKeys, "sshKeys"))
          checkNotNull(sshKey, "sshKeys must be non-empty");
-      this.sshKeys = Optional.<List<Integer>> 
of(ImmutableList.copyOf(sshKeys));
+      this.sshKeys = ImmutableList.copyOf(sshKeys);
       return this;
    }
 
@@ -200,38 +180,36 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
       return domainName;
    }
 
-   public Optional<List<Integer>> getBlockDevices() {
+   public List<Integer> getBlockDevices() {
       return blockDevices;
    }
 
-   public Optional<String> getDiskType() {
+   public String getDiskType() {
       return diskType;
    }
 
-   public Optional<Integer> getPortSpeed() {
+   public Integer getPortSpeed() {
       return portSpeed;
    }
 
-   public Optional<String> getUserData() { return userData; }
+   public String getUserData() { return userData; }
 
-   public Optional<Integer> getPrimaryNetworkComponentNetworkVlanId() { return 
primaryNetworkComponentNetworkVlanId; }
+   public Integer getPrimaryNetworkComponentNetworkVlanId() { return 
primaryNetworkComponentNetworkVlanId; }
 
-   public Optional<Integer> getPrimaryBackendNetworkComponentNetworkVlanId() { 
return primaryBackendNetworkComponentNetworkVlanId; }
+   public Integer getPrimaryBackendNetworkComponentNetworkVlanId() { return 
primaryBackendNetworkComponentNetworkVlanId; }
 
-   public Optional<Boolean> isHourlyBillingFlag() { return hourlyBillingFlag; }
+   public Boolean isHourlyBillingFlag() { return hourlyBillingFlag; }
 
-   public Optional<Boolean> isDedicatedAccountHostOnlyFlag() { return 
dedicatedAccountHostOnlyFlag; }
+   public Boolean isDedicatedAccountHostOnlyFlag() { return 
dedicatedAccountHostOnlyFlag; }
 
-   public Optional<Boolean> isPrivateNetworkOnlyFlag() { return 
privateNetworkOnlyFlag; }
+   public Boolean isPrivateNetworkOnlyFlag() { return privateNetworkOnlyFlag; }
 
-   public Optional<String> getPostInstallScriptUri() { return 
postInstallScriptUri; }
+   public String getPostInstallScriptUri() { return postInstallScriptUri; }
 
-   public Optional<List<Integer>> getSshKeys() {
+   public List<Integer> getSshKeys() {
       return sshKeys;
    }
 
-   public static final SoftLayerTemplateOptions NONE = new 
SoftLayerTemplateOptions();
-
    public static class Builder {
 
       /**
@@ -239,7 +217,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions domainName(String domainName) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.domainName(domainName));
+         return options.domainName(domainName);
       }
 
       /**
@@ -247,12 +225,12 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions blockDevices(Integer... 
capacities) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.blockDevices(capacities));
+         return options.blockDevices(capacities);
       }
 
       public static SoftLayerTemplateOptions blockDevices(Iterable<Integer> 
capacities) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.blockDevices(capacities));
+         return options.blockDevices(capacities);
       }
 
       /**
@@ -260,7 +238,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions diskType(String diskType) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.diskType(diskType));
+         return options.diskType(diskType);
       }
 
       /**
@@ -268,7 +246,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions portSpeed(Integer portSpeed) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.portSpeed(portSpeed));
+         return options.portSpeed(portSpeed);
       }
 
       /**
@@ -276,7 +254,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions userData(String userData) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.userData(userData));
+         return options.userData(userData);
       }
 
       /**
@@ -284,7 +262,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions 
primaryNetworkComponentNetworkVlanId(Integer 
primaryNetworkComponentNetworkVlanId) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.primaryNetworkComponentNetworkVlanId(primaryNetworkComponentNetworkVlanId));
+         return 
options.primaryNetworkComponentNetworkVlanId(primaryNetworkComponentNetworkVlanId);
       }
 
       /**
@@ -292,7 +270,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions 
primaryBackendNetworkComponentNetworkVlanId(Integer 
primaryBackendNetworkComponentNetworkVlanId) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.primaryBackendNetworkComponentNetworkVlanId(primaryBackendNetworkComponentNetworkVlanId));
+         return 
options.primaryBackendNetworkComponentNetworkVlanId(primaryBackendNetworkComponentNetworkVlanId);
       }
 
       /**
@@ -300,7 +278,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions hourlyBillingFlag(boolean 
hourlyBillingFlag) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.hourlyBillingFlag(hourlyBillingFlag));
+         return options.hourlyBillingFlag(hourlyBillingFlag);
       }
 
       /**
@@ -308,7 +286,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions 
dedicatedAccountHostOnlyFlag(boolean dedicatedAccountHostOnlyFlag) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.dedicatedAccountHostOnlyFlag(dedicatedAccountHostOnlyFlag));
+         return 
options.dedicatedAccountHostOnlyFlag(dedicatedAccountHostOnlyFlag);
       }
 
       /**
@@ -316,7 +294,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions privateNetworkOnlyFlag(boolean 
privateNetworkOnlyFlag) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.privateNetworkOnlyFlag(privateNetworkOnlyFlag));
+         return options.privateNetworkOnlyFlag(privateNetworkOnlyFlag);
       }
 
       /**
@@ -324,7 +302,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions postInstallScriptUri(String 
postInstallScriptUri) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.postInstallScriptUri(postInstallScriptUri));
+         return options.postInstallScriptUri(postInstallScriptUri);
       }
 
       /**
@@ -332,22 +310,20 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions sshKeys(Integer... sshKeys) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return SoftLayerTemplateOptions.class.cast(options.sshKeys(sshKeys));
+         return options.sshKeys(sshKeys);
       }
 
       public static SoftLayerTemplateOptions sshKeys(Iterable<Integer> 
sshKeys) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.blockDevices(sshKeys));
+         return options.blockDevices(sshKeys);
       }
 
-      // methods that only facilitate returning the correct object type
-
       /**
        * @see TemplateOptions#inboundPorts(int...)
        */
       public static SoftLayerTemplateOptions inboundPorts(int... ports) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.inboundPorts(ports));
+         return options.inboundPorts(ports);
       }
 
       /**
@@ -355,23 +331,31 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions blockOnPort(int port, int 
seconds) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return SoftLayerTemplateOptions.class.cast(options.blockOnPort(port, 
seconds));
+         return options.blockOnPort(port, seconds);
       }
 
       /**
-       * @see TemplateOptions#userMetadata(Map)
+       * @see TemplateOptions#installPrivateKey(String)
        */
-      public static SoftLayerTemplateOptions userMetadata(Map<String, String> 
userMetadata) {
+      public static SoftLayerTemplateOptions installPrivateKey(String rsaKey) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.userMetadata(userMetadata));
+         return options.installPrivateKey(rsaKey);
       }
 
       /**
-       * @see TemplateOptions#userMetadata(String, String)
+       * @see TemplateOptions#authorizePublicKey(String)
        */
-      public static SoftLayerTemplateOptions userMetadata(String key, String 
value) {
+      public static SoftLayerTemplateOptions authorizePublicKey(String rsaKey) 
{
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return SoftLayerTemplateOptions.class.cast(options.userMetadata(key, 
value));
+         return options.authorizePublicKey(rsaKey);
+      }
+
+      /**
+       * @see TemplateOptions#userMetadata(Map)
+       */
+      public static SoftLayerTemplateOptions userMetadata(Map<String, String> 
userMetadata) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.userMetadata(userMetadata);
       }
 
       /**
@@ -379,7 +363,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions nodeNames(Iterable<String> 
nodeNames) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.nodeNames(nodeNames));
+         return options.nodeNames(nodeNames);
       }
 
       /**
@@ -387,14 +371,62 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
        */
       public static SoftLayerTemplateOptions networks(Iterable<String> 
networks) {
          SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
-         return 
SoftLayerTemplateOptions.class.cast(options.networks(networks));
+         return options.networks(networks);
       }
-   }
 
+      /**
+       * @see TemplateOptions#overrideLoginUser(String)
+       */
+      public static SoftLayerTemplateOptions overrideLoginUser(String user) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.overrideLoginUser(user);
+      }
+
+      /**
+       * @see TemplateOptions#overrideLoginPassword(String)
+       */
+      public static SoftLayerTemplateOptions overrideLoginPassword(String 
password) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.overrideLoginPassword(password);
+      }
+
+      /**
+       * @see TemplateOptions#overrideLoginPrivateKey(String)
+       */
+      public static SoftLayerTemplateOptions overrideLoginPrivateKey(String 
privateKey) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.overrideLoginPrivateKey(privateKey);
+      }
+
+      /**
+       * @see TemplateOptions#overrideAuthenticateSudo(boolean)
+       */
+      public static SoftLayerTemplateOptions overrideAuthenticateSudo(boolean 
authenticateSudo) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.overrideAuthenticateSudo(authenticateSudo);
+      }
+
+      /**
+       * @see TemplateOptions#overrideLoginCredentials(LoginCredentials)
+       */
+      public static SoftLayerTemplateOptions 
overrideLoginCredentials(LoginCredentials credentials) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.overrideLoginCredentials(credentials);
+      }
+
+      /**
+       * @see TemplateOptions#blockUntilRunning(boolean)
+       */
+      public static SoftLayerTemplateOptions blockUntilRunning(boolean 
blockUntilRunning) {
+         SoftLayerTemplateOptions options = new SoftLayerTemplateOptions();
+         return options.blockUntilRunning(blockUntilRunning);
+      }
+
+   }
    // methods that only facilitate returning the correct object type
 
    /**
-    * @see TemplateOptions#blockOnPort(int, int)
+    * {@inheritDoc}
     */
    @Override
    public SoftLayerTemplateOptions blockOnPort(int port, int seconds) {
@@ -402,7 +434,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
    }
 
    /**
-    * @see TemplateOptions#inboundPorts(int...)
+    * {@inheritDoc}
     */
    @Override
    public SoftLayerTemplateOptions inboundPorts(int... ports) {
@@ -410,7 +442,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
    }
 
    /**
-    * @see TemplateOptions#authorizePublicKey(String)
+    * {@inheritDoc}
     */
    @Override
    public SoftLayerTemplateOptions authorizePublicKey(String publicKey) {
@@ -418,7 +450,7 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
    }
 
    /**
-    * @see TemplateOptions#installPrivateKey(String)
+    * {@inheritDoc}
     */
    @Override
    public SoftLayerTemplateOptions installPrivateKey(String privateKey) {
@@ -429,6 +461,86 @@ public class SoftLayerTemplateOptions extends 
TemplateOptions implements Cloneab
     * {@inheritDoc}
     */
    @Override
+   public SoftLayerTemplateOptions blockUntilRunning(boolean 
blockUntilRunning) {
+      return 
SoftLayerTemplateOptions.class.cast(super.blockUntilRunning(blockUntilRunning));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions dontAuthorizePublicKey() {
+      return 
SoftLayerTemplateOptions.class.cast(super.dontAuthorizePublicKey());
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions nameTask(String name) {
+      return SoftLayerTemplateOptions.class.cast(super.nameTask(name));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions runAsRoot(boolean runAsRoot) {
+      return SoftLayerTemplateOptions.class.cast(super.runAsRoot(runAsRoot));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions runScript(Statement script) {
+      return SoftLayerTemplateOptions.class.cast(super.runScript(script));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions overrideLoginCredentials(LoginCredentials 
overridingCredentials) {
+      return 
SoftLayerTemplateOptions.class.cast(super.overrideLoginCredentials(overridingCredentials));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions overrideLoginPassword(String password) {
+      return 
SoftLayerTemplateOptions.class.cast(super.overrideLoginPassword(password));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions overrideLoginPrivateKey(String privateKey) {
+      return 
SoftLayerTemplateOptions.class.cast(super.overrideLoginPrivateKey(privateKey));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions overrideLoginUser(String loginUser) {
+      return 
SoftLayerTemplateOptions.class.cast(super.overrideLoginUser(loginUser));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
+   public SoftLayerTemplateOptions overrideAuthenticateSudo(boolean 
authenticateSudo) {
+      return 
SoftLayerTemplateOptions.class.cast(super.overrideAuthenticateSudo(authenticateSudo));
+   }
+
+   /**
+    * {@inheritDoc}
+    */
+   @Override
    public SoftLayerTemplateOptions userMetadata(Map<String, String> 
userMetadata) {
       return 
SoftLayerTemplateOptions.class.cast(super.userMetadata(userMetadata));
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5e1c476/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/strategy/SoftLayerComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/strategy/SoftLayerComputeServiceAdapter.java
 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/strategy/SoftLayerComputeServiceAdapter.java
index 35e7615..21567f7 100644
--- 
a/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/strategy/SoftLayerComputeServiceAdapter.java
+++ 
b/providers/softlayer/src/main/java/org/jclouds/softlayer/compute/strategy/SoftLayerComputeServiceAdapter.java
@@ -30,7 +30,6 @@ import static 
org.jclouds.compute.util.ComputeServiceUtils.getSpace;
 import static 
org.jclouds.softlayer.reference.SoftLayerConstants.PROPERTY_SOFTLAYER_VIRTUALGUEST_ACTIVE_TRANSACTIONS_DELAY;
 import static 
org.jclouds.softlayer.reference.SoftLayerConstants.PROPERTY_SOFTLAYER_VIRTUALGUEST_LOGIN_DETAILS_DELAY;
 import static org.jclouds.util.Predicates2.retry;
-
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -82,6 +81,7 @@ import com.google.common.base.Supplier;
 import com.google.common.collect.ComparisonChain;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
 import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Sets;
@@ -99,7 +99,6 @@ public class SoftLayerComputeServiceAdapter implements
    private static final int USER_META_NOTES_MAX_LENGTH = 1000;
    private static final String BOOTABLE_DEVICE = "0";
    public static final String DEFAULT_DISK_TYPE = "LOCAL";
-   public static final int DEFAULT_MAX_PORT_SPEED = 100;
 
    @Resource
    @Named(ComputeServiceConstants.COMPUTE_LOGGER)
@@ -136,9 +135,12 @@ public class SoftLayerComputeServiceAdapter implements
 
       SoftLayerTemplateOptions templateOptions = 
template.getOptions().as(SoftLayerTemplateOptions.class);
       String domainName = templateOptions.getDomainName();
-      String diskType = templateOptions.getDiskType().or(DEFAULT_DISK_TYPE);
-      boolean hourlyBillingFlag = 
templateOptions.isHourlyBillingFlag().or(true);
-      int maxPortSpeed = 
templateOptions.getPortSpeed().or(DEFAULT_MAX_PORT_SPEED);
+      String diskType = templateOptions.getDiskType() == null ? 
DEFAULT_DISK_TYPE : templateOptions.getDiskType();
+      boolean hourlyBillingFlag = templateOptions.isHourlyBillingFlag()  == 
null ? true : templateOptions.isHourlyBillingFlag();
+      Integer portSpeed = templateOptions.getPortSpeed();
+      Set<VirtualGuestNetworkComponent> networkComponents = portSpeed != null ?
+              
ImmutableSet.of(VirtualGuestNetworkComponent.builder().speed(portSpeed).build())
 :
+              ImmutableSet.<VirtualGuestNetworkComponent>of();
       final Datacenter datacenter = 
Datacenter.builder().name(template.getLocation().getId()).build();
       final String imageId = template.getImage().getId();
       int cores = (int) 
template.getHardware().getProcessors().get(0).getCores();
@@ -151,10 +153,12 @@ public class SoftLayerComputeServiceAdapter implements
               .startCpus(cores)
               .maxMemory(template.getHardware().getRam())
               .datacenter(datacenter)
-              .localDiskFlag(isLocalDisk(diskType));
+              .localDiskFlag(isLocalDisk(diskType))
+              .networkComponents(networkComponents);
+
       // set operating system or blockDeviceTemplateGroup
       Optional<OperatingSystem> optionalOperatingSystem = 
tryExtractOperatingSystemFrom(imageId);
-      if (optionalOperatingSystem.isPresent()) {
+      if (optionalOperatingSystem != null) {
          virtualGuestBuilder.operatingSystem(optionalOperatingSystem.get());
       // the imageId specified is an id of a public/private/flex image
       } else {
@@ -163,47 +167,47 @@ public class SoftLayerComputeServiceAdapter implements
          
virtualGuestBuilder.blockDeviceTemplateGroup(blockDeviceTemplateGroup).build();
       }
       // set multi-disks
-      if (templateOptions.getBlockDevices().isPresent()) {
-         List<VirtualGuestBlockDevice> blockDevices = 
getBlockDevices(templateOptions.getBlockDevices().get(), diskType);
+      if (!templateOptions.getBlockDevices().isEmpty()) {
+         List<VirtualGuestBlockDevice> blockDevices = 
getBlockDevices(templateOptions.getBlockDevices(), diskType);
          virtualGuestBuilder.blockDevices(blockDevices);
       }
       // set dedicatedAccountHostOnlyFlag
-      if (templateOptions.isDedicatedAccountHostOnlyFlag().isPresent()) {
-         
virtualGuestBuilder.dedicatedAccountHostOnly(templateOptions.isDedicatedAccountHostOnlyFlag().get());
+      if (templateOptions.isDedicatedAccountHostOnlyFlag() != null) {
+         
virtualGuestBuilder.dedicatedAccountHostOnly(templateOptions.isDedicatedAccountHostOnlyFlag());
       }
       // set privateNetworkOnlyFlag
-      if (templateOptions.isPrivateNetworkOnlyFlag().isPresent()) {
-         
virtualGuestBuilder.privateNetworkOnlyFlag(templateOptions.isPrivateNetworkOnlyFlag().get());
+      if (templateOptions.isPrivateNetworkOnlyFlag() != null) {
+         
virtualGuestBuilder.privateNetworkOnlyFlag(templateOptions.isPrivateNetworkOnlyFlag());
       }
       // set primaryNetworkComponent.networkVlan.id
-      if 
(templateOptions.getPrimaryNetworkComponentNetworkVlanId().isPresent()) {
-         int primaryNetworkComponentNetworkVlanId = 
templateOptions.getPrimaryNetworkComponentNetworkVlanId().get();
+      if (templateOptions.getPrimaryNetworkComponentNetworkVlanId() != null) {
+         int primaryNetworkComponentNetworkVlanId = 
templateOptions.getPrimaryNetworkComponentNetworkVlanId();
          virtualGuestBuilder.primaryNetworkComponent(
                  VirtualGuestNetworkComponent.builder()
                          
.networkVlan(NetworkVlan.builder().id(primaryNetworkComponentNetworkVlanId).build())
-                         .speed(maxPortSpeed).build());
+                         .build());
       }
       // set primaryBackendNetworkComponent.networkVlan.id
-      if 
(templateOptions.getPrimaryBackendNetworkComponentNetworkVlanId().isPresent()) {
-         int primaryBackendNetworkComponentNetworkVlanId = 
templateOptions.getPrimaryBackendNetworkComponentNetworkVlanId().get();
+      if (templateOptions.getPrimaryBackendNetworkComponentNetworkVlanId() != 
null) {
+         int primaryBackendNetworkComponentNetworkVlanId = 
templateOptions.getPrimaryBackendNetworkComponentNetworkVlanId();
          virtualGuestBuilder.primaryBackendNetworkComponent(
                  VirtualGuestNetworkComponent.builder()
                          
.networkVlan(NetworkVlan.builder().id(primaryBackendNetworkComponentNetworkVlanId).build())
-                         .speed(maxPortSpeed).build());
+                         .build());
       }
       // set postInstallScriptUri
-      if (templateOptions.getPostInstallScriptUri().isPresent()) {
+      if (templateOptions.getPostInstallScriptUri() != null) {
          // Specifies the uri location of the script to be downloaded and run 
after installation is complete.
-         
virtualGuestBuilder.postInstallScriptUri(templateOptions.getPostInstallScriptUri().get());
+         
virtualGuestBuilder.postInstallScriptUri(templateOptions.getPostInstallScriptUri());
       }
       // set userData
-      if (templateOptions.getUserData().isPresent()) {
-         
virtualGuestBuilder.virtualGuestAttribute(VirtualGuestAttribute.builder().value(templateOptions.getUserData().get()).build());
+      if (templateOptions.getUserData() != null) {
+         
virtualGuestBuilder.virtualGuestAttribute(VirtualGuestAttribute.builder().value(templateOptions.getUserData()).build());
       }
       // set sshKeys
-      if (templateOptions.getSshKeys().isPresent()) {
+      if (!templateOptions.getSshKeys().isEmpty()) {
          Set<SecuritySshKey> sshKeys = Sets.newHashSet();
-         for (int sshKeyId : templateOptions.getSshKeys().get()) {
+         for (int sshKeyId : templateOptions.getSshKeys()) {
             sshKeys.add(SecuritySshKey.builder().id(sshKeyId).build());
          }
          virtualGuestBuilder.sshKeys(sshKeys);
@@ -215,7 +219,7 @@ public class SoftLayerComputeServiceAdapter implements
       logger.trace("<< VirtualGuest(%s)", result.getId());
 
       // tags
-      if (templateOptions.getTags() != null) {
+      if (!templateOptions.getTags().isEmpty()) {
          api.getVirtualGuestApi().setTags(result.getId(), 
templateOptions.getTags());
       }
 

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5e1c476/providers/softlayer/src/test/java/org/jclouds/softlayer/binders/VirtualGuestToJsonTest.java
----------------------------------------------------------------------
diff --git 
a/providers/softlayer/src/test/java/org/jclouds/softlayer/binders/VirtualGuestToJsonTest.java
 
b/providers/softlayer/src/test/java/org/jclouds/softlayer/binders/VirtualGuestToJsonTest.java
index 8a9d8b3..3ff4179 100644
--- 
a/providers/softlayer/src/test/java/org/jclouds/softlayer/binders/VirtualGuestToJsonTest.java
+++ 
b/providers/softlayer/src/test/java/org/jclouds/softlayer/binders/VirtualGuestToJsonTest.java
@@ -25,9 +25,11 @@ import org.jclouds.softlayer.domain.Datacenter;
 import org.jclouds.softlayer.domain.OperatingSystem;
 import org.jclouds.softlayer.domain.VirtualGuest;
 import org.jclouds.softlayer.domain.VirtualGuestBlockDeviceTemplateGroup;
+import org.jclouds.softlayer.domain.VirtualGuestNetworkComponent;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import com.google.common.collect.ImmutableSet;
 import com.google.gson.Gson;
 
 @Test(groups = "unit", testName = "VirtualGuestToJsonTest")
@@ -56,6 +58,7 @@ public class VirtualGuestToJsonTest {
                       .operatingSystemReferenceCode("UBUNTU_12_64")
                       .build())
               .localDiskFlag(true)
+              
.networkComponents(ImmutableSet.<VirtualGuestNetworkComponent>of())
               .build();
 
       request = binder.bindToRequest(request, virtualGuestWithOS);
@@ -80,6 +83,7 @@ public class VirtualGuestToJsonTest {
                       .globalIdentifier("ffaafa98-4b4a-4fa7-b9f7-b1bad5ec50f0")
                       .build())
               .localDiskFlag(true)
+              
.networkComponents(ImmutableSet.<VirtualGuestNetworkComponent>of())
               .build();
 
       request = binder.bindToRequest(request, 
virtualGuestWithVirtualGuestBlockDeviceTemplateGroup);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/f5e1c476/providers/softlayer/src/test/java/org/jclouds/softlayer/compute/SoftLayerComputeServiceContextLiveTest.java
----------------------------------------------------------------------
diff --git 
a/providers/softlayer/src/test/java/org/jclouds/softlayer/compute/SoftLayerComputeServiceContextLiveTest.java
 
b/providers/softlayer/src/test/java/org/jclouds/softlayer/compute/SoftLayerComputeServiceContextLiveTest.java
index f5c29d6..e75902a 100644
--- 
a/providers/softlayer/src/test/java/org/jclouds/softlayer/compute/SoftLayerComputeServiceContextLiveTest.java
+++ 
b/providers/softlayer/src/test/java/org/jclouds/softlayer/compute/SoftLayerComputeServiceContextLiveTest.java
@@ -67,9 +67,11 @@ public class SoftLayerComputeServiceContextLiveTest extends 
BaseComputeServiceCo
       // test passing custom options
       SoftLayerTemplateOptions options = 
template.getOptions().as(SoftLayerTemplateOptions.class);
       options.domainName("live.org");
+      options.portSpeed(100);
 
       //tags
       options.tags(ImmutableList.of("jclouds"));
+
       Set<? extends NodeMetadata> nodes = 
context.getComputeService().createNodesInGroup(name, numNodes, template);
       assertEquals(numNodes, nodes.size(), "wrong number of nodes");
       for (NodeMetadata node : nodes) {

Reply via email to