@VisibleForTesting static List<Volume> addEBS(final RunningInstance instance, Iterable<? extends Volume> volumes) { Iterable<Volume> ebsVolumes = Iterables.transform(instance.getEbsBlockDevices().entrySet(), new Function<Entry<String, BlockDevice>, Volume>() { @Override public Volume apply(Entry<String, BlockDevice> from) { return new VolumeImpl(from.getValue().getVolumeId(), Volume.Type.SAN, null, from.getKey(), instance.getRootDeviceName() != null && instance.getRootDeviceName().equals(from.getKey()), true); } }); if (instance.getRootDeviceType() == RootDeviceType.EBS) { volumes = Iterables.filter(volumes, new Predicate<Volume>() { @Override public boolean apply(Volume input) { return !input.isBootDevice(); } }); } return Lists.newArrayList(Iterables.concat(volumes, ebsVolumes)); }
@VisibleForTesting static List<Volume> addEBS(final RunningInstance instance, Iterable<? extends Volume> volumes) { Iterable<Volume> ebsVolumes = Iterables.transform(instance.getEbsBlockDevices().entrySet(), new Function<Entry<String, BlockDevice>, Volume>() { @Override public Volume apply(Entry<String, BlockDevice> from) { return new VolumeImpl(from.getValue().getVolumeId(), Volume.Type.SAN, null, from.getKey(), instance.getRootDeviceName() != null && instance.getRootDeviceName().equals(from.getKey()), true); } }); if (instance.getRootDeviceType() == RootDeviceType.EBS) { volumes = Iterables.filter(volumes, new Predicate<Volume>() { @Override public boolean apply(Volume input) { return !input.isBootDevice(); } }); } return Lists.newArrayList(Iterables.concat(volumes, ebsVolumes)); }
@VisibleForTesting static List<Volume> addEBS(final RunningInstance instance, Iterable<? extends Volume> volumes) { Iterable<Volume> ebsVolumes = Iterables.transform(instance.getEbsBlockDevices().entrySet(), new Function<Entry<String, BlockDevice>, Volume>() { @Override public Volume apply(Entry<String, BlockDevice> from) { return new VolumeImpl(from.getValue().getVolumeId(), Volume.Type.SAN, null, from.getKey(), instance.getRootDeviceName() != null && instance.getRootDeviceName().equals(from.getKey()), true); } }); if (instance.getRootDeviceType() == RootDeviceType.EBS) { volumes = Iterables.filter(volumes, new Predicate<Volume>() { @Override public boolean apply(Volume input) { return !input.isBootDevice(); } }); } return Lists.newArrayList(Iterables.concat(volumes, ebsVolumes)); }
@VisibleForTesting static List<Volume> addEBS(final RunningInstance instance, Iterable<? extends Volume> volumes) { Iterable<Volume> ebsVolumes = Iterables.transform(instance.getEbsBlockDevices().entrySet(), new Function<Entry<String, BlockDevice>, Volume>() { @Override public Volume apply(Entry<String, BlockDevice> from) { return new VolumeImpl(from.getValue().getVolumeId(), Volume.Type.SAN, null, from.getKey(), instance.getRootDeviceName() != null && instance.getRootDeviceName().equals(from.getKey()), true); } }); if (instance.getRootDeviceType() == RootDeviceType.EBS) { volumes = Iterables.filter(volumes, new Predicate<Volume>() { @Override public boolean apply(Volume input) { return !input.isBootDevice(); } }); } return Lists.newArrayList(Iterables.concat(volumes, ebsVolumes)); }
@VisibleForTesting static List<Volume> addEBS(final RunningInstance instance, Iterable<? extends Volume> volumes) { Iterable<Volume> ebsVolumes = Iterables.transform(instance.getEbsBlockDevices().entrySet(), new Function<Entry<String, BlockDevice>, Volume>() { @Override public Volume apply(Entry<String, BlockDevice> from) { return new VolumeImpl(from.getValue().getVolumeId(), Volume.Type.SAN, null, from.getKey(), instance.getRootDeviceName() != null && instance.getRootDeviceName().equals(from.getKey()), true); } }); if (instance.getRootDeviceType() == RootDeviceType.EBS) { volumes = Iterables.filter(volumes, new Predicate<Volume>() { @Override public boolean apply(Volume input) { return !input.isBootDevice(); } }); } return Lists.newArrayList(Iterables.concat(volumes, ebsVolumes)); }
private void setBlockDeviceMappingForInstanceInRegion() { String volumeId = ebsInstance.getEbsBlockDevices().get("/dev/sda1").getVolumeId(); Map<String, BlockDevice> mapping = Maps.newLinkedHashMap(); mapping.put("/dev/sda1", new BlockDevice(volumeId, false)); try { client.getInstanceServices().setBlockDeviceMappingForInstanceInRegion(null, ebsInstance.getId(), mapping); Map<String, BlockDevice> devices = client.getInstanceServices().getBlockDeviceMappingForInstanceInRegion(null, ebsInstance.getId()); assertEquals(devices.size(), 1); String deviceName = Iterables.getOnlyElement(devices.keySet()); BlockDevice device = Iterables.getOnlyElement(devices.values()); assertEquals(device.getVolumeId(), volumeId); assertEquals(deviceName, "/dev/sda1"); assertEquals(device.isDeleteOnTermination(), false); System.out.println("OK: setBlockDeviceMappingForInstanceInRegion"); } catch (Exception e) { System.err.println("setBlockDeviceMappingForInstanceInRegion"); e.printStackTrace(); } }
private void setBlockDeviceMappingForInstanceInRegion() { String volumeId = ebsInstance.getEbsBlockDevices().get("/dev/sda1").getVolumeId(); Map<String, BlockDevice> mapping = Maps.newLinkedHashMap(); mapping.put("/dev/sda1", new BlockDevice(volumeId, false)); try { client.getInstanceApi().get().setBlockDeviceMappingForInstanceInRegion(null, ebsInstance.getId(), mapping); Map<String, BlockDevice> devices = client.getInstanceApi().get().getBlockDeviceMappingForInstanceInRegion(null, ebsInstance.getId()); assertEquals(devices.size(), 1); String deviceName = Iterables.getOnlyElement(devices.keySet()); BlockDevice device = Iterables.getOnlyElement(devices.values()); assertEquals(device.getVolumeId(), volumeId); assertEquals(deviceName, "/dev/sda1"); assertEquals(device.isDeleteOnTermination(), false); System.out.println("OK: setBlockDeviceMappingForInstanceInRegion"); } catch (Exception e) { System.err.println("setBlockDeviceMappingForInstanceInRegion"); e.printStackTrace(); } }
protected Snapshot createSnapshot() throws RunNodesException { String instanceId = null; try { RunningInstance instance = getOnlyElement(concat(ec2Api.getInstanceApi().get().runInstancesInRegion( regionId, null, imageId, 1, 1))); instanceId = instance.getId(); assertTrue(runningTester.apply(instance), instanceId + "didn't achieve the state running!"); instance = getOnlyElement(concat(ec2Api.getInstanceApi().get().describeInstancesInRegion(regionId, instanceId))); BlockDevice device = instance.getEbsBlockDevices().get("/dev/sda1"); assertNotNull(device, "device: /dev/sda1 not present on: " + instance); Snapshot snapshot = ec2Api.getElasticBlockStoreApi().get().createSnapshotInRegion(regionId, device.getVolumeId()); snapshotsToDelete.add(snapshot.getId()); Predicate<Snapshot> snapshotted = retry(new SnapshotCompleted(ec2Api.getElasticBlockStoreApi().get()), 600, 10, SECONDS); assert snapshotted.apply(snapshot); return snapshot; } finally { if (instanceId != null) ec2Api.getInstanceApi().get().terminateInstancesInRegion(regionId, instanceId); } }
private Snapshot createSnapshot() throws RunNodesException { String instanceId = null; try { RunningInstance instance = getOnlyElement(concat(ec2Client.getInstanceServices().runInstancesInRegion( regionId, null, imageId, 1, 1))); instanceId = instance.getId(); assertTrue(runningTester.apply(instance), instanceId + "didn't achieve the state running!"); instance = getOnlyElement(concat(ec2Client.getInstanceServices().describeInstancesInRegion(regionId, instanceId))); BlockDevice device = instance.getEbsBlockDevices().get("/dev/sda1"); assertNotNull(device, "device: /dev/sda1 not present on: " + instance); Snapshot snapshot = ec2Client.getElasticBlockStoreServices().createSnapshotInRegion(regionId, device.getVolumeId()); snapshotsToDelete.add(snapshot.getId()); return snapshot; } finally { if (instanceId != null) ec2Client.getInstanceServices().terminateInstancesInRegion(regionId, instanceId); } }
BlockDevice gp2Device = instance.getEbsBlockDevices().get("/dev/sdb"); assertNotNull(gp2Device, "device /dev/sdb not present on " + instance); Volume gp2Volume = Iterables.getOnlyElement(ec2Api.getElasticBlockStoreApi().get().describeVolumesInRegion(regionId, gp2Device.getVolumeId())); assertNotNull(gp2Volume, "/dev/sdb volume is null"); assertEquals(gp2Volume.getVolumeType(), "gp2"); BlockDevice device = instance.getEbsBlockDevices().get("/dev/sda1"); assertNotNull(device, "device: /dev/sda1 not present on: " + instance); Snapshot snapshot = ec2Api.getElasticBlockStoreApi().get().createSnapshotInRegion(regionId,
public void testDescribeInstancesWithDashesInPlaceOfNullDates() { InstanceApi client = requestsSendResponses( describeAvailabilityZonesRequest, describeAvailabilityZonesResponse, HttpRequest.builder().method("POST") .endpoint("http://localhost:8773/services/Cloud/") .addHeader("Host", "localhost:8773") .payload(payloadFromStringWithContentType("Action=DescribeInstances&Signature=kkCE1HzyntmkICEidOizw50B9yjLdNZvAWUXVse1c8o%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-04-16T15%3A54%3A08.897Z&Version=2009-04-04&AWSAccessKeyId=identity", "application/x-www-form-urlencoded")).build(), HttpResponse.builder().statusCode(200).payload(payloadFromResource("/nova_ec2_describe_instances.xml")).build() ).getInstanceApi().get(); Set<? extends Reservation<? extends RunningInstance>> response = client.describeInstancesInRegion("nova"); assertEquals(response.size(), 3); Reservation<? extends RunningInstance> target = Iterables.get(response, 2); RunningInstance runningInstance = Iterables.getOnlyElement(target); BlockDevice bd = Iterables.getOnlyElement(runningInstance.getEbsBlockDevices().values()); // this is a '-' in the nova_ec2_describe_instances.xml assertNull(bd.getAttachTime()); // double-check the other fields assertFalse(bd.isDeleteOnTermination()); assertEquals(bd.getVolumeId(), "1"); }