Skip to content

Commit c187693

Browse files
fix
Signed-off-by: Yaroslav Borbat <[email protected]>
1 parent 3710206 commit c187693

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

images/virtualization-artifact/pkg/controller/vd/internal/migration.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,21 @@ func (h MigrationHandler) getAction(ctx context.Context, vd *virtv2.VirtualDisk,
159159
}
160160

161161
vmMigrating, _ := conditions.GetCondition(vmcondition.TypeMigrating, vm.Status.Conditions)
162-
vmMigratable, _ := conditions.GetCondition(vmcondition.TypeMigratable, vm.Status.Conditions)
163162
migratingPending := vmMigrating.Reason == vmcondition.ReasonMigratingPending.String()
164-
disksNotMigratable := vmMigratable.Reason == vmcondition.ReasonDisksNotMigratable.String()
165163

166-
if migratingPending && disksNotMigratable {
167-
return h.getActionIfDisksNotMigratable(ctx, vd, log)
164+
if migratingPending {
165+
166+
vmMigratable, _ := conditions.GetCondition(vmcondition.TypeMigratable, vm.Status.Conditions)
167+
disksNotMigratable := vmMigratable.Reason == vmcondition.ReasonDisksNotMigratable.String()
168+
169+
if disksNotMigratable {
170+
return h.getActionIfDisksNotMigratable(ctx, vd, log)
171+
}
172+
173+
if commonvd.StorageClassChanged(vd) {
174+
return migrate, nil
175+
}
176+
168177
}
169178

170179
return none, nil

images/virtualization-artifact/pkg/controller/vmop/migration/internal/handler/lifecycle.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package handler
1919
import (
2020
"context"
2121
"fmt"
22+
"strings"
2223

2324
corev1 "k8s.io/api/core/v1"
2425
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -27,6 +28,7 @@ import (
2728
"sigs.k8s.io/controller-runtime/pkg/client"
2829
"sigs.k8s.io/controller-runtime/pkg/reconcile"
2930

31+
"github.com/deckhouse/virtualization-controller/pkg/common/annotations"
3032
"github.com/deckhouse/virtualization-controller/pkg/common/object"
3133
commonvmop "github.com/deckhouse/virtualization-controller/pkg/common/vmop"
3234
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
@@ -321,8 +323,10 @@ func (h LifecycleHandler) otherMigrationsAreInProgress(ctx context.Context, vmop
321323
}
322324

323325
func (h LifecycleHandler) canExecute(vmop *v1alpha2.VirtualMachineOperation, vm *v1alpha2.VirtualMachine) bool {
326+
isVolumeMigration := isVolumeMigration(vmop)
327+
324328
migratable, _ := conditions.GetCondition(vmcondition.TypeMigratable, vm.Status.Conditions)
325-
if migratable.Status == metav1.ConditionTrue {
329+
if migratable.Status == metav1.ConditionTrue && !isVolumeMigration {
326330
return true
327331
}
328332

@@ -436,3 +440,7 @@ var mapMigrationPhaseToReason = map[virtv1.VirtualMachineInstanceMigrationPhase]
436440
virtv1.MigrationSucceeded: vmopcondition.ReasonOperationCompleted,
437441
virtv1.MigrationFailed: vmopcondition.ReasonOperationFailed,
438442
}
443+
444+
func isVolumeMigration(vmop *v1alpha2.VirtualMachineOperation) bool {
445+
return vmop != nil && vmop.GetAnnotations()[annotations.AnnVMOPVolumeMigration] == "true" && strings.HasPrefix(vmop.Name, "volume-migration-")
446+
}

0 commit comments

Comments
 (0)