List of usage examples for com.amazonaws.services.ec2.model DescribeAddressesResult getAddresses
public java.util.List<Address> getAddresses()
Information about the Elastic IP addresses.
From source file:aws.example.ec2.DescribeAddresses.java
License:Open Source License
public static void main(String[] args) { final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); DescribeAddressesResult response = ec2.describeAddresses(); for (Address address : response.getAddresses()) { System.out.printf(/*from w w w .j a v a2 s .co m*/ "Found address with public IP %s, " + "domain %s, " + "allocation id %s " + "and NIC id %s", address.getPublicIp(), address.getDomain(), address.getAllocationId(), address.getNetworkInterfaceId()); } }
From source file:com.hpcloud.daas.ec2.AwsConsoleApp.java
License:Open Source License
public static void describeAddresses() { DescribeAddressesResult result = ec2.describeAddresses(); List<Address> addresses = result.getAddresses(); for (Address address : addresses) { System.out.println(address); }//from ww w . ja va2 s.c om }
From source file:com.hpcloud.daas.ec2.AwsConsoleApp.java
License:Open Source License
public static void cleanupPublicIPs() { DescribeAddressesResult result = ec2.describeAddresses(); List<Address> addresses = result.getAddresses(); for (Address address : addresses) { ReleaseAddressRequest releaseReq = new ReleaseAddressRequest(); releaseReq.setAllocationId(address.getAllocationId()); releaseReq.setPublicIp(address.getPublicIp()); if (address.getInstanceId() == null || address.getInstanceId().equals("")) { ec2.releaseAddress(releaseReq); }// ww w. j a va 2 s . c om } }
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 ww w . ja v a 2 s . 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.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.aws.EIPManager.java
License:Apache License
/** * Unbind the EIP that this instance is associated with. *///from w w w .j av a2s . c om public void unbindEIP() throws Exception { InstanceInfo myInfo = applicationInfoManager.getInfo(); String myPublicIP = null; if (myInfo != null && myInfo.getDataCenterInfo().getName() == Name.Amazon) { myPublicIP = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.publicIpv4); if (myPublicIP == null) { logger.info("Instance is not associated with an EIP. Will not try to unbind"); return; } try { AmazonEC2 ec2Service = getEC2Service(); DescribeAddressesRequest describeAddressRequest = new DescribeAddressesRequest() .withPublicIps(myPublicIP); DescribeAddressesResult result = ec2Service.describeAddresses(describeAddressRequest); if ((result.getAddresses() != null) && (!result.getAddresses().isEmpty())) { Address eipAddress = result.getAddresses().get(0); DisassociateAddressRequest dissociateRequest = new DisassociateAddressRequest(); String domain = eipAddress.getDomain(); if ("vpc".equals(domain)) { dissociateRequest.setAssociationId(eipAddress.getAssociationId()); } else { dissociateRequest.setPublicIp(eipAddress.getPublicIp()); } ec2Service.disassociateAddress(dissociateRequest); logger.info("Dissociated the EIP {} from this instance", myPublicIP); } } catch (Throwable e) { throw new RuntimeException("Cannot dissociate address from this instance", e); } } }
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 ww .ja va 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.netflix.eureka.util.EIPManager.java
License:Apache License
/** * Unbind the EIP that this instance is associated with. *//* w ww . ja va 2 s . c om*/ public void unbindEIP() { InstanceInfo myInfo = ApplicationInfoManager.getInstance().getInfo(); String myPublicIP = null; if (myInfo != null && myInfo.getDataCenterInfo().getName() == Name.Amazon) { myPublicIP = ((AmazonInfo) myInfo.getDataCenterInfo()).get(MetaDataKey.publicIpv4); try { AmazonEC2 ec2Service = getEC2Service(); DescribeAddressesRequest describeAddressRequest = new DescribeAddressesRequest() .withPublicIps(myPublicIP); DescribeAddressesResult result = ec2Service.describeAddresses(describeAddressRequest); if ((result.getAddresses() != null) && (!result.getAddresses().isEmpty())) { Address eipAddress = result.getAddresses().get(0); DisassociateAddressRequest dissociateRequest = new DisassociateAddressRequest(); String domain = eipAddress.getDomain(); if ("vpc".equals(domain)) { dissociateRequest.setAssociationId(eipAddress.getAssociationId()); } else { dissociateRequest.setPublicIp(eipAddress.getPublicIp()); } ec2Service.disassociateAddress(dissociateRequest); logger.info("Dissociated the EIP {} from this instance", myPublicIP); } } catch (Throwable e) { throw new RuntimeException("Cannot dissociate address" + myPublicIP + "from this instance", e); } } }
From source file:com.oracle.coherence.cloud.amazon.EC2AddressProvider.java
License:Open Source License
/** * Generates the WKA list using an AmazonEC2 client. * //from ww w . jav a2s . c om * @param ec2 the {@link AmazonEC2} client to use. * * @return the WKA list */ protected List<InetSocketAddress> generateWKAList(AmazonEC2 ec2) { String portString = System.getProperty("tangosol.coherence.ec2addressprovider.port", "8088"); int wkaPort = Integer.parseInt(portString); List<InetSocketAddress> resultList = new ArrayList<InetSocketAddress>(); DescribeInstancesResult describeInstancesResult = ec2.describeInstances(); List<Reservation> reservations = describeInstancesResult.getReservations(); Set<Instance> instances = new HashSet<Instance>(); for (Reservation reservation : reservations) { instances.addAll(reservation.getInstances()); if (logger.isLoggable(Level.CONFIG)) { logger.log(Level.CONFIG, "Examining EC2 reservation:" + reservation); } } logAllInstances(instances); DescribeAddressesResult elasticAddressesResult = ec2.describeAddresses(); if (elasticAddressesResult != null) { for (Iterator<Address> elasticAddressIter = elasticAddressesResult.getAddresses() .iterator(); elasticAddressIter.hasNext();) { Address elasticAddress = elasticAddressIter.next(); for (Iterator<Instance> instIter = instances.iterator(); instIter.hasNext();) { Instance instance = instIter.next(); if (instance.getInstanceId().equals(elasticAddress.getInstanceId())) { //Now we have a match - add with default port if (logger.isLoggable(Level.CONFIG)) { logger.log(Level.CONFIG, "EC2AddressProvider - adding {0} from instance {1} to WKA list", new Object[] { instance.getPrivateIpAddress(), instance }); } resultList.add(new InetSocketAddress(instance.getPrivateIpAddress(), wkaPort)); } } } if (resultList.size() == 0) { throw new RuntimeException( "The EC2AddressProvider could not find any instance mapped to an Elastic IP"); } } else { throw new RuntimeException("The EC2AddressProvider could not enumerate the Elastic IP Addresses"); } return resultList; }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
/** * Cleans up any elastic ips that are not associated with anything (via associationId). * The addresses are released./*w ww . j a va 2s .c o m*/ * * @param ec2Client */ public void cleanupElasticIps(AmazonEC2 ec2Client) { DescribeAddressesResult result = ec2Client.describeAddresses(); List<Address> addresses = result.getAddresses(); if (addresses != null) { for (Address address : addresses) { if (address.getAssociationId() != null && !address.getAssociationId().equals("")) { ReleaseAddressRequest request = new ReleaseAddressRequest() .withAllocationId(address.getAllocationId()); ec2Client.releaseAddress(request); } } } }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
/** * Retrieves the AssocaitionId (given when you associate an elastic IP with an instance) * from the AllocationId (given when you request an elastic IP) * * @param allocId//from w w w .j av a 2 s. c o m * @param ec2Client * @return */ public String getAssociationIdForAllocationId(String allocId, AmazonEC2 ec2Client) { String assocId = null; try { DescribeAddressesRequest request = new DescribeAddressesRequest().withAllocationIds(allocId); DescribeAddressesResult result = ec2Client.describeAddresses(request); List<Address> addresses = result.getAddresses(); if (addresses != null & !addresses.isEmpty()) { if (addresses.size() > 1) { log.error("Found more than one Address for allocationId ( " + allocId + " ) !"); } assocId = addresses.get(0).getAssociationId(); } } catch (AmazonServiceException e) { log.error("AmazonSerivceException caught while trying to get Association Id", e); if (!"InvalidAllocationID.NotFound".equals(e.getErrorCode())) { throw e; } } return assocId; }