Skip to content

Conversation

@diafour
Copy link
Member

@diafour diafour commented Jan 27, 2026

Description

  • Treat Clone as InProgress if there are disks in DiskWaitForFistConsumer.
  • All disks should be in DiskReady state to mark Clone operation as Completed.
  • Refactor cleanup step: extract canCleanup function.

Why do we need it, and what problem does it solve?

Clone operation always fail for WaitForFirstConsumer disks because vmsnapshot is deleted too early.

What is the expected result?

Clone operation successfully clones VMs.

Before:

# ./clone.sh vm-alpine-wffc
virtualmachineoperation.virtualization.deckhouse.io/clone-vm-alpine-wffc-9k5bt created

# k get po,vm,vd,vmop
NAME                                                  READY   STATUS      RESTARTS   AGE
pod/virt-launcher-clone-vm-alpine-wffc-6gt4w          0/1     Pending     0          5s
pod/virt-launcher-vm-alpine-wffc-2mzjh                1/1     Running     0          5m10s

NAME                                                                     PHASE     NODE                    IPADDRESS    AGE
virtualmachine.virtualization.deckhouse.io/clone-vm-alpine-wffc          Pending                           10.66.10.6   6s
virtualmachine.virtualization.deckhouse.io/vm-alpine-wffc                Running   d8-virt-hypert-test-1   10.66.10.5   5m11s

NAME                                                                PHASE                  CAPACITY   AGE
virtualdisk.virtualization.deckhouse.io/clone-vd-root-alpine-wffc   WaitForFirstConsumer   350Mi      5m51s
virtualdisk.virtualization.deckhouse.io/vd-root-alpine-wffc         Ready                  350Mi      18m

NAME                                                                                    PHASE       TYPE      VIRTUALMACHINE          AGE
virtualmachineoperation.virtualization.deckhouse.io/clone-vm-alpine-wffc-9k5bt          Failed      Clone     vm-alpine-wffc          17s

After:

# k get po,vm,vd,vmop
NAME                                            READY   STATUS      RESTARTS   AGE
pod/virt-launcher-clone-vm-alpine-wffc-lfts2    1/1     Running     0          39s
pod/virt-launcher-vm-alpine-wffc-2mzjh          1/1     Running     0          13m

NAME                                                               PHASE     NODE                    IPADDRESS    AGE
virtualmachine.virtualization.deckhouse.io/clone-vm-alpine-wffc    Running   d8-virt-hypert-test-1   10.66.10.7   40s
virtualmachine.virtualization.deckhouse.io/vm-alpine-wffc          Running   d8-virt-hypert-test-1   10.66.10.5   13m

NAME                                                                PHASE   CAPACITY   AGE
virtualdisk.virtualization.deckhouse.io/clone-vd-root-alpine-wffc   Ready   350Mi      5m51s
virtualdisk.virtualization.deckhouse.io/vd-root-alpine-wffc         Ready   350Mi      18m

NAME                                                                                    PHASE       TYPE      VIRTUALMACHINE          AGE
virtualmachineoperation.virtualization.deckhouse.io/clone-vm-alpine-wffc-5cfcs          Completed   Clone     vm-alpine-wffc          50s

Checklist

  • The code is covered by unit tests.
  • e2e tests passed.
  • Documentation updated according to the changes.
  • Changes were tested in the Kubernetes cluster manually.

Changelog entries

section: vmop
type: fix
summary: Make Clone operation works for WaitForFirstConsumer disks.

- Treat Clone as InProgress if there are disks in DiskWaitForFistConsumer.
- All disks should be in DiskReady state to mark Clone operation as Completed.
- Refactor cleanup step: extract canCleanup function.

Signed-off-by: Ivan Mikheykin <ivan.mikheykin@flant.com>
@diafour diafour requested review from danilrwx and removed request for Isteb4k and yaroslavborbat January 27, 2026 12:38
@diafour diafour requested review from Isteb4k and eofff January 27, 2026 12:38
@diafour diafour added this to the v1.5.0 milestone Jan 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants