diff --git a/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java b/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java
index 06d3a5ece1f7944e61701fdf6a3faea47ba7c06d..28dafcede344e9ac9b0e68b774ec72fa3fd2d8a5 100755
--- a/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java
+++ b/compute/src/main/java/org/zstack/compute/vm/VmInstanceBase.java
@@ -6561,7 +6561,7 @@ public class VmInstanceBase extends AbstractVmInstance {
@Override
public void run(FlowTrigger trigger, Map data) {
new While<>(pluginRgty.getExtensionList(VmPreMigrationExtensionPoint.class))
- .each((extension, whileCompletion) -> extension.preVmMigration(inv, VmMigrationType.HostMigration, new Completion(whileCompletion) {
+ .each((extension, whileCompletion) -> extension.preVmMigration(inv, VmMigrationType.HostMigration, msg, new Completion(whileCompletion) {
@Override
public void success() {
whileCompletion.done();
diff --git a/conf/springConfigXml/sugonSdnController.xml b/conf/springConfigXml/sugonSdnController.xml
index 02f8d5d414728e5aa10caeeb8b8a2e716712c5af..f0ff6ad0033d34701ad8e919f8661285c6428789 100644
--- a/conf/springConfigXml/sugonSdnController.xml
+++ b/conf/springConfigXml/sugonSdnController.xml
@@ -47,6 +47,7 @@
+
diff --git a/header/src/main/java/org/zstack/header/vm/VmPreMigrationExtensionPoint.java b/header/src/main/java/org/zstack/header/vm/VmPreMigrationExtensionPoint.java
index 69e4e7f72ab80a732cbbf7f990c09526e9c268bb..dd6dbce9f6d476ad15b1b205ae4e66c4bcfee498 100755
--- a/header/src/main/java/org/zstack/header/vm/VmPreMigrationExtensionPoint.java
+++ b/header/src/main/java/org/zstack/header/vm/VmPreMigrationExtensionPoint.java
@@ -6,5 +6,5 @@ import org.zstack.header.core.Completion;
* Created by frank on 1/2/2016.
*/
public interface VmPreMigrationExtensionPoint {
- void preVmMigration(VmInstanceInventory vm, VmMigrationType type, Completion completion);
+ void preVmMigration(VmInstanceInventory vm, VmMigrationType type, MigrateVmMessage msg, Completion completion);
}
diff --git a/plugin/localstorage/src/main/java/org/zstack/storage/primary/local/LocalStorageFactory.java b/plugin/localstorage/src/main/java/org/zstack/storage/primary/local/LocalStorageFactory.java
index d9a97e5a69474682a5208a4d2fe7f1cf37f9a5c0..a453dbab3adf2330b8c8f30e1e36d32acd0b2545 100755
--- a/plugin/localstorage/src/main/java/org/zstack/storage/primary/local/LocalStorageFactory.java
+++ b/plugin/localstorage/src/main/java/org/zstack/storage/primary/local/LocalStorageFactory.java
@@ -987,7 +987,7 @@ public class LocalStorageFactory implements PrimaryStorageFactory, Component,
}
@Override
- public void preVmMigration(VmInstanceInventory vm, VmMigrationType vmMigrationType, Completion completion) {
+ public void preVmMigration(VmInstanceInventory vm, VmMigrationType vmMigrationType, MigrateVmMessage msg, Completion completion) {
if (!VmMigrationType.HostMigration.equals(vmMigrationType)) {
completion.success();
return;
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 f54b1d608fbc243da8d5056556d8449563508e54..3353b368c0acb8e8a3f25b4199a590a54f3ab18a 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,17 @@ public class TfMigrateVmBackend implements VmInstanceMigrateExtensionPoint {
}
+
+ @Override
+ public void preVmMigration(VmInstanceInventory vm, VmMigrationType type, MigrateVmMessage msg, Completion completion) {
+ try {
+ notifySugonSdn(vm, msg.getHostUuid(), "add");
+ completion.success();
+ } catch (OperationFailureException e) {
+ completion.fail(e.getErrorCode());
+ }
+ }
+
@Override
public void preMigrateVm(VmInstanceInventory inv, String destHostUuid) {
// pre支持物理机+本地存储迁移,以及物理机+共享存储迁移,before不支持物理机+共享存储的迁移