@@ -19,6 +19,7 @@ package handler
19
19
import (
20
20
"context"
21
21
"fmt"
22
+ "strings"
22
23
23
24
corev1 "k8s.io/api/core/v1"
24
25
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -27,6 +28,7 @@ import (
27
28
"sigs.k8s.io/controller-runtime/pkg/client"
28
29
"sigs.k8s.io/controller-runtime/pkg/reconcile"
29
30
31
+ "github.com/deckhouse/virtualization-controller/pkg/common/annotations"
30
32
"github.com/deckhouse/virtualization-controller/pkg/common/object"
31
33
commonvmop "github.com/deckhouse/virtualization-controller/pkg/common/vmop"
32
34
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
@@ -321,8 +323,10 @@ func (h LifecycleHandler) otherMigrationsAreInProgress(ctx context.Context, vmop
321
323
}
322
324
323
325
func (h LifecycleHandler ) canExecute (vmop * v1alpha2.VirtualMachineOperation , vm * v1alpha2.VirtualMachine ) bool {
326
+ isVolumeMigration := isVolumeMigration (vmop )
327
+
324
328
migratable , _ := conditions .GetCondition (vmcondition .TypeMigratable , vm .Status .Conditions )
325
- if migratable .Status == metav1 .ConditionTrue {
329
+ if migratable .Status == metav1 .ConditionTrue && ! isVolumeMigration {
326
330
return true
327
331
}
328
332
@@ -436,3 +440,7 @@ var mapMigrationPhaseToReason = map[virtv1.VirtualMachineInstanceMigrationPhase]
436
440
virtv1 .MigrationSucceeded : vmopcondition .ReasonOperationCompleted ,
437
441
virtv1 .MigrationFailed : vmopcondition .ReasonOperationFailed ,
438
442
}
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