1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.common.aws.ec2.util;
17
18 import java.util.ArrayList;
19 import java.util.Collections;
20 import java.util.List;
21 import java.util.Map;
22
23 import org.kuali.common.aws.ec2.model.EC2ServiceContext;
24 import org.kuali.common.aws.ec2.model.LaunchInstanceContext;
25 import org.kuali.common.aws.ec2.model.Regions;
26 import org.kuali.common.aws.ec2.model.security.KualiSecurityGroup;
27 import org.kuali.common.util.Assert;
28 import org.kuali.common.util.CollectionUtils;
29 import org.kuali.common.util.execute.Executable;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 import com.google.common.base.Optional;
34 import com.google.common.collect.ImmutableList;
35
36 public class ShowLaunchConfig implements Executable {
37
38 private static final Logger logger = LoggerFactory.getLogger(ShowLaunchConfig.class);
39
40 private final EC2ServiceContext serviceContext;
41 private final LaunchInstanceContext instanceContext;
42 private final boolean skip;
43
44 public ShowLaunchConfig(EC2ServiceContext serviceContext, LaunchInstanceContext instanceContext) {
45 this(serviceContext, instanceContext, false);
46 }
47
48 public ShowLaunchConfig(EC2ServiceContext serviceContext, LaunchInstanceContext instanceContext, boolean skip) {
49 Assert.noNulls(serviceContext, instanceContext);
50 this.serviceContext = serviceContext;
51 this.instanceContext = instanceContext;
52 this.skip = skip;
53 }
54
55 @Override
56 public void execute() {
57 if (skip) {
58 return;
59 }
60 String accessKey = serviceContext.getCredentials().getAWSAccessKeyId();
61 String regionName = getRegionName(serviceContext);
62 String regionLocation = getRegionLocation(serviceContext);
63 String availabilityZone = getAvailabilityZone(instanceContext);
64
65 logger.info("---------- Launching EC2 Instance ----------");
66 logger.info("AWS Access Key: {}", accessKey);
67 logger.info("Location: {}", regionLocation);
68 logger.info("Region: {}", regionName);
69 logger.info("Zone: {}", availabilityZone);
70 logger.info("AMI: {}", instanceContext.getAmi());
71 logger.info("Type: {}", instanceContext.getType().toString());
72 logger.info("Key: {}", instanceContext.getPublicKey().getName());
73 logger.info("Security Groups: {}", CollectionUtils.asCSV(getSecurityGroups(instanceContext)));
74 logger.info("--------------------------------------------");
75 }
76
77 protected List<String> getSecurityGroups(LaunchInstanceContext context) {
78 List<String> names = new ArrayList<String>();
79 for (KualiSecurityGroup group : context.getSecurityGroups()) {
80 names.add(group.getName());
81 }
82 Collections.sort(names);
83 return ImmutableList.copyOf(names);
84 }
85
86 protected String getAvailabilityZone(LaunchInstanceContext context) {
87 Optional<String> zone = context.getAvailabilityZone();
88 if (!zone.isPresent()) {
89 return "no preference";
90 } else {
91 return zone.get();
92 }
93 }
94
95 protected String getRegionLocation(EC2ServiceContext context) {
96 Map<String, Regions> map = Regions.asMap();
97 Regions region = map.get(context.getRegion());
98 if (region == null) {
99
100 return "unknown";
101 } else {
102 return region.getLocation();
103 }
104 }
105
106 protected String getRegionName(EC2ServiceContext context) {
107 return context.getRegion();
108 }
109
110 public EC2ServiceContext getServiceContext() {
111 return serviceContext;
112 }
113
114 public LaunchInstanceContext getInstanceContext() {
115 return instanceContext;
116 }
117
118 public boolean isSkip() {
119 return skip;
120 }
121
122 }