From 0d462e1962c43eb6b6f03117c9d93bcc53e40847 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 00:29:11 +0300 Subject: [PATCH 01/12] t Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 45e1112e8d..6d20b6827e 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch {{ $tag }} /src/kubevirt + git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From 9b0b0b09de0e39fc2e0cf61ef175fee24f624647 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 09:47:32 +0300 Subject: [PATCH 02/12] fix failed Signed-off-by: Valeriy Khorunzhin --- .../controller/vmsnapshot/internal/life_cycle.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go index 87d7dfe763..de7fd1a7a5 100644 --- a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go @@ -147,6 +147,20 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu Status(readyCondition.Status). Reason(conditions.CommonReason(readyCondition.Reason)). Message(readyCondition.Message) + + _, err = h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) + if err != nil { + if errors.Is(err, service.ErrUntrustedFilesystemFrozenCondition) { + log.Debug(err.Error()) + return reconcile.Result{}, nil + } + if k8serrors.IsConflict(err) { + log.Debug(fmt.Sprintf("failed to unfreeze filesystem; resource update conflict error: %s", err)) + return reconcile.Result{RequeueAfter: 5 * time.Second}, nil + } + cb.Message(fmt.Sprintf("%s, %s", err.Error(), cb.Condition().Message)) + return reconcile.Result{}, fmt.Errorf("failed to unfreeze filesystem: %w", err) + } return reconcile.Result{}, nil case v1alpha2.VirtualMachineSnapshotPhaseReady: // Ensure vd snapshots aren't lost. From 8acb8d041d0c5757f276b4d5cfbfce1b20bb405f Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 11:13:11 +0300 Subject: [PATCH 03/12] manual freeze Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vm/internal/filesystem.go | 29 ++++++++++++++++--- .../pkg/controller/vm/vm_controller.go | 2 +- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go b/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go index 09d392b3b3..0b5c735f05 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go @@ -18,6 +18,7 @@ package internal import ( "context" + "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/reconcile" @@ -25,15 +26,21 @@ import ( "github.com/deckhouse/virtualization-controller/pkg/controller/conditions" "github.com/deckhouse/virtualization-controller/pkg/controller/vm/internal/state" "github.com/deckhouse/virtualization/api/core/v1alpha2/vmcondition" + subv1alpha2 "github.com/deckhouse/virtualization/api/subresources/v1alpha2" ) -const nameFilesystemHandler = "FilesystemHandler" +const ( + nameFilesystemHandler = "FilesystemHandler" + annKek = "kek" +) -func NewFilesystemHandler() *FilesystemHandler { - return &FilesystemHandler{} +func NewFilesystemHandler(virtClient VirtClient) *FilesystemHandler { + return &FilesystemHandler{virtClient: virtClient} } -type FilesystemHandler struct{} +type FilesystemHandler struct { + virtClient VirtClient +} func (h *FilesystemHandler) Handle(ctx context.Context, s state.VirtualMachineState) (reconcile.Result, error) { if s.VirtualMachine().IsEmpty() { @@ -67,6 +74,20 @@ func (h *FilesystemHandler) Handle(ctx context.Context, s state.VirtualMachineSt return reconcile.Result{}, nil } + if request, ok := changed.Annotations[annKek]; ok { + switch request { + case "freeze": + if err = h.virtClient.VirtualMachines(changed.Namespace).Freeze(ctx, changed.Name, subv1alpha2.VirtualMachineFreeze{}); err != nil { + return reconcile.Result{}, fmt.Errorf("freeze virtual machine %s/%s: %w", changed.Namespace, changed.Name, err) + } + case "unfreeze": + if err = h.virtClient.VirtualMachines(changed.Namespace).Unfreeze(ctx, changed.Name); err != nil { + return reconcile.Result{}, fmt.Errorf("unfreeze virtual machine %s/%s: %w", changed.Namespace, changed.Name, err) + } + } + delete(changed.Annotations, annKek) + } + agentReady, _ := conditions.GetCondition(vmcondition.TypeAgentReady, changed.Status.Conditions) if agentReady.Status != metav1.ConditionTrue { return reconcile.Result{}, nil diff --git a/images/virtualization-artifact/pkg/controller/vm/vm_controller.go b/images/virtualization-artifact/pkg/controller/vm/vm_controller.go index dd22ee3236..3eabfa809a 100644 --- a/images/virtualization-artifact/pkg/controller/vm/vm_controller.go +++ b/images/virtualization-artifact/pkg/controller/vm/vm_controller.go @@ -71,7 +71,7 @@ func SetupController( internal.NewUSBDeviceAttachHandler(client, virtClient), internal.NewProvisioningHandler(client), internal.NewAgentHandler(), - internal.NewFilesystemHandler(), + internal.NewFilesystemHandler(virtClient), internal.NewSnapshottingHandler(client), internal.NewPodHandler(client), internal.NewSizePolicyHandler(), From acc038883e2df26304845303d82c65426ed5a813 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 11:14:05 +0300 Subject: [PATCH 04/12] rebuild Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 6d20b6827e..8d494a4970 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,6 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." + echo kek git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From d4272d1c427e5b48edb946928e27cb1ea95e4d52 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 12:28:16 +0300 Subject: [PATCH 05/12] ttttt Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 8d494a4970..574f643a5b 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek + echo kek123 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From a20bc4d67d514642aafda735fb6fce86c3613bf8 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 15:59:21 +0300 Subject: [PATCH 06/12] 1 Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 574f643a5b..d30389ad1d 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek123 + echo kek1234 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From e87b6c608a12677effd44682ec54a7a39aa4668f Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 16:19:27 +0300 Subject: [PATCH 07/12] b Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index d30389ad1d..b71df56a7a 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek1234 + echo kek12345 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From 61253253131c3e9865d3a6444e025759605b935b Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 15:51:38 +0300 Subject: [PATCH 08/12] c Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index b71df56a7a..767963f357 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek12345 + echo kek123456 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From be9aceac733d78a72cfff3613f0f2861e1a1b04d Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:16:20 +0300 Subject: [PATCH 09/12] f Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 767963f357..0ce49f6caf 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek123456 + echo kek1234561 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From 6ea451a34c2489d2a2bf6d60c8569031a7d8bbf2 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:42:01 +0300 Subject: [PATCH 10/12] d Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 0ce49f6caf..767963f357 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek1234561 + echo kek123456 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From 8e524791bf226223dad115ff11925c03c1760f36 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:43:59 +0300 Subject: [PATCH 11/12] m Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 767963f357..c304249f15 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kek123456 + echo kekd git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git From b1757db672c0ea235728049bb4fbb701e7de0537 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 19:08:28 +0300 Subject: [PATCH 12/12] t Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index c304249f15..17b64a0577 100644 --- a/images/virt-artifact/werf.inc.yaml +++ b/images/virt-artifact/werf.inc.yaml @@ -16,7 +16,7 @@ shell: install: - | echo "Git clone {{ $gitRepoName }} repository..." - echo kekd + echo kekdtt git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git