Example usage for com.amazonaws.services.ec2.model DescribeInstanceAttributeRequest DescribeInstanceAttributeRequest

List of usage examples for com.amazonaws.services.ec2.model DescribeInstanceAttributeRequest DescribeInstanceAttributeRequest

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2.model DescribeInstanceAttributeRequest DescribeInstanceAttributeRequest.

Prototype

public DescribeInstanceAttributeRequest() 

Source Link

Document

Default constructor for DescribeInstanceAttributeRequest object.

Usage

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 ww . j av a2s  . co  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// w  ww.j a  v 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();
}

From source file:com.cloudera.director.aws.ec2.EC2Provider.java

License:Apache License

private void fillMissingProperties(Instance instance) {
    try {//from  w w w  .  ja  v  a2 s .  c o m
        DescribeInstanceAttributeRequest request = new DescribeInstanceAttributeRequest()
                .withInstanceId(instance.getInstanceId()).withAttribute(InstanceAttributeName.SriovNetSupport);

        DescribeInstanceAttributeResult result = client.describeInstanceAttribute(request);
        String sriovNetSupport = result.getInstanceAttribute().getSriovNetSupport();
        instance.setSriovNetSupport(sriovNetSupport);
    } catch (AmazonServiceException e) {
        // In practice, users may not have appropriate IAM permission for
        // DescribeInstanceAttribute. We need to be more forgiving in those cases,
        // and simply leave a warning in the log here.
        LOG.warn("Could not fill missing properties. Failed to perform " + "DescribeInstanceAttribute action.",
                e);
    }
}

From source file:org.excalibur.service.aws.ec2.EC2.java

License:Open Source License

private VirtualMachine toExcaliburInstance(Instance instance, KeyPair keyPair) {
    Map<String, Tag> tags = TAGS.apply(instance.getTags());

    VirtualMachine vm = new VirtualMachine().setName(instance.getInstanceId()).setImageId(instance.getImageId())
            .setType(InstanceType.valueOf(instance.getInstanceType())
                    .setProvider(this.credentials_.getProvider()))
            .setState(new InstanceStateDetails(InstanceStateType.valueOfFrom(instance.getState().getName()),
                    new Date())) //TODO we need to improve this
            .setConfiguration(new VmConfiguration().setKeyName(instance.getKeyName())
                    .setKeyPairs(new KeyPairs().setPrivateKey(keyPair))
                    .setPlatform(//from www .ja  v a2s .c  om
                            isNullOrEmpty(instance.getPlatform()) ? DEFAULT_PLATFORM : instance.getPlatform())
                    .setPlatformUserName(tags.get(DEFAULT_PLATFORM_INSTANCE_USERNAME_TAG) != null
                            ? tags.get(DEFAULT_PLATFORM_INSTANCE_USERNAME_TAG).getValue()
                            : System.getProperty("org.excalibur.default.platform.username"))
                    .setPrivateIpAddress(instance.getPrivateIpAddress())
                    .setPublicIpAddress(instance.getPublicIpAddress())
                    .setPublicDnsName(instance.getPublicDnsName()))
            .setLaunchTime(instance.getLaunchTime())
            //                .setLocation(new Region().setName(instance.getPlacement().getAvailabilityZone()))
            //                .setLocation(credentials_.getRegion())
            .setLocation(new Zone().setName(instance.getPlacement().getAvailabilityZone())
                    .setRegion(credentials_.getRegion()))
            .setPlacement(new org.excalibur.core.cloud.api.Placement()
                    .setGroupName(instance.getPlacement().getGroupName())
                    .setZone(instance.getPlacement().getAvailabilityZone()))
            .setOwner(new User(this.credentials_.getUserId())
                    .setUsername(tags.get("username") != null ? tags.get("username").getValue() : null));

    if (tags.containsKey("keyname")) {
        if (vm.getConfiguration().getKeyPairs().getPrivateKey() == null) {
            vm.getConfiguration().getKeyPairs().setPrivateKey(new KeyPair());
        }

        vm.getConfiguration().getKeyPairs().getPrivateKey().setKeyName(tags.get("keyname").getValue());
    } else {
        return null;
    }

    InstanceAttribute attribute = new AmazonEC2Client(awsCredentials_)
            .describeInstanceAttribute(new DescribeInstanceAttributeRequest()
                    .withInstanceId(instance.getInstanceId()).withAttribute("userData"))
            .getInstanceAttribute();

    //        List<InstanceStatus> instanceStatuses = new AmazonEC2Client(awsCredentials_).describeInstanceStatus(
    //                new DescribeInstanceStatusRequest().withInstanceIds(instance.getInstanceId())).getInstanceStatuses();

    if (!isNullOrEmpty(attribute.getUserData())) {
        String userData = new String(Base64.decodeBase64(attribute.getUserData().getBytes()));
        int i = userData.indexOf("#start-data"), f = userData.indexOf("#end-data");

        if (i > -1 && f > -1) {
            String[] keys = userData.substring(i, f).split("#");
            checkState(keys.length == 4);

            vm.getConfiguration().getKeyPairs().getPrivateKey().setKeyMaterial(keys[2]);
            vm.getConfiguration().getKeyPairs().setPublicKey(
                    new KeyPair().setKeyName(tags.get("keyname").getValue()).setKeyMaterial(keys[3].trim()));
        }

        vm.setUserData(attribute.getUserData());
    }

    for (Tag tag : tags.values()) {
        vm.getTags().add(org.excalibur.core.cloud.api.domain.Tag.valueOf(tag.getKey(), tag.getValue()));
    }

    return vm;

}

From source file:org.finra.dm.dao.impl.Ec2DaoImpl.java

License:Apache License

/**
 * Adds the security groups to an EC2 instance.
 *
 * @param ec2InstanceId, the ec2 instance id.
 * @param securityGroups, security groups to be added.
 * @param awsParams, awsParamsDto object
 *
 * @return updated security groups./*from  ww  w .java2s .c o  m*/
 */
@Override
public List<String> addSecurityGroupsToEc2Instance(String ec2InstanceId, List<String> securityGroups,
        AwsParamsDto awsParams) {
    Set<String> updatedSecurityGroups = new HashSet<>();
    for (String securityGroup : securityGroups) {
        updatedSecurityGroups.add(securityGroup);
    }

    // Get existing security groups
    DescribeInstanceAttributeRequest describeInstanceAttributeRequest = new DescribeInstanceAttributeRequest()
            .withInstanceId(ec2InstanceId).withAttribute(InstanceAttributeName.GroupSet);

    DescribeInstanceAttributeResult describeInstanceAttributeResult = ec2Operations
            .describeInstanceAttribute(getEc2Client(awsParams), describeInstanceAttributeRequest);

    List<GroupIdentifier> groups = describeInstanceAttributeResult.getInstanceAttribute().getGroups();
    for (GroupIdentifier groupIdentifier : groups) {
        updatedSecurityGroups.add(groupIdentifier.getGroupId());
    }

    // Add security group on master EC2 instance
    ModifyInstanceAttributeRequest modifyInstanceAttributeRequest = new ModifyInstanceAttributeRequest()
            .withInstanceId(ec2InstanceId).withGroups(updatedSecurityGroups);

    ec2Operations.modifyInstanceAttribute(getEc2Client(awsParams), modifyInstanceAttributeRequest);

    return new ArrayList<>(updatedSecurityGroups);
}

From source file:org.zalando.stups.fullstop.plugin.RegistryPlugin.java

License:Apache License

private Map getUserData(final CloudTrailEvent event, final String instanceId) {

    AmazonEC2Client ec2Client = cachingClientProvider.getClient(AmazonEC2Client.class,
            event.getEventData().getUserIdentity().getAccountId(),
            Region.getRegion(Regions.fromName(event.getEventData().getAwsRegion())));

    DescribeInstanceAttributeRequest describeInstanceAttributeRequest = new DescribeInstanceAttributeRequest();
    describeInstanceAttributeRequest.setInstanceId(instanceId);
    describeInstanceAttributeRequest.setAttribute(USER_DATA);

    DescribeInstanceAttributeResult describeInstanceAttributeResult;
    try {//from  w w  w  .j  av  a2  s  . c o m
        describeInstanceAttributeResult = ec2Client.describeInstanceAttribute(describeInstanceAttributeRequest);
    } catch (AmazonServiceException e) {
        LOG.error(e.getMessage());
        violationStore
                .save(new ViolationBuilder(format("InstanceId: %s doesn't have any userData.", instanceId))
                        .withEvent(event).build());
        return null;
    }

    String userData = describeInstanceAttributeResult.getInstanceAttribute().getUserData();

    if (userData == null) {
        violationStore
                .save(new ViolationBuilder(format("InstanceId: %s doesn't have any userData.", instanceId))
                        .withEvent(event).build());
        return null;
    }

    byte[] bytesUserData = Base64.decode(userData);
    String decodedUserData = new String(bytesUserData);

    Yaml yaml = new Yaml();

    return (Map) yaml.load(decodedUserData);
}