Repository: jclouds
Updated Branches:
  refs/heads/1.9.x 0248931cc -> 680ab5931


Fix TemplateOptions.clone; adds RunScriptOptions.copyTo

Previously not all fields of RunScriptOptions were included in copyTo
(e.g. runAsRoot and initScript).

Also options.equals(options.clone()) failed if options.loginPassword
was originally null - in the cloned object, it would be Optional.absent.

Fixes RunScriptOptions.toString, to only say “loginPasswordPresent”
if optional.isPresent().


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

Branch: refs/heads/1.9.x
Commit: 680ab593168d07759b864ca915bab838537873d9
Parents: 0248931
Author: Aled Sage <[email protected]>
Authored: Sun Jan 24 10:32:46 2016 +0000
Committer: Ignasi Barrera <[email protected]>
Committed: Tue Mar 8 21:50:06 2016 +0100

----------------------------------------------------------------------
 .../compute/options/RunScriptOptions.java       | 35 ++++++++++++++++++--
 .../compute/options/TemplateOptions.java        | 18 +---------
 2 files changed, 34 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/680ab593/compute/src/main/java/org/jclouds/compute/options/RunScriptOptions.java
----------------------------------------------------------------------
diff --git 
a/compute/src/main/java/org/jclouds/compute/options/RunScriptOptions.java 
b/compute/src/main/java/org/jclouds/compute/options/RunScriptOptions.java
index 2e072b9..7c90c22 100644
--- a/compute/src/main/java/org/jclouds/compute/options/RunScriptOptions.java
+++ b/compute/src/main/java/org/jclouds/compute/options/RunScriptOptions.java
@@ -42,6 +42,25 @@ public class RunScriptOptions {
     */
    public static final RunScriptOptions NONE = new 
ImmutableRunScriptOptions(new RunScriptOptions());
 
+   public void copyTo(RunScriptOptions to) {
+      if (this.getPort() != -1)
+         to.blockOnPort(this.getPort(), this.getSeconds());
+      if (this.getTaskName() != null)
+         to.nameTask(this.getTaskName());
+      to.runAsRoot(this.shouldRunAsRoot());
+      to.blockOnComplete(this.shouldBlockOnComplete());
+      to.wrapInInitScript(this.shouldWrapInInitScript());
+      if (this.hasLoginPasswordOption())
+         to.overrideLoginPassword(this.loginPassword);
+      if (this.hasLoginPrivateKeyOption())
+         to.overrideLoginPrivateKey(this.loginPrivateKey);
+      if (this.getLoginUser() != null)
+         to.overrideLoginUser(this.getLoginUser());
+      if (this.shouldAuthenticateSudo() != null) {
+         to.overrideAuthenticateSudo(this.shouldAuthenticateSudo());
+      }
+   }
+   
    public static class ImmutableRunScriptOptions extends RunScriptOptions {
       private final RunScriptOptions delegate;
 
@@ -197,6 +216,18 @@ public class RunScriptOptions {
       return this;
    }
 
+   public RunScriptOptions overrideLoginPassword(Optional<String> password) {
+      checkNotNull(password, "password");
+      this.loginPassword = password;
+      return this;
+   }
+
+   public RunScriptOptions overrideLoginPrivateKey(Optional<String> 
privateKey) {
+      checkNotNull(privateKey, "privateKey");
+      this.loginPrivateKey = privateKey;
+      return this;
+   }
+
    public RunScriptOptions overrideAuthenticateSudo(boolean authenticateSudo) {
       this.authenticateSudo = authenticateSudo;
       return this;
@@ -453,9 +484,9 @@ public class RunScriptOptions {
    protected ToStringHelper string() {
       ToStringHelper toString = Objects.toStringHelper("").omitNullValues();
       toString.add("loginUser", loginUser);
-      if (loginPassword != null)
+      if (loginPassword != null && loginPassword.isPresent())
          toString.add("loginPasswordPresent", true);
-      if (loginPrivateKey != null)
+      if (loginPrivateKey != null && loginPrivateKey.isPresent())
          toString.add("loginPrivateKeyPresent", true);
       toString.add("authenticateSudo", authenticateSudo);
       if (port != -1 && seconds != -1) // TODO: not primitives

http://git-wip-us.apache.org/repos/asf/jclouds/blob/680ab593/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java
----------------------------------------------------------------------
diff --git 
a/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java 
b/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java
index 450969f..115710c 100644
--- a/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java
+++ b/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java
@@ -64,6 +64,7 @@ public class TemplateOptions extends RunScriptOptions 
implements Cloneable {
    }
 
    public void copyTo(TemplateOptions to) {
+      super.copyTo(to);
       if (!Arrays.equals(to.getInboundPorts(), this.getInboundPorts()))
          to.inboundPorts(this.getInboundPorts());
       if (this.getRunScript() != null)
@@ -74,8 +75,6 @@ public class TemplateOptions extends RunScriptOptions 
implements Cloneable {
          to.installPrivateKey(this.getPrivateKey());
       if (this.getPublicKey() != null)
          to.authorizePublicKey(this.getPublicKey());
-      if (this.getPort() != -1)
-         to.blockOnPort(this.getPort(), this.getSeconds());
       if (!this.getUserMetadata().isEmpty())
          to.userMetadata(this.getUserMetadata());
       if (!this.getTags().isEmpty())
@@ -84,21 +83,6 @@ public class TemplateOptions extends RunScriptOptions 
implements Cloneable {
          to.nodeNames(getNodeNames());
       if (!this.shouldBlockUntilRunning())
          to.blockUntilRunning(false);
-      if (!this.shouldBlockOnComplete())
-         to.blockOnComplete(false);
-
-      LoginCredentials fromCreds = new LoginCredentials.Builder().
-            user(this.getLoginUser()).
-            password(this.hasLoginPassword() ? this.getLoginPassword() : null).
-            privateKey(this.hasLoginPrivateKeyOption() ? 
this.getLoginPrivateKey() : null).
-            authenticateSudo(authenticateSudo == null ? false : 
authenticateSudo).
-            build();
-      if (fromCreds != null) {
-         to.overrideLoginCredentials(fromCreds);
-      }
-
-      if (this.getTaskName() != null)
-         to.nameTask(this.getTaskName());
       if (!this.getNetworks().isEmpty())
          to.networks(this.getNetworks());
    }

Reply via email to