@Override public void allocateIpToServiceIndex(Service service, ServiceIndex serviceIndex, List<String> requestedIps) { if (StringUtils.isEmpty(serviceIndex.getAddress())) { String ntwkMode = networkService.getNetworkMode(DataAccessor .fieldMap(service, ServiceConstants.FIELD_LAUNCH_CONFIG)); if (ntwkMode == null) { return; } Network ntwk = networkService.resolveNetwork(serviceIndex.getAccountId(), ntwkMode.toString()); if (networkService.shouldAssignIpAddress(ntwk)) { IPAssignment assignment = networkService.assignIpAddress(ntwk, serviceIndex, requestedIps); if (assignment != null) { setServiceIndexIp(serviceIndex, assignment.getIpAddress()); } } } }
protected IpAddress getIpAddress(Nic nic, Network network) { IpAddress ipAddress = ipAddressDao.getPrimaryIpAddress(nic); if (ipAddress == null && networkService.shouldAssignIpAddress(network)) { ipAddress = ipAddressDao.mapNewIpAddress(nic, IP_ADDRESS.ROLE, IpAddressConstants.ROLE_PRIMARY, IP_ADDRESS.NETWORK_ID, nic.getNetworkId()); } for (IpAddressNicMap map : mapDao.findNonRemoved(IpAddressNicMap.class, Nic.class, nic.getId())) { getObjectProcessManager().executeStandardProcess(StandardProcess.CREATE, map, null); } if (ipAddress != null) { getObjectProcessManager().executeStandardProcess(StandardProcess.CREATE, ipAddress, null); } return ipAddress; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { IpAddress ipAddress = (IpAddress) state.getResource(); Network network = objectManager.loadResource(Network.class, ipAddress.getNetworkId()); if (!networkService.shouldAssignIpAddress(network)) { return null; } String assignedIp = ipAddress.getAddress(); Long subnetId = ipAddress.getSubnetId(); IPAssignment assignment = allocateIp(ipAddress, network); if (assignment != null) { assignedIp = assignment.getIpAddress(); if (assignment.getSubnet() != null) { subnetId = assignment.getSubnet().getId(); } } return new HandlerResult( IP_ADDRESS.ADDRESS, assignedIp, IP_ADDRESS.SUBNET_ID, subnetId, IP_ADDRESS.NAME, StringUtils.isBlank(ipAddress.getName()) ? assignedIp : ipAddress.getName()); }