Uploaded image for project: 'OpenShift Virtualization'
  1. OpenShift Virtualization
  2. CNV-41235

Blank disk with populators on WaitForFirstConsumer storage is broken

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Major Major
    • CNV v4.14.7
    • CNV v4.14.4
    • CNV Storage
    • None
    • 0.42
    • False
    • Hide

      None

      Show
      None
    • False
    • None
    • ---
    • ---
    • Medium
    • No

      Description of problem:

      Running on AWS using the gp3-csi provisioner trying to create a blank disk using populators doesn't work. The pvc remains in pending forever. Example dataVolumeTemplate
      
      dataVolumeTemplates:
          - apiVersion: cdi.kubevirt.io/v1beta1
            kind: DataVolume
            metadata:
              creationTimestamp: null
              name: win2k22-abstract-asp
            spec:
              source:
                blank: {}
              storage:
                resources:
                  requests:
                    storage: 60Gi
      

      Version-Release number of selected component (if applicable):

      4.14.4
      

      How reproducible:

      Create a VM for instance from a windows template that creates a blank disk. The VM will remain in provisioning forever and won't start.
      

      Steps to Reproduce:

      1. Create a VM from a windows template in an AWS environment with the gp3-csi provisioner
      2. Add a blank disk to the VM you are creating.
      3. Finish creating the VM, and wait for it to provision.
      

      Actual results:

      Provisioning never happens because the VM is never scheduled to run. The cdi controller logs contain this error:
      
      "level":"error","ts":"2024-04-24T14:45:03Z","msg":"Reconciler error","controller":"import-populator","object":{"name":"win2k22-abstract-asp","namespace":"default"},"namespace":"default","name":"win2k22-abstract-asp","reconcileID":"8799fcf1-f118-4c61-a04c-3108e78fe64d","error":"PersistentVolume \"\" not found","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:329\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:274\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/remote-source/app/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:235"}
      
      This causes the pvc prime to never get created for the blank disk, and thus provisioning never starts, and thus the VM is never scheduled.
      

      Expected results:

      Provisioning to start due to the VM attempting to start.
      

      Additional info:

      Adding an annotation to the blank disk saying to bypass populators fixes the issue and the VM was successfully started.
      
      cdi.kubevirt.io/storage.usePopulator: 'false'
      

              skagan@redhat.com Shelly Kagan
              rhn-support-awels Alexander Wels
              Dalia Frank Dalia Frank
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: