1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.aws.ec2.functions;
20
21 import javax.inject.Singleton;
22
23 import org.jclouds.aws.ec2.domain.AWSRunningInstance;
24 import org.jclouds.aws.ec2.domain.LaunchSpecification;
25 import org.jclouds.aws.ec2.domain.MonitoringState;
26 import org.jclouds.aws.ec2.domain.SpotInstanceRequest;
27 import org.jclouds.ec2.domain.InstanceState;
28
29 import com.google.common.base.Function;
30
31
32
33
34 @Singleton
35 public class SpotInstanceRequestToAWSRunningInstance implements Function<SpotInstanceRequest, AWSRunningInstance> {
36
37 @Override
38 public AWSRunningInstance apply(SpotInstanceRequest request) {
39 if (request == null)
40 return null;
41 if (request.getState() != SpotInstanceRequest.State.OPEN)
42 return null;
43 AWSRunningInstance.Builder builder = AWSRunningInstance.builder();
44 builder.spotInstanceRequestId(request.getId());
45 builder.instanceId(request.getId());
46 builder.instanceState(InstanceState.PENDING);
47 builder.region(request.getRegion());
48 builder.tags(request.getTags());
49 LaunchSpecification spec = request.getLaunchSpecification();
50 builder.availabilityZone(spec.getAvailabilityZone());
51
52
53 builder.groupIds(spec.getSecurityGroupNames());
54 builder.imageId(spec.getImageId());
55 builder.instanceType(spec.getInstanceType());
56 builder.kernelId(spec.getKernelId());
57 builder.keyName(spec.getKeyName());
58 builder.ramdiskId(spec.getRamdiskId());
59 builder.monitoringState(Boolean.TRUE.equals(spec.isMonitoringEnabled()) ? MonitoringState.PENDING
60 : MonitoringState.DISABLED);
61 return builder.build();
62 }
63
64 }