protected void returnVip(Completion completion) { ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(self.getL3NetworkUuid()); msg.setUsedIpUuid(self.getUsedIpUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, self.getL3NetworkUuid()); bus.send(msg, new CloudBusCallBack(completion){ @Override public void run(MessageReply reply) { completion.success(); } }); }
private void handle(ReturnIpMsg msg) { ReturnIpReply reply = new ReturnIpReply(); new Retry<Void>() { String __name__ = String.format("return-ip-%s-for-l3-%s", msg.getUsedIpUuid(), msg.getL3NetworkUuid()); @Override @RetryCondition(times = 6) protected Void call() { SQL.New(UsedIpVO.class).eq(UsedIpVO_.uuid, msg.getUsedIpUuid()).hardDelete(); return null; } }.run(); logger.debug(String.format("Successfully released used ip[%s]", msg.getUsedIpUuid())); bus.reply(msg, reply); }
@Override @RetryCondition(times = 6) protected Void call() { SQL.New(UsedIpVO.class).eq(UsedIpVO_.uuid, msg.getUsedIpUuid()).hardDelete(); return null; } }.run();
@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) { 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 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 rollback(FlowRollback chain, Map data) { try { VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString()); List<VmNicInventory> nics = spec.getDestNics(); if (nics.isEmpty()) { return; } removeNicFromDb(nics); for (VmNicInventory nic : nics) { if (nic.getUsedIpUuid() == null) { continue; } ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(nic.getL3NetworkUuid()); msg.setUsedIpUuid(nic.getUsedIpUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, nic.getL3NetworkUuid()); bus.send(msg); } } finally { chain.rollback(); } } }
@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(); } }); } }
for (VmNicInventory nic : spec.getVmInventory().getVmNics()) { for (UsedIpInventory ip : nic.getUsedIps()) { ReturnIpMsg msg = new ReturnIpMsg(); msg.setL3NetworkUuid(ip.getL3NetworkUuid()); msg.setUsedIpUuid(ip.getUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid()); msgs.add(msg);
ReturnIpMsg msg = new ReturnIpMsg(); msg.setUsedIpUuid(ip.getUuid()); msg.setL3NetworkUuid(ip.getL3NetworkUuid()); bus.makeTargetServiceIdByResourceUuid(msg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid()); bus.send(msg, new CloudBusCallBack(comp) {