@Test public void testCreatePlacementGroup() { String groupName = PREFIX + "1"; for (String region : supportedRegions) { client.getPlacementGroupApi().get().deletePlacementGroupInRegion(region, groupName); client.getPlacementGroupApi().get().createPlacementGroupInRegion(region, groupName); verifyPlacementGroup(region, groupName); } }
@VisibleForTesting void deletePlacementGroup(String region, String group) { checkNotNull(emptyToNull(group), "group must be defined"); // placementGroupName must be unique within an account per // http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?using_cluster_computing.html String placementGroup = String.format("jclouds#%s#%s", group, region); try { if (client.getPlacementGroupApi().get().describePlacementGroupsInRegion(region, placementGroup).size() > 0) { logger.debug(">> deleting placementGroup(%s)", placementGroup); try { client.getPlacementGroupApi().get().deletePlacementGroupInRegion(region, placementGroup); checkState(placementGroupDeleted.apply(new PlacementGroup(region, placementGroup, "cluster", State.PENDING)), String.format("placementGroup region(%s) name(%s) failed to delete", region, placementGroup)); placementGroupMap.invalidate(new RegionAndName(region, placementGroup)); logger.debug("<< deleted placementGroup(%s)", placementGroup); } catch (IllegalStateException e) { logger.debug("<< inUse placementGroup(%s)", placementGroup); } } } catch (UnsupportedOperationException e) { logger.trace("<< placementGroups unsupported in region %s", region); } }
private PlacementGroup refresh(PlacementGroup group) { return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion( group.getRegion(), group.getName())); } }
private void createPlacementGroupInRegion(String region, String name) { checkNotNull(region, "region"); checkNotNull(name, "name"); logger.debug(">> creating placementGroup region(%s) name(%s)", region, name); try { ec2Api.getPlacementGroupApi().get().createPlacementGroupInRegion(region, name); logger.debug("<< created placementGroup(%s)", name); checkState(placementGroupAvailable.apply(new PlacementGroup(region, name, "cluster", State.PENDING)), String .format("placementGroup region(%s) name(%s) failed to become available", region, name)); } catch (AWSResponseException e) { if (e.getError().getCode().equals("InvalidPlacementGroup.Duplicate")) { logger.debug("<< reused placementGroup(%s)", name); } else { throw e; } } }
@Override @AfterClass(groups = { "integration", "live" }) protected void tearDownContext() { if (group != null) { client.getPlacementGroupApi().get().deletePlacementGroupInRegion(group.getRegion(), group.getName()); assert deletedTester.apply(group) : group; } super.tearDownContext(); }
@Test(expectedExceptions = AWSResponseException.class) public void testFilterInvalid() { for (String region : supportedRegions) { SortedSet<PlacementGroup> allResults = newTreeSet(client.getPlacementGroupApi().get() .describePlacementGroupsInRegion(region)); assertNotNull(allResults); if (allResults.size() >= 1) { PlacementGroup group = allResults.last(); client.getPlacementGroupApi().get() .describePlacementGroupsInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("invalid-filter", group.getName()).build()); } } }
public void describePlacementGroupsInRegionWithFilter() throws Exception { enqueueRegions(DEFAULT_REGION); enqueueXml(DEFAULT_REGION, "/describe_placement_groups.xml"); PlacementGroup result = getOnlyElement(placementApi() .describePlacementGroupsInRegionWithFilter(DEFAULT_REGION, ImmutableMultimap.of("strategy", "cluster"))); assertEquals(result.getName(), "XYZ-cluster"); assertPosted(DEFAULT_REGION, "Action=DescribeRegions"); assertPosted(DEFAULT_REGION, "Action=DescribePlacementGroups&Filter.1.Name=strategy&Filter.1.Value.1=cluster"); }
private PlacementGroup refresh(PlacementGroup group) { return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion( group.getRegion(), group.getName())); } }
private void createPlacementGroupInRegion(String region, String name) { checkNotNull(region, "region"); checkNotNull(name, "name"); logger.debug(">> creating placementGroup region(%s) name(%s)", region, name); try { ec2Api.getPlacementGroupApi().get().createPlacementGroupInRegion(region, name); logger.debug("<< created placementGroup(%s)", name); checkState(placementGroupAvailable.apply(new PlacementGroup(region, name, "cluster", State.PENDING)), "placementGroup region(%s) name(%s) failed to become available", region, name); } catch (AWSResponseException e) { if (e.getError().getCode().equals("InvalidPlacementGroup.Duplicate")) { logger.debug("<< reused placementGroup(%s)", name); } else { throw e; } } }
public void deletePlacementGroupInRegion() throws Exception { enqueueRegions(DEFAULT_REGION); enqueue(DEFAULT_REGION, new MockResponse()); placementApi().deletePlacementGroupInRegion(DEFAULT_REGION, "name"); assertPosted(DEFAULT_REGION, "Action=DescribeRegions"); assertPosted(DEFAULT_REGION, "Action=DeletePlacementGroup&GroupName=name"); }
@Test public void testFilter() { for (String region : supportedRegions) { SortedSet<PlacementGroup> allResults = newTreeSet(client.getPlacementGroupApi().get() .describePlacementGroupsInRegion(region)); assertNotNull(allResults); if (allResults.size() >= 1) { PlacementGroup group = allResults.last(); SortedSet<PlacementGroup> result = newTreeSet(client.getPlacementGroupApi().get() .describePlacementGroupsInRegionWithFilter(region, ImmutableMultimap.<String, String>builder() .put("group-name", group.getName()).build())); assertNotNull(result); PlacementGroup compare = result.last(); assertEquals(compare, group); } } }
public void describePlacementGroupsInRegionWithFilter_404() throws Exception { enqueueRegions(DEFAULT_REGION); enqueue(DEFAULT_REGION, new MockResponse().setResponseCode(404)); assertEquals(placementApi().describePlacementGroupsInRegionWithFilter(DEFAULT_REGION, ImmutableMultimap.of("strategy", "cluster")), ImmutableSet.of()); assertPosted(DEFAULT_REGION, "Action=DescribeRegions"); assertPosted(DEFAULT_REGION, "Action=DescribePlacementGroups&Filter.1.Name=strategy&Filter.1.Value.1=cluster"); }
@VisibleForTesting void deletePlacementGroup(String region, String group) { checkNotNull(emptyToNull(group), "group must be defined"); // placementGroupName must be unique within an account per // http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?using_cluster_computing.html String placementGroup = String.format("jclouds#%s#%s", group, region); try { if (!client.getPlacementGroupApi().get().describePlacementGroupsInRegion(region, placementGroup).isEmpty()) { logger.debug(">> deleting placementGroup(%s)", placementGroup); try { client.getPlacementGroupApi().get().deletePlacementGroupInRegion(region, placementGroup); checkState(placementGroupDeleted.apply(new PlacementGroup(region, placementGroup, "cluster", State.PENDING)), "placementGroup region(%s) name(%s) failed to delete", region, placementGroup); placementGroupMap.invalidate(new RegionAndName(region, placementGroup)); logger.debug("<< deleted placementGroup(%s)", placementGroup); } catch (IllegalStateException e) { logger.debug("<< inUse placementGroup(%s)", placementGroup); } } } catch (UnsupportedOperationException e) { logger.trace("<< placementGroups unsupported in region %s", region); } }
private PlacementGroup refresh(PlacementGroup group) { return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion( group.getRegion(), group.getName())); } }
private void createPlacementGroupInRegion(String region, String name) { checkNotNull(region, "region"); checkNotNull(name, "name"); logger.debug(">> creating placementGroup region(%s) name(%s)", region, name); try { ec2Api.getPlacementGroupApi().get().createPlacementGroupInRegion(region, name); logger.debug("<< created placementGroup(%s)", name); checkState(placementGroupAvailable.apply(new PlacementGroup(region, name, "cluster", State.PENDING)), "placementGroup region(%s) name(%s) failed to become available", region, name); } catch (AWSResponseException e) { if (e.getError().getCode().equals("InvalidPlacementGroup.Duplicate")) { logger.debug("<< reused placementGroup(%s)", name); } else { throw e; } } }
public void deletePlacementGroupInRegion_404() throws Exception { enqueueRegions(DEFAULT_REGION); enqueue(DEFAULT_REGION, new MockResponse().setResponseCode(404)); placementApi().deletePlacementGroupInRegion(DEFAULT_REGION, "name"); assertPosted(DEFAULT_REGION, "Action=DescribeRegions"); assertPosted(DEFAULT_REGION, "Action=DeletePlacementGroup&GroupName=name"); }
@VisibleForTesting void deletePlacementGroup(String region, String group) { checkNotNull(emptyToNull(group), "group must be defined"); // placementGroupName must be unique within an account per // http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?using_cluster_computing.html String placementGroup = String.format("jclouds#%s#%s", group, region); try { if (!client.getPlacementGroupApi().get().describePlacementGroupsInRegion(region, placementGroup).isEmpty()) { logger.debug(">> deleting placementGroup(%s)", placementGroup); try { client.getPlacementGroupApi().get().deletePlacementGroupInRegion(region, placementGroup); checkState(placementGroupDeleted.apply(new PlacementGroup(region, placementGroup, "cluster", State.PENDING)), "placementGroup region(%s) name(%s) failed to delete", region, placementGroup); placementGroupMap.invalidate(new RegionAndName(region, placementGroup)); logger.debug("<< deleted placementGroup(%s)", placementGroup); } catch (IllegalStateException e) { logger.debug("<< inUse placementGroup(%s)", placementGroup); } } } catch (UnsupportedOperationException e) { logger.trace("<< placementGroups unsupported in region %s", region); } }
private PlacementGroup refresh(PlacementGroup group) { return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion( group.getRegion(), group.getName())); } }
public void createPlacementGroupInRegion() throws Exception { enqueueRegions(DEFAULT_REGION); enqueue(DEFAULT_REGION, new MockResponse()); placementApi().createPlacementGroupInRegion(DEFAULT_REGION, "name"); assertPosted(DEFAULT_REGION, "Action=DescribeRegions"); assertPosted(DEFAULT_REGION, "Action=CreatePlacementGroup&Strategy=cluster&GroupName=name"); }
@SuppressWarnings("CheckReturnValue") public void testStartHS1Instance() throws Exception { Template template = view.getComputeService().templateBuilder() .fromHardware(EC2HardwareBuilder.hs1_8xlarge().build()).osFamily(OsFamily.AMZN_LINUX).build(); assert template != null : "The returned template was null, but it should have a value."; assertEquals(template.getHardware().getProviderId(), InstanceType.HS1_8XLARGE); assertEquals(template.getImage().getUserMetadata().get("virtualizationType"), "hvm"); assertEquals(template.getImage().getUserMetadata().get("hypervisor"), "xen"); template.getOptions().runScript(Statements.newStatementList(AdminAccess.standard(), InstallJDK.fromOpenJDK())); String group = PREFIX + "cccluster"; view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(group)); // TODO make this not lookup an explicit region client.getPlacementGroupApi().get().deletePlacementGroupInRegion(null, "jclouds#" + group + "#us-east-1"); try { Set<? extends NodeMetadata> nodes = view.getComputeService().createNodesInGroup(group, 1, template); NodeMetadata node = getOnlyElement(nodes); Reservation<? extends RunningInstance> reservation = getOnlyElement(client.getInstanceApi().get().describeInstancesInRegion(null, node.getProviderId())); getOnlyElement(reservation); } catch (RunNodesException e) { System.err.println(e.getNodeErrors().keySet()); Throwables.propagate(e); } finally { view.getComputeService().destroyNodesMatching(NodePredicates.inGroup(group)); } }