Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# get this party started

1. ensure you have a default storage class selected
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note: command to set rbd as default is as follows:

oc patch storageclass ocs-storagecluster-ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

ocs-storagecluster-ceph-rbd (default) openshift-storage.rbd.csi.ceph.com Delete Immediate true 7h50m
```

2. Create the VM's

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before creating the VMs, ensure you already have the NS created for e.g. oc create ns cirros-test-cont

Note.. these vm's already have the label for changeBlockTracking: true

```
oc create -f cirros-test-1.yaml , can also include test-2,3
```

3. Create the pv/pvc that will store the qocw2 snapshots
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Typo: "qocw2" should be "qcow2".

-3. Create the pv/pvc that will store the qocw2 snapshots
+3. Create the pv/pvc that will store the qcow2 snapshots
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
3. Create the pv/pvc that will store the qocw2 snapshots
3. Create the pv/pvc that will store the qcow2 snapshots
🤖 Prompt for AI Agents
In
`@tests/e2e/sample-applications/virtual-machines/cirros-test/3-vms/cirros-test-with-CNV-CBT/README.md`
at line 15, Fix the typo in the README: replace the incorrect string "qocw2"
with the correct disk format name "qcow2" in the README.md text ("3. Create the
pv/pvc that will store the qocw2 snapshots") so the line reads "3. Create the
pv/pvc that will store the qcow2 snapshots".


```
oc create -f pushBackupPV.yaml
```

4. Create an optional filebrowsers container to inspect files on the above pv/pvc

```
oc create -f filebrowser.yaml

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use our own quay image to avoid getting into docker rate limiting issues:

oc set image deployment/pvc-browser browser=quay.io/konveyor/oadp-vmfr-access-filebrowser:latest

```

5. Create the virtualMachineBackupTracker instance

```
oc create -f virtualMachineBackupTracker.yaml
```

6. Take a full andn incremental backup

Full: the first backup will always be a full backup
```
oc create -f virtualMachineBackupFull.yaml
```
Incremetnal: any new backup using the same tracker will be incremental
Comment on lines +33 to +39
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Typos in backup section.

Suggested fixes
-6. Take a full andn incremental backup
+6. Take a full and incremental backup
-Incremetnal: any new backup using the same tracker will be incremental
+Incremental: any new backup using the same tracker will be incremental
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
6. Take a full andn incremental backup
Full: the first backup will always be a full backup
```
oc create -f virtualMachineBackupFull.yaml
```
Incremetnal: any new backup using the same tracker will be incremental
6. Take a full and incremental backup
Full: the first backup will always be a full backup
🧰 Tools
🪛 LanguageTool

[grammar] ~33-~33: Ensure spelling is correct
Context: ...eBackupTracker.yaml ``` 6. Take a full andn incremental backup Full: the first bac...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🪛 markdownlint-cli2 (0.18.1)

36-36: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In
`@tests/e2e/sample-applications/virtual-machines/cirros-test/3-vms/cirros-test-with-CNV-CBT/README.md`
around lines 33 - 39, Fix the typos in the backup section of README.md: change
"andn" to "and" in the sentence "Take a full andn incremental backup", correct
"Incremetnal" to "Incremental", and consider fixing "any new backup using the
same tracker will be incremental" to a clearer phrasing like "Any subsequent
backup using the same tracker will be incremental"; leave the oc create command
and filename virtualMachineBackupFull.yaml unchanged.

```
oc create -f virtualMachineBackupInc1.yaml
```

See my results in RESULTS


Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Notes

After downloading the qcow2 files to my laptop.. check the size of files

