public static void releaseAddress(final Address currentAddr) { if (currentAddr.isAssigned()) { try { VmInstance vm = VmInstances.getInstance().lookup(currentAddr.getInstanceId()); unassignAddressFromVm(currentAddr, vm); } catch (Throwable e) { LOG.debug(e, e); } } currentAddr.release(); }
public static void update(String cluster, List<Pair> ccList) { List<String> ccListAddrs = Lists.transform( ccList, new Function<Pair, String>() { @Override public String apply(Pair p) { return p.getLeft(); } }); for (Pair p : ccList) { Address address = AddressUtil.lookupOrCreate(cluster, p); try { InetAddress addr = Inet4Address.getByName(p.getRight()); VmInstance vm; try { vm = VmInstances.getInstance().lookupByInstanceIp(p.getRight()); if (Address.UNALLOCATED_USERID.equals(address.getUserId())) { address.allocate(Component.eucalyptus.name()); } if (!address.isAssigned()) { address.setAssigned(vm.getInstanceId(), p.getRight()); } orphans.remove(address.getName()); } catch (Exception e1) { if (!addr.isLoopbackAddress() && !AddressUtil.checkForPendingVm()) { AddressUtil.handleOrphan(cluster, address); } else { orphans.remove(address.getName()); } } } catch (UnknownHostException e1) { LOG.debug(e1, e1); orphans.remove(address.getName()); } } }