From a56f2225b756595238fe357563d79d7bac9c40e2 Mon Sep 17 00:00:00 2001 From: Alex Yarmula Date: Mon, 26 Apr 2010 10:03:03 -0700 Subject: [PATCH] issue 202. http://code.google.com/p/jclouds/issues/detail?id=202. added withMetadata to TemplateOptions --- .../compute/internal/BaseComputeService.java | 4 ++++ .../compute/options/TemplateOptions.java | 18 +++++++++++++++++- .../compute/BaseComputeServiceLiveTest.java | 9 +++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java b/compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java index 945b6832d8..1dc1b064de 100755 --- a/compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java +++ b/compute/src/main/java/org/jclouds/compute/internal/BaseComputeService.java @@ -374,6 +374,10 @@ public class BaseComputeService implements ComputeService { // don't override checkNotNull(node.getCredentials(), "If the default credentials need to be used, they can't be null"); + checkNotNull(node.getCredentials().account, "Account name for ssh authentication must be " + + "specified. Try passing RunScriptOptions with new credentials"); + checkNotNull(node.getCredentials().key, "Key or password for ssh authentication must be " + + "specified. Try passing RunScriptOptions with new credentials"); } ComputeUtils.SshCallable callable; 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 defc3691f9..1d156ad1df 100644 --- a/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java +++ b/compute/src/main/java/org/jclouds/compute/options/TemplateOptions.java @@ -38,6 +38,8 @@ public class TemplateOptions { private int seconds = -1; + private boolean includeMetadata; + public int getPort() { return port; } @@ -66,6 +68,10 @@ public class TemplateOptions { return destroyOnError; } + public boolean isIncludeMetadata() { + return includeMetadata; + } + /** * When the node is started, wait until the following port is active */ @@ -127,6 +133,11 @@ public class TemplateOptions { return this; } + public TemplateOptions withMetadata() { + this.includeMetadata = true; + return this; + } + public static class Builder { /** * @see TemplateOptions#destroyOnError @@ -176,6 +187,11 @@ public class TemplateOptions { return options.authorizePublicKey(rsaKey); } + public static TemplateOptions withDetails() { + TemplateOptions options = new TemplateOptions(); + return options.withMetadata(); + } + } @Override @@ -183,6 +199,6 @@ public class TemplateOptions { return "TemplateOptions [inboundPorts=" + Arrays.toString(inboundPorts) + ", privateKey=" + (privateKey != null) + ", publicKey=" + (publicKey != null) + ", runScript=" + (script != null) + ", destroyOnError=" + destroyOnError + ", port:seconds=" + port - + ":" + seconds + "]"; + + ":" + seconds + ", metadata/details: " + includeMetadata + "]"; } } diff --git a/compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java b/compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java index c3266c12be..ce6e8452b5 100755 --- a/compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java +++ b/compute/src/test/java/org/jclouds/compute/BaseComputeServiceLiveTest.java @@ -47,6 +47,7 @@ import org.jclouds.compute.domain.Template; import org.jclouds.compute.domain.TemplateBuilder; import org.jclouds.compute.options.GetNodesOptions; import org.jclouds.compute.options.RunScriptOptions; +import org.jclouds.compute.options.TemplateOptions; import org.jclouds.domain.Credentials; import org.jclouds.domain.Location; import org.jclouds.http.HttpResponseException; @@ -316,6 +317,14 @@ public abstract class BaseComputeServiceLiveTest { testGet(); } + @Test(enabled = true/*, dependsOnMethods = "testTemplateMatch"*/) + public void testTemplateOptions() throws Exception { + TemplateOptions options = new TemplateOptions().withMetadata(); + Template t = client.templateBuilder().smallest().options(options).build(); + assert t.getOptions().isIncludeMetadata() : "The metadata option should be 'true' " + + "for the created template"; + } + public void testListNodes() throws Exception { for (Entry node : client.getNodes().entrySet()) { assertEquals(node.getKey(), node.getValue().getId());