```
-rw-r--r--. 1 whayutin whayutin 896K Jan 14 09:28 vmbackup-cirros-test-cont-1-inc-1-volume0.qcow2
-rw-r--r--. 1 whayutin whayutin 151M Jan 14 09:29 vmbackup-cirros-test-cont-1-volume0.qcow2
```

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
oc -n cirros-test-cont get virtualmachineBackup vmbackup-cirros-test-cont-1 -o yaml
apiVersion: backup.kubevirt.io/v1alpha1
kind: VirtualMachineBackup
metadata:
creationTimestamp: "2026-01-14T15:40:55Z"
finalizers:
- backup.kubevirt.io/vmbackup-protection
generation: 1
name: vmbackup-cirros-test-cont-1
namespace: cirros-test-cont
resourceVersion: "392611"
uid: 649409e7-84e7-47af-a12f-6cd6356e6fd7
spec:
pvcName: pushbackup-pv
source:
apiGroup: backup.kubevirt.io
kind: VirtualMachineBackupTracker
name: vmbackuptracker-cirros-test-cont-1
status:
checkpointName: vmbackup-cirros-test-cont-1-2026-01-14_15-40-55
conditions:
- lastProbeTime: null
lastTransitionTime: "2026-01-14T15:41:04Z"
reason: 'Completed VirtualMachineBackup, warning: Failed freezing guest filesystem:
virError(Code=86, Domain=10, Message=''Guest agent is not responding: QEMU guest
agent is not connected'')'
status: "False"
type: Progressing
- lastProbeTime: null
lastTransitionTime: "2026-01-14T15:41:04Z"
reason: 'Completed VirtualMachineBackup, warning: Failed freezing guest filesystem:
virError(Code=86, Domain=10, Message=''Guest agent is not responding: QEMU guest
agent is not connected'')'
status: "True"
type: Done
type: Full

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
oc -n cirros-test-cont get virtualmachineBackup vmbackup-cirros-test-cont-1-inc-1 -o yaml
apiVersion: backup.kubevirt.io/v1alpha1
kind: VirtualMachineBackup
metadata:
creationTimestamp: "2026-01-14T15:45:26Z"
finalizers:
- backup.kubevirt.io/vmbackup-protection
generation: 1
name: vmbackup-cirros-test-cont-1-inc-1
namespace: cirros-test-cont
resourceVersion: "396946"
uid: e5415790-5fad-4077-8d5a-8ea7003abfec
spec:
pvcName: pushbackup-pv
source:
apiGroup: backup.kubevirt.io
kind: VirtualMachineBackupTracker
name: vmbackuptracker-cirros-test-cont-1
status:
checkpointName: vmbackup-cirros-test-cont-1-inc-1-2026-01-14_15-45-26
conditions:
- lastProbeTime: null
lastTransitionTime: "2026-01-14T15:45:30Z"
reason: 'Completed VirtualMachineBackup, warning: Failed freezing guest filesystem:
virError(Code=86, Domain=10, Message=''Guest agent is not responding: QEMU guest
agent is not connected'')'
status: "False"
type: Progressing
- lastProbeTime: null
lastTransitionTime: "2026-01-14T15:45:30Z"
reason: 'Completed VirtualMachineBackup, warning: Failed freezing guest filesystem:
virError(Code=86, Domain=10, Message=''Guest agent is not responding: QEMU guest
agent is not connected'')'
status: "True"
type: Done
type: Incremental
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: backup.kubevirt.io/v1alpha1
kind: VirtualMachineBackupTracker
metadata:
creationTimestamp: "2026-01-14T15:37:52Z"
generation: 1
name: vmbackuptracker-cirros-test-cont-1
namespace: cirros-test-cont
resourceVersion: "396932"
uid: 41db29e7-412a-40c5-9a37-c044594febf2
spec:
source:
apiGroup: kubevirt.io
kind: VirtualMachine
name: cirros-test-cont-1
status:
latestCheckpoint:
creationTime: "2026-01-14T15:45:30Z"
name: vmbackup-cirros-test-cont-1-inc-1-2026-01-14_15-45-26
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
annotations:
generation: 1
labels:
app: cirros-test-cont-1
changedBlockTracking: "true"
name: cirros-test-cont-1
namespace: cirros-test-cont
spec:
dataVolumeTemplates:
- metadata:
annotations:
cdi.kubevirt.io/storage.deleteAfterCompletion: "false"
creationTimestamp: null
name: cirros-test-cont-1-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 150Mi
volumeMode: Block
source:
registry:
pullMethod: node
url: docker://quay.io/kubevirt/cirros-container-disk-demo
running: true
template:
metadata:
creationTimestamp: null
name: cirros-test-cont-1
spec:
architecture: amd64
domain:
devices:
disks:
- disk:
bus: virtio
name: volume0
interfaces:
- masquerade: {}
name: default
rng: {}
machine:
type: q35
resources:
requests:
memory: 256M
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 0
volumes:
- dataVolume:
name: cirros-test-cont-1-dv
name: volume0
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
annotations:
generation: 1
labels:
app: cirros-test-cont-2
changedBlockTracking: "true"
name: cirros-test-cont-2
namespace: cirros-test-cont
spec:
dataVolumeTemplates:
- metadata:
annotations:
cdi.kubevirt.io/storage.deleteAfterCompletion: "false"
creationTimestamp: null
name: cirros-test-cont-2-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 150Mi
volumeMode: Block
source:
registry:
pullMethod: node
url: docker://quay.io/kubevirt/cirros-container-disk-demo
- metadata:
annotations:
cdi.kubevirt.io/storage.deleteAfterCompletion: "false"
name: cirros-test-cont-2-home-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 150Mi
volumeMode: Block
source:
blank: {}
running: true
template:
metadata:
creationTimestamp: null
name: cirros-test-cont-2
spec:
architecture: amd64
domain:
devices:
disks:
- disk:
bus: virtio
name: volume0
- disk:
bus: virtio
name: volume1
interfaces:
- masquerade: {}
name: default
rng: {}
machine:
type: q35
resources:
requests:
memory: 256M
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 0
volumes:
- dataVolume:
name: cirros-test-cont-2-dv
name: volume0
- dataVolume:
name: cirros-test-cont-2-home-dv
name: volume1
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
annotations:
generation: 1
labels:
app: cirros-test-cont-3
changedBlockTracking: "true"
name: cirros-test-cont-3
namespace: cirros-test-cont
spec:
dataVolumeTemplates:
- metadata:
annotations:
cdi.kubevirt.io/storage.deleteAfterCompletion: "false"
creationTimestamp: null
name: cirros-test-cont-3-dv
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 150Mi
volumeMode: Block
source:
registry:
pullMethod: node
url: docker://quay.io/kubevirt/cirros-container-disk-demo
running: true
template:
metadata:
creationTimestamp: null
name: cirros-test-cont-3
spec:
architecture: amd64
domain:
devices:
disks:
- disk:
bus: virtio
name: volume0
interfaces:
- masquerade: {}
name: default
rng: {}
machine:
type: q35
resources:
requests:
memory: 256M
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 0
volumes:
- dataVolume:
name: cirros-test-cont-3-dv
name: volume0
Loading