1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.trmk.vcloud_0_8.compute.options;
20
21 import static com.google.common.base.Preconditions.checkNotNull;
22 import static com.google.common.base.Preconditions.checkState;
23
24 import java.util.Arrays;
25
26 import org.jclouds.compute.options.TemplateOptions;
27 import org.jclouds.io.Payload;
28 import org.jclouds.util.Preconditions2;
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 public 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
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
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
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
104
105 public static TerremarkVCloudTemplateOptions noKeyPair() {
106 TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
107 return TerremarkVCloudTemplateOptions.class.cast(options.noKeyPair());
108 }
109
110
111
112
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
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
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
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
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
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
161
162 public static TerremarkVCloudTemplateOptions withDetails() {
163 TerremarkVCloudTemplateOptions options = new TerremarkVCloudTemplateOptions();
164 return TerremarkVCloudTemplateOptions.class.cast(options.withMetadata());
165 }
166
167 }
168
169
170
171
172
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
182
183
184
185
186
187 @Override
188 public TerremarkVCloudTemplateOptions inboundPorts(int... ports) {
189 return TerremarkVCloudTemplateOptions.class.cast(super.inboundPorts(ports));
190 }
191
192
193
194
195 @Override
196 public TerremarkVCloudTemplateOptions authorizePublicKey(String publicKey) {
197 return TerremarkVCloudTemplateOptions.class.cast(super.authorizePublicKey(publicKey));
198 }
199
200
201
202
203 @Override
204 @Deprecated
205 public TerremarkVCloudTemplateOptions authorizePublicKey(Payload publicKey) {
206 return TerremarkVCloudTemplateOptions.class.cast(super.authorizePublicKey(publicKey));
207 }
208
209
210
211
212 @Override
213 public TerremarkVCloudTemplateOptions installPrivateKey(String privateKey) {
214 return TerremarkVCloudTemplateOptions.class.cast(super.installPrivateKey(privateKey));
215 }
216
217
218
219
220 @Override
221 @Deprecated
222 public TerremarkVCloudTemplateOptions installPrivateKey(Payload privateKey) {
223 return TerremarkVCloudTemplateOptions.class.cast(super.installPrivateKey(privateKey));
224 }
225
226
227
228
229 @Override
230 public TerremarkVCloudTemplateOptions runScript(Payload script) {
231 return TerremarkVCloudTemplateOptions.class.cast(super.runScript(script));
232 }
233
234
235
236
237 @Override
238 @Deprecated
239 public TerremarkVCloudTemplateOptions runScript(byte[] script) {
240 return TerremarkVCloudTemplateOptions.class.cast(super.runScript(script));
241 }
242
243
244
245
246 @Override
247 public TerremarkVCloudTemplateOptions withMetadata() {
248 return TerremarkVCloudTemplateOptions.class.cast(super.withMetadata());
249 }
250
251
252
253
254 public String getSshKeyFingerprint() {
255 return keyPair;
256 }
257
258
259
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 }