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); }
@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(); } }); } }
@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(); } }); } }
@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 run(MessageReply reply) { for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterDelIpAddress(nic.getUuid(), ipInv.getUuid()); } new DualStackNicSecondaryNetworksOperator().deleteSecondaryNetworksByVmNic(nic, ipInv.getL3NetworkUuid()); trigger.next(); } });
@Override public void rollback(FlowRollback trigger, Map data) { List<UsedIpInventory> allocatedIps = (List<UsedIpInventory>) data.get(VmAllocateNicForStartingVmFlow.class); if (allocatedIps == null || allocatedIps.isEmpty()) { trigger.rollback(); return; } new While<>(allocatedIps).all((ip, cmpl) -> { ReturnIpMsg rmsg = new ReturnIpMsg(); rmsg.setL3NetworkUuid(ip.getL3NetworkUuid()); rmsg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(rmsg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid()); bus.send(rmsg, new CloudBusCallBack(cmpl) { @Override public void run(MessageReply reply) { for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterDelIpAddress(ip.getVmNicUuid(), ip.getUuid()); } cmpl.done(); } }); }).run(new NoErrorCompletion(trigger) { @Override public void done() { trigger.rollback(); } }); } }
@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 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(); } });
DetachIpAddressFromVmNicMsg nicMsg = new DetachIpAddressFromVmNicMsg(); nicMsg.setVmNicUuid(nic.getUuid()); nicMsg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(nicMsg, VmInstanceConstant.SERVICE_ID, nic.getVmInstanceUuid()); nicMsgs.add(nicMsg); DetachIpAddressFromVmNicMsg nicMsg = new DetachIpAddressFromVmNicMsg(); nicMsg.setVmNicUuid(nic.getUuid()); nicMsg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(nicMsg, VmInstanceConstant.SERVICE_ID, nic.getVmInstanceUuid()); nicMsgs.add(nicMsg);
ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(ip.getL3NetworkUuid()); msg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid()); msgs.add(msg);
@Override public void run(MessageReply reply) { if (reply.isSuccess()) { AllocateIpReply areply = reply.castReply(); UsedIpInventory ipInventory = areply.getIpInventory(); for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) { ext.afterAddIpAddress(vmNicVO.getUuid(), ipInventory.getUuid()); } data.put(VmInstanceConstant.Params.UsedIPInventory.toString(), ipInventory); VmNicInventory nicInv = VmNicInventory.valueOf(dbf.findByUuid(nic.getUuid(), VmNicVO.class)); new DualStackNicSecondaryNetworksOperator().createSecondaryNetworksByVmNic(nicInv, l3.getUuid()); trigger.next(); } else { trigger.fail(reply.getError()); } } });
UsedIpInventory ip = r.getIpInventory(); dhcpServerIp = ip.getIp(); dhcpServerIpUuid = ip.getUuid();
msg.setUsedIpUuid(ip.getUuid()); msg.setL3NetworkUuid(ip.getL3NetworkUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid());
chain.then(new ShareFlow() { UsedIpInventory newIp; String oldIpUuid = oldIp.getUuid();
inv.setIp(ip.getIp()); inv.setNetmask(ip.getNetmask()); inv.setUsedIpUuid(ip.getUuid()); inv.setIpVersion(ip.getIpVersion());