Example usage for com.amazonaws.services.ec2.model ModifyInstanceAttributeRequest withGroups

List of usage examples for com.amazonaws.services.ec2.model ModifyInstanceAttributeRequest withGroups

Introduction

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

Prototype


public ModifyInstanceAttributeRequest withGroups(java.util.Collection<String> groups) 

Source Link

Document

[EC2-VPC] Changes the security groups of the instance.

Usage

From source file:jp.primecloud.auto.process.aws.AwsInstanceProcess.java

License:Open Source License

public void modify(AwsProcessClient awsProcessClient, Long instanceNo) {
    AwsInstance awsInstance = awsInstanceDao.read(instanceNo);
    String instanceId = awsInstance.getInstanceId();

    com.amazonaws.services.ec2.model.Instance instance2 = awsCommonProcess.describeInstance(awsProcessClient,
            instanceId);/*  ww w. j av  a2  s  . c  om*/

    // InstanceType
    if (!StringUtils.equals(awsInstance.getInstanceType(), instance2.getInstanceType())) {
        // InstanceType?
        ModifyInstanceAttributeRequest request = new ModifyInstanceAttributeRequest();
        request.withInstanceId(instanceId);
        request.withInstanceType(awsInstance.getInstanceType());
        awsProcessClient.getEc2Client().modifyInstanceAttribute(request);

        // 
        if (log.isInfoEnabled()) {
            log.info(MessageUtils.getMessage("IPROCESS-100161", instanceId));
        }
    }

    // SecurityGroup
    if (BooleanUtils.isTrue(awsProcessClient.getPlatformAws().getVpc())) {
        // ????SecurityGroup
        List<String> groupNames = new ArrayList<String>();
        List<GroupIdentifier> groupIdentifiers = instance2.getSecurityGroups();
        for (GroupIdentifier groupIdentifier : groupIdentifiers) {
            groupNames.add(groupIdentifier.getGroupName());
        }

        // ????SecurityGroup
        List<String> newGroupNames = new ArrayList<String>();
        for (String groupName : StringUtils.split(awsInstance.getSecurityGroups(), ",")) {
            newGroupNames.add(groupName.trim());
        }

        // SecurityGroup???????
        if (!(groupNames.size() == newGroupNames.size()) || !groupNames.containsAll(newGroupNames)) {
            // SecurityGroup?ID??
            List<String> newSecurityGroups = new ArrayList<String>();
            List<SecurityGroup> securityGroups = awsCommonProcess.describeSecurityGroupsByVpcId(
                    awsProcessClient, awsProcessClient.getPlatformAws().getVpcId());
            for (String groupName : newGroupNames) {
                for (SecurityGroup securityGroup : securityGroups) {
                    if (StringUtils.equals(groupName, securityGroup.getGroupName())) {
                        newSecurityGroups.add(securityGroup.getGroupId());
                        break;
                    }
                }
            }

            // SecurityGroup?
            ModifyInstanceAttributeRequest request = new ModifyInstanceAttributeRequest();
            request.withInstanceId(instanceId);
            request.withGroups(newSecurityGroups);
            awsProcessClient.getEc2Client().modifyInstanceAttribute(request);

            // 
            if (log.isInfoEnabled()) {
                log.info(MessageUtils.getMessage("IPROCESS-100162", instanceId));
            }
        }
    }
}