protected AWSRunningInstance getInstance(AWSInstanceApi instanceApi, String id) { Reservation<? extends AWSRunningInstance> reservation = getOnlyElement(instanceApi.describeInstancesInRegion(null, id)); return getOnlyElement(reservation); }
@Override @AfterClass(groups = { "integration", "live" }) protected void tearDownContext() { if (requests != null) { for (SpotInstanceRequest request : requests) client.getSpotInstanceApi().get().cancelSpotInstanceRequestsInRegion(request.getRegion(), request.getId()); // assert deletedTester.apply(request) : request; } if (instance != null) { client.getInstanceApi().get().terminateInstancesInRegion(instance.getRegion(), instance.getId()); } super.tearDownContext(); } }
@Override protected void destroyInstanceInRegion(String id, String region) { String spotId = id; if (id.indexOf("sir-") != 0) { try { spotId = getOnlyElement( Iterables.concat(client.getInstanceApi().get().describeInstancesInRegion(region, id))) .getSpotInstanceRequestId(); credentialStore.remove("node#" + region + "/" + spotId); } catch (NoSuchElementException e) { } super.destroyInstanceInRegion(id, region); } else { client.getSpotInstanceApi().get().cancelSpotInstanceRequestsInRegion(region, spotId); credentialStore.remove("node#" + region + "/" + id); } } }
@Override protected void destroyInstanceInRegion(String id, String region) { String spotId = id; if (id.indexOf("sir-") != 0) { try { spotId = getOnlyElement( Iterables.concat(client.getInstanceApi().get().describeInstancesInRegion(region, id))) .getSpotInstanceRequestId(); credentialStore.remove("node#" + region + "/" + spotId); } catch (NoSuchElementException e) { } super.destroyInstanceInRegion(id, region); } else { client.getSpotInstanceApi().get().cancelSpotInstanceRequestsInRegion(region, spotId); credentialStore.remove("node#" + region + "/" + id); } } }
@Override protected void destroyInstanceInRegion(String id, String region) { String spotId = id; if (id.indexOf("sir-") != 0) { try { spotId = getOnlyElement( Iterables.concat(client.getInstanceApi().get().describeInstancesInRegion(region, id))) .getSpotInstanceRequestId(); credentialStore.remove("node#" + region + "/" + spotId); } catch (NoSuchElementException e) { } super.destroyInstanceInRegion(id, region); } else { client.getSpotInstanceApi().get().cancelSpotInstanceRequestsInRegion(region, spotId); credentialStore.remove("node#" + region + "/" + id); } } }
@Test void testDescribeInstances() { for (String region : view.unwrapApi(AWSEC2Api.class).getAvailabilityZoneAndRegionApi().get().describeRegions().keySet()) { Set<? extends Reservation<? extends RunningInstance>> allResults = client.describeInstancesInRegion(region); assertNotNull(allResults); for (Reservation<? extends RunningInstance> result : allResults) { assertNotNull(result.getReservationId()); } } } }
@SuppressWarnings("unchecked") @Test public void testWhenInstancesPresentSingleCall() { AWSEC2Api client = createMock(AWSEC2Api.class); AWSInstanceApi instanceApi = createMock(AWSInstanceApi.class); Function<SpotInstanceRequest, AWSRunningInstance> converter = createMock(Function.class); expect(client.getInstanceApi()).andReturn((Optional) Optional.of(instanceApi)); // avoid imatcher fail. if you change this, be sure to check multiple jres expect(instanceApi.describeInstancesInRegion("us-east-1", "i-aaaa", "i-bbbb")).andReturn( Set.class.cast(ImmutableSet.of(Reservation.<AWSRunningInstance> builder().region("us-east-1") .instances(ImmutableSet.of(instance1, instance2)).build()))); replay(client, instanceApi, converter); PresentSpotRequestsAndInstances fn = new PresentSpotRequestsAndInstances(client, converter); assertEquals(fn.apply(ImmutableSet.of(new RegionAndName("us-east-1", "i-aaaa"), new RegionAndName("us-east-1", "i-bbbb"))), ImmutableSet.of(instance1, instance2)); verify(client, instanceApi, converter); }
private void verifySpotInstance(SpotInstanceRequest request) { SpotInstanceRequest spot = refresh(request); assertNotNull(spot); assertEquals(spot, request); assert activeTester.apply(request) : refresh(request); System.out.println(System.currentTimeMillis() - start); spot = refresh(request); assert spot.getInstanceId() != null : spot; Reservation<? extends AWSRunningInstance> reservation = getOnlyElement(client.getInstanceApi().get().describeInstancesInRegion(spot.getRegion(), spot.getInstanceId())); instance = getOnlyElement(reservation); assertEquals(instance.getSpotInstanceRequestId(), spot.getId()); }
@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)); } }