|
| 1 | +suite: vm-disk refuses to clone a golden image whose import failed |
| 2 | +# A golden whose import Failed is never populated, and CDI holds a clone of it |
| 3 | +# forever, so a new disk on it would sit pending with nothing pointing at the |
| 4 | +# image. Only Failed is refused: a golden still importing is safe to clone |
| 5 | +# because CDI waits for it, and helm template has no cluster to look it up in. |
| 6 | +release: |
| 7 | + name: test-vm-disk |
| 8 | + namespace: tenant-test |
| 9 | +templates: |
| 10 | + - templates/dv.yaml |
| 11 | +tests: |
| 12 | + - it: refuses a new disk on a golden whose import Failed |
| 13 | + set: |
| 14 | + source: {image: {name: ubuntu}} |
| 15 | + kubernetesProvider: |
| 16 | + scheme: &scheme |
| 17 | + "cdi.kubevirt.io/v1beta1/DataVolume": |
| 18 | + gvr: {group: cdi.kubevirt.io, version: v1beta1, resource: datavolumes} |
| 19 | + namespaced: true |
| 20 | + objects: |
| 21 | + - kind: DataVolume |
| 22 | + apiVersion: cdi.kubevirt.io/v1beta1 |
| 23 | + metadata: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 24 | + status: {phase: Failed} |
| 25 | + asserts: |
| 26 | + - failedTemplate: |
| 27 | + errorPattern: 'golden DataVolume "vm-default-images-ubuntu" in cozy-public failed to import \(phase Failed\)' |
| 28 | + |
| 29 | + - it: clones a golden whose import Succeeded |
| 30 | + set: |
| 31 | + source: {image: {name: ubuntu}} |
| 32 | + kubernetesProvider: |
| 33 | + scheme: *scheme |
| 34 | + objects: |
| 35 | + - kind: DataVolume |
| 36 | + apiVersion: cdi.kubevirt.io/v1beta1 |
| 37 | + metadata: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 38 | + status: {phase: Succeeded} |
| 39 | + asserts: |
| 40 | + - equal: |
| 41 | + path: spec.source.pvc |
| 42 | + value: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 43 | + |
| 44 | + - it: clones a golden that is still importing |
| 45 | + set: |
| 46 | + source: {image: {name: ubuntu}} |
| 47 | + kubernetesProvider: |
| 48 | + scheme: *scheme |
| 49 | + objects: |
| 50 | + - kind: DataVolume |
| 51 | + apiVersion: cdi.kubevirt.io/v1beta1 |
| 52 | + metadata: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 53 | + status: {phase: ImportInProgress} |
| 54 | + asserts: |
| 55 | + - equal: |
| 56 | + path: spec.source.pvc |
| 57 | + value: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 58 | + |
| 59 | + - it: renders without a cluster to look the golden up in |
| 60 | + set: |
| 61 | + source: {image: {name: ubuntu}} |
| 62 | + asserts: |
| 63 | + - equal: |
| 64 | + path: spec.source.pvc |
| 65 | + value: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 66 | + |
| 67 | + - it: leaves an existing disk alone when its golden later Failed |
| 68 | + set: |
| 69 | + source: {image: {name: ubuntu}} |
| 70 | + kubernetesProvider: |
| 71 | + scheme: *scheme |
| 72 | + objects: |
| 73 | + - kind: DataVolume |
| 74 | + apiVersion: cdi.kubevirt.io/v1beta1 |
| 75 | + metadata: {name: vm-default-images-ubuntu, namespace: cozy-public} |
| 76 | + status: {phase: Failed} |
| 77 | + - kind: DataVolume |
| 78 | + apiVersion: cdi.kubevirt.io/v1beta1 |
| 79 | + metadata: |
| 80 | + name: test-vm-disk |
| 81 | + namespace: tenant-test |
| 82 | + annotations: |
| 83 | + vm-disk.cozystack.io/source: '{"image":{"name":"ubuntu"}}' |
| 84 | + vm-disk.cozystack.io/storage-class: replicated |
| 85 | + spec: |
| 86 | + source: {pvc: {name: vm-default-images-ubuntu, namespace: cozy-public}} |
| 87 | + storage: {resources: {requests: {storage: 5Gi}}, storageClassName: replicated} |
| 88 | + asserts: |
| 89 | + - notFailedTemplate: {} |
0 commit comments