List of usage examples for com.amazonaws.services.ec2.model InstanceAttributeName BlockDeviceMapping
InstanceAttributeName BlockDeviceMapping
To view the source code for com.amazonaws.services.ec2.model InstanceAttributeName BlockDeviceMapping.
Click Source Link
From source file:com.cloudera.director.aws.ec2.ebs.EBSAllocator.java
License:Apache License
/** * Adds a delete on termination flag to all volumes in an {@code InstanceEbsVolumes} list * that have the ATTACHED status. This makes sure that the volumes associated with the * instance will be automatically cleaned up upon instance termination. * * @param instanceEbsVolumesList list of instances along with their associated volumes *//*from w w w . j a va 2 s. c o m*/ public void addDeleteOnTerminationFlag(List<InstanceEbsVolumes> instanceEbsVolumesList) { Set<String> volumesToFlag = getAllVolumeIdsWithStatus(instanceEbsVolumesList, InstanceEbsVolumes.Status.ATTACHED); if (!volumesToFlag.isEmpty()) { for (InstanceEbsVolumes instanceEbsVolumes : instanceEbsVolumesList) { String ec2InstanceId = instanceEbsVolumes.getEc2InstanceId(); DescribeInstanceAttributeRequest instanceAttributeRequest = new DescribeInstanceAttributeRequest() .withAttribute(InstanceAttributeName.BlockDeviceMapping).withInstanceId(ec2InstanceId); List<InstanceBlockDeviceMapping> blockDeviceMappings = client .describeInstanceAttribute(instanceAttributeRequest).getInstanceAttribute() .getBlockDeviceMappings(); for (InstanceBlockDeviceMapping blockDeviceMapping : blockDeviceMappings) { String volumeId = blockDeviceMapping.getEbs().getVolumeId(); // The block device mapping may have volumes associated with it that were not // provisioned by us. We skip marking those volumes for deletion. if (!volumesToFlag.contains(volumeId)) { continue; } InstanceBlockDeviceMappingSpecification updatedSpec = new InstanceBlockDeviceMappingSpecification() .withEbs(new EbsInstanceBlockDeviceSpecification().withDeleteOnTermination(true) .withVolumeId(volumeId)) .withDeviceName(blockDeviceMapping.getDeviceName()); ModifyInstanceAttributeRequest modifyRequest = new ModifyInstanceAttributeRequest() .withBlockDeviceMappings(updatedSpec).withInstanceId(ec2InstanceId); client.modifyInstanceAttribute(modifyRequest); } } } }
From source file:com.cloudera.director.aws.ec2.EC2Provider.java
License:Apache License
/** * Get EBS volumes attached to the specified virtual instance id. * * @return list of ebs volumes//ww w. j av a 2 s . c om */ @VisibleForTesting List<Volume> getVolumes(String virtualInstanceId) { String ec2InstanceId = getOnlyElement( getEC2InstanceIdsByVirtualInstanceId(Collections.singletonList(virtualInstanceId)).values()); DescribeInstanceAttributeResult results = client .describeInstanceAttribute(new DescribeInstanceAttributeRequest().withInstanceId(ec2InstanceId) .withAttribute(InstanceAttributeName.BlockDeviceMapping)); List<InstanceBlockDeviceMapping> blockDeviceMappings = results.getInstanceAttribute() .getBlockDeviceMappings(); List<String> volumeIds = Lists.newArrayList(); for (InstanceBlockDeviceMapping mapping : blockDeviceMappings) { volumeIds.add(mapping.getEbs().getVolumeId()); } DescribeVolumesResult volumeResults = client .describeVolumes(new DescribeVolumesRequest().withVolumeIds(volumeIds)); return volumeResults.getVolumes(); }