diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/controller/neutronClient/TfPortClient.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/controller/neutronClient/TfPortClient.java index 443760c64607220583d0b03e111eed726f359127..7e3c1e1a43bad79a28545da574b806e6ae6cb9fe 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/controller/neutronClient/TfPortClient.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/controller/neutronClient/TfPortClient.java @@ -498,6 +498,10 @@ public class TfPortClient { } catch (IOException e) { throw new RuntimeException(e); } + if (portObj == null) { + response.setCode(200); + return response; + } String instanceId; if (Objects.equals(portObj.getParentType(), "virtual-machine")) { instanceId = portObj.getParentUuid(); diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfL2Network.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfL2Network.java index f8753453ab7a8a93a2028bbc5519ff91caef6fe1..a3ba74240c935019eab820b90a521b7256c33ed5 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfL2Network.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfL2Network.java @@ -1,6 +1,8 @@ package org.zstack.sugonSdnController.network; import org.springframework.beans.factory.annotation.Autowired; +import org.zstack.header.network.l3.L3NetworkVO; +import org.zstack.header.network.l3.L3NetworkVO_; import org.zstack.sugonSdnController.controller.SugonSdnController; import org.zstack.sugonSdnController.controller.SugonSdnControllerConstant; import org.zstack.core.db.Q; @@ -18,6 +20,7 @@ import org.zstack.sdnController.header.SdnControllerVO; import org.zstack.sdnController.header.SdnControllerVO_; import static org.zstack.core.Platform.err; +import static org.zstack.core.Platform.operr; public class TfL2Network extends L2NoVlanNetwork implements TfL2NetworkExtensionPoint{ @@ -190,6 +193,12 @@ public class TfL2Network extends L2NoVlanNetwork implements TfL2NetworkExtension private void handle(APIDeleteL2NetworkMsg msg) { APIDeleteL2NetworkEvent evt = new APIDeleteL2NetworkEvent(msg.getId()); + if(Q.New(L3NetworkVO.class).eq(L3NetworkVO_.l2NetworkUuid, msg.getL2NetworkUuid()).count() > 0){ + String error = String.format("L2Network[%s] still has some L3Networks, please delete L3Networks first.", msg.getL2NetworkUuid()); + evt.setError(operr(error)); + bus.publish(evt); + return; + } deleteTfL2NetworkOnSdnController(self, new Completion(msg) { @Override public void success() { diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfNicManageExtensionPointImpl.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfNicManageExtensionPointImpl.java index fd8e7733256e4b124f1dbe298db59e32010fa6e1..24bf1e8ff9326383c6d63036bb81f9185a09a33f 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfNicManageExtensionPointImpl.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfNicManageExtensionPointImpl.java @@ -31,8 +31,10 @@ public class TfNicManageExtensionPointImpl implements NicManageExtensionPoint { nic.setType(VmInstanceConstant.TF_VIRTUAL_NIC_TYPE); TfPortResponse port = null; String portUuid = msg.getResourceUuid(); + String tfPortUuid = null; if (portUuid != null){ - port = tfPortService.getTfPort(StringDSL.transToTfUuid(portUuid)); + tfPortUuid = StringDSL.transToTfUuid(portUuid); + port = tfPortService.getTfPort(tfPortUuid); if (port != null){ String ipAddr = null; for (TfPortIpEntity ipEntrty: port.getFixedIps()) { @@ -52,7 +54,7 @@ public class TfNicManageExtensionPointImpl implements NicManageExtensionPoint { } if (port == null) { String l2NetworkUuid = l3Network.getL2NetworkUuid(); - port = tfPortService.createTfPort(StringDSL.transToTfUuid(portUuid), l2NetworkUuid, msg.getL3NetworkUuid(), + port = tfPortService.createTfPort(tfPortUuid, l2NetworkUuid, msg.getL3NetworkUuid(), nic.getMac(), msg.getIp()); logger.debug("Create a new tf port success."); }