From a9ae99197a73f80080e2b10a2043cdf2299cde06 Mon Sep 17 00:00:00 2001 From: fuyi Date: Thu, 26 Oct 2023 11:18:59 +0800 Subject: [PATCH 1/6] migrate_vm_sugon --- conf/springConfigXml/sugonSdnController.xml | 2 +- .../header/vm/VmUpdateNicOnHypervisorMsg.java | 10 +++ .../java/org/zstack/kvm/KVMAgentCommands.java | 9 ++ .../src/main/java/org/zstack/kvm/KVMHost.java | 1 + .../TfAfterMigrateExtensionPointImpl.java | 55 ------------ .../network/TfMigrateExtensionPointImpl.java | 90 +++++++++++++++++++ 6 files changed, 111 insertions(+), 56 deletions(-) delete mode 100644 plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfAfterMigrateExtensionPointImpl.java create mode 100644 plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java diff --git a/conf/springConfigXml/sugonSdnController.xml b/conf/springConfigXml/sugonSdnController.xml index 6188abb0a9..b3570342b8 100644 --- a/conf/springConfigXml/sugonSdnController.xml +++ b/conf/springConfigXml/sugonSdnController.xml @@ -44,7 +44,7 @@ - + diff --git a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java index 4941955e25..31ce44ec99 100644 --- a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java +++ b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java @@ -11,6 +11,7 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host private String vmInstanceUuid; private List nicsUuid = new ArrayList<>(); private boolean notifySugonSdn; + private String sugonSdnAction; @Override public String getHostUuid() { @@ -44,4 +45,13 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host public void setNotifySugonSdn(boolean notifySugonSdn) { this.notifySugonSdn = notifySugonSdn; } + + public String getSugonSdnAction() { + return sugonSdnAction; + } + + public void setSugonSdnAction(String sugonSdnAction) { + this.sugonSdnAction = sugonSdnAction; + } + } diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java index 43e3b0b3d9..cf28d9ed07 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java @@ -202,6 +202,7 @@ public class KVMAgentCommands { private String accountUuid; // This api may called after migration private boolean notifySugonSdn; + private String sugonSdnAction; public List getNics() { return nics; @@ -246,6 +247,14 @@ public class KVMAgentCommands { public void setNotifySugonSdn(boolean notifySugonSdn) { this.notifySugonSdn = notifySugonSdn; } + + public String getSugonSdnAction() { + return sugonSdnAction; + } + + public void setSugonSdnAction(String sugonSdnAction) { + this.sugonSdnAction = sugonSdnAction; + } } public static class UpdateNicRsp extends AgentResponse { diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java index 58d7ed6867..778ba657fb 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java @@ -2866,6 +2866,7 @@ public class KVMHost extends HostBase implements Host { cmd.setVmInstanceUuid(msg.getVmInstanceUuid()); cmd.setNics(VmNicInventory.valueOf(nics).stream().map(this::completeNicInfo).collect(Collectors.toList())); cmd.setNotifySugonSdn(msg.isNotifySugonSdn()); + cmd.setSugonSdnAction(msg.getSugonSdnAction()); cmd.setAccountUuid(accountMgr.getOwnerAccountUuidOfResource(cmd.getVmInstanceUuid())); KVMHostInventory inv = (KVMHostInventory) getSelfInventory(); diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfAfterMigrateExtensionPointImpl.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfAfterMigrateExtensionPointImpl.java deleted file mode 100644 index 0760f867d1..0000000000 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfAfterMigrateExtensionPointImpl.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.zstack.sugonSdnController.network; - -import org.springframework.beans.factory.annotation.Autowired; -import org.zstack.core.cloudbus.CloudBus; -import org.zstack.core.cloudbus.CloudBusCallBack; -import org.zstack.header.errorcode.ErrorCode; -import org.zstack.header.host.HostConstant; -import org.zstack.header.message.MessageReply; -import org.zstack.header.vm.VmInstanceInventory; -import org.zstack.header.vm.VmInstanceMigrateExtensionPoint; -import org.zstack.header.vm.VmUpdateNicOnHypervisorMsg; -import org.zstack.utils.Utils; -import org.zstack.utils.logging.CLogger; - - -public class TfAfterMigrateExtensionPointImpl implements VmInstanceMigrateExtensionPoint { - private static final CLogger logger = Utils.getLogger(TfAfterMigrateExtensionPointImpl.class); - @Autowired - private CloudBus bus; - - @Override - public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) { - - } - - @Override - public void beforeMigrateVm(VmInstanceInventory inv, String destHostUuid) { - - } - - @Override - public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) { - VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); - cmsg.setVmInstanceUuid(inv.getUuid()); - cmsg.setHostUuid(inv.getHostUuid()); - cmsg.setNotifySugonSdn(true); - bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); - bus.send(cmsg, new CloudBusCallBack(null) { - @Override - public void run(MessageReply reply) { - if (!reply.isSuccess()) { - logger.error(String.format("failed to notify sugon sdn vrouter for vm [uuid:%s], %s", inv.getUuid(), - reply.getError())); - } else { - logger.info(String.format("successfully to notify sugon sdn vrouter for vm[uuid:%s]", inv.getUuid())); - } - } - }); - } - - @Override - public void failedToMigrateVm(VmInstanceInventory inv, String destHostUuid, ErrorCode reason) { - - } -} diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java new file mode 100644 index 0000000000..d9b6a718ed --- /dev/null +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java @@ -0,0 +1,90 @@ +package org.zstack.sugonSdnController.network; + +import org.springframework.beans.factory.annotation.Autowired; +import org.zstack.core.cloudbus.CloudBus; +import org.zstack.header.core.FutureCompletion; +import org.zstack.header.errorcode.ErrorCode; +import org.zstack.header.errorcode.OperationFailureException; +import org.zstack.header.host.HostConstant; +import org.zstack.header.message.MessageReply; +import org.zstack.header.vm.*; +import org.zstack.utils.Utils; +import org.zstack.utils.logging.CLogger; + +import java.util.concurrent.TimeUnit; + +import static org.zstack.core.Platform.operr; + + +public class TfMigrateExtensionPointImpl implements VmInstanceMigrateExtensionPoint { + private static final CLogger logger = Utils.getLogger(TfMigrateExtensionPointImpl.class); + @Autowired + private CloudBus bus; + + @Override + public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) { + + } + + @Override + public void beforeMigrateVm(VmInstanceInventory inv, String destHostUuid) { + if (!needNotiySugonSdn(inv)) { + return; + } + logger.info(String.format("start to notify sugon sdn to add vrouter for vm[uuid:%s] in success flow", inv.getUuid())); + VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); + cmsg.setVmInstanceUuid(inv.getUuid()); + cmsg.setHostUuid(destHostUuid); + cmsg.setNotifySugonSdn(true); + cmsg.setSugonSdnAction("add"); + bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); + MessageReply reply = bus.call(cmsg); + + if (!reply.isSuccess()) { + logger.error(String.format("failed to notify sugon sdn to add vrouter for vm [uuid:%s], %s", inv.getUuid(), + reply.getError())); + throw new OperationFailureException(operr("failed to notify sugon sdn to add vrouter for vm [uuid:%s], on the destination host[uuid:%s]", + inv.getUuid(), destHostUuid).causedBy(reply.getError())); + } else { + logger.info(String.format("successfully to notify sugon sdn to add vrouter for vm[uuid:%s]", inv.getUuid())); + } + } + + @Override + public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) { + + } + + @Override + public void failedToMigrateVm(VmInstanceInventory inv, String destHostUuid, ErrorCode reason) { + if (!needNotiySugonSdn(inv)) { + return; + } + logger.info(String.format("start to notify sugon sdn to delete vrouter for vm[uuid:%s] in failed flow", inv.getUuid())); + VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); + cmsg.setVmInstanceUuid(inv.getUuid()); + cmsg.setHostUuid(destHostUuid); + cmsg.setNotifySugonSdn(true); + cmsg.setSugonSdnAction("delete"); + bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); + MessageReply reply = bus.call(cmsg); + + if (!reply.isSuccess()) { + logger.error(String.format("failed to notify sugon sdn to delete vrouter for vm [uuid:%s], %s", inv.getUuid(), + reply.getError())); + throw new OperationFailureException(operr("failed to notify sugon sdn to delete vrouter for vm [uuid:%s], on the destination host[uuid:%s]", + inv.getUuid(), destHostUuid).causedBy(reply.getError())); + } else { + logger.info(String.format("successfully to notify sugon sdn to delete vrouter for vm[uuid:%s]", inv.getUuid())); + } + } + + private boolean needNotiySugonSdn(VmInstanceInventory inv) { + for (VmNicInventory nic : inv.getVmNics()) { + if (VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(nic.getType())) { + return true; + } + } + return false; + } +} -- Gitee From 09c6f367807c484488f26a85341a77988b259d1f Mon Sep 17 00:00:00 2001 From: fuyi Date: Thu, 26 Oct 2023 19:12:54 +0800 Subject: [PATCH 2/6] review fix --- .../org/zstack/header/vm/SugonNicCfg.java | 23 ++++++++++++++++++ .../header/vm/VmUpdateNicOnHypervisorMsg.java | 21 +++++----------- .../java/org/zstack/kvm/KVMAgentCommands.java | 24 +++++-------------- .../src/main/java/org/zstack/kvm/KVMHost.java | 3 +-- .../network/TfMigrateExtensionPointImpl.java | 12 ++++++---- 5 files changed, 44 insertions(+), 39 deletions(-) create mode 100644 header/src/main/java/org/zstack/header/vm/SugonNicCfg.java diff --git a/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java b/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java new file mode 100644 index 0000000000..9b9a7e3a39 --- /dev/null +++ b/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java @@ -0,0 +1,23 @@ +package org.zstack.header.vm; + +public class SugonNicCfg { + private boolean notifySugonSdn= false; + private String sugonSdnAction; + + public boolean isNotifySugonSdn() { + return notifySugonSdn; + } + + public void setNotifySugonSdn(boolean notifySugonSdn) { + this.notifySugonSdn = notifySugonSdn; + } + + public String getSugonSdnAction() { + return sugonSdnAction; + } + + public void setSugonSdnAction(String sugonSdnAction) { + this.sugonSdnAction = sugonSdnAction; + } + +} diff --git a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java index 31ce44ec99..2fc06b6f6c 100644 --- a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java +++ b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java @@ -10,8 +10,7 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host private String hostUuid; private String vmInstanceUuid; private List nicsUuid = new ArrayList<>(); - private boolean notifySugonSdn; - private String sugonSdnAction; + private SugonNicCfg sugonNicCfg = new SugonNicCfg(); @Override public String getHostUuid() { @@ -38,20 +37,12 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host return nicsUuid; } - public boolean isNotifySugonSdn() { - return notifySugonSdn; + public SugonNicCfg getSugonNicCfg() { + return sugonNicCfg; } - public void setNotifySugonSdn(boolean notifySugonSdn) { - this.notifySugonSdn = notifySugonSdn; + public void setSugonNicCfg(SugonNicCfg sugonNicCfg) { + this.sugonNicCfg = sugonNicCfg; } - public String getSugonSdnAction() { - return sugonSdnAction; - } - - public void setSugonSdnAction(String sugonSdnAction) { - this.sugonSdnAction = sugonSdnAction; - } - -} +} \ No newline at end of file diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java index cf28d9ed07..4099162dca 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java @@ -7,10 +7,7 @@ import org.zstack.header.core.validation.Validation; import org.zstack.header.host.HostNUMANode; import org.zstack.header.host.VmNicRedirectConfig; import org.zstack.header.log.NoLogging; -import org.zstack.header.vm.PriorityConfigStruct; -import org.zstack.header.vm.VmBootDevice; -import org.zstack.header.vm.VmNicInventory; -import org.zstack.header.vm.VmPriorityConfigVO; +import org.zstack.header.vm.*; import org.zstack.header.vm.devices.DeviceAddress; import org.zstack.header.vm.devices.VirtualDeviceInfo; import org.zstack.network.securitygroup.RuleTO; @@ -200,9 +197,7 @@ public class KVMAgentCommands { private List nics; private Map addons = new HashMap<>(); private String accountUuid; - // This api may called after migration - private boolean notifySugonSdn; - private String sugonSdnAction; + private SugonNicCfg sugonNicCfg = new SugonNicCfg(); public List getNics() { return nics; @@ -240,21 +235,14 @@ public class KVMAgentCommands { this.accountUuid = accountUuid; } - public boolean isNotifySugonSdn() { - return notifySugonSdn; + public SugonNicCfg getSugonNicCfg() { + return sugonNicCfg; } - public void setNotifySugonSdn(boolean notifySugonSdn) { - this.notifySugonSdn = notifySugonSdn; + public void setSugonNicCfg(SugonNicCfg sugonNicCfg) { + this.sugonNicCfg = sugonNicCfg; } - public String getSugonSdnAction() { - return sugonSdnAction; - } - - public void setSugonSdnAction(String sugonSdnAction) { - this.sugonSdnAction = sugonSdnAction; - } } public static class UpdateNicRsp extends AgentResponse { diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java index 778ba657fb..2b59b6bc0d 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java @@ -2865,8 +2865,7 @@ public class KVMHost extends HostBase implements Host { UpdateNicCmd cmd = new UpdateNicCmd(); cmd.setVmInstanceUuid(msg.getVmInstanceUuid()); cmd.setNics(VmNicInventory.valueOf(nics).stream().map(this::completeNicInfo).collect(Collectors.toList())); - cmd.setNotifySugonSdn(msg.isNotifySugonSdn()); - cmd.setSugonSdnAction(msg.getSugonSdnAction()); + cmd.setSugonNicCfg(msg.getSugonNicCfg()); cmd.setAccountUuid(accountMgr.getOwnerAccountUuidOfResource(cmd.getVmInstanceUuid())); KVMHostInventory inv = (KVMHostInventory) getSelfInventory(); diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java index d9b6a718ed..bd62d92944 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java @@ -35,8 +35,10 @@ public class TfMigrateExtensionPointImpl implements VmInstanceMigrateExtensionPo VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); cmsg.setVmInstanceUuid(inv.getUuid()); cmsg.setHostUuid(destHostUuid); - cmsg.setNotifySugonSdn(true); - cmsg.setSugonSdnAction("add"); + SugonNicCfg sugonNicCfg = new SugonNicCfg(); + sugonNicCfg.setNotifySugonSdn(true); + sugonNicCfg.setSugonSdnAction("add"); + cmsg.setSugonNicCfg(sugonNicCfg); bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); MessageReply reply = bus.call(cmsg); @@ -64,8 +66,10 @@ public class TfMigrateExtensionPointImpl implements VmInstanceMigrateExtensionPo VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); cmsg.setVmInstanceUuid(inv.getUuid()); cmsg.setHostUuid(destHostUuid); - cmsg.setNotifySugonSdn(true); - cmsg.setSugonSdnAction("delete"); + SugonNicCfg sugonNicCfg = new SugonNicCfg(); + sugonNicCfg.setNotifySugonSdn(true); + sugonNicCfg.setSugonSdnAction("delete"); + cmsg.setSugonNicCfg(sugonNicCfg); bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); MessageReply reply = bus.call(cmsg); -- Gitee From d942c3390d736c7ee3186c71c685d7594375dc15 Mon Sep 17 00:00:00 2001 From: fuyi Date: Fri, 27 Oct 2023 19:56:09 +0800 Subject: [PATCH 3/6] review modify --- conf/springConfigXml/sugonSdnController.xml | 2 +- .../org/zstack/header/vm/SugonNicCfg.java | 23 --- .../header/vm/VmUpdateNicOnHypervisorMsg.java | 10 - .../java/org/zstack/kvm/KVMAgentCommands.java | 11 -- .../src/main/java/org/zstack/kvm/KVMHost.java | 2 - .../network/TfMigrateExtensionPointImpl.java | 94 ---------- .../network/TfMigrateVmBackend.java | 172 ++++++++++++++++++ 7 files changed, 173 insertions(+), 141 deletions(-) delete mode 100644 header/src/main/java/org/zstack/header/vm/SugonNicCfg.java delete mode 100644 plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java create mode 100644 plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java diff --git a/conf/springConfigXml/sugonSdnController.xml b/conf/springConfigXml/sugonSdnController.xml index b3570342b8..02f8d5d414 100644 --- a/conf/springConfigXml/sugonSdnController.xml +++ b/conf/springConfigXml/sugonSdnController.xml @@ -44,7 +44,7 @@ - + diff --git a/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java b/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java deleted file mode 100644 index 9b9a7e3a39..0000000000 --- a/header/src/main/java/org/zstack/header/vm/SugonNicCfg.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.zstack.header.vm; - -public class SugonNicCfg { - private boolean notifySugonSdn= false; - private String sugonSdnAction; - - public boolean isNotifySugonSdn() { - return notifySugonSdn; - } - - public void setNotifySugonSdn(boolean notifySugonSdn) { - this.notifySugonSdn = notifySugonSdn; - } - - public String getSugonSdnAction() { - return sugonSdnAction; - } - - public void setSugonSdnAction(String sugonSdnAction) { - this.sugonSdnAction = sugonSdnAction; - } - -} diff --git a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java index 2fc06b6f6c..4ece5fd8b2 100644 --- a/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java +++ b/header/src/main/java/org/zstack/header/vm/VmUpdateNicOnHypervisorMsg.java @@ -10,7 +10,6 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host private String hostUuid; private String vmInstanceUuid; private List nicsUuid = new ArrayList<>(); - private SugonNicCfg sugonNicCfg = new SugonNicCfg(); @Override public String getHostUuid() { @@ -36,13 +35,4 @@ public class VmUpdateNicOnHypervisorMsg extends NeedReplyMessage implements Host public List getNicsUuid() { return nicsUuid; } - - public SugonNicCfg getSugonNicCfg() { - return sugonNicCfg; - } - - public void setSugonNicCfg(SugonNicCfg sugonNicCfg) { - this.sugonNicCfg = sugonNicCfg; - } - } \ No newline at end of file diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java index 4099162dca..87478afbbd 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java @@ -12,7 +12,6 @@ import org.zstack.header.vm.devices.DeviceAddress; import org.zstack.header.vm.devices.VirtualDeviceInfo; import org.zstack.network.securitygroup.RuleTO; import org.zstack.network.securitygroup.SecurityGroupMembersTO; -import org.zstack.network.securitygroup.SecurityGroupRuleTO; import org.zstack.network.securitygroup.VmNicSecurityTO; import java.io.Serializable; @@ -197,7 +196,6 @@ public class KVMAgentCommands { private List nics; private Map addons = new HashMap<>(); private String accountUuid; - private SugonNicCfg sugonNicCfg = new SugonNicCfg(); public List getNics() { return nics; @@ -234,15 +232,6 @@ public class KVMAgentCommands { public void setAccountUuid(String accountUuid) { this.accountUuid = accountUuid; } - - public SugonNicCfg getSugonNicCfg() { - return sugonNicCfg; - } - - public void setSugonNicCfg(SugonNicCfg sugonNicCfg) { - this.sugonNicCfg = sugonNicCfg; - } - } public static class UpdateNicRsp extends AgentResponse { diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java index 2b59b6bc0d..aee1f07a2d 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java @@ -210,7 +210,6 @@ public class KVMHost extends HostBase implements Host { private String attachVolumePath; private String detachVolumePath; private String vmFstrimPath; - private String agentPackageName = KVMGlobalProperty.AGENT_PACKAGE_NAME; private String hostTakeOverFlagPath = KVMGlobalProperty.TAKEVOERFLAGPATH; @@ -2865,7 +2864,6 @@ public class KVMHost extends HostBase implements Host { UpdateNicCmd cmd = new UpdateNicCmd(); cmd.setVmInstanceUuid(msg.getVmInstanceUuid()); cmd.setNics(VmNicInventory.valueOf(nics).stream().map(this::completeNicInfo).collect(Collectors.toList())); - cmd.setSugonNicCfg(msg.getSugonNicCfg()); cmd.setAccountUuid(accountMgr.getOwnerAccountUuidOfResource(cmd.getVmInstanceUuid())); KVMHostInventory inv = (KVMHostInventory) getSelfInventory(); diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java deleted file mode 100644 index bd62d92944..0000000000 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateExtensionPointImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -package org.zstack.sugonSdnController.network; - -import org.springframework.beans.factory.annotation.Autowired; -import org.zstack.core.cloudbus.CloudBus; -import org.zstack.header.core.FutureCompletion; -import org.zstack.header.errorcode.ErrorCode; -import org.zstack.header.errorcode.OperationFailureException; -import org.zstack.header.host.HostConstant; -import org.zstack.header.message.MessageReply; -import org.zstack.header.vm.*; -import org.zstack.utils.Utils; -import org.zstack.utils.logging.CLogger; - -import java.util.concurrent.TimeUnit; - -import static org.zstack.core.Platform.operr; - - -public class TfMigrateExtensionPointImpl implements VmInstanceMigrateExtensionPoint { - private static final CLogger logger = Utils.getLogger(TfMigrateExtensionPointImpl.class); - @Autowired - private CloudBus bus; - - @Override - public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) { - - } - - @Override - public void beforeMigrateVm(VmInstanceInventory inv, String destHostUuid) { - if (!needNotiySugonSdn(inv)) { - return; - } - logger.info(String.format("start to notify sugon sdn to add vrouter for vm[uuid:%s] in success flow", inv.getUuid())); - VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); - cmsg.setVmInstanceUuid(inv.getUuid()); - cmsg.setHostUuid(destHostUuid); - SugonNicCfg sugonNicCfg = new SugonNicCfg(); - sugonNicCfg.setNotifySugonSdn(true); - sugonNicCfg.setSugonSdnAction("add"); - cmsg.setSugonNicCfg(sugonNicCfg); - bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); - MessageReply reply = bus.call(cmsg); - - if (!reply.isSuccess()) { - logger.error(String.format("failed to notify sugon sdn to add vrouter for vm [uuid:%s], %s", inv.getUuid(), - reply.getError())); - throw new OperationFailureException(operr("failed to notify sugon sdn to add vrouter for vm [uuid:%s], on the destination host[uuid:%s]", - inv.getUuid(), destHostUuid).causedBy(reply.getError())); - } else { - logger.info(String.format("successfully to notify sugon sdn to add vrouter for vm[uuid:%s]", inv.getUuid())); - } - } - - @Override - public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) { - - } - - @Override - public void failedToMigrateVm(VmInstanceInventory inv, String destHostUuid, ErrorCode reason) { - if (!needNotiySugonSdn(inv)) { - return; - } - logger.info(String.format("start to notify sugon sdn to delete vrouter for vm[uuid:%s] in failed flow", inv.getUuid())); - VmUpdateNicOnHypervisorMsg cmsg = new VmUpdateNicOnHypervisorMsg(); - cmsg.setVmInstanceUuid(inv.getUuid()); - cmsg.setHostUuid(destHostUuid); - SugonNicCfg sugonNicCfg = new SugonNicCfg(); - sugonNicCfg.setNotifySugonSdn(true); - sugonNicCfg.setSugonSdnAction("delete"); - cmsg.setSugonNicCfg(sugonNicCfg); - bus.makeTargetServiceIdByResourceUuid(cmsg, HostConstant.SERVICE_ID, inv.getUuid()); - MessageReply reply = bus.call(cmsg); - - if (!reply.isSuccess()) { - logger.error(String.format("failed to notify sugon sdn to delete vrouter for vm [uuid:%s], %s", inv.getUuid(), - reply.getError())); - throw new OperationFailureException(operr("failed to notify sugon sdn to delete vrouter for vm [uuid:%s], on the destination host[uuid:%s]", - inv.getUuid(), destHostUuid).causedBy(reply.getError())); - } else { - logger.info(String.format("successfully to notify sugon sdn to delete vrouter for vm[uuid:%s]", inv.getUuid())); - } - } - - private boolean needNotiySugonSdn(VmInstanceInventory inv) { - for (VmNicInventory nic : inv.getVmNics()) { - if (VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(nic.getType())) { - return true; - } - } - return false; - } -} diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java new file mode 100644 index 0000000000..234866bf80 --- /dev/null +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java @@ -0,0 +1,172 @@ +package org.zstack.sugonSdnController.network; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.transaction.annotation.Transactional; +import org.zstack.compute.vm.VmGlobalConfig; +import org.zstack.compute.vm.VmSystemTags; +import org.zstack.core.cloudbus.CloudBus; +import org.zstack.core.cloudbus.CloudBusCallBack; +import org.zstack.core.db.DatabaseFacade; +import org.zstack.core.db.Q; +import org.zstack.header.errorcode.ErrorCode; +import org.zstack.header.errorcode.OperationFailureException; +import org.zstack.header.host.HostConstant; +import org.zstack.header.message.MessageReply; +import org.zstack.header.network.l2.L2NetworkInventory; +import org.zstack.header.network.l2.L2NetworkType; +import org.zstack.header.network.l2.L2NetworkVO; +import org.zstack.header.network.l2.L2NetworkVO_; +import org.zstack.header.network.l3.L3NetworkInventory; +import org.zstack.header.network.l3.L3NetworkVO; +import org.zstack.header.vm.*; +import org.zstack.header.vm.devices.DeviceAddress; +import org.zstack.identity.AccountManager; +import org.zstack.kvm.*; +import org.zstack.network.service.MtuGetter; +import org.zstack.sugonSdnController.userdata.TfUserdataBackend; +import org.zstack.utils.Utils; +import org.zstack.utils.logging.CLogger; + +import javax.persistence.TypedQuery; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static org.zstack.core.Platform.operr; + + +public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { + private static final CLogger logger = Utils.getLogger(TfMigrateVmBackend.class); + public static final String NOTIFY_TF_NIC = "/vm/nodifytfnic"; + @Autowired + private CloudBus bus; + @Autowired + private AccountManager accountMgr; + @Autowired + protected DatabaseFacade dbf; + public static class SugonNicNotifyCmd extends KVMAgentCommands.AgentCommand { + private String sugonSdnAction; + private List nics; + private String vmInstanceUuid; + + private String accountUuid; + public String getSugonSdnAction() { + return sugonSdnAction; + } + + public void setSugonSdnAction(String sugonSdnAction) { + this.sugonSdnAction = sugonSdnAction; + } + + public List getNics() { + return nics; + } + + public void setNics(List nics) { + this.nics = nics; + } + public String getVmInstanceUuid() { + return vmInstanceUuid; + } + + public void setVmInstanceUuid(String vmInstanceUuid) { + this.vmInstanceUuid = vmInstanceUuid; + } + + public String getAccountUuid() { + return accountUuid; + } + + public void setAccountUuid(String accountUuid) { + this.accountUuid = accountUuid; + } + + } + + public static class SugonNicNotifyCmdRsp extends KVMAgentCommands.AgentResponse { + + } + + @Override + public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) { + // pre支持物理机+本地存储迁移,以及物理机+共享存储迁移,before不支持物理机+共享存储的迁移 + notifySugonSdn(inv, destHostUuid, "add"); + } + + @Override + public void beforeMigrateVm(VmInstanceInventory inv, String destHostUuid) { + + } + + @Override + public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) { + + } + + @Override + public void failedToMigrateVm(VmInstanceInventory inv, String destHostUuid, ErrorCode reason) { + notifySugonSdn(inv, destHostUuid, "delete"); + } + + private boolean needNotiySugonSdn(VmInstanceInventory inv) { + for (VmNicInventory nic : inv.getVmNics()) { + if (VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(nic.getType())) { + return true; + } + } + return false; + } + + private void notifySugonSdn(VmInstanceInventory inv, String destHostUuid, String operate) { + if (!needNotiySugonSdn(inv)) { + return; + } + logger.info(String.format("start to notify sugon sdn to %s vrouter for vm[uuid:%s] in success flow", operate, inv.getUuid())); + SugonNicNotifyCmd cmd = new SugonNicNotifyCmd(); + cmd.setSugonSdnAction(operate); + cmd.setVmInstanceUuid(inv.getUuid()); + cmd.setAccountUuid(accountMgr.getOwnerAccountUuidOfResource(cmd.getVmInstanceUuid())); + cmd.setNics(inv.getVmNics().stream().filter(vmNic -> VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(vmNic.getType())) + .map(this::completeNicInfo).collect(Collectors.toList())); + + KVMHostAsyncHttpCallMsg msg = new KVMHostAsyncHttpCallMsg(); + msg.setHostUuid(destHostUuid); + msg.setCommand(cmd); + msg.setPath(NOTIFY_TF_NIC); + bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, destHostUuid); + MessageReply reply = bus.call(msg); + if (!reply.isSuccess()) { + logger.error(String.format("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), + reply.getError())); + throw new OperationFailureException(operr("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s]", + operate, inv.getUuid(), destHostUuid).causedBy(reply.getError())); + } + + KVMHostAsyncHttpCallReply r = reply.castReply(); + TfMigrateVmBackend.SugonNicNotifyCmdRsp rsp = r.toResponse(TfMigrateVmBackend.SugonNicNotifyCmdRsp.class); + if (!rsp.isSuccess()) { + logger.error(String.format("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), + rsp.getError())); + throw new OperationFailureException(operr("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s], error is:%s", + operate, inv.getUuid(), destHostUuid, rsp.getError())); + } + logger.info(String.format("successfully to notify sugon sdn to %s vrouter for vm[uuid:%s]", operate, inv.getUuid())); + } + + @Transactional(readOnly = true) + private KVMAgentCommands.NicTO completeNicInfo(VmNicInventory nic) { + L2NetworkVO l2NetworkVO = Q.New(L2NetworkVO.class).eq(L2NetworkVO_.uuid, nic.getL3NetworkUuid()).find(); + L2NetworkInventory l2inv = L2NetworkInventory.valueOf(l2NetworkVO); + KVMAgentCommands.NicTO to = KVMAgentCommands.NicTO.fromVmNicInventory(nic); + to.setIpForTf(nic.getIp()); + to.setMtu(new MtuGetter().getMtu(nic.getL3NetworkUuid())); + to.setL2NetworkUuid(l2inv.getUuid()); + to.setResourceUuid(nic.getUuid()); + to.setState(nic.getState()); + logger.debug("TfMigrateVmBackend: Complete nic information for TfL2Network"); + return to; + } +} -- Gitee From 186b1c6fa331ab77029cbc5bdc2de55f179e0423 Mon Sep 17 00:00:00 2001 From: fuyi Date: Tue, 31 Oct 2023 15:29:47 +0800 Subject: [PATCH 4/6] add delete vrouter in after --- .../network/TfMigrateVmBackend.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java index 234866bf80..f54b1d608f 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java @@ -19,6 +19,7 @@ import org.zstack.header.network.l2.L2NetworkVO; import org.zstack.header.network.l2.L2NetworkVO_; import org.zstack.header.network.l3.L3NetworkInventory; import org.zstack.header.network.l3.L3NetworkVO; +import org.zstack.header.network.l3.L3NetworkVO_; import org.zstack.header.vm.*; import org.zstack.header.vm.devices.DeviceAddress; import org.zstack.identity.AccountManager; @@ -103,7 +104,7 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { @Override public void afterMigrateVm(VmInstanceInventory inv, String srcHostUuid) { - + notifySugonSdn(inv, srcHostUuid, "delete"); } @Override @@ -124,14 +125,20 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { if (!needNotiySugonSdn(inv)) { return; } - logger.info(String.format("start to notify sugon sdn to %s vrouter for vm[uuid:%s] in success flow", operate, inv.getUuid())); + logger.info(String.format("notifySugonSdn: start to notify sugon sdn to %s vrouter for vm[uuid:%s] in success flow", operate, inv.getUuid())); SugonNicNotifyCmd cmd = new SugonNicNotifyCmd(); cmd.setSugonSdnAction(operate); cmd.setVmInstanceUuid(inv.getUuid()); cmd.setAccountUuid(accountMgr.getOwnerAccountUuidOfResource(cmd.getVmInstanceUuid())); - cmd.setNics(inv.getVmNics().stream().filter(vmNic -> VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(vmNic.getType())) + List nics = Q.New(VmNicVO.class).eq(VmNicVO_.vmInstanceUuid, inv.getUuid()).list(); + List nicInvs = VmNicInventory.valueOf(nics); + if (nicInvs == null || nicInvs.isEmpty()) { + logger.info(String.format("notifySugonSdn: nic count is zero, will not call sugon sdn")); + return; + } + cmd.setNics(nicInvs.stream().filter(vmNic -> VmInstanceConstant.TF_VIRTUAL_NIC_TYPE.equalsIgnoreCase(vmNic.getType())) .map(this::completeNicInfo).collect(Collectors.toList())); - + logger.info(String.format("after completeNicInfo:nic count: %s", cmd.getNics().size())); KVMHostAsyncHttpCallMsg msg = new KVMHostAsyncHttpCallMsg(); msg.setHostUuid(destHostUuid); msg.setCommand(cmd); @@ -139,34 +146,34 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { bus.makeTargetServiceIdByResourceUuid(msg, HostConstant.SERVICE_ID, destHostUuid); MessageReply reply = bus.call(msg); if (!reply.isSuccess()) { - logger.error(String.format("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), + logger.error(String.format("notifySugonSdn: failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), reply.getError())); - throw new OperationFailureException(operr("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s]", + throw new OperationFailureException(operr("notifySugonSdn: failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s]", operate, inv.getUuid(), destHostUuid).causedBy(reply.getError())); } KVMHostAsyncHttpCallReply r = reply.castReply(); TfMigrateVmBackend.SugonNicNotifyCmdRsp rsp = r.toResponse(TfMigrateVmBackend.SugonNicNotifyCmdRsp.class); if (!rsp.isSuccess()) { - logger.error(String.format("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), + logger.error(String.format("notifySugonSdn: failed to notify sugon sdn to %s vrouter for vm [uuid:%s], %s", operate, inv.getUuid(), rsp.getError())); - throw new OperationFailureException(operr("failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s], error is:%s", + throw new OperationFailureException(operr("notifySugonSdn: failed to notify sugon sdn to %s vrouter for vm [uuid:%s], on the destination host[uuid:%s], error is:%s", operate, inv.getUuid(), destHostUuid, rsp.getError())); } - logger.info(String.format("successfully to notify sugon sdn to %s vrouter for vm[uuid:%s]", operate, inv.getUuid())); + logger.info(String.format("notifySugonSdn: successfully to notify sugon sdn to %s vrouter for vm[uuid:%s]", operate, inv.getUuid())); } @Transactional(readOnly = true) private KVMAgentCommands.NicTO completeNicInfo(VmNicInventory nic) { - L2NetworkVO l2NetworkVO = Q.New(L2NetworkVO.class).eq(L2NetworkVO_.uuid, nic.getL3NetworkUuid()).find(); + L3NetworkVO l3NetworkVO = Q.New(L3NetworkVO.class).eq(L3NetworkVO_.uuid, nic.getL3NetworkUuid()).find(); + L2NetworkVO l2NetworkVO = Q.New(L2NetworkVO.class).eq(L2NetworkVO_.uuid, l3NetworkVO.getL2NetworkUuid()).find(); L2NetworkInventory l2inv = L2NetworkInventory.valueOf(l2NetworkVO); KVMAgentCommands.NicTO to = KVMAgentCommands.NicTO.fromVmNicInventory(nic); to.setIpForTf(nic.getIp()); - to.setMtu(new MtuGetter().getMtu(nic.getL3NetworkUuid())); + to.setMtu(new MtuGetter().getMtu(l3NetworkVO.getUuid())); to.setL2NetworkUuid(l2inv.getUuid()); to.setResourceUuid(nic.getUuid()); - to.setState(nic.getState()); - logger.debug("TfMigrateVmBackend: Complete nic information for TfL2Network"); + logger.debug("notifySugonSdn: Complete nic information for TfL2Network"); return to; } } -- Gitee From 4ac4da985adaccad464f43d927722e06831488fc Mon Sep 17 00:00:00 2001 From: fuyi Date: Mon, 6 Nov 2023 12:47:28 +0800 Subject: [PATCH 5/6] update --- .../network/TfMigrateVmBackend.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java index f54b1d608f..6186584963 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java @@ -9,6 +9,7 @@ import org.zstack.core.cloudbus.CloudBus; import org.zstack.core.cloudbus.CloudBusCallBack; import org.zstack.core.db.DatabaseFacade; import org.zstack.core.db.Q; +import org.zstack.header.core.Completion; import org.zstack.header.errorcode.ErrorCode; import org.zstack.header.errorcode.OperationFailureException; import org.zstack.header.host.HostConstant; @@ -39,7 +40,7 @@ import java.util.stream.Collectors; import static org.zstack.core.Platform.operr; -public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { +public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint, VmPreMigrationExtensionPoint { private static final CLogger logger = Utils.getLogger(TfMigrateVmBackend.class); public static final String NOTIFY_TF_NIC = "/vm/nodifytfnic"; @Autowired @@ -48,6 +49,7 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { private AccountManager accountMgr; @Autowired protected DatabaseFacade dbf; + public static class SugonNicNotifyCmd extends KVMAgentCommands.AgentCommand { private String sugonSdnAction; private List nics; @@ -91,6 +93,13 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint { } + + @Override + public void preVmMigration(VmInstanceInventory vm, VmMigrationType type, Completion completion) { + // 物理机+共享存储走这个逻辑 + notifySugonSdn(inv, destHostUuid, "add"); + } + @Override public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) { // pre支持物理机+本地存储迁移,以及物理机+共享存储迁移,before不支持物理机+共享存储的迁移 -- Gitee From 2a03bec23e054975659e295ce62443994025dca1 Mon Sep 17 00:00:00 2001 From: fuyi Date: Mon, 6 Nov 2023 17:44:14 +0800 Subject: [PATCH 6/6] add preMigrate --- conf/springConfigXml/sugonSdnController.xml | 1 + .../sugonSdnController/network/TfMigrateVmBackend.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/conf/springConfigXml/sugonSdnController.xml b/conf/springConfigXml/sugonSdnController.xml index 02f8d5d414..f0ff6ad003 100644 --- a/conf/springConfigXml/sugonSdnController.xml +++ b/conf/springConfigXml/sugonSdnController.xml @@ -47,6 +47,7 @@ + diff --git a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java index 6186584963..672e630f43 100644 --- a/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java +++ b/plugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/network/TfMigrateVmBackend.java @@ -96,8 +96,12 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint, VmPr @Override public void preVmMigration(VmInstanceInventory vm, VmMigrationType type, Completion completion) { - // 物理机+共享存储走这个逻辑 - notifySugonSdn(inv, destHostUuid, "add"); +// try { +// notifySugonSdn(vm, vm.getHostUuid(), "add"); +// completion.success(); +// } catch (OperationFailureException e) { +// completion.fail(e.getErrorCode()); +// } } @Override -- Gitee