Skip to content

Commit 6781af1

Browse files
authored
fix migrate failed (#5873)
* fix migrate failed Signed-off-by: clyi <clyi@alauda.io> --------- Signed-off-by: clyi <clyi@alauda.io>
1 parent c874826 commit 6781af1

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

pkg/controller/kubevirt.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,16 +159,16 @@ func (c *Controller) handleAddOrUpdateVMIMigration(key string) error {
159159
srcNodeName := vmi.Status.MigrationState.SourceNode
160160
targetNodeName := vmi.Status.MigrationState.TargetNode
161161
switch vmiMigration.Status.Phase {
162-
case kubevirtv1.MigrationRunning:
163-
klog.Infof("migrate start set options for lsp %s from %s to %s", portName, srcNodeName, targetNodeName)
164-
if err := c.OVNNbClient.SetLogicalSwitchPortMigrateOptions(portName, srcNodeName, targetNodeName); err != nil {
165-
err = fmt.Errorf("failed to set migrate options for lsp %s, %w", portName, err)
162+
case kubevirtv1.MigrationSucceeded:
163+
klog.Infof("migrate end reset options for lsp %s from %s to %s, migrated succeed", portName, srcNodeName, targetNodeName)
164+
if err := c.OVNNbClient.ResetLogicalSwitchPortMigrateOptions(portName, srcNodeName, targetNodeName, false); err != nil {
165+
err = fmt.Errorf("failed to clean migrate options for lsp %s, %w", portName, err)
166166
klog.Error(err)
167167
return err
168168
}
169-
case kubevirtv1.MigrationSucceeded, kubevirtv1.MigrationFailed:
170-
klog.Infof("migrate end clean options for lsp %s from %s to %s, migration completed with status: %s", portName, srcNodeName, targetNodeName, vmiMigration.Status.Phase)
171-
if err := c.OVNNbClient.CleanLogicalSwitchPortMigrateOptions(portName); err != nil {
169+
case kubevirtv1.MigrationFailed:
170+
klog.Infof("migrate end reset options for lsp %s from %s to %s, migrated fail", portName, srcNodeName, targetNodeName)
171+
if err := c.OVNNbClient.ResetLogicalSwitchPortMigrateOptions(portName, srcNodeName, targetNodeName, true); err != nil {
172172
err = fmt.Errorf("failed to clean migrate options for lsp %s, %w", portName, err)
173173
klog.Error(err)
174174
return err

pkg/controller/pod.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,19 @@ func (c *Controller) reconcileAllocateSubnets(pod *v1.Pod, needAllocatePodNets [
664664
}
665665
}
666666

667+
if isVMPod {
668+
if _, ok := pod.Labels["kubevirt.io/migrationJobUID"]; ok {
669+
if sourceNode, ok := pod.Labels["kubevirt.io/nodeName"]; ok && sourceNode != pod.Spec.NodeName {
670+
klog.Infof("VM pod %s/%s is migrating from %s to %s",
671+
pod.Namespace, pod.Name, sourceNode, pod.Spec.NodeName)
672+
if err := c.OVNNbClient.SetLogicalSwitchPortMigrateOptions(portName, sourceNode, pod.Spec.NodeName); err != nil {
673+
klog.Errorf("failed to set migrate options for VM pod lsp %s: %v", portName, err)
674+
return nil, err
675+
}
676+
}
677+
}
678+
}
679+
667680
if securityGroupAnnotation != "" || oldSgList != nil {
668681
securityGroups := strings.ReplaceAll(securityGroupAnnotation, " ", "")
669682
newSgList := strings.Split(securityGroups, ",")

0 commit comments

Comments
 (0)