Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions images/virtualization-artifact/pkg/common/vm/vm.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,13 @@ import (
"strings"

corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/types"
virtv1 "kubevirt.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client"

"github.com/deckhouse/virtualization-controller/pkg/common/object"
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
"github.com/deckhouse/virtualization/api/core/v1alpha2"
"github.com/deckhouse/virtualization/api/core/v1alpha2/vmcondition"
)

// VMContainerNameSuffix - a name suffix for container with virt-launcher, libvirt and qemu processes.
Expand Down Expand Up @@ -78,15 +75,6 @@ func ApprovalMode(vm *v1alpha2.VirtualMachine) v1alpha2.RestartApprovalMode {
return vm.Spec.Disruptions.RestartApprovalMode
}

func RestartRequired(vm *v1alpha2.VirtualMachine) bool {
if vm == nil {
return false
}

cond, _ := conditions.GetCondition(vmcondition.TypeAwaitingRestartToApplyConfiguration, vm.Status.Conditions)
return cond.Status == metav1.ConditionTrue
}

func IsComputeContainer(name string) bool {
return strings.HasSuffix(name, VMContainerNameSuffix)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import (

"github.com/deckhouse/virtualization-controller/pkg/common/patch"
commonvd "github.com/deckhouse/virtualization-controller/pkg/common/vd"
commonvm "github.com/deckhouse/virtualization-controller/pkg/common/vm"
commonvmop "github.com/deckhouse/virtualization-controller/pkg/common/vmop"
"github.com/deckhouse/virtualization-controller/pkg/controller/conditions"
"github.com/deckhouse/virtualization-controller/pkg/controller/kvbuilder"
Expand All @@ -63,15 +62,15 @@ func NewMigrationVolumesService(client client.Client, makeKVVMFromSpec func(ctx
}
}

func (s MigrationVolumesService) SyncVolumes(ctx context.Context, vmState state.VirtualMachineState) (reconcile.Result, error) {
func (s MigrationVolumesService) SyncVolumes(ctx context.Context, vmState state.VirtualMachineState, restartRequired bool) (reconcile.Result, error) {
log := logger.FromContext(ctx).With("func", "SyncVolumes")
log.Debug("Start")
defer log.Debug("End")

vm := vmState.VirtualMachine().Changed()

// TODO: refactor syncKVVM and allow migration
if commonvm.RestartRequired(vm) {
if restartRequired {
log.Info("Virtualmachine is restart required, skip volume migration.")
return reconcile.Result{}, nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ import (
const nameSyncKvvmHandler = "SyncKvvmHandler"

type syncVolumesService interface {
SyncVolumes(ctx context.Context, s state.VirtualMachineState) (reconcile.Result, error)
SyncVolumes(ctx context.Context, s state.VirtualMachineState, restartRequired bool) (reconcile.Result, error)
}

func NewSyncKvvmHandler(dvcrSettings *dvcr.Settings, client client.Client, recorder eventrecord.EventRecorderLogger, syncVolumesService syncVolumesService) *SyncKvvmHandler {
Expand Down Expand Up @@ -226,8 +226,10 @@ func (h *SyncKvvmHandler) Handle(ctx context.Context, s state.VirtualMachineStat

// 5. Set RestartRequired from KVVM condition.
if cbAwaitingRestart.Condition().Status == metav1.ConditionFalse && kvvm != nil {
// The check for StateChangeRequests is added to ignore the RestartRequired condition when it is set while
// the virtual machine is in the process of rebooting.
cond, _ := conditions.GetKVVMCondition(virtv1.VirtualMachineRestartRequired, kvvm.Status.Conditions)
if cond.Status == corev1.ConditionTrue {
if cond.Status == corev1.ConditionTrue && len(kvvm.Status.StateChangeRequests) == 0 {
msg := "Please restart the virtual machine to synchronize its configuration."
log.Error(msg)
cbAwaitingRestart.
Expand All @@ -238,7 +240,7 @@ func (h *SyncKvvmHandler) Handle(ctx context.Context, s state.VirtualMachineStat
}

// 6. Sync migrating volumes if needed.
result, migrateVolumesErr := h.syncVolumesService.SyncVolumes(ctx, s)
result, migrateVolumesErr := h.syncVolumesService.SyncVolumes(ctx, s, cbAwaitingRestart.Condition().Status == metav1.ConditionTrue)
if migrateVolumesErr != nil {
errs = errors.Join(errs, fmt.Errorf("failed to sync migrating volumes: %w", migrateVolumesErr))
}
Expand Down
Loading