From b1b751d4cba92f129c201c9491bd85002d469b59 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 00:29:11 +0300 Subject: [PATCH 01/30] 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 75d9b452f4144af641fb73db39e5ac934d641824 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 09:47:32 +0300 Subject: [PATCH 02/30] 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 0c843e6a50817e659a292b6f622186950f20d4f8 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 11:13:11 +0300 Subject: [PATCH 03/30] 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 6a4e231a88..cab82f3768 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 7b9a4afe91ccd29f94f0a3d0651faa2a197776c3 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 11:14:05 +0300 Subject: [PATCH 04/30] 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 4bdae5892b9cc3c376a3689389edd4ad4bf31f73 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 12:28:16 +0300 Subject: [PATCH 05/30] 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 fbc738867b63aee607db96bbfb200b12fee3b51d Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 15:59:21 +0300 Subject: [PATCH 06/30] 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 4f11b8f5b5cba121261312eb59d43dcb1c581aff Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Thu, 26 Mar 2026 16:19:27 +0300 Subject: [PATCH 07/30] 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 d653e8a9ce7f7dff685d811598dc2235e1f8d6e4 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 15:51:38 +0300 Subject: [PATCH 08/30] 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 ae1e977e53c64855dbcc60dcffdef97c63049d60 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:16:20 +0300 Subject: [PATCH 09/30] 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 9e4ab683b83844cf4d52cae63bc6b45a4fa1ba17 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:42:01 +0300 Subject: [PATCH 10/30] 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 98d5956ff69be06b10ee6d7b61868c3fef6def50 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 16:43:59 +0300 Subject: [PATCH 11/30] 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 a9f0275de4baeb4b93f59bda81e8572096caa250 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Fri, 27 Mar 2026 19:08:28 +0300 Subject: [PATCH 12/30] 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 From c596175088553fb75dcfa8397ba1e7b61e68bcb3 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 30 Mar 2026 11:34:46 +0300 Subject: [PATCH 13/30] 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 17b64a0577..387af830b5 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 kekdtt + echo kekdtt1 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 16203dc1a4ad0823a53f796061674e5fb254cf50 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 30 Mar 2026 15:26:16 +0300 Subject: [PATCH 14/30] =?UTF-8?q?=D0=B2=D0=B2=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 387af830b5..c076df18ce 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 kekdtt1 + echo kekdtt12 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 e76ba7a29168ebb34b99c203414c9ca27d78e75a Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 30 Mar 2026 15:55:26 +0300 Subject: [PATCH 15/30] 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 c076df18ce..8a3498e126 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 kekdtt12 + echo kekdtt122 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 7252855e9c30db2756a4d3662fdf2c5a218d6ce7 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 30 Mar 2026 21:37:48 +0300 Subject: [PATCH 16/30] tttt 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 8a3498e126..0b0ac3f8e1 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 kekdtt122 + echo kekdtt12234 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 901eef3dd12a058730d2da0e6fb04cef4be1c3e6 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Mon, 30 Mar 2026 23:46:20 +0300 Subject: [PATCH 17/30] 1233 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 0b0ac3f8e1..89ebf099d6 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 kekdtt12234 + echo kekdtt122345 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 a0c4a79630541e31359db21f8a19409593a40218 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 00:24:13 +0300 Subject: [PATCH 18/30] 12 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 89ebf099d6..690f939655 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 kekdtt122345 + echo kekdtt1223451 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 4489d64da402b0751feabc790a434ba9431ae1d4 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 01:04:23 +0300 Subject: [PATCH 19/30] 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 690f939655..4e41fd57c9 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 kekdtt1223451 + echo kekdtt1223451tr 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 7389aae04c5ee623e977a27484d00dac2ffd0da5 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 01:43:25 +0300 Subject: [PATCH 20/30] 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 4e41fd57c9..39bcfd295a 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 kekdtt1223451tr + echo kekdtt1223451trf 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 9ce9f457d7a26a8d8489c50b992245cf8697c5a1 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 01:49:14 +0300 Subject: [PATCH 21/30] fsdgfds 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 39bcfd295a..42bd267f75 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 kekdtt1223451trf + echo kekdtt1223451trf1 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 aa84f62ce22ed59157d0c3bbc0ab0dd77a5c9598 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 02:39:11 +0300 Subject: [PATCH 22/30] =?UTF-8?q?=D0=BA=D0=BE=D1=81=D1=82=D1=8B=D0=BB?= =?UTF-8?q?=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 42bd267f75..4c4fb0fc43 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 kekdtt1223451trf1 + echo kekdtt1223451trf1к 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 bdb7f6c2e80e649188ae7e7ca671c6a1e45bd9b5 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 03:11:34 +0300 Subject: [PATCH 23/30] fa 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 4c4fb0fc43..fb4d4e9925 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 kekdtt1223451trf1к + echo kekdtt1223451trf1кa 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 2fc1b77969ab627e24542cf3d852e4a8b285e395 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 03:17:38 +0300 Subject: [PATCH 24/30] 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 fb4d4e9925..09e3deec0d 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 kekdtt1223451trf1кa + echo kekdtt1223451trf1кad 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 350f901b62d08bbe2e1d3d11347c6041991698ec Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 03:36:03 +0300 Subject: [PATCH 25/30] ff 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 09e3deec0d..61baaf8ec3 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 kekdtt1223451trf1кad + echo kekdtt1223451trf1кadff 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 2d2ff18c65d9737fd0849e2e2368a7e7565aec5a Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 10:11:14 +0300 Subject: [PATCH 26/30] 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 61baaf8ec3..5aff915307 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 kekdtt1223451trf1кadff + echo kekdtt1223451trf1кadff123 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 2114249d63d97ac83ce21355db9a647ba5d420ad Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 10:45:40 +0300 Subject: [PATCH 27/30] 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 5aff915307..701284b7c6 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 kekdtt1223451trf1кadff123 + echo kekdtt1223451trf1кadff1234 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 cd99bc489cd2c61a8c7b399f8403db322a9ad204 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 17:16:28 +0300 Subject: [PATCH 28/30] final Signed-off-by: Valeriy Khorunzhin --- images/virt-artifact/werf.inc.yaml | 2 +- .../pkg/controller/vm/internal/filesystem.go | 29 +++---------------- .../pkg/controller/vm/vm_controller.go | 2 +- .../vmsnapshot/internal/life_cycle.go | 16 ++++++++-- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/images/virt-artifact/werf.inc.yaml b/images/virt-artifact/werf.inc.yaml index 701284b7c6..09f61dbfb3 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 kekdtt1223451trf1кadff1234 + echo kekdtt1223451trf1кadff12345 git clone --depth=1 $(cat /run/secrets/SOURCE_REPO)/{{ $gitRepoUrl }} --branch v1.6.2-virtualization-fix-thawning /src/kubevirt rm -rf /src/kubevirt/.git diff --git a/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go b/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go index 0b5c735f05..09d392b3b3 100644 --- a/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go +++ b/images/virtualization-artifact/pkg/controller/vm/internal/filesystem.go @@ -18,7 +18,6 @@ package internal import ( "context" - "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/reconcile" @@ -26,21 +25,15 @@ 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" - annKek = "kek" -) +const nameFilesystemHandler = "FilesystemHandler" -func NewFilesystemHandler(virtClient VirtClient) *FilesystemHandler { - return &FilesystemHandler{virtClient: virtClient} +func NewFilesystemHandler() *FilesystemHandler { + return &FilesystemHandler{} } -type FilesystemHandler struct { - virtClient VirtClient -} +type FilesystemHandler struct{} func (h *FilesystemHandler) Handle(ctx context.Context, s state.VirtualMachineState) (reconcile.Result, error) { if s.VirtualMachine().IsEmpty() { @@ -74,20 +67,6 @@ 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 cab82f3768..6a4e231a88 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(virtClient), + internal.NewFilesystemHandler(), internal.NewSnapshottingHandler(client), internal.NewPodHandler(client), internal.NewSizePolicyHandler(), 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 de7fd1a7a5..50b8fa091d 100644 --- a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go @@ -76,6 +76,11 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu return reconcile.Result{}, err } + var frozenConditionExists bool + if vm != nil { + _, frozenConditionExists = conditions.GetCondition(vmcondition.TypeFilesystemFrozen, vm.Status.Conditions) + } + kvvmi, err := h.snapshotter.GetVirtualMachineInstance(ctx, vm) if err != nil { h.setPhaseConditionToFailed(cb, vmSnapshot, err) @@ -113,7 +118,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu Reason(conditions.ReasonUnknown). Message("") - _, err = h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) + canUnfreeze, err := h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) if err != nil { if errors.Is(err, service.ErrUntrustedFilesystemFrozenCondition) { log.Debug(err.Error()) @@ -135,6 +140,10 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu return reconcile.Result{}, err } + if !canUnfreeze && frozenConditionExists { + return reconcile.Result{RequeueAfter: 5 * time.Second}, nil + } + return reconcile.Result{}, nil } @@ -148,7 +157,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu Reason(conditions.CommonReason(readyCondition.Reason)). Message(readyCondition.Message) - _, err = h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) + canUnfreeze, err := h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) if err != nil { if errors.Is(err, service.ErrUntrustedFilesystemFrozenCondition) { log.Debug(err.Error()) @@ -161,6 +170,9 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu cb.Message(fmt.Sprintf("%s, %s", err.Error(), cb.Condition().Message)) return reconcile.Result{}, fmt.Errorf("failed to unfreeze filesystem: %w", err) } + if !canUnfreeze && frozenConditionExists { + return reconcile.Result{RequeueAfter: 5 * time.Second}, nil + } return reconcile.Result{}, nil case v1alpha2.VirtualMachineSnapshotPhaseReady: // Ensure vd snapshots aren't lost. From 1cd8ff8b4d154c581d918ce6bb4ca67a9f7ae30b Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 17:38:06 +0300 Subject: [PATCH 29/30] refactoring Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vmsnapshot/internal/life_cycle.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 50b8fa091d..f24e98deab 100644 --- a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go @@ -76,9 +76,10 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu return reconcile.Result{}, err } - var frozenConditionExists bool + var frozen bool if vm != nil { - _, frozenConditionExists = conditions.GetCondition(vmcondition.TypeFilesystemFrozen, vm.Status.Conditions) + frozenCondition, ok := conditions.GetCondition(vmcondition.TypeFilesystemFrozen, vm.Status.Conditions) + frozen = ok && frozenCondition.Status == metav1.ConditionTrue } kvvmi, err := h.snapshotter.GetVirtualMachineInstance(ctx, vm) @@ -140,7 +141,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu return reconcile.Result{}, err } - if !canUnfreeze && frozenConditionExists { + if !canUnfreeze && frozen { return reconcile.Result{RequeueAfter: 5 * time.Second}, nil } @@ -170,7 +171,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu cb.Message(fmt.Sprintf("%s, %s", err.Error(), cb.Condition().Message)) return reconcile.Result{}, fmt.Errorf("failed to unfreeze filesystem: %w", err) } - if !canUnfreeze && frozenConditionExists { + if !canUnfreeze && frozen { return reconcile.Result{RequeueAfter: 5 * time.Second}, nil } return reconcile.Result{}, nil From 6f4a0a9e77604b194b229b5c993eaee4ff03fef0 Mon Sep 17 00:00:00 2001 From: Valeriy Khorunzhin Date: Tue, 31 Mar 2026 17:41:20 +0300 Subject: [PATCH 30/30] refactoring 2 Signed-off-by: Valeriy Khorunzhin --- .../pkg/controller/vmsnapshot/internal/life_cycle.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 f24e98deab..e7adac4e5d 100644 --- a/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go +++ b/images/virtualization-artifact/pkg/controller/vmsnapshot/internal/life_cycle.go @@ -119,6 +119,10 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu Reason(conditions.ReasonUnknown). Message("") + if !frozen { + return reconcile.Result{}, nil + } + canUnfreeze, err := h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) if err != nil { if errors.Is(err, service.ErrUntrustedFilesystemFrozenCondition) { @@ -141,7 +145,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu return reconcile.Result{}, err } - if !canUnfreeze && frozen { + if !canUnfreeze { return reconcile.Result{RequeueAfter: 5 * time.Second}, nil } @@ -158,6 +162,10 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu Reason(conditions.CommonReason(readyCondition.Reason)). Message(readyCondition.Message) + if !frozen { + return reconcile.Result{}, nil + } + canUnfreeze, err := h.unfreezeVirtualMachineIfCan(ctx, vmSnapshot, vm, kvvmi) if err != nil { if errors.Is(err, service.ErrUntrustedFilesystemFrozenCondition) { @@ -171,7 +179,7 @@ func (h LifeCycleHandler) Handle(ctx context.Context, vmSnapshot *v1alpha2.Virtu cb.Message(fmt.Sprintf("%s, %s", err.Error(), cb.Condition().Message)) return reconcile.Result{}, fmt.Errorf("failed to unfreeze filesystem: %w", err) } - if !canUnfreeze && frozen { + if !canUnfreeze { return reconcile.Result{RequeueAfter: 5 * time.Second}, nil } return reconcile.Result{}, nil