private Set<NodeMetadata> addTagsToInstancesInRegion(Map<String, String> common, Set<? extends NodeMetadata> input, String region, String group) { Map<String, ? extends NodeMetadata> instancesById = Maps.uniqueIndex(input, instanceId); ImmutableSet.Builder<NodeMetadata> builder = ImmutableSet.<NodeMetadata> builder(); if (generateInstanceNames && !common.containsKey("Name")) { for (Map.Entry<String, ? extends NodeMetadata> entry : instancesById.entrySet()) { String id = entry.getKey(); NodeMetadata instance = entry.getValue(); Map<String, String> tags = ImmutableMap.<String, String> builder().putAll(common) .put("Name", id.replaceAll(".*-", group + "-")).build(); logger.debug(">> applying tags %s to instance %s in region %s", tags, id, region); client.getTagApiForRegion(region).get().applyToResources(tags, ImmutableSet.of(id)); builder.add(addTagsForInstance(tags, instancesById.get(id))); } } else { Iterable<String> ids = instancesById.keySet(); logger.debug(">> applying tags %s to instances %s in region %s", common, ids, region); client.getTagApiForRegion(region).get().applyToResources(common, ids); for (NodeMetadata in : input) builder.add(addTagsForInstance(common, in)); } if (logger.isDebugEnabled()) { Multimap<String, String> filter = new TagFilterBuilder().resourceIds(instancesById.keySet()).build(); FluentIterable<Tag> tags = client.getTagApiForRegion(region).get().filter(filter); logger.debug("<< applied tags in region %s: %s", region, resourceToTagsAsMap(tags)); } return builder.build(); }
@Test(expectedExceptions = ResourceNotFoundException.class) public void testDeleteWhenResponseIs404() throws Exception { HttpResponse deleteResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(delete, deleteResponse); apiWhenDontExist.getTagApi().get().deleteFromResources(ImmutableSet.of("tag"), ImmutableSet.of("i-43532")); }
public boolean apply(Iterable<Tag> input) { return api().list().filter(new Predicate<Tag>() { @Override public boolean apply(Tag in) { return in.getResourceId().equals(resource.id); } }).toSet().equals(input); } }, 600, 200, 200, MILLISECONDS).apply(ImmutableSet.of(tag, tag2)));
@Test public void testCreate() { gateway = gwClient.createInternetGateway(TEST_REGION, InternetGatewayOptions.NONE); assertNotNull(gateway, "Gateway was not successfully created"); assertEquals(gateway.tags().size(), 0, "Freshly created gateway has tags"); assertEquals(gateway.attachmentSet().size(), 0, "Freshly created gateway is attached"); tagger.applyToResources(ImmutableMap.of("Name", simpleName), ImmutableList.of(gateway.id())); getAnonymousLogger().info("Created gateway " + simpleName + " with id " + gateway.id()); }
public void testFilterWhenResponseIs404() throws Exception { HttpResponse filterResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(filter, filterResponse); assertEquals(apiWhenDontExist.getTagApi().get().filter(ImmutableMultimap.<String, String> builder() .put("resource-type", "instance") .put("key", "stack") .build()).toSet(), ImmutableSet.of()); }
@Test(dependsOnMethods = "testList") public void testDeleteTags() { // shouldn't delete with the incorrect values api().conditionallyDeleteFromResources(ImmutableMap.of(tag.getKey(), "FOO", tag2.getKey(), "FOO"), ImmutableSet.of(tag.getResourceId(), tag2.getResourceId())); assertEquals(tagsForResource().size(), 2); api().deleteFromResources(ImmutableSet.of(tag.getKey(), tag2.getKey()), ImmutableSet.of(tag.getResourceId(), tag2.getResourceId())); assertEquals(tagsForResource().size(), 0); Logger.getAnonymousLogger().info("tags deleted: " + tag + ", " + tag2); }
@Test(expectedExceptions = ResourceNotFoundException.class) public void testConditionallyDeleteWhenResponseIs404() throws Exception { HttpResponse conditionallyDeleteResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(conditionallyDelete, conditionallyDeleteResponse); apiWhenDontExist.getTagApi().get().conditionallyDeleteFromResources(ImmutableMap.of("tag", "value"), ImmutableSet.of("i-43532")); } }
@Test(expectedExceptions = ResourceNotFoundException.class) public void testApplyWithValuesWhenResponseIs404() throws Exception { HttpResponse applyResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(applyWithValues, applyResponse); apiWhenDontExist.getTagApi().get().applyToResources(ImmutableMap.of("tag", "value"), ImmutableSet.of("i-43532")); }
public void testFilterWhenResponseIs404() throws Exception { HttpResponse filterResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(filter, filterResponse); assertEquals(apiWhenDontExist.getTagApi().get().filter(ImmutableMultimap.<String, String> builder() .put("resource-type", "instance") .put("key", "stack") .build()).toSet(), ImmutableSet.of()); }
@Test(dependsOnMethods = "testList") public void testDeleteTags() { // shouldn't delete with the incorrect values api().conditionallyDeleteFromResources(ImmutableMap.of(tag.getKey(), "FOO", tag2.getKey(), "FOO"), ImmutableSet.of(tag.getResourceId(), tag2.getResourceId())); assertEquals(tagsForResource().size(), 2); api().deleteFromResources(ImmutableSet.of(tag.getKey(), tag2.getKey()), ImmutableSet.of(tag.getResourceId(), tag2.getResourceId())); assertEquals(tagsForResource().size(), 0); Logger.getAnonymousLogger().info("tags deleted: " + tag + ", " + tag2); }
@Test(expectedExceptions = ResourceNotFoundException.class) public void testConditionallyDeleteWhenResponseIs404() throws Exception { HttpResponse conditionallyDeleteResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(conditionallyDelete, conditionallyDeleteResponse); apiWhenDontExist.getTagApi().get().conditionallyDeleteFromResources(ImmutableMap.of("tag", "value"), ImmutableSet.of("i-43532")); } }
private Set<NodeMetadata> addTagsToInstancesInRegion(Map<String, String> common, Set<? extends NodeMetadata> input, String region, String group) { Map<String, ? extends NodeMetadata> instancesById = Maps.uniqueIndex(input, instanceId); ImmutableSet.Builder<NodeMetadata> builder = ImmutableSet.<NodeMetadata> builder(); if (generateInstanceNames && !common.containsKey("Name")) { for (Map.Entry<String, ? extends NodeMetadata> entry : instancesById.entrySet()) { String id = entry.getKey(); NodeMetadata instance = entry.getValue(); Map<String, String> tags = ImmutableMap.<String, String> builder().putAll(common) .put("Name", id.replaceAll(".*-", group + "-")).build(); logger.debug(">> applying tags %s to instance %s in region %s", tags, id, region); client.getTagApiForRegion(region).get().applyToResources(tags, ImmutableSet.of(id)); builder.add(addTagsForInstance(tags, instancesById.get(id))); } } else { Iterable<String> ids = instancesById.keySet(); logger.debug(">> applying tags %s to instances %s in region %s", common, ids, region); client.getTagApiForRegion(region).get().applyToResources(common, ids); for (NodeMetadata in : input) builder.add(addTagsForInstance(common, in)); } if (logger.isDebugEnabled()) { Multimap<String, String> filter = new TagFilterBuilder().resourceIds(instancesById.keySet()).build(); FluentIterable<Tag> tags = client.getTagApiForRegion(region).get().filter(filter); logger.debug("<< applied tags in region %s: %s", region, resourceToTagsAsMap(tags)); } return builder.build(); }
@Test(expectedExceptions = ResourceNotFoundException.class) public void testApplyWhenResponseIs404() throws Exception { HttpResponse applyResponse = HttpResponse.builder().statusCode(404).build(); EC2Api apiWhenDontExist = requestSendsResponse(apply, applyResponse); apiWhenDontExist.getTagApi().get().applyToResources(ImmutableSet.of("tag"), ImmutableSet.of("i-43532")); }
public void testFilterWhenResponseIs2xx() throws Exception { HttpResponse filterResponse = HttpResponse.builder().statusCode(200) .payload(payloadFromResourceWithContentType("/describe_tags.xml", "text/xml")).build(); EC2Api apiWhenExist = requestSendsResponse(filter, filterResponse); assertEquals(apiWhenExist.getTagApi().get().filter(ImmutableMultimap.<String, String> builder() .put("resource-type", "instance") .put("key", "stack") .build()).toString(), new DescribeTagsResponseTest().expected().toString()); }
public boolean apply(Iterable<Tag> input) { return api().list().filter(new Predicate<Tag>() { @Override public boolean apply(Tag in) { return in.getResourceId().equals(resource.id); } }).toSet().equals(input); } }, 600, 200, 200, MILLISECONDS).apply(ImmutableSet.of(tag, tag2)));
public void testDeleteWhenResponseIs2xx() throws Exception { HttpResponse deleteResponse = HttpResponse.builder().statusCode(200).build(); EC2Api apiWhenExist = requestSendsResponse(delete, deleteResponse); apiWhenExist.getTagApi().get().deleteFromResources(ImmutableSet.of("tag"), ImmutableSet.of("i-43532")); }
public void testConditionallyDeleteWhenResponseIs2xx() throws Exception { HttpResponse conditionallyDeleteResponse = HttpResponse.builder().statusCode(200).build(); EC2Api apiWhenExist = requestSendsResponse(conditionallyDelete, conditionallyDeleteResponse); apiWhenExist.getTagApi().get().conditionallyDeleteFromResources(ImmutableMap.of("tag", "value"), ImmutableSet.of("i-43532")); }
.put("Name", name).build(); logger.debug(">> applying tags %s to instance %s in region %s", tags, id, region); client.getTagApiForRegion(region).get().applyToResources(tags, ImmutableSet.of(id)); builder.add(addTagsForInstance(tags, instancesById.get(id))); Iterable<String> ids = instancesById.keySet(); logger.debug(">> applying tags %s to instances %s in region %s", common, ids, region); client.getTagApiForRegion(region).get().applyToResources(common, ids); for (NodeMetadata in : input) builder.add(addTagsForInstance(common, in)); FluentIterable<Tag> tags = client.getTagApiForRegion(region).get().filter(filter); logger.debug("<< applied tags in region %s: %s", region, resourceToTagsAsMap(tags));
public void testApplyWhenResponseIs2xx() throws Exception { HttpResponse applyResponse = HttpResponse.builder().statusCode(200).build(); EC2Api apiWhenExist = requestSendsResponse(apply, applyResponse); apiWhenExist.getTagApi().get().applyToResources(ImmutableSet.of("tag"), ImmutableSet.of("i-43532")); }
public void testFilterWhenResponseIs2xx() throws Exception { HttpResponse filterResponse = HttpResponse.builder().statusCode(200) .payload(payloadFromResourceWithContentType("/describe_tags.xml", "text/xml")).build(); EC2Api apiWhenExist = requestSendsResponse(filter, filterResponse); assertEquals(apiWhenExist.getTagApi().get().filter(ImmutableMultimap.<String, String> builder() .put("resource-type", "instance") .put("key", "stack") .build()).toString(), new DescribeTagsResponseTest().expected().toString()); }