List of usage examples for com.amazonaws.services.ec2.model Address getInstanceId
public String getInstanceId()
The ID of the instance that the address is associated with (if any).
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); }/*from ww w .j a v a 2 s . c o m*/ } }
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./*w ww . java 2 s . c om*/ * * 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./*w w w .j a va2 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.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.oracle.coherence.cloud.amazon.EC2AddressProvider.java
License:Open Source License
/** * Generates the WKA list using an AmazonEC2 client. * // w w w. j av a 2s . 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.vb.aws.services.compute.ec2.EC2UtilsImpl.java
/** * This method returns all unused EIPs/*w ww . ja v a2 s.c om*/ * @return returns all unused EIPs */ public List<Address> getAllUnusedEIPs(List<Address> allEIPs) { List<Address> allUnusedEIPs = new ArrayList<>(); if (allEIPs != null || allEIPs.size() > 0) { for (Address address : allEIPs) { if (address.getInstanceId() == null) { allUnusedEIPs.add(address); } } } System.out.println("INFO : Number of Unused EIPs : " + allUnusedEIPs.size()); List<String> EIPs = allUnusedEIPs.stream().map(e -> e.getPublicIp()).collect(Collectors.toList()); System.out.println("INFO : Unused EIPs : " + EIPs); return allUnusedEIPs; }
From source file:com.zotoh.cloudapi.aws.ElasticIP.java
License:Open Source License
@Override public Iterable<IpAddress> listPublicIpPool(boolean unassignedOnly) throws InternalException, CloudException { DescribeAddressesResult res = _svc.getCloud().getEC2().describeAddresses(new DescribeAddressesRequest()); List<Address> lst = res == null ? null : res.getAddresses(); Address a; List<IpAddress> rc = LT(); if (lst != null) for (int i = 0; i < lst.size(); ++i) { a = lst.get(i);/* ww w .j ava2s . c o m*/ if (unassignedOnly && !isEmpty(a.getInstanceId())) { } else rc.add(toIPAddr(a)); } return rc; }
From source file:com.zotoh.cloudapi.aws.ElasticIP.java
License:Open Source License
private IpAddress toIPAddr(Address a) { IpAddress p = null;//from w w w . j a v a 2 s.co m if (a != null) { p = new IpAddress(); p.setRegionId(_svc.getCloud().getContext().getRegionId()); p.setAddressType(AddressType.PUBLIC); p.setServerId(a.getInstanceId()); p.setAddress(a.getPublicIp()); p.setIpAddressId(p.getAddress()); } return p; }
From source file:fr.xebia.workshop.continuousdelivery.CreateNexusInstance.java
License:Apache License
@Override public void execute(AmazonEC2 ec2, WorkshopInfrastructure workshopInfrastructure) throws Exception { logger.info("STARTING CREATE NEXUS SERVER"); // TERMINATE EXISTING NEXUS SERVERS IF EXIST AmazonAwsUtils.terminateInstancesByRole(TeamInfrastructure.ROLE_NEXUS, ec2); // CREATE NEXUS INSTANCE String cloudConfigFilePath = "fr/xebia/workshop/continuousdelivery/cloud-config-amzn-linux-nexus.txt"; String userData = CloudInitUserDataBuilder.start().addCloudConfigFromFilePath(cloudConfigFilePath) .buildBase64UserData();/*from w ww.j a va 2 s .c o m*/ RunInstancesRequest runInstancesRequest = new RunInstancesRequest() // .withInstanceType(InstanceType.T1Micro.toString()) // .withImageId(AmazonAwsUtils.AMI_AMZN_LINUX_EU_WEST) // .withMinCount(1) // .withMaxCount(1) // .withSecurityGroupIds("accept-all") // .withKeyName(KEY_PAIR_NAME) // .withUserData(userData); // START NEXUS INSTANCE List<Instance> nexusInstances = AmazonAwsUtils.reliableEc2RunInstances(runInstancesRequest, ec2); Instance nexusInstance = Iterables.getOnlyElement(nexusInstances); // TAG NEXUS INSTANCES CreateTagsRequest createTagsRequest = new CreateTagsRequest(); createTagsRequest.withResources(nexusInstance.getInstanceId()) // .withTags(// new Tag("Name", "nexus"), // new Tag("Workshop", "continuous-delivery-workshop"), // new Tag("Role", TeamInfrastructure.ROLE_NEXUS)); ec2.createTags(createTagsRequest); // first waits for Nexus availability, otherwise the following elastic IP assignment will break its installation waitForNexusAvailability(nexusInstance); final String publicIp = workshopInfrastructure.getNexusPublicIp(); // ASSOCIATE NEXUS INSTANCE WITH PUBLIC IP Address address = Iterables.getOnlyElement( ec2.describeAddresses(new DescribeAddressesRequest().withPublicIps(publicIp)).getAddresses()); String currentlyAssociatedId = address.getInstanceId(); if (currentlyAssociatedId == null) { logger.debug("Public IP {} is not currently associated with an instance", publicIp); } else { logger.info("Public IP {} is currently associated instance '{}'. Disassociate it first.", publicIp, currentlyAssociatedId); ec2.disassociateAddress(new DisassociateAddressRequest(publicIp)); } ec2.associateAddress(new AssociateAddressRequest(nexusInstance.getInstanceId(), publicIp)); try { AmazonAwsUtils.awaitForHttpAvailability(workshopInfrastructure.getNexusUrlWithIp()); AmazonAwsUtils.awaitForHttpAvailability(workshopInfrastructure.getNexusUrlWithDomainName()); } catch (Exception e) { logger.warn("Silently skipped " + e, e); } logger.info("1 NEXUS SERVER {} SUCCESSFULLY CREATED AND ASSOCIATED WITH {}: {}", new Object[] { nexusInstance.getInstanceId(), publicIp, nexusInstance }); }
From source file:jp.primecloud.auto.process.aws.AwsAddressProcess.java
License:Open Source License
public Address checkAvailableAddress(AwsProcessClient awsProcessClient, Long instanceNo, Long addressNo) { AwsAddress awsAddress = awsAddressDao.read(addressNo); String publicIp = awsAddress.getPublicIp(); Address address = awsCommonProcess.describeAddress(awsProcessClient, publicIp); if (!StringUtils.isEmpty(address.getInstanceId())) { // ???????? throw new AutoException("EPROCESS-000119", publicIp, address.getInstanceId()); }/*from ww w . j av a 2 s. c om*/ return address; }
From source file:jp.primecloud.auto.process.aws.AwsAddressProcess.java
License:Open Source License
public Address checkAssociatedAddress(AwsProcessClient awsProcessClient, Long instanceNo, Long addressNo) { AwsAddress awsAddress = awsAddressDao.read(addressNo); String publicIp = awsAddress.getPublicIp(); String instanceId = awsAddress.getInstanceId(); // ?????????? Address address = awsCommonProcess.describeAddress(awsProcessClient, publicIp); if (StringUtils.isEmpty(address.getInstanceId())) { // ?????????? throw new AutoException("EPROCESS-000120", publicIp, instanceId); } else if (!StringUtils.equals(instanceId, address.getInstanceId())) { // ?????? throw new AutoException("EPROCESS-000121", publicIp, instanceId, address.getInstanceId()); }/* w ww . ja v a2s. c o m*/ return address; }