-
Bug
-
Resolution: Unresolved
-
Normal
-
CNV v4.17.0
-
None
-
Quality / Stability / Reliability
-
8
-
False
-
-
False
-
None
-
-
CNV Storage 269, CNV Storage 270, CNV Storage 275, CNV Storage 276, CNV Storage 277, CNV Storage 278, CNV Storage Sprint 279, CNV Storage Sprint 280, CNV Storage Sprint 281, CNV Storage Sprint 282, CNV Storage Sprint 283, CNV Storage Sprint 284
-
Low
-
No
Description of problem:
Storage checkup job fails when we have a golden image volumeSnapshot (OCS-virt is the default and virt-defaul SC), and then HPP became a default storage class. Also, clone to HPP sc fails with 'snapshot' source. But clone succeeds with "DataSource" source and target size specified.
Version-Release number of selected component (if applicable):
4.16 (maybe earlier as well)
How reproducible:
Always
Steps to Reproduce:
We have a golden image volumeSnapshot (OCS-virt is the default and virt-defaul SC)
$ oc get VolumeSnapshot -A | grep centos7 openshift-virtualization-os-images centos7-02aa45fbcbad true centos7-02aa45fbcbad 30Gi ocs-storagecluster-rbdplugin-snapclass snapcontent-2e76971b-fa78-41fb-a7ab-58f7f9a64c07 18h 18h
Create a DV with 'snapshot' source, but without the storage size request (when HPP is specified, or when it's the default storage class)
apiVersion: cdi.kubevirt.io/v1beta1
kind: DataVolume
metadata:
annotations:
cdi.kubevirt.io/storage.bind.immediate.requested: "true"
name: dv-hpp-cloned-from-snapshot
spec:
source:
snapshot:
name: centos7-02aa45fbcbad
namespace: openshift-virtualization-os-images
storage:
resources: {}
storageClassName: hostpath-csi-basic
DV doesn't get cloned:
$ oc get dv -A NAMESPACE NAME PHASE PROGRESS RESTARTS AGE default dv-hpp-cloned-from-datasource Succeeded 100.0% 8m3s default dv-hpp-cloned-from-snapshot CloneInProgress N/A 38m
No pods in source and target namespaces:
$ oc get pods No resources found in default namespace. $ oc get pods -n openshift-virtualization-os-images No resources found in openshift-virtualization-os-images namespace.
$ oc get pvc -n openshift-virtualization-os-images NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE tmp-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 Pending hostpath-csi-basic <unset> 39m tmp-source-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 Bound pvc-d9551722-4ca7-419b-8372-63aa0d0ffd90 30Gi RWO ocs-storagecluster-ceph-rbd <unset> 39m
Source PVC yaml:
$ oc get pvc -n openshift-virtualization-os-images tmp-source-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 -oyaml apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: cdi.kubevirt.io/cloneFallbackReason: The storageclass provisioner does not match the volumesnapshotcontent driver cdi.kubevirt.io/clonePhase: Pending cdi.kubevirt.io/cloneType: copy cdi.kubevirt.io/createdForDataVolume: d7fbea86-6179-4fb5-a3f4-ff5296293eac cdi.kubevirt.io/dataSourceNamespace: openshift-virtualization-os-images cdi.kubevirt.io/storage.bind.immediate.requested: "true" cdi.kubevirt.io/storage.clone.token: eyJhbGciOiJQUzI1NiJ9.eyJleHAiOjE3MjAzNDgxNTIsImlhdCI6MTcyMDM0Nzg1MiwiaXNzIjoiY2RpLWFwaXNlcnZlciIsIm5hbWUiOiJjZW50b3M3LTAyYWE0NWZiY2JhZCIsIm5hbWVzcGFjZSI6Im9wZW5zaGlmdC12aXJ0dWFsaXphdGlvbi1vcy1pbWFnZXMiLCJuYmYiOjE3MjAzNDc4NTIsIm9wZXJhdGlvbiI6IkNsb25lIiwicGFyYW1zIjp7InRhcmdldE5hbWUiOiJkdi1ocHAtY2xvbmVkLWZyb20tc25hcHNob3QiLCJ0YXJnZXROYW1lc3BhY2UiOiJkZWZhdWx0In0sInJlc291cmNlIjp7Imdyb3VwIjoic25hcHNob3Quc3RvcmFnZS5rOHMuaW8iLCJyZXNvdXJjZSI6InZvbHVtZXNuYXBzaG90cyIsInZlcnNpb24iOiJ2MSJ9fQ.BBM7Vx9bpmPEqO90MNH2sNbi8_lOlgdhjD3yFHRda33puoHA7XzeE9_pODIhaB1znG9t61S-vLYDqFiMxK1A7diBHMUt9DY3oEIT2awOxLsD8grDS3ACLfTFoX0MJQ8CU97-r9cbiJHZdSk1nXDpJ6am6e5jY0Ce8D2wRn67t0NmxwS2Rf88Duxuz7G3tLkm4Y7nQa9Qc9PoIP1tf-lIxWKGaepSNvLnVyfQ76dEsKUDvmNxu9Pfpkecg9Jr0EUtMa_EmD0vTnbLjWUOqNHsHMj4lzIpZ28qzmXostGchgvcSTXF432XyPEownt8dawjLM1uB6WHHqms-ismOwvzkQ cdi.kubevirt.io/storage.condition.running: "false" cdi.kubevirt.io/storage.condition.running.message: Clone Pending cdi.kubevirt.io/storage.condition.running.reason: Pending cdi.kubevirt.io/storage.contentType: kubevirt cdi.kubevirt.io/storage.extended.clone.token: eyJhbGciOiJQUzI1NiJ9.eyJleHAiOjIwMzU3MDc4NTIsImlhdCI6MTcyMDM0Nzg1MiwiaXNzIjoiY2RpLWRlcGxveW1lbnQiLCJuYW1lIjoiY2VudG9zNy0wMmFhNDVmYmNiYWQiLCJuYW1lc3BhY2UiOiJvcGVuc2hpZnQtdmlydHVhbGl6YXRpb24tb3MtaW1hZ2VzIiwibmJmIjoxNzIwMzQ3ODUyLCJvcGVyYXRpb24iOiJDbG9uZSIsInBhcmFtcyI6eyJ0YXJnZXROYW1lIjoiZHYtaHBwLWNsb25lZC1mcm9tLXNuYXBzaG90IiwidGFyZ2V0TmFtZXNwYWNlIjoiZGVmYXVsdCIsInVpZCI6ImMyODczMGZmLTYyZTMtNGM0ZC05M2MzLTllMDQ0YzgwMDM2NiJ9LCJyZXNvdXJjZSI6eyJncm91cCI6InNuYXBzaG90LnN0b3JhZ2UuazhzLmlvIiwicmVzb3VyY2UiOiJ2b2x1bWVzbmFwc2hvdHMiLCJ2ZXJzaW9uIjoidjEifX0.k31sWJS6Qa8i1m2f02EuvdnuTGKol0eL3YPQ6tDa_xGT88bGNiSu2iOp209ZIhydN85m5MJfZay8wtkRM3cG-2Cpdw5kod9hv1y30MJPQMQ0q-X1fFZy3Txy4nnQnrUmgKdlEf0gXhrfgsIRluP2fJdtDu2tOq9bD38wINfi4mDOt0-Zyke3-0Rjh0jq9284nprtb4YPkRU6Ozr4TdxGyy8hOue7PBpYEgxzWp8kCbMg7hveT-eZI-VJgMYMsaeKqJwX2twnGThJ1yWlu-UMsjqM9C5EvKXaUT_wgjrzleWdExUZ5X8FV-Y7KypvqKT-gIXf57nAIR_Qj6YyPEOJOA cdi.kubevirt.io/storage.pod.restarts: "0" cdi.kubevirt.io/storage.populator.kind: VolumeCloneSource cdi.kubevirt.io/storage.preallocation.requested: "false" cdi.kubevirt.io/storage.usePopulator: "true" pv.kubernetes.io/bind-completed: "yes" pv.kubernetes.io/bound-by-controller: "yes" volume.beta.kubernetes.io/storage-provisioner: openshift-storage.rbd.csi.ceph.com volume.kubernetes.io/storage-provisioner: openshift-storage.rbd.csi.ceph.com creationTimestamp: "2024-07-07T10:24:12Z" finalizers: - kubernetes.io/pvc-protection labels: alerts.k8s.io/KubePersistentVolumeFillingUp: disabled app: containerized-data-importer app.kubernetes.io/component: storage app.kubernetes.io/managed-by: cdi-controller app.kubernetes.io/part-of: hyperconverged-cluster app.kubernetes.io/version: 4.16.0 cdi.kubevirt.io/OwnedByUID: c28730ff-62e3-4c4d-93c3-9e044c800366 name: tmp-source-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 namespace: openshift-virtualization-os-images resourceVersion: "9297241" uid: d9551722-4ca7-419b-8372-63aa0d0ffd90 spec: accessModes: - ReadWriteOnce dataSource: apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: centos7-02aa45fbcbad dataSourceRef: apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: centos7-02aa45fbcbad resources: requests: storage: 30Gi storageClassName: ocs-storagecluster-ceph-rbd volumeMode: Block volumeName: pvc-d9551722-4ca7-419b-8372-63aa0d0ffd90 status: accessModes: - ReadWriteOnce capacity: storage: 30Gi phase: Bound
TMP-PVC yaml:
$ oc get pvc -n openshift-virtualization-os-images tmp-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 -oyaml apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: cdi.kubevirt.io/cloneFallbackReason: The storageclass provisioner does not match the volumesnapshotcontent driver cdi.kubevirt.io/clonePhase: PrepClaim cdi.kubevirt.io/cloneType: copy cdi.kubevirt.io/createdForDataVolume: d7fbea86-6179-4fb5-a3f4-ff5296293eac cdi.kubevirt.io/dataSourceNamespace: openshift-virtualization-os-images cdi.kubevirt.io/events.source: default/dv-hpp-cloned-from-snapshot cdi.kubevirt.io/events.source.kind: PersistentVolumeClaim cdi.kubevirt.io/ownerUID: c28730ff-62e3-4c4d-93c3-9e044c800366 cdi.kubevirt.io/storage.bind.immediate.requested: "" cdi.kubevirt.io/storage.clone.token: eyJhbGciOiJQUzI1NiJ9.eyJleHAiOjE3MjAzNDgxNTIsImlhdCI6MTcyMDM0Nzg1MiwiaXNzIjoiY2RpLWFwaXNlcnZlciIsIm5hbWUiOiJjZW50b3M3LTAyYWE0NWZiY2JhZCIsIm5hbWVzcGFjZSI6Im9wZW5zaGlmdC12aXJ0dWFsaXphdGlvbi1vcy1pbWFnZXMiLCJuYmYiOjE3MjAzNDc4NTIsIm9wZXJhdGlvbiI6IkNsb25lIiwicGFyYW1zIjp7InRhcmdldE5hbWUiOiJkdi1ocHAtY2xvbmVkLWZyb20tc25hcHNob3QiLCJ0YXJnZXROYW1lc3BhY2UiOiJkZWZhdWx0In0sInJlc291cmNlIjp7Imdyb3VwIjoic25hcHNob3Quc3RvcmFnZS5rOHMuaW8iLCJyZXNvdXJjZSI6InZvbHVtZXNuYXBzaG90cyIsInZlcnNpb24iOiJ2MSJ9fQ.BBM7Vx9bpmPEqO90MNH2sNbi8_lOlgdhjD3yFHRda33puoHA7XzeE9_pODIhaB1znG9t61S-vLYDqFiMxK1A7diBHMUt9DY3oEIT2awOxLsD8grDS3ACLfTFoX0MJQ8CU97-r9cbiJHZdSk1nXDpJ6am6e5jY0Ce8D2wRn67t0NmxwS2Rf88Duxuz7G3tLkm4Y7nQa9Qc9PoIP1tf-lIxWKGaepSNvLnVyfQ76dEsKUDvmNxu9Pfpkecg9Jr0EUtMa_EmD0vTnbLjWUOqNHsHMj4lzIpZ28qzmXostGchgvcSTXF432XyPEownt8dawjLM1uB6WHHqms-ismOwvzkQ cdi.kubevirt.io/storage.condition.running: "true" cdi.kubevirt.io/storage.condition.running.message: "" cdi.kubevirt.io/storage.condition.running.reason: Populator is running cdi.kubevirt.io/storage.contentType: kubevirt cdi.kubevirt.io/storage.extended.clone.token: eyJhbGciOiJQUzI1NiJ9.eyJleHAiOjIwMzU3MDc4NTIsImlhdCI6MTcyMDM0Nzg1MiwiaXNzIjoiY2RpLWRlcGxveW1lbnQiLCJuYW1lIjoiY2VudG9zNy0wMmFhNDVmYmNiYWQiLCJuYW1lc3BhY2UiOiJvcGVuc2hpZnQtdmlydHVhbGl6YXRpb24tb3MtaW1hZ2VzIiwibmJmIjoxNzIwMzQ3ODUyLCJvcGVyYXRpb24iOiJDbG9uZSIsInBhcmFtcyI6eyJ0YXJnZXROYW1lIjoiZHYtaHBwLWNsb25lZC1mcm9tLXNuYXBzaG90IiwidGFyZ2V0TmFtZXNwYWNlIjoiZGVmYXVsdCIsInVpZCI6ImMyODczMGZmLTYyZTMtNGM0ZC05M2MzLTllMDQ0YzgwMDM2NiJ9LCJyZXNvdXJjZSI6eyJncm91cCI6InNuYXBzaG90LnN0b3JhZ2UuazhzLmlvIiwicmVzb3VyY2UiOiJ2b2x1bWVzbmFwc2hvdHMiLCJ2ZXJzaW9uIjoidjEifX0.k31sWJS6Qa8i1m2f02EuvdnuTGKol0eL3YPQ6tDa_xGT88bGNiSu2iOp209ZIhydN85m5MJfZay8wtkRM3cG-2Cpdw5kod9hv1y30MJPQMQ0q-X1fFZy3Txy4nnQnrUmgKdlEf0gXhrfgsIRluP2fJdtDu2tOq9bD38wINfi4mDOt0-Zyke3-0Rjh0jq9284nprtb4YPkRU6Ozr4TdxGyy8hOue7PBpYEgxzWp8kCbMg7hveT-eZI-VJgMYMsaeKqJwX2twnGThJ1yWlu-UMsjqM9C5EvKXaUT_wgjrzleWdExUZ5X8FV-Y7KypvqKT-gIXf57nAIR_Qj6YyPEOJOA cdi.kubevirt.io/storage.pod.restarts: "0" cdi.kubevirt.io/storage.populator.kind: VolumeCloneSource cdi.kubevirt.io/storage.preallocation.requested: "false" cdi.kubevirt.io/storage.usePopulator: "true" k8s.io/CloneRequest: openshift-virtualization-os-images/tmp-source-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 creationTimestamp: "2024-07-07T10:24:13Z" finalizers: - kubernetes.io/pvc-protection labels: alerts.k8s.io/KubePersistentVolumeFillingUp: disabled app: containerized-data-importer app.kubernetes.io/component: storage app.kubernetes.io/managed-by: cdi-controller app.kubernetes.io/part-of: hyperconverged-cluster app.kubernetes.io/version: 4.16.0 cdi.kubevirt.io/OwnedByUID: c28730ff-62e3-4c4d-93c3-9e044c800366 name: tmp-pvc-c28730ff-62e3-4c4d-93c3-9e044c800366 namespace: openshift-virtualization-os-images resourceVersion: "9297244" uid: fc86752d-a6ef-43b1-985f-e7d89dfb6047 spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageClassName: hostpath-csi-basic volumeMode: Filesystem status: phase: Pending Actual results: {code:none} DV clone fails, checkup job fails
Expected results:
1. Checkup job should use the DataSource source and specify the DV size? 2. DV clone should work with 'snapshot' clone
Additional info:
When creating a DV from a DataSource, the webhook complains that we need to specify the storage size:
$ oc create -f dv-hpp-cloned-from-datasource.yaml Error from server: error when creating "dv-hpp-cloned-from-datasource.yaml": admission webhook "datavolume-validate.cdi.kubevirt.io" denied the request: Storage size is missing
When we specify the size - DV clones successfully with both of these yamls:
$ oc get dv -A NAMESPACE NAME PHASE PROGRESS RESTARTS AGE default dv-hpp-cloned-from-datasource Succeeded 100.0% 34m default dv-hpp-cloned-from-snapshot CloneInProgress N/A 64m default dv-hpp-cloned-from-snapshot-with-size Succeeded 100.0% 3m52s
$ cat dv-hpp-cloned-from-snapshot-size.yaml apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: annotations: cdi.kubevirt.io/storage.bind.immediate.requested: "true" name: dv-hpp-cloned-from-snapshot-with-size spec: source: snapshot: name: centos7-02aa45fbcbad namespace: openshift-virtualization-os-images storage: resources: requests: storage: 30Gi storageClassName: hostpath-csi-basic $ cat dv-hpp-cloned-from-datasource.yaml apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: annotations: cdi.kubevirt.io/storage.bind.immediate.requested: "true" name: dv-hpp-cloned-from-datasource spec: sourceRef: kind: DataSource name: centos7 namespace: openshift-virtualization-os-images storage: resources: requests: storage: 30Gi storageClassName: hostpath-csi-basic