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

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

Introduction

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

Prototype

public AssociateAddressRequest() 

Source Link

Document

Default constructor for AssociateAddressRequest object.

Usage

From source file:virtualIT.java

License:Open Source License

private void elasticIP(String createdInstanceId) {

    /* START Elastic IP Address */

    AllocateAddressResult elasticResult = ec2.allocateAddress();
    String elasticIp = elasticResult.getPublicIp();
    System.out.println("New elastic IP: " + elasticIp);

    //associate//from   w w  w.  ja  va  2 s  . c om
    AssociateAddressRequest aar = new AssociateAddressRequest();
    aar.setInstanceId(createdInstanceId);
    aar.setPublicIp(elasticIp);
    ec2.associateAddress(aar);

    /* END Elastic IP Address */
}

From source file:aws.example.ec2.AllocateAddress.java

License:Open Source License

public static void main(String[] args) {
    final String USAGE = "To run this example, supply an instance id\n" + "Ex: AllocateAddress <instance_id>\n";

    if (args.length != 1) {
        System.out.println(USAGE);
        System.exit(1);//  w  w  w .jav  a 2s .c  o  m
    }

    String instance_id = args[0];

    final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

    AllocateAddressRequest allocate_request = new AllocateAddressRequest().withDomain(DomainType.Vpc);

    AllocateAddressResult allocate_response = ec2.allocateAddress(allocate_request);

    String allocation_id = allocate_response.getAllocationId();

    AssociateAddressRequest associate_request = new AssociateAddressRequest().withInstanceId(instance_id)
            .withAllocationId(allocation_id);

    AssociateAddressResult associate_response = ec2.associateAddress(associate_request);

    System.out.printf("Successfully associated Elastic IP address %s " + "with instance %s",
            associate_response.getAssociationId(), instance_id);
}

From source file:com.hpcloud.daas.ec2.AwsConsoleApp.java

License:Open Source License

public static String assignPublicIp(String instanceId) {
    AllocateAddressResult result = ec2.allocateAddress();

    AssociateAddressRequest assRequest = new AssociateAddressRequest();
    assRequest.setAllocationId(result.getAllocationId());
    assRequest.setPublicIp(result.getPublicIp());
    assRequest.setInstanceId(instanceId);

    AssociateAddressResult resp = ec2.associateAddress(assRequest);
    System.out.println(resp);/*from   w  w w  . ja  v  a  2 s.c om*/

    return (result.getPublicIp());
}

From source file:com.liferay.amazontools.AsgardAMIDeployer.java

License:Open Source License

protected void associateElasticIpAddresses(List<String> instanceIds) {
    if (!properties.containsKey("elastic.ip.addresses")) {
        return;/*  w ww.  j  a v a2 s. c  o m*/
    }

    String elasticIpAddressesString = properties.getProperty("elastic.ip.addresses");

    String[] elasticIpAddresses = elasticIpAddressesString.split(",");

    for (int i = 0; (i < elasticIpAddresses.length) && (i < instanceIds.size()); i++) {

        System.out.println(
                "Associating IP address " + elasticIpAddresses[i] + " with instance " + instanceIds.get(i));

        AssociateAddressRequest associateAddressRequest = new AssociateAddressRequest();

        associateAddressRequest.setInstanceId(instanceIds.get(i));
        associateAddressRequest.setPublicIp(elasticIpAddresses[i]);

        amazonEC2Client.associateAddress(associateAddressRequest);
    }
}

From source file:com.netflix.eureka.aws.EIPManager.java

License:Apache License

/**
 * Checks if an EIP is bound and optionally binds the EIP.
 *
 * The list of EIPs are arranged with the EIPs allocated in the zone first
 * followed by other EIPs.//from w  w w. jav  a  2  s .  co  m
 *
 * If an EIP is already bound to this instance this method simply returns. Otherwise, this method tries to find
 * an unused EIP based on information from AWS. If it cannot find any unused EIP this method, it will be retried
 * for a specified interval.
 *
 * One of the following scenarios can happen here :
 *
 *  1) If the instance is already bound to an EIP as deemed by AWS, no action is taken.
 *  2) If an EIP is already bound to another instance as deemed by AWS, that EIP is skipped.
 *  3) If an EIP is not already bound to an instance and if this instance is not bound to an EIP, then
 *     the EIP is bound to this instance.
 */
public void bindEIP() {
    InstanceInfo myInfo = applicationInfoManager.getInfo();
    String myInstanceId = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.instanceId);
    String myZone = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.availabilityZone);

    Collection<String> candidateEIPs = getCandidateEIPs(myInstanceId, myZone);

    AmazonEC2 ec2Service = getEC2Service();
    boolean isMyinstanceAssociatedWithEIP = false;
    Address selectedEIP = null;

    for (String eipEntry : candidateEIPs) {
        try {
            String associatedInstanceId;

            // Check with AWS, if this EIP is already been used by another instance
            DescribeAddressesRequest describeAddressRequest = new DescribeAddressesRequest()
                    .withPublicIps(eipEntry);
            DescribeAddressesResult result = ec2Service.describeAddresses(describeAddressRequest);
            if ((result.getAddresses() != null) && (!result.getAddresses().isEmpty())) {
                Address eipAddress = result.getAddresses().get(0);
                associatedInstanceId = eipAddress.getInstanceId();
                // This EIP is not used by any other instance, hence mark it for selection if it is not
                // already marked.
                if (((associatedInstanceId == null) || (associatedInstanceId.isEmpty()))) {
                    if (selectedEIP == null) {
                        selectedEIP = eipAddress;
                    }
                } else if (isMyinstanceAssociatedWithEIP = (associatedInstanceId.equals(myInstanceId))) {
                    // This EIP is associated with an instance, check if this is the same as the current instance.
                    // If it is the same, stop searching for an EIP as this instance is already associated with an
                    // EIP
                    selectedEIP = eipAddress;
                    break;
                } else {
                    // The EIP is used by some other instance, hence skip it
                    logger.warn("The selected EIP {} is associated with another instance {} according to AWS,"
                            + " hence skipping this", eipEntry, associatedInstanceId);
                }
            }
        } catch (Throwable t) {
            logger.error("Failed to bind elastic IP: {} to {}", eipEntry, myInstanceId, t);
        }
    }
    if (null != selectedEIP) {
        String publicIp = selectedEIP.getPublicIp();
        // Only bind if the EIP is not already associated
        if (!isMyinstanceAssociatedWithEIP) {

            AssociateAddressRequest associateAddressRequest = new AssociateAddressRequest()
                    .withInstanceId(myInstanceId);

            String domain = selectedEIP.getDomain();
            if ("vpc".equals(domain)) {
                associateAddressRequest.setAllocationId(selectedEIP.getAllocationId());
            } else {
                associateAddressRequest.setPublicIp(publicIp);
            }

            ec2Service.associateAddress(associateAddressRequest);
            logger.info("\n\n\nAssociated {} running in zone: {} to elastic IP: {}", myInstanceId, myZone,
                    publicIp);
        }
        logger.info("My instance {} seems to be already associated with the EIP {}", myInstanceId, publicIp);
    } else {
        logger.info("No EIP is free to be associated with this instance. Candidate EIPs are: {}",
                candidateEIPs);
    }
}

From source file:com.netflix.eureka.util.EIPManager.java

License:Apache License

/**
 * Checks if an EIP is bound and optionally binds the EIP.
 *
 * The list of EIPs are arranged with the EIPs allocated in the zone first
 * followed by other EIPs.//from  w  w w .  java 2s.c  o m
 *
 * If an EIP is already bound to this instance this method simply returns. Otherwise, this method tries to find
 * an unused EIP based on information from AWS. If it cannot find any unused EIP this method, it will be retried
 * for a specified interval.
 *
 * One of the following scenarios can happen here :
 *
 *  1) If the instance is already bound to an EIP as deemed by AWS, no action is taken.
 *  2) If an EIP is already bound to another instance as deemed by AWS, that EIP is skipped.
 *  3) If an EIP is not already bound to an instance and if this instance is not bound to an EIP, then
 *     the EIP is bound to this instance.
 */
public void bindEIP() {
    InstanceInfo myInfo = ApplicationInfoManager.getInstance().getInfo();
    String myInstanceId = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.instanceId);
    String myZone = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.availabilityZone);

    Collection<String> candidateEIPs = getCandidateEIPs(myInstanceId, myZone);

    AmazonEC2 ec2Service = getEC2Service();
    boolean isMyinstanceAssociatedWithEIP = false;
    Address selectedEIP = null;

    for (String eipEntry : candidateEIPs) {
        try {
            String associatedInstanceId;

            // Check with AWS, if this EIP is already been used by another instance
            DescribeAddressesRequest describeAddressRequest = new DescribeAddressesRequest()
                    .withPublicIps(eipEntry);
            DescribeAddressesResult result = ec2Service.describeAddresses(describeAddressRequest);
            if ((result.getAddresses() != null) && (!result.getAddresses().isEmpty())) {
                Address eipAddress = result.getAddresses().get(0);
                associatedInstanceId = eipAddress.getInstanceId();
                // This EIP is not used by any other instance, hence mark it for selection if it is not
                // already marked.
                if (((associatedInstanceId == null) || (associatedInstanceId.isEmpty()))) {
                    if (selectedEIP == null) {
                        selectedEIP = eipAddress;
                    }
                } else if (isMyinstanceAssociatedWithEIP = (associatedInstanceId.equals(myInstanceId))) {
                    // This EIP is associated with an instance, check if this is the same as the current instance.
                    // If it is the same, stop searching for an EIP as this instance is already associated with an
                    // EIP
                    selectedEIP = eipAddress;
                    break;
                } else {
                    // The EIP is used by some other instance, hence skip it
                    logger.warn(
                            "The selected EIP {} is associated with another instance {} according to AWS, hence "
                                    + "skipping this",
                            eipEntry, associatedInstanceId);
                }
            }
        } catch (Throwable t) {
            logger.error("Failed to bind elastic IP: " + eipEntry + " to " + myInstanceId, t);
        }
    }
    if (null != selectedEIP) {
        String publicIp = selectedEIP.getPublicIp();
        // Only bind if the EIP is not already associated
        if (!isMyinstanceAssociatedWithEIP) {

            AssociateAddressRequest associateAddressRequest = new AssociateAddressRequest()
                    .withInstanceId(myInstanceId);

            String domain = selectedEIP.getDomain();
            if ("vpc".equals(domain)) {
                associateAddressRequest.setAllocationId(selectedEIP.getAllocationId());
            } else {
                associateAddressRequest.setPublicIp(publicIp);
            }

            ec2Service.associateAddress(associateAddressRequest);
            logger.info("\n\n\nAssociated " + myInstanceId + " running in zone: " + myZone + " to elastic IP: "
                    + publicIp);
        }
        logger.info("My instance {} seems to be already associated with the EIP {}", myInstanceId, publicIp);
    } else {
        logger.info("No EIP is free to be associated with this instance. Candidate EIPs are: " + candidateEIPs);
    }
}

From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java

License:Apache License

/**
 * Assigns an elasticIp to an instance via the allocationId. Will return the public IP.
 *
 * @param instanceId// w  w  w .j  a  v a  2  s.  co m
 * @param allocationId
 * @param ec2Client
 * @return publicIp
 */
public String assignElasticIp(String instanceId, String allocationId, AmazonEC2 ec2Client) {
    AssociateAddressRequest assAddReq = new AssociateAddressRequest().withInstanceId(instanceId)
            .withAllocationId(allocationId);
    @SuppressWarnings("unused")
    AssociateAddressResult res = ec2Client.associateAddress(assAddReq);

    DescribeAddressesRequest req = new DescribeAddressesRequest().withAllocationIds(allocationId);
    String publicIp = ec2Client.describeAddresses(req).getAddresses().get(0).getPublicIp();

    log.info("Ip ( " + publicIp + " ) assigned to:" + instanceId);

    return publicIp;
}

From source file:com.zotoh.cloudapi.aws.ElasticIP.java

License:Open Source License

@Override
public void assign(String addr, String server) throws InternalException, CloudException {
    tstEStrArg("instance-id", server);
    tstEStrArg("ip-addr", addr);
    _svc.getCloud().getEC2()//from   w ww.j a v a  2s  . co  m
            .associateAddress(new AssociateAddressRequest().withInstanceId(server).withPublicIp(addr));
}

From source file:ec2.AllocateAddress.java

License:Open Source License

public static void main(String[] args) {

    final String USAGE = "To run this example, supply an instance id\n" + "Ex: AllocateAddress <instance-id>\n";

    if (args.length != 1) {
        System.out.println(USAGE);
        System.exit(1);/*  ww w  . ja  v a 2 s.com*/
    }

    String instanceId = args[0];

    final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

    AllocateAddressRequest allocateAddressRequest = new AllocateAddressRequest().withDomain(DomainType.Vpc);

    AllocateAddressResult allocateAddressResponsee = ec2.allocateAddress(allocateAddressRequest);

    String allocationId = allocateAddressResponsee.getAllocationId();

    AssociateAddressRequest request = new AssociateAddressRequest().withInstanceId(instanceId)
            .withAllocationId(allocationId);

    AssociateAddressResult response = ec2.associateAddress(request);

    System.out.printf("Successfully associated elastic ip address %s with instance %s",
            response.getAssociationId(), instanceId);
}

From source file:edu.umass.cs.aws.support.AWSEC2.java

License:Apache License

/**
 *
 * @param ec2//from  w  ww.  j  a v a  2  s  .  c  om
 * @param ip
 * @param instance
 */
public static void associateAddress(AmazonEC2 ec2, String ip, Instance instance) {
    Address address;
    if ((address = findElasticIP(ec2, ip)) != null) {
        if (address.getDomain().equals("vpc")) {
            System.out.println("VPC Elastic IP:  " + ip);
            ec2.associateAddress(new AssociateAddressRequest().withInstanceId(instance.getInstanceId())
                    .withAllocationId(address.getAllocationId()));
        } else {
            System.out.println("EC2 Classic Elastic IP:  " + ip);
            ec2.associateAddress(new AssociateAddressRequest(instance.getInstanceId(), ip));
        }
    }
}