Java 类com.amazonaws.services.ec2.model.DescribeInstanceAttributeRequest 实例源码

项目:soundwave    文件:Ec2InstanceStore.java   
@Override
public InstanceAttribute getInstanceAttribute(String instanceId, String attributeName) {
  OperationStats ops = new OperationStats("es2InstanceStore", "getInstanceAttribute");
  try {
    awsRateLimiter.acquire();
    DescribeInstanceAttributeRequest request = new DescribeInstanceAttributeRequest()
        .withInstanceId(instanceId)
        .withAttribute(InstanceAttributeName.fromValue(attributeName))
        .withSdkRequestTimeout(300 * 1000).withSdkClientExecutionTimeout(600 * 1000);

    DescribeInstanceAttributeResult result = defaultClient.describeInstanceAttribute(request);
    while (result != null) {
      ops.succeed();
      return result.getInstanceAttribute();
    }
  } catch (Exception ex) {
    ops.failed();
    throw ex;
  }
  return null;
}
项目:director-aws-plugin    文件:EC2Provider.java   
/**
 * Retrieves an instance attribute.
 *
 * @param  instanceId instance ID
 * @param  attribute  name of attribute to describe
 * @return            attribute
 */
@VisibleForTesting
InstanceAttribute describeInstanceAttribute(String instanceId, InstanceAttributeName attribute) {
  DescribeInstanceAttributeRequest request = new DescribeInstanceAttributeRequest()
      .withInstanceId(instanceId)
      .withAttribute(attribute);

  return client.describeInstanceAttribute(request).getInstanceAttribute();
}
项目:herd    文件:Ec2DaoImpl.java   
/**
 * 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.
 */
@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);
}
项目:herd    文件:Ec2OperationsImpl.java   
/**
 * Describe the EC2 instance attribute
 */
@Override
public DescribeInstanceAttributeResult describeInstanceAttribute(AmazonEC2Client ec2Client,
    DescribeInstanceAttributeRequest describeInstanceAttributeRequest)
{
    return ec2Client.describeInstanceAttribute(describeInstanceAttributeRequest);
}
项目:herd    文件:MockEc2OperationsImpl.java   
@Override
public DescribeInstanceAttributeResult describeInstanceAttribute(AmazonEC2Client ec2Client,
    DescribeInstanceAttributeRequest describeInstanceAttributeRequest)
{
    InstanceAttribute instanceAttribute = new InstanceAttribute();
    instanceAttribute.withGroups(new GroupIdentifier().withGroupId("A_TEST_SECURITY_GROUP"));
    return new DescribeInstanceAttributeResult().withInstanceAttribute(instanceAttribute);
}
项目:fullstop    文件:FetchTaupageYamlImpl.java   
@Override
public Optional<TaupageYaml> getTaupageYaml(final String instanceId, final String account, final String region) {
    final AmazonEC2Client client = clientProvider.getClient(AmazonEC2Client.class,
            account,
            Region.getRegion(Regions.fromName(region)));

    try {
        final DescribeInstanceAttributeResult response = client.describeInstanceAttribute(
                new DescribeInstanceAttributeRequest()
                        .withInstanceId(instanceId)
                        .withAttribute(USER_DATA));


        return ofNullable(response)
                .map(DescribeInstanceAttributeResult::getInstanceAttribute)
                .map(InstanceAttribute::getUserData)
                .map(Base64::decode)
                .map(String::new)
                .map(TaupageYamlUtil::parseTaupageYaml);

    } catch (final AmazonClientException e) {
        log.warn("Could not get Taupage YAML for instance: " + instanceId, e);
        return empty();
    } catch (YAMLException | IllegalArgumentException s) {
        log.warn("Taupage YAML is not valid for instance: " + instanceId, s);
        return empty();
    }
}
项目:fullstop    文件:TaupageYamlProviderImpl.java   
private Optional<TaupageYaml> getTaupageYaml(@Nonnull final EC2InstanceContext context) {

        if (context.isTaupageAmi().orElse(false)) {

            final String instanceId = context.getInstanceId();

            try {
                return Optional.of(context.getClient(AmazonEC2Client.class))
                        .map(client -> client.describeInstanceAttribute(new DescribeInstanceAttributeRequest()
                                .withInstanceId(instanceId)
                                .withAttribute(USER_DATA)))
                        .map(DescribeInstanceAttributeResult::getInstanceAttribute)
                        .map(InstanceAttribute::getUserData)
                        .map(Base64::decode)
                        .map(String::new)
                        .map(TaupageYamlUtil::parseTaupageYaml);

            } catch (final AmazonClientException e) {
                log.warn("Could not get Taupage YAML for instance: " + instanceId, e);
                return empty();
            } catch (YAMLException | IllegalArgumentException s)   {
                log.warn("Taupage YAML is not valid for instance: " + instanceId, s);
                return empty();
            }

        } else {
            return empty();
        }

    }
项目:aws-sdk-java-resources    文件:InstanceImpl.java   
@Override
public DescribeInstanceAttributeResult describeAttribute(
        DescribeInstanceAttributeRequest request,
        ResultCapture<DescribeInstanceAttributeResult> extractor) {

    ActionResult result = resource.performAction("DescribeAttribute",
            request, extractor);

    if (result == null) return null;
    return (DescribeInstanceAttributeResult) result.getData();
}
项目:aws-sdk-java-resources    文件:InstanceImpl.java   
@Override
public DescribeInstanceAttributeResult describeAttribute(String attribute,
        ResultCapture<DescribeInstanceAttributeResult> extractor) {

    DescribeInstanceAttributeRequest request = new
            DescribeInstanceAttributeRequest()

        .withAttribute(attribute);
    return describeAttribute(request, extractor);
}
项目:clouck    文件:Ec2WrapperImpl.java   
@Override
public Boolean findTerminationProtection(Account account, Region region, String instanceId) {
    AmazonEC2 ec2 = findClient(account, region);

    DescribeInstanceAttributeRequest req = new DescribeInstanceAttributeRequest();
    req.setAttribute("disableApiTermination");
    req.setInstanceId(instanceId);

    log.debug("start describing instance termination protection for account:{} in region:{} via api", account.getId() + "=>" + account.getName(), region);
    DescribeInstanceAttributeResult res = ec2.describeInstanceAttribute(req);

    return res.getInstanceAttribute().getDisableApiTermination();
}
项目:clouck    文件:Ec2WrapperImpl.java   
@Override
public String findShutdownBehavior(Account account, Region region, String instanceId) {
    AmazonEC2 ec2 = findClient(account, region);

    DescribeInstanceAttributeRequest req = new DescribeInstanceAttributeRequest();
    req.setAttribute("instanceInitiatedShutdownBehavior");
    req.setInstanceId(instanceId);

    log.debug("start describing instance shutdown behavior for account:{} in region:{} via api", account.getId() + "=>" + account.getName(), region);
    DescribeInstanceAttributeResult res = ec2.describeInstanceAttribute(req);

    return res.getInstanceAttribute().getInstanceInitiatedShutdownBehavior();
}
项目:clouck    文件:Ec2WrapperImpl.java   
@Override
public String findUserData(Account account, Region region, String instanceId) {
    AmazonEC2 ec2 = findClient(account, region);

    DescribeInstanceAttributeRequest req = new DescribeInstanceAttributeRequest();
    req.setAttribute("userData");
    req.setInstanceId(instanceId);

    log.debug("start describing instance user data for account:{} in region:{} via api", account.getId() + "=>" + account.getName(), region);
    DescribeInstanceAttributeResult res = ec2.describeInstanceAttribute(req);

    return res.getInstanceAttribute().getUserData();
}
项目:elasticsearch_my    文件:AmazonEC2Mock.java   
@Override
public DescribeInstanceAttributeResult describeInstanceAttribute(DescribeInstanceAttributeRequest describeInstanceAttributeRequest) throws AmazonServiceException, AmazonClientException {
    throw new UnsupportedOperationException("Not supported in mock");
}
项目:director-aws-plugin    文件:EBSAllocator.java   
/**
 * 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
 */
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);
      }
    }
  }
}
项目:dohko    文件:EC2.java   
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(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;

    }
项目:aws-sdk-java-resources    文件:InstanceImpl.java   
@Override
public DescribeInstanceAttributeResult describeAttribute(
        DescribeInstanceAttributeRequest request) {

    return describeAttribute(request, null);
}
项目:herd    文件:Ec2Operations.java   
/**
 * {@link AmazonEC2#describeInstanceAttribute(DescribeInstanceAttributeRequest)}
 * 
 * @param ec2Client {@link AmazonEC2} to use.
 * @param describeInstanceAttributeRequest The request object.
 * @return {@link DescribeInstanceAttributeResult}
 */
public DescribeInstanceAttributeResult describeInstanceAttribute(AmazonEC2Client ec2Client,
    DescribeInstanceAttributeRequest describeInstanceAttributeRequest);
项目:aws-sdk-java-resources    文件:Instance.java   
/**
 * Performs the <code>DescribeAttribute</code> action.
 *
 * <p>
 * The following request parameters will be populated from the data of this
 * <code>Instance</code> resource, and any conflicting parameter value set
 * in the request will be overridden:
 * <ul>
 *   <li>
 *     <b><code>InstanceId</code></b>
 *         - mapped from the <code>Id</code> identifier.
 *   </li>
 * </ul>
 *
 * <p>
 *
 * @return The response of the low-level client operation associated with
 *         this resource action.
 * @see DescribeInstanceAttributeRequest
 */
DescribeInstanceAttributeResult describeAttribute(
        DescribeInstanceAttributeRequest request);
项目:aws-sdk-java-resources    文件:Instance.java   
/**
 * Performs the <code>DescribeAttribute</code> action and use a
 * ResultCapture to retrieve the low-level client response.
 *
 * <p>
 * The following request parameters will be populated from the data of this
 * <code>Instance</code> resource, and any conflicting parameter value set
 * in the request will be overridden:
 * <ul>
 *   <li>
 *     <b><code>InstanceId</code></b>
 *         - mapped from the <code>Id</code> identifier.
 *   </li>
 * </ul>
 *
 * <p>
 *
 * @return The response of the low-level client operation associated with
 *         this resource action.
 * @see DescribeInstanceAttributeRequest
 */
DescribeInstanceAttributeResult describeAttribute(
        DescribeInstanceAttributeRequest request,
        ResultCapture<DescribeInstanceAttributeResult> extractor);