1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.aws.ec2.domain;
20
21 import static com.google.common.base.Preconditions.checkNotNull;
22
23 import java.util.Date;
24
25 import javax.annotation.Nullable;
26
27 import com.google.common.base.CaseFormat;
28
29
30
31
32
33 public class SpotInstanceRequest implements Comparable<SpotInstanceRequest> {
34 public static Builder builder() {
35 return new Builder();
36 }
37
38 public static class Builder {
39 private String region;
40 private String availabilityZoneGroup;
41 private String launchedAvailabilityZone;
42 private Date createTime;
43 private String faultCode;
44 private String faultMessage;
45 private String instanceId;
46 private String launchGroup;
47 private LaunchSpecification launchSpecification;
48 private String productDescription;
49 private String id;
50 private float spotPrice;
51 private State state;
52 private Type type;
53 private Date validFrom;
54 private Date validUntil;
55
56 public Builder clear() {
57 this.region = null;
58 this.availabilityZoneGroup = null;
59 this.launchedAvailabilityZone = null;
60 this.createTime = null;
61 this.faultCode = null;
62 this.faultMessage = null;
63 this.instanceId = null;
64 this.launchGroup = null;
65 this.launchSpecification = null;
66 this.productDescription = null;
67 this.id = null;
68 this.spotPrice = 0;
69 this.state = null;
70 this.type = null;
71 this.validFrom = null;
72 this.validUntil = null;
73 return this;
74 }
75
76 public Builder region(String region) {
77 this.region = region;
78 return this;
79 }
80
81 public Builder availabilityZoneGroup(String availabilityZoneGroup) {
82 this.availabilityZoneGroup = availabilityZoneGroup;
83 return this;
84 }
85
86 public Builder launchedAvailabilityZone(String launchedAvailabilityZone) {
87 this.launchedAvailabilityZone = launchedAvailabilityZone;
88 return this;
89 }
90
91 public Builder createTime(Date createTime) {
92 this.createTime = createTime;
93 return this;
94 }
95
96 public Builder faultCode(String faultCode) {
97 this.faultCode = faultCode;
98 return this;
99 }
100
101 public Builder faultMessage(String faultMessage) {
102 this.faultMessage = faultMessage;
103 return this;
104 }
105
106 public Builder instanceId(String instanceId) {
107 this.instanceId = instanceId;
108 return this;
109 }
110
111 public Builder launchGroup(String launchGroup) {
112 this.launchGroup = launchGroup;
113 return this;
114 }
115
116 public Builder launchSpecification(LaunchSpecification launchSpecification) {
117 this.launchSpecification = launchSpecification;
118 return this;
119 }
120
121 public Builder productDescription(String productDescription) {
122 this.productDescription = productDescription;
123 return this;
124 }
125
126 public Builder id(String id) {
127 this.id = id;
128 return this;
129 }
130
131 public Builder spotPrice(float spotPrice) {
132 this.spotPrice = spotPrice;
133 return this;
134 }
135
136 public Builder state(State state) {
137 this.state = state;
138 return this;
139 }
140
141 public Builder type(Type type) {
142 this.type = type;
143 return this;
144 }
145
146 public Builder validFrom(Date validFrom) {
147 this.validFrom = validFrom;
148 return this;
149 }
150
151 public Builder validUntil(Date validUntil) {
152 this.validUntil = validUntil;
153 return this;
154 }
155
156 public SpotInstanceRequest build() {
157 return new SpotInstanceRequest(region, availabilityZoneGroup, launchedAvailabilityZone, createTime, faultCode,
158 faultMessage, instanceId, launchGroup, launchSpecification, productDescription, id, spotPrice, state,
159 type, validFrom, validUntil);
160 }
161 }
162
163 public enum Type {
164 ONE_TIME, PERSISTENT, UNRECOGNIZED;
165
166 public String value() {
167 return (CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name()));
168 }
169
170 @Override
171 public String toString() {
172 return value();
173 }
174
175 public static Type fromValue(String type) {
176 try {
177 return valueOf(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(type, "type")));
178 } catch (IllegalArgumentException e) {
179 return UNRECOGNIZED;
180 }
181 }
182 }
183
184 public enum State {
185 OPEN, ACTIVE, CANCELLED, CLOSED, UNRECOGNIZED;
186
187 public String value() {
188 return (CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, name()));
189 }
190
191 @Override
192 public String toString() {
193 return value();
194 }
195
196 public static State fromValue(String state) {
197 try {
198 return valueOf(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(state, "type")));
199 } catch (IllegalArgumentException e) {
200 return UNRECOGNIZED;
201 }
202 }
203 }
204
205 private final String region;
206 private final String availabilityZoneGroup;
207 private final String launchedAvailabilityZone;
208 private final Date createTime;
209 private final String faultCode;
210 private final String faultMessage;
211 private final String instanceId;
212 private final String launchGroup;
213 private final LaunchSpecification launchSpecification;
214 private final String productDescription;
215 private final String id;
216 private final float spotPrice;
217 private final State state;
218 private final Type type;
219 private final Date validFrom;
220 private final Date validUntil;
221
222 public SpotInstanceRequest(String region, String availabilityZoneGroup, @Nullable String launchedAvailabilityZone,
223 Date createTime, String faultCode, String faultMessage, String instanceId, String launchGroup,
224 LaunchSpecification launchSpecification, String productDescription, String id, float spotPrice, State state,
225 Type type, Date validFrom, Date validUntil) {
226 this.region = checkNotNull(region, "region");
227 this.availabilityZoneGroup = availabilityZoneGroup;
228 this.launchedAvailabilityZone = launchedAvailabilityZone;
229 this.createTime = createTime;
230 this.faultCode = faultCode;
231 this.faultMessage = faultMessage;
232 this.instanceId = instanceId;
233 this.launchGroup = launchGroup;
234 this.launchSpecification = launchSpecification;
235 this.productDescription = productDescription;
236 this.id = checkNotNull(id, "id");
237 this.spotPrice = spotPrice;
238 this.state = checkNotNull(state, "state");
239 this.type = checkNotNull(type, "type");
240 this.validFrom = validFrom;
241 this.validUntil = validUntil;
242 }
243
244
245
246
247 public String getRegion() {
248 return region;
249 }
250
251 public String getAvailabilityZoneGroup() {
252 return availabilityZoneGroup;
253 }
254
255 public String getLaunchedAvailabilityZone() {
256 return launchedAvailabilityZone;
257 }
258
259 public Date getCreateTime() {
260 return createTime;
261 }
262
263 public String getFaultCode() {
264 return faultCode;
265 }
266
267 public String getFaultMessage() {
268 return faultMessage;
269 }
270
271 public String getInstanceId() {
272 return instanceId;
273 }
274
275 public String getLaunchGroup() {
276 return launchGroup;
277 }
278
279 public LaunchSpecification getLaunchSpecification() {
280 return launchSpecification;
281 }
282
283 public String getProductDescription() {
284 return productDescription;
285 }
286
287 public String getId() {
288 return id;
289 }
290
291 public float getSpotPrice() {
292 return spotPrice;
293 }
294
295 public State getState() {
296 return state;
297 }
298
299 public Type getType() {
300 return type;
301 }
302
303 public Date getValidFrom() {
304 return validFrom;
305 }
306
307 public Date getValidUntil() {
308 return validUntil;
309 }
310
311 @Override
312 public int hashCode() {
313 final int prime = 31;
314 int result = 1;
315 result = prime * result + ((availabilityZoneGroup == null) ? 0 : availabilityZoneGroup.hashCode());
316 result = prime * result + ((createTime == null) ? 0 : createTime.hashCode());
317 result = prime * result + ((faultCode == null) ? 0 : faultCode.hashCode());
318 result = prime * result + ((faultMessage == null) ? 0 : faultMessage.hashCode());
319 result = prime * result + ((id == null) ? 0 : id.hashCode());
320 result = prime * result + ((instanceId == null) ? 0 : instanceId.hashCode());
321 result = prime * result + ((launchGroup == null) ? 0 : launchGroup.hashCode());
322 result = prime * result + ((launchSpecification == null) ? 0 : launchSpecification.hashCode());
323 result = prime * result + ((launchedAvailabilityZone == null) ? 0 : launchedAvailabilityZone.hashCode());
324 result = prime * result + ((productDescription == null) ? 0 : productDescription.hashCode());
325 result = prime * result + ((region == null) ? 0 : region.hashCode());
326 result = prime * result + Float.floatToIntBits(spotPrice);
327 result = prime * result + ((state == null) ? 0 : state.hashCode());
328 result = prime * result + ((type == null) ? 0 : type.hashCode());
329 result = prime * result + ((validFrom == null) ? 0 : validFrom.hashCode());
330 result = prime * result + ((validUntil == null) ? 0 : validUntil.hashCode());
331 return result;
332 }
333
334 @Override
335 public boolean equals(Object obj) {
336 if (this == obj)
337 return true;
338 if (obj == null)
339 return false;
340 if (getClass() != obj.getClass())
341 return false;
342 SpotInstanceRequest other = (SpotInstanceRequest) obj;
343 if (availabilityZoneGroup == null) {
344 if (other.availabilityZoneGroup != null)
345 return false;
346 } else if (!availabilityZoneGroup.equals(other.availabilityZoneGroup))
347 return false;
348 if (createTime == null) {
349 if (other.createTime != null)
350 return false;
351 } else if (!createTime.equals(other.createTime))
352 return false;
353 if (faultCode == null) {
354 if (other.faultCode != null)
355 return false;
356 } else if (!faultCode.equals(other.faultCode))
357 return false;
358 if (faultMessage == null) {
359 if (other.faultMessage != null)
360 return false;
361 } else if (!faultMessage.equals(other.faultMessage))
362 return false;
363 if (id == null) {
364 if (other.id != null)
365 return false;
366 } else if (!id.equals(other.id))
367 return false;
368 if (instanceId == null) {
369 if (other.instanceId != null)
370 return false;
371 } else if (!instanceId.equals(other.instanceId))
372 return false;
373 if (launchGroup == null) {
374 if (other.launchGroup != null)
375 return false;
376 } else if (!launchGroup.equals(other.launchGroup))
377 return false;
378 if (launchSpecification == null) {
379 if (other.launchSpecification != null)
380 return false;
381 } else if (!launchSpecification.equals(other.launchSpecification))
382 return false;
383 if (launchedAvailabilityZone == null) {
384 if (other.launchedAvailabilityZone != null)
385 return false;
386 } else if (!launchedAvailabilityZone.equals(other.launchedAvailabilityZone))
387 return false;
388 if (productDescription == null) {
389 if (other.productDescription != null)
390 return false;
391 } else if (!productDescription.equals(other.productDescription))
392 return false;
393 if (region == null) {
394 if (other.region != null)
395 return false;
396 } else if (!region.equals(other.region))
397 return false;
398 if (Float.floatToIntBits(spotPrice) != Float.floatToIntBits(other.spotPrice))
399 return false;
400 if (state != other.state)
401 return false;
402 if (type != other.type)
403 return false;
404 if (validFrom == null) {
405 if (other.validFrom != null)
406 return false;
407 } else if (!validFrom.equals(other.validFrom))
408 return false;
409 if (validUntil == null) {
410 if (other.validUntil != null)
411 return false;
412 } else if (!validUntil.equals(other.validUntil))
413 return false;
414 return true;
415 }
416
417 @Override
418 public String toString() {
419 return "[region=" + region + ", availabilityZoneGroup=" + availabilityZoneGroup + ", launchedAvailabilityZone="
420 + launchedAvailabilityZone + ", createTime=" + createTime + ", faultCode=" + faultCode + ", faultMessage="
421 + faultMessage + ", instanceId=" + instanceId + ", launchGroup=" + launchGroup + ", launchSpecification="
422 + launchSpecification + ", productDescription=" + productDescription + ", id=" + id + ", spotPrice="
423 + spotPrice + ", state=" + state + ", type=" + type + ", validFrom=" + validFrom + ", validUntil="
424 + validUntil + "]";
425 }
426
427 @Override
428 public int compareTo(SpotInstanceRequest arg0) {
429 return createTime.compareTo(arg0.createTime);
430 }
431
432 }