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 LaunchSpecification spec = request.getLaunchSpecification();
49 builder.availabilityZone(spec.getAvailabilityZone());
50
51
52 builder.groupIds(spec.getGroupIds());
53 builder.imageId(spec.getImageId());
54 builder.instanceType(spec.getInstanceType());
55 builder.kernelId(spec.getKernelId());
56 builder.keyName(spec.getKeyName());
57 builder.ramdiskId(spec.getRamdiskId());
58 builder.monitoringState(Boolean.TRUE.equals(spec.isMonitoringEnabled()) ? MonitoringState.PENDING
59 : MonitoringState.DISABLED);
60 return builder.build();
61 }
62
63 }