private String getEipL3Network(VmNicInventory nic, EipInventory eip){ String L3NetworkUuid = nic.getL3NetworkUuid(); if (eip.getGuestIp() != null) { for (UsedIpInventory ip : nic.getUsedIps()) { if (ip.getIp().equals(eip.getGuestIp())) { L3NetworkUuid = ip.getL3NetworkUuid(); break; } } } return L3NetworkUuid; }
@Override public void run(final FlowTrigger trigger, final Map data) { final VmNicInventory nic = (VmNicInventory) data.get(VmInstanceConstant.Params.VmNicInventory.toString()); final UsedIpInventory ipInv = (UsedIpInventory) data.get(VmInstanceConstant.Params.UsedIPInventory.toString()); ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(ipInv.getL3NetworkUuid()); msg.setUsedIpUuid(ipInv.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ipInv.getL3NetworkUuid()); bus.send(msg, new CloudBusCallBack(trigger) { @Override public void run(MessageReply reply) { for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterDelIpAddress(nic.getUuid(), ipInv.getUuid()); } new DualStackNicSecondaryNetworksOperator().deleteSecondaryNetworksByVmNic(nic, ipInv.getL3NetworkUuid()); trigger.next(); } }); } }
public static List<UsedIpInventory> valueOf(Collection<UsedIpVO> vos) { List<UsedIpInventory> invs = new ArrayList<UsedIpInventory>(vos.size()); for (UsedIpVO vo : vos) { invs.add(UsedIpInventory.valueOf(vo)); } return invs; }
public static APIQueryIpAddressReply __example__() { APIQueryIpAddressReply reply = new APIQueryIpAddressReply(); UsedIpInventory ip = new UsedIpInventory(); ip.setVmNicUuid(uuid()); ip.setUuid(uuid()); ip.setL3NetworkUuid(uuid()); ip.setGateway("192.168.1.1"); ip.setIpRangeUuid(uuid()); ip.setIpVersion(IPv6Constants.IPv4); ip.setIp("192.168.1.100"); ip.setNetmask("255.255.255.0"); reply.setInventories(Arrays.asList(ip)); return reply; }
public static UsedIpInventory valueOf(UsedIpVO vo) { UsedIpInventory inv = new UsedIpInventory(); inv.setCreateDate(vo.getCreateDate()); inv.setUuid(vo.getUuid()); inv.setIpVersion(vo.getIpVersion()); inv.setIp(vo.getIp()); inv.setIpInLong(vo.getIpInLong()); inv.setIpRangeUuid(vo.getIpRangeUuid()); inv.setL3NetworkUuid(vo.getL3NetworkUuid()); inv.setGateway(vo.getGateway()); inv.setNetmask(vo.getNetmask()); inv.setUsedFor(vo.getUsedFor()); inv.setVmNicUuid(vo.getVmNicUuid()); inv.setMetaData(vo.getMetaData()); inv.setLastOpDate(vo.getLastOpDate()); return inv; }
if (!ip.getL3NetworkUuid().equals(l3.getUuid())) { continue; struct.setGateway(ip.getGateway()); String hostname = CollectionUtils.find(spec.getHostnames(), new Function<String, HostName>() { @Override hostname = String.format("%s.%s", hostname, l3.getDnsDomain()); struct.setIpVersion(ip.getIpVersion()); struct.setHostname(hostname); struct.setIp(ip.getIp()); struct.setDnsDomain(l3.getDnsDomain()); struct.setL3Network(l3); spec.getVmInventory().getDefaultL3NetworkUuid().equals(l3.getUuid())); struct.setMac(nic.getMac()); struct.setNetmask(ip.getNetmask()); struct.setMtu(new MtuGetter().getMtu(l3.getUuid())); if (l3.getIpRanges() != null && !l3.getIpRanges().isEmpty()) {
String strategy = nicSpec.getAllocatorStrategy() == null ? L3NetworkConstant.RANDOM_IP_ALLOCATOR_STRATEGY : nicSpec.getAllocatorStrategy(); UsedIpInventory ip = acquireIp(nicSpec.getL3NetworkUuid(), inv.getMac(), strategy); inv.setGateway(ip.getGateway()); inv.setIp(ip.getIp()); inv.setNetmask(ip.getNetmask()); inv.setUsedIpUuid(ip.getUuid()); inv.setIpVersion(ip.getIpVersion());
final UsedIpInventory oldIp = new UsedIpInventory(); for (UsedIpVO ipvo : targetNic.getUsedIps()) { if (ipvo.getL3NetworkUuid().equals(l3Uuid)) { oldIp.setIp(ipvo.getIp()); oldIp.setGateway(ipvo.getGateway()); oldIp.setNetmask(ipvo.getNetmask()); oldIp.setL3NetworkUuid(ipvo.getL3NetworkUuid()); oldIp.setUuid(ipvo.getUuid()); chain.then(new ShareFlow() { UsedIpInventory newIp; String oldIpUuid = oldIp.getUuid();
public static List<String> getL3Uuids(VmNicInventory nic) { List<String> ret = new ArrayList<>(); for (UsedIpInventory ip : nic.getUsedIps()) { ret.add(ip.getL3NetworkUuid()); } ret.add(nic.getL3NetworkUuid()); return ret.stream().distinct().collect(Collectors.toList()); }
} else { for (UsedIpInventory ip : nic.getUsedIps()) { if (l3Uuids.contains(ip.getL3NetworkUuid())) { DetachIpAddressFromVmNicMsg nicMsg = new DetachIpAddressFromVmNicMsg(); nicMsg.setVmNicUuid(nic.getUuid()); nicMsg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(nicMsg, VmInstanceConstant.SERVICE_ID, nic.getVmInstanceUuid()); nicMsgs.add(nicMsg); for (VmDeletionStruct vm : vminvs) { for (VmNicInventory nic : vm.getInventory().getVmNics()) { List<String> rangeUuids = nic.getUsedIps().stream().map(n -> n.getIpRangeUuid()).collect(Collectors.toList()); rangeUuids.removeAll(iprUuids); if(rangeUuids.isEmpty()) { } else { for (UsedIpInventory ip : nic.getUsedIps()) { if (iprUuids.contains(ip.getIpRangeUuid())) { DetachIpAddressFromVmNicMsg nicMsg = new DetachIpAddressFromVmNicMsg(); nicMsg.setVmNicUuid(nic.getUuid()); nicMsg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(nicMsg, VmInstanceConstant.SERVICE_ID, nic.getVmInstanceUuid()); nicMsgs.add(nicMsg);
@Override public void run(List<MessageReply> replies) { for (MessageReply reply : replies) { if (!reply.isSuccess()) { trigger.fail(reply.getError()); return; } final AllocateIpReply ar = reply.castReply(); final UsedIpInventory ip = ar.getIpInventory(); String nicUuid = CollectionUtils.find(nicsNeedNewIp, new Function<String, VmNicInventory>() { @Override public String call(VmNicInventory arg) { return arg.getL3NetworkUuid().equals(ip.getL3NetworkUuid()) ? arg.getUuid() : null; } }); for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterAddIpAddress(nicUuid, ip.getUuid()); } allocatedIPs.add(UsedIpInventory.valueOf(dbf.findByUuid(ip.getUuid(), UsedIpVO.class))); } VmInstanceVO vmvo = dbf.findByUuid(vm.getUuid(), VmInstanceVO.class); spec.setVmInventory(VmInstanceInventory.valueOf(vmvo)); spec.setDestNics(spec.getVmInventory().getVmNics()); trigger.next(); } });
public static boolean nicIncludeAllIps(VmNicInventory nic, List<String> ipUuids) { List<String> ips = nic.getUsedIps().stream().map(ip -> ip.getUuid()).collect(Collectors.toList()); return ips.containsAll(ipUuids); }
public static List<String> getIpAddresses(VmNicInventory nic) { List<String> ret = new ArrayList<>(); for (UsedIpInventory ip : nic.getUsedIps()) { ret.add(ip.getIp()); } return ret; }
public EipStruct generateEipStruct(VmNicInventory nic, VipInventory vip, EipInventory eip, UsedIpInventory guestIp) { EipStruct struct = new EipStruct(); struct.setNic(nic); struct.setVip(vip); struct.setEip(eip); if (guestIp != null) { /* when delete l3 network, ip range is deleted, then release network, so can not get iprange */ IpRangeVO ipr = dbf.findByUuid(guestIp.getIpRangeUuid(), IpRangeVO.class); if (ipr != null) { struct.setGuestIpRange(IpRangeInventory.valueOf(ipr)); } struct.setGuestIp(guestIp); } return struct; }
if (struct.getGuestIp() != null) { to.nicIp = struct.getGuestIp().getIp(); to.nicNetmask = struct.getGuestIp().getNetmask(); to.nicGateway = struct.getGuestIp().getGateway(); to.ipVersion = struct.getGuestIp().getIpVersion(); to.vmBridgeName = new BridgeNameFinder().findByL3Uuid(struct.getGuestIp().getL3NetworkUuid()); } else {
public static boolean includeAllNicL3s(VmNicInventory nic, List<String> l3Uuids) { List<String> l3s = nic.getUsedIps().stream().map(ip -> ip.getL3NetworkUuid()).collect(Collectors.toList()); l3s.add(nic.getL3NetworkUuid()); return l3Uuids.containsAll(l3s); }
@Override public void rollback(final FlowRollback chain, Map data) { UsedIpInventory ipInventory = (UsedIpInventory) data.get(VmInstanceConstant.Params.UsedIPInventory.toString()); if (ipInventory == null) { chain.rollback(); return; } final L3NetworkInventory l3 = (L3NetworkInventory) data.get(VmInstanceConstant.Params.L3NetworkInventory.toString()); final VmNicInventory nic = (VmNicInventory) data.get(VmInstanceConstant.Params.VmNicInventory.toString()); ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(l3.getUuid()); msg.setUsedIpUuid(ipInventory.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, l3.getUuid()); bus.send(msg, new CloudBusCallBack(chain) { @Override public void run(MessageReply reply) { for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterDelIpAddress(nic.getUuid(), ipInventory.getUuid()); } VmNicInventory nicInv = VmNicInventory.valueOf(dbf.findByUuid(nic.getUuid(), VmNicVO.class)); new DualStackNicSecondaryNetworksOperator().deleteSecondaryNetworksByVmNic(nicInv, l3.getUuid()); chain.rollback(); } }); } }
@Override public void vmIpChanged(VmInstanceInventory vm, VmNicInventory nic, UsedIpInventory oldIp, UsedIpInventory newIp) { SimpleQuery<EipVO> q = dbf.createQuery(EipVO.class); q.add(EipVO_.vmNicUuid, Op.EQ, nic.getUuid()); q.add(EipVO_.guestIp, Op.EQ, oldIp.getIp()); EipVO eip = q.find(); if (eip == null) { return; } eip.setGuestIp(newIp.getIp()); dbf.update(eip); logger.debug(String.format("update the EIP[uuid:%s, name:%s]'s guest IP from %s to %s for the nic[uuid:%s]", eip.getUuid(), eip.getName(), oldIp.getIp(), newIp.getIp(), nic.getUuid())); }
@Override public void rollback(final FlowRollback chain, Map data) { final List<VmNicInventory> destNics = (List<VmNicInventory>) data.get(VmInstanceConstant.Params.VmAllocateNicFlow_nics.toString()); final List<String> nicUuids = destNics.stream().map(VmNicInventory::getUuid).collect(Collectors.toList()); List<UsedIpInventory> ips = (List<UsedIpInventory>) data.get(VmInstanceConstant.Params.VmAllocateNicFlow_ips.toString()); List<ReturnIpMsg> msgs = new ArrayList<ReturnIpMsg>(); for (UsedIpInventory ip : ips) { ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(ip.getL3NetworkUuid()); msg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid()); msgs.add(msg); } if (msgs.isEmpty()) { dbf.removeByPrimaryKeys(nicUuids, VmNicVO.class); chain.rollback(); return; } bus.send(msgs, 1, new CloudBusListCallBack(chain) { @Override public void run(List<MessageReply> replies) { dbf.removeByPrimaryKeys(nicUuids, VmNicVO.class); chain.rollback(); } }); } }