EMMA Coverage Report (generated Fri Aug 26 14:14:05 EDT 2011)
[all classes][org.jclouds.trmk.vcloud_0_8.compute.options]

COVERAGE SUMMARY FOR SOURCE FILE [TerremarkVCloudTemplateOptions.java]

nameclass, %method, %block, %line, %
TerremarkVCloudTemplateOptions.java100% (2/2)53%  (16/30)38%  (149/394)41%  (29.7/73)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class TerremarkVCloudTemplateOptions100% (1/1)50%  (10/20)28%  (83/293)33%  (18/55)
authorizePublicKey (Payload): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/7)0%   (0/1)
clone (): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/9)0%   (0/3)
copyTo (TemplateOptions): void 0%   (0/1)0%   (0/25)0%   (0/8)
equals (Object): boolean 0%   (0/1)0%   (0/46)0%   (0/15)
hashCode (): int 0%   (0/1)0%   (0/31)0%   (0/5)
installPrivateKey (Payload): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/7)0%   (0/1)
runScript (Payload): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/7)0%   (0/1)
runScript (byte []): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/7)0%   (0/1)
toString (): String 0%   (0/1)0%   (0/65)0%   (0/1)
withMetadata (): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/6)0%   (0/1)
<static initializer> 100% (1/1)100% (5/5)100% (1/1)
TerremarkVCloudTemplateOptions (): void 100% (1/1)100% (6/6)100% (3/3)
authorizePublicKey (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (7/7)100% (1/1)
blockOnPort (int, int): TerremarkVCloudTemplateOptions 100% (1/1)100% (8/8)100% (1/1)
getSshKeyFingerprint (): String 100% (1/1)100% (3/3)100% (1/1)
inboundPorts (int []): TerremarkVCloudTemplateOptions 100% (1/1)100% (7/7)100% (1/1)
installPrivateKey (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (7/7)100% (1/1)
noKeyPair (): TerremarkVCloudTemplateOptions 100% (1/1)100% (13/13)100% (3/3)
shouldAutomaticallyCreateKeyPair (): boolean 100% (1/1)100% (7/7)100% (1/1)
sshKeyFingerprint (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (20/20)100% (5/5)
     
class TerremarkVCloudTemplateOptions$Builder100% (1/1)60%  (6/10)65%  (66/101)63%  (12/19)
TerremarkVCloudTemplateOptions$Builder (): void 0%   (0/1)0%   (0/3)0%   (0/1)
blockUntilRunning (boolean): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/11)0%   (0/2)
runScript (byte []): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/11)0%   (0/2)
withDetails (): TerremarkVCloudTemplateOptions 0%   (0/1)0%   (0/10)0%   (0/2)
authorizePublicKey (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (11/11)100% (2/2)
blockOnPort (int, int): TerremarkVCloudTemplateOptions 100% (1/1)100% (12/12)100% (2/2)
inboundPorts (int []): TerremarkVCloudTemplateOptions 100% (1/1)100% (11/11)100% (2/2)
installPrivateKey (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (11/11)100% (2/2)
noKeyPair (): TerremarkVCloudTemplateOptions 100% (1/1)100% (10/10)100% (2/2)
sshKeyFingerprint (String): TerremarkVCloudTemplateOptions 100% (1/1)100% (11/11)100% (2/2)

1/**
2 *
3 * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
4 *
5 * ====================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ====================================================================
18 */
19package org.jclouds.trmk.vcloud_0_8.compute.options;
20 
21import static com.google.common.base.Preconditions.checkNotNull;
22import static com.google.common.base.Preconditions.checkState;
23 
24import java.util.Arrays;
25 
26import org.jclouds.compute.options.TemplateOptions;
27import org.jclouds.io.Payload;
28import org.jclouds.util.Preconditions2;
29 
30/**
31 * Contains options supported in the {@code ComputeService#runNode} operation on the
32 * "trmk-vcloudexpress" provider. <h2>
33 * Usage</h2> The recommended way to instantiate a TerremarkVCloudTemplateOptions object is to
34 * statically import TerremarkVCloudTemplateOptions.* and invoke a static creation method followed
35 * by an instance mutator (if needed):
36 * <p/>
37 * <code>
38 * import static org.jclouds.vcloud.terremark.compute.options.TerremarkVCloudTemplateOptions.Builder.*;
39 * <p/>
40 * ComputeService client = // get connection
41 * templateBuilder.options(inboundPorts(22, 80, 8080, 443));
42 * Set<? extends NodeMetadata> set = client.runNodesWithTag(tag, 2, templateBuilder.build());
43 * <code>
44 * 
45 * @author Adrian Cole
46 */
47public class TerremarkVCloudTemplateOptions extends TemplateOptions implements Cloneable {
48   @Override
49   public TerremarkVCloudTemplateOptions clone() {
50      TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
51      copyTo(options);
52      return options;
53   }
54 
55   @Override
56   public void copyTo(TemplateOptions to) {
57      super.copyTo(to);
58      if (to instanceof TerremarkVCloudTemplateOptions) {
59         TerremarkVCloudTemplateOptions eTo = TerremarkVCloudTemplateOptions.class.cast(to);
60         if (noKeyPair)
61            eTo.noKeyPair();
62         if (keyPair != null)
63            eTo.keyPair = keyPair;
64      }
65   }
66 
67   private String keyPair = null;
68   private boolean noKeyPair;
69 
70   public static final TerremarkVCloudTemplateOptions NONE = new TerremarkVCloudTemplateOptions();
71 
72   /**
73    * Specifies the keypair used to run instances with
74    */
75   public TerremarkVCloudTemplateOptions sshKeyFingerprint(String keyPair) {
76      checkNotNull(keyPair, "use noKeyPair option to request boot without a keypair");
77      checkState(!noKeyPair, "you cannot specify both options keyPair and noKeyPair");
78      Preconditions2.checkNotEmpty(keyPair, "keypair must be non-empty");
79      this.keyPair = keyPair;
80      return this;
81   }
82 
83   /**
84    * Do not use a keypair on instances
85    */
86   public TerremarkVCloudTemplateOptions noKeyPair() {
87      checkState(keyPair == null, "you cannot specify both options keyPair and noKeyPair");
88      this.noKeyPair = true;
89      return this;
90   }
91 
92   public static class Builder {
93 
94      /**
95       * @see TerremarkVCloudTemplateOptions#sshKeyFingerprint
96       */
97      public static TerremarkVCloudTemplateOptions sshKeyFingerprint(String keyPair) {
98         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
99         return TerremarkVCloudTemplateOptions.class.cast(options.sshKeyFingerprint(keyPair));
100      }
101 
102      /**
103       * @see TerremarkVCloudTemplateOptions#noKeyPair
104       */
105      public static TerremarkVCloudTemplateOptions noKeyPair() {
106         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
107         return TerremarkVCloudTemplateOptions.class.cast(options.noKeyPair());
108      }
109 
110      // methods that only facilitate returning the correct object type
111      /**
112       * @see TemplateOptions#inboundPorts
113       */
114      public static TerremarkVCloudTemplateOptions inboundPorts(int... ports) {
115         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
116         return TerremarkVCloudTemplateOptions.class.cast(options.inboundPorts(ports));
117      }
118 
119      /**
120       * @see TemplateOptions#port
121       */
122      public static TerremarkVCloudTemplateOptions blockOnPort(int port, int seconds) {
123         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
124         return TerremarkVCloudTemplateOptions.class.cast(options.blockOnPort(port, seconds));
125      }
126 
127      /**
128       * @see TemplateOptions#blockUntilRunning
129       */
130      public static TerremarkVCloudTemplateOptions blockUntilRunning(boolean blockUntilRunning) {
131         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
132         return TerremarkVCloudTemplateOptions.class.cast(options.blockUntilRunning(blockUntilRunning));
133      }
134 
135      /**
136       * @see TemplateOptions#runScript
137       */
138      public static TerremarkVCloudTemplateOptions runScript(byte[] script) {
139         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
140         return TerremarkVCloudTemplateOptions.class.cast(options.runScript(script));
141      }
142 
143      /**
144       * @see TemplateOptions#installPrivateKey
145       */
146      public static TerremarkVCloudTemplateOptions installPrivateKey(String rsaKey) {
147         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
148         return TerremarkVCloudTemplateOptions.class.cast(options.installPrivateKey(rsaKey));
149      }
150 
151      /**
152       * @see TemplateOptions#authorizePublicKey
153       */
154      public static TerremarkVCloudTemplateOptions authorizePublicKey(String rsaKey) {
155         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
156         return TerremarkVCloudTemplateOptions.class.cast(options.authorizePublicKey(rsaKey));
157      }
158 
159      /**
160       * @see TemplateOptions#withDetails
161       */
162      public static TerremarkVCloudTemplateOptions withDetails() {
163         TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
164         return TerremarkVCloudTemplateOptions.class.cast(options.withMetadata());
165      }
166 
167   }
168 
169   // methods that only facilitate returning the correct object type
170 
171   /**
172    * @see TemplateOptions#blockOnPort
173    */
174   @Override
175   public TerremarkVCloudTemplateOptions blockOnPort(int port, int seconds) {
176      return TerremarkVCloudTemplateOptions.class.cast(super.blockOnPort(port, seconds));
177   }
178 
179   /**
180    * 
181    * special thing is that we do assume if you are passing groups that you have everything you need
182    * already defined. for example, our option inboundPorts normally creates ingress rules
183    * accordingly but if we notice you've specified securityGroups, we do not mess with rules at all
184    * 
185    * @see TemplateOptions#inboundPorts
186    */
187   @Override
188   public TerremarkVCloudTemplateOptions inboundPorts(int... ports) {
189      return TerremarkVCloudTemplateOptions.class.cast(super.inboundPorts(ports));
190   }
191 
192   /**
193    * @see TemplateOptions#authorizePublicKey(String)
194    */
195   @Override
196   public TerremarkVCloudTemplateOptions authorizePublicKey(String publicKey) {
197      return TerremarkVCloudTemplateOptions.class.cast(super.authorizePublicKey(publicKey));
198   }
199 
200   /**
201    * @see TemplateOptions#authorizePublicKey(Payload)
202    */
203   @Override
204   @Deprecated
205   public TerremarkVCloudTemplateOptions authorizePublicKey(Payload publicKey) {
206      return TerremarkVCloudTemplateOptions.class.cast(super.authorizePublicKey(publicKey));
207   }
208 
209   /**
210    * @see TemplateOptions#installPrivateKey(String)
211    */
212   @Override
213   public TerremarkVCloudTemplateOptions installPrivateKey(String privateKey) {
214      return TerremarkVCloudTemplateOptions.class.cast(super.installPrivateKey(privateKey));
215   }
216 
217   /**
218    * @see TemplateOptions#installPrivateKey(Payload)
219    */
220   @Override
221   @Deprecated
222   public TerremarkVCloudTemplateOptions installPrivateKey(Payload privateKey) {
223      return TerremarkVCloudTemplateOptions.class.cast(super.installPrivateKey(privateKey));
224   }
225 
226   /**
227    * @see TemplateOptions#runScript(Payload)
228    */
229   @Override
230   public TerremarkVCloudTemplateOptions runScript(Payload script) {
231      return TerremarkVCloudTemplateOptions.class.cast(super.runScript(script));
232   }
233 
234   /**
235    * @see TemplateOptions#runScript(byte[])
236    */
237   @Override
238   @Deprecated
239   public TerremarkVCloudTemplateOptions runScript(byte[] script) {
240      return TerremarkVCloudTemplateOptions.class.cast(super.runScript(script));
241   }
242 
243   /**
244    * @see TemplateOptions#withMetadata
245    */
246   @Override
247   public TerremarkVCloudTemplateOptions withMetadata() {
248      return TerremarkVCloudTemplateOptions.class.cast(super.withMetadata());
249   }
250 
251   /**
252    * @return keyPair to use when running the instance or null, to generate a keypair.
253    */
254   public String getSshKeyFingerprint() {
255      return keyPair;
256   }
257 
258   /**
259    * @return true (default) if we are supposed to use a keypair
260    */
261   public boolean shouldAutomaticallyCreateKeyPair() {
262      return !noKeyPair;
263   }
264 
265   @Override
266   public int hashCode() {
267      final int prime = 31;
268      int result = super.hashCode();
269      result = prime * result + ((keyPair == null) ? 0 : keyPair.hashCode());
270      result = prime * result + (noKeyPair ? 1231 : 1237);
271      return result;
272   }
273 
274   @Override
275   public boolean equals(Object obj) {
276      if (this == obj)
277         return true;
278      if (!super.equals(obj))
279         return false;
280      if (getClass() != obj.getClass())
281         return false;
282      TerremarkVCloudTemplateOptions other = (TerremarkVCloudTemplateOptions) obj;
283      if (keyPair == null) {
284         if (other.keyPair != null)
285            return false;
286      } else if (!keyPair.equals(other.keyPair))
287         return false;
288      if (noKeyPair != other.noKeyPair)
289         return false;
290      return true;
291   }
292 
293   @Override
294   public String toString() {
295      return "TerremarkVCloudTemplateOptions [keyPair=" + keyPair + ", noKeyPair=" + noKeyPair + ", inboundPorts="
296            + Arrays.toString(inboundPorts) + ", privateKey=" + (privateKey != null) + ", publicKey="
297            + (publicKey != null) + ", runScript=" + (script != null) + ", port:seconds=" + port + ":" + seconds
298            + ", metadata/details: " + includeMetadata + "]";
299   }
300 
301}

[all classes][org.jclouds.trmk.vcloud_0_8.compute.options]
EMMA 2.0.5312 (C) Vladimir Roubtsov