use of com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription in project chassis by Kixeye.
the class ServerInstanceContextTest method testValidContext.
@Test
public void testValidContext() {
final String region = Regions.US_WEST_2.getName();
final String instanceId = RandomStringUtils.random(20, "abcdefghi");
final String availabilityZone = region + RandomStringUtils.random(20, "abcdefghi");
final String environment = RandomStringUtils.random(20, "abcdefghi");
final String userData = new UserData(environment).toString();
final String elbName = environment + "-Zookeeper";
final String exhibitorUrl = "http://" + elbName + "-" + region + ".aws.amazon.com";
final int exhibitorPort = 80;
final String version = "1.0.0";
Ec2MetadataClient ec2MetadataClient = EasyMock.createMock(Ec2MetadataClient.class);
EasyMock.expect(ec2MetadataClient.getAvailabilityZone()).andAnswer(new IAnswer<String>() {
@Override
public String answer() throws Throwable {
return availabilityZone;
}
});
EasyMock.expect(ec2MetadataClient.getInstanceId()).andAnswer(new IAnswer<String>() {
@Override
public String answer() throws Throwable {
return instanceId;
}
});
EasyMock.expect(ec2MetadataClient.getUserData()).andAnswer(new IAnswer<String>() {
@Override
public String answer() throws Throwable {
return userData;
}
});
EasyMock.expect(ec2MetadataClient.getPrivateIpAddress()).andAnswer(new IAnswer<String>() {
@Override
public String answer() throws Throwable {
return "127.0.0.1";
}
});
EasyMock.expect(ec2MetadataClient.getPublicIpAddress()).andAnswer(new IAnswer<String>() {
@Override
public String answer() throws Throwable {
return "127.0.0.1";
}
});
AmazonEC2 amazonEC2 = EasyMock.createMock(AmazonEC2.class);
EasyMock.expect(amazonEC2.describeRegions()).andAnswer(new IAnswer<DescribeRegionsResult>() {
@Override
public DescribeRegionsResult answer() throws Throwable {
DescribeRegionsResult result = new DescribeRegionsResult();
List<Region> regions = new ArrayList<>();
for (Regions region : Regions.values()) {
Region r = new Region();
r.setRegionName(region.getName());
regions.add(r);
}
result.setRegions(regions);
return result;
}
});
EasyMock.expect(amazonEC2.describeTags(EasyMock.anyObject(DescribeTagsRequest.class))).andAnswer(new IAnswer<DescribeTagsResult>() {
@Override
public DescribeTagsResult answer() throws Throwable {
return new DescribeTagsResult();
}
});
com.amazonaws.regions.Region r = com.amazonaws.regions.Region.getRegion(Regions.fromName(region));
amazonEC2.setRegion(eqRegion(r));
EasyMock.expectLastCall();
AmazonElasticLoadBalancing amazonElasticLoadBalancing = EasyMock.createMock(AmazonElasticLoadBalancing.class);
EasyMock.expect(amazonElasticLoadBalancing.describeLoadBalancers()).andAnswer(new IAnswer<DescribeLoadBalancersResult>() {
@Override
public DescribeLoadBalancersResult answer() throws Throwable {
DescribeLoadBalancersResult result = new DescribeLoadBalancersResult();
List<LoadBalancerDescription> loadBalancers = new ArrayList<>();
LoadBalancerDescription lb1 = new LoadBalancerDescription();
lb1.setDNSName(exhibitorUrl);
lb1.setLoadBalancerName(elbName);
List<ListenerDescription> listenerDescriptions = new ArrayList<>();
ListenerDescription httpListenerDescription = new ListenerDescription();
Listener httpListener = new Listener();
httpListener.setProtocol("HTTP");
httpListener.setLoadBalancerPort(exhibitorPort);
httpListener.setInstancePort(8080);
httpListenerDescription.setListener(httpListener);
ListenerDescription httpsListenerDescription = new ListenerDescription();
Listener httpsListener = new Listener();
httpsListener.setProtocol("HTTPS");
httpsListener.setLoadBalancerPort(443);
httpsListener.setInstancePort(8080);
httpsListenerDescription.setListener(httpListener);
listenerDescriptions.add(httpListenerDescription);
listenerDescriptions.add(httpsListenerDescription);
lb1.setListenerDescriptions(listenerDescriptions);
loadBalancers.add(lb1);
result.setLoadBalancerDescriptions(loadBalancers);
return result;
}
});
amazonElasticLoadBalancing.setRegion(eqRegion(r));
EasyMock.expectLastCall();
EasyMock.replay(ec2MetadataClient, amazonEC2, amazonElasticLoadBalancing);
ServerInstanceContext context = new ServerInstanceContext(ec2MetadataClient, amazonEC2, amazonElasticLoadBalancing);
Assert.assertEquals(region, context.getRegion());
Assert.assertEquals(instanceId, context.getInstanceId());
Assert.assertEquals(availabilityZone, context.getAvailabilityZone());
Assert.assertEquals(environment, context.getEnvironment());
Assert.assertEquals(exhibitorUrl, context.getExhibitorHost());
Assert.assertEquals(exhibitorPort, context.getExhibitorPort());
Assert.assertNull(context.getAppName());
EasyMock.verify(ec2MetadataClient, amazonEC2, amazonElasticLoadBalancing);
EasyMock.reset(amazonEC2, amazonElasticLoadBalancing);
amazonEC2.shutdown();
EasyMock.expectLastCall();
amazonElasticLoadBalancing.shutdown();
EasyMock.expectLastCall();
String name = RandomStringUtils.random(20, "abcdefghi");
EasyMock.replay(amazonEC2, amazonElasticLoadBalancing);
context.setAppName(name);
context.setVersion(version);
Assert.assertEquals(name, context.getAppName());
context.shutdown();
EasyMock.verify(ec2MetadataClient, amazonEC2, amazonElasticLoadBalancing);
}
use of com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription in project chassis by Kixeye.
the class ZookeeperElbFilterTest method noMatchingEnvironment.
@Test
public void noMatchingEnvironment() {
LoadBalancerDescription loadBalancer = new LoadBalancerDescription();
loadBalancer.setLoadBalancerName("foo-Zookeeper-whatever");
Assert.assertFalse(filter.accept(loadBalancer));
}
use of com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription in project SimianArmy by Netflix.
the class ELBJanitorCrawler method getELBResources.
private List<Resource> getELBResources(String... elbNames) {
List<Resource> resources = new LinkedList<Resource>();
AWSClient awsClient = getAWSClient();
for (LoadBalancerDescription elb : awsClient.describeElasticLoadBalancers(elbNames)) {
Resource resource = new AWSResource().withId(elb.getLoadBalancerName()).withRegion(getAWSClient().region()).withResourceType(AWSResourceType.ELB).withLaunchTime(elb.getCreatedTime());
resource.setOwnerEmail(getOwnerEmailForResource(resource));
resources.add(resource);
List<Instance> instances = elb.getInstances();
if (instances == null || instances.size() == 0) {
resource.setAdditionalField("instanceCount", "0");
resource.setDescription("instances=none");
LOGGER.debug(String.format("No instances found for ELB %s", resource.getId()));
} else {
resource.setAdditionalField("instanceCount", "" + instances.size());
ArrayList<String> instanceList = new ArrayList<String>(instances.size());
LOGGER.debug(String.format("Found %d instances for ELB %s", instances.size(), resource.getId()));
for (Instance instance : instances) {
String instanceId = instance.getInstanceId();
instanceList.add(instanceId);
}
String instancesStr = StringUtils.join(instanceList, ",");
resource.setDescription(String.format("instances=%s", instances));
LOGGER.debug(String.format("Resource ELB %s has instances %s", resource.getId(), instancesStr));
}
for (TagDescription tagDescription : awsClient.describeElasticLoadBalancerTags(resource.getId())) {
for (Tag tag : tagDescription.getTags()) {
LOGGER.debug(String.format("Adding tag %s = %s to resource %s", tag.getKey(), tag.getValue(), resource.getId()));
resource.setTag(tag.getKey(), tag.getValue());
}
}
}
Map<String, List<String>> elbtoASGMap = buildELBtoASGMap();
for (Resource resource : resources) {
List<String> asgList = elbtoASGMap.get(resource.getId());
if (asgList != null && asgList.size() > 0) {
resource.setAdditionalField("referencedASGCount", "" + asgList.size());
String asgStr = StringUtils.join(asgList, ",");
resource.setDescription(resource.getDescription() + ", ASGS=" + asgStr);
LOGGER.debug(String.format("Resource ELB %s is referenced by ASGs %s", resource.getId(), asgStr));
} else {
resource.setAdditionalField("referencedASGCount", "0");
resource.setDescription(resource.getDescription() + ", ASGS=none");
LOGGER.debug(String.format("No ASGs found for ELB %s", resource.getId()));
}
}
return resources;
}
use of com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription in project SimianArmy by Netflix.
the class TestELBJanitorCrawler method mkELB.
private LoadBalancerDescription mkELB(String elbName, boolean includeInstances) {
LoadBalancerDescription elb = new LoadBalancerDescription().withLoadBalancerName(elbName);
if (includeInstances) {
List<Instance> instances = new LinkedList<>();
Instance i1 = new Instance().withInstanceId("i-000001");
Instance i2 = new Instance().withInstanceId("i-000002");
elb.setInstances(instances);
}
return elb;
}
use of com.amazonaws.services.elasticloadbalancing.model.LoadBalancerDescription in project SimianArmy by Netflix.
the class TestELBJanitorCrawler method verifyELBList.
private void verifyELBList(List<Resource> resources, List<LoadBalancerDescription> elbList, int asgCount) {
Assert.assertEquals(resources.size(), elbList.size());
for (int i = 0; i < resources.size(); i++) {
LoadBalancerDescription elb = elbList.get(i);
verifyELB(resources.get(i), elb, asgCount);
}
}
Aggregations