---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
    operator.cdi.kubevirt.io/lastAppliedConfiguration: '{"kind":"CustomResourceDefinition","apiVersion":"apiextensions.k8s.io/v1","metadata":{"name":"storageprofiles.cdi.kubevirt.io","creationTimestamp":null,"annotations":{"controller-gen.kubebuilder.io/version":"v0.14.0"}},"spec":{"group":"cdi.kubevirt.io","names":{"plural":"storageprofiles","singular":"storageprofile","kind":"StorageProfile","listKind":"StorageProfileList"},"scope":"Cluster","versions":[{"name":"v1beta1","served":true,"storage":true,"schema":{"openAPIV3Schema":{"description":"StorageProfile
      provides a CDI specific recommendation for storage parameters","type":"object","required":["spec"],"properties":{"apiVersion":{"description":"APIVersion
      defines the versioned schema of this representation of an object.\nServers should
      convert recognized schemas to the latest internal value, and\nmay reject unrecognized
      values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources","type":"string"},"kind":{"description":"Kind
      is a string value representing the REST resource this object represents.\nServers
      may infer this from the endpoint the client submits requests to.\nCannot be
      updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds","type":"string"},"metadata":{"type":"object"},"spec":{"description":"StorageProfileSpec
      defines specification for StorageProfile","type":"object","properties":{"claimPropertySets":{"description":"ClaimPropertySets
      is a provided set of properties applicable to PVC","type":"array","maxItems":8,"items":{"description":"ClaimPropertySet
      is a set of properties applicable to PVC","type":"object","required":["accessModes","volumeMode"],"properties":{"accessModes":{"description":"AccessModes
      contains the desired access modes the volume should have.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","maxItems":4,"items":{"type":"string"},"x-kubernetes-validations":[{"rule":"self.all(am,
      am in [''ReadWriteOnce'', ''ReadOnlyMany'', ''ReadWriteMany'', ''ReadWriteOncePod''])","message":"Illegal
      AccessMode"}]},"volumeMode":{"description":"VolumeMode defines what type of
      volume is required by the claim.\nValue of Filesystem is implied when not included
      in claim spec.","type":"string","enum":["Block","Filesystem"]}}}},"cloneStrategy":{"description":"CloneStrategy
      defines the preferred method for performing a CDI clone","type":"string"},"dataImportCronSourceFormat":{"description":"DataImportCronSourceFormat
      defines the format of the DataImportCron-created disk image sources","type":"string"},"snapshotClass":{"description":"SnapshotClass
      is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set,
      a VolumeSnapshotClass is chosen according to the provisioner.","type":"string"}}},"status":{"description":"StorageProfileStatus
      provides the most recently observed status of the StorageProfile","type":"object","properties":{"claimPropertySets":{"description":"ClaimPropertySets
      computed from the spec and detected in the system","type":"array","maxItems":8,"items":{"description":"ClaimPropertySet
      is a set of properties applicable to PVC","type":"object","required":["accessModes","volumeMode"],"properties":{"accessModes":{"description":"AccessModes
      contains the desired access modes the volume should have.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1","type":"array","maxItems":4,"items":{"type":"string"},"x-kubernetes-validations":[{"rule":"self.all(am,
      am in [''ReadWriteOnce'', ''ReadOnlyMany'', ''ReadWriteMany'', ''ReadWriteOncePod''])","message":"Illegal
      AccessMode"}]},"volumeMode":{"description":"VolumeMode defines what type of
      volume is required by the claim.\nValue of Filesystem is implied when not included
      in claim spec.","type":"string","enum":["Block","Filesystem"]}}}},"cloneStrategy":{"description":"CloneStrategy
      defines the preferred method for performing a CDI clone","type":"string"},"dataImportCronSourceFormat":{"description":"DataImportCronSourceFormat
      defines the format of the DataImportCron-created disk image sources","type":"string"},"provisioner":{"description":"The
      Storage class provisioner plugin name","type":"string"},"snapshotClass":{"description":"SnapshotClass
      is optional specific VolumeSnapshotClass for CloneStrategySnapshot. If not set,
      a VolumeSnapshotClass is chosen according to the provisioner.","type":"string"},"storageClass":{"description":"The
      StorageClass name for which capabilities are defined","type":"string"}}}}}}}]},"status":{"conditions":null,"acceptedNames":{"plural":"","kind":""},"storedVersions":null}}'
  creationTimestamp: "2025-10-29T11:53:23Z"
  generation: 1
  labels:
    app.kubernetes.io/part-of: hyperconverged-cluster
    app.kubernetes.io/version: 4.19.11
    operator.cdi.kubevirt.io/createVersion: 4.19.11
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-29T11:53:23Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:controller-gen.kubebuilder.io/version: {}
          f:operator.cdi.kubevirt.io/lastAppliedConfiguration: {}
        f:labels:
          .: {}
          f:app.kubernetes.io/part-of: {}
          f:app.kubernetes.io/version: {}
          f:operator.cdi.kubevirt.io/createVersion: {}
        f:ownerReferences:
          .: {}
          k:{"uid":"1d55906a-5bc9-4c45-99c4-eb4c575b061f"}: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: virt-cdi-operator
    operation: Update
    time: "2025-10-29T11:53:23Z"
  name: storageprofiles.cdi.kubevirt.io
  ownerReferences:
  - apiVersion: cdi.kubevirt.io/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: CDI
    name: cdi-kubevirt-hyperconverged
    uid: 1d55906a-5bc9-4c45-99c4-eb4c575b061f
  resourceVersion: "2144619"
  uid: 744a825a-8a87-44fe-8ffe-3562dbb53eae
spec:
  conversion:
    strategy: None
  group: cdi.kubevirt.io
  names:
    kind: StorageProfile
    listKind: StorageProfileList
    plural: storageprofiles
    singular: storageprofile
  scope: Cluster
  versions:
  - name: v1beta1
    schema:
      openAPIV3Schema:
        description: StorageProfile provides a CDI specific recommendation for storage
          parameters
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: StorageProfileSpec defines specification for StorageProfile
            properties:
              claimPropertySets:
                description: ClaimPropertySets is a provided set of properties applicable
                  to PVC
                items:
                  description: ClaimPropertySet is a set of properties applicable
                    to PVC
                  properties:
                    accessModes:
                      description: |-
                        AccessModes contains the desired access modes the volume should have.
                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                      items:
                        type: string
                      maxItems: 4
                      type: array
                      x-kubernetes-validations:
                      - message: Illegal AccessMode
                        rule: self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany',
                          'ReadWriteMany', 'ReadWriteOncePod'])
                    volumeMode:
                      description: |-
                        VolumeMode defines what type of volume is required by the claim.
                        Value of Filesystem is implied when not included in claim spec.
                      enum:
                      - Block
                      - Filesystem
                      type: string
                  required:
                  - accessModes
                  - volumeMode
                  type: object
                maxItems: 8
                type: array
              cloneStrategy:
                description: CloneStrategy defines the preferred method for performing
                  a CDI clone
                type: string
              dataImportCronSourceFormat:
                description: DataImportCronSourceFormat defines the format of the
                  DataImportCron-created disk image sources
                type: string
              snapshotClass:
                description: SnapshotClass is optional specific VolumeSnapshotClass
                  for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is
                  chosen according to the provisioner.
                type: string
            type: object
          status:
            description: StorageProfileStatus provides the most recently observed
              status of the StorageProfile
            properties:
              claimPropertySets:
                description: ClaimPropertySets computed from the spec and detected
                  in the system
                items:
                  description: ClaimPropertySet is a set of properties applicable
                    to PVC
                  properties:
                    accessModes:
                      description: |-
                        AccessModes contains the desired access modes the volume should have.
                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                      items:
                        type: string
                      maxItems: 4
                      type: array
                      x-kubernetes-validations:
                      - message: Illegal AccessMode
                        rule: self.all(am, am in ['ReadWriteOnce', 'ReadOnlyMany',
                          'ReadWriteMany', 'ReadWriteOncePod'])
                    volumeMode:
                      description: |-
                        VolumeMode defines what type of volume is required by the claim.
                        Value of Filesystem is implied when not included in claim spec.
                      enum:
                      - Block
                      - Filesystem
                      type: string
                  required:
                  - accessModes
                  - volumeMode
                  type: object
                maxItems: 8
                type: array
              cloneStrategy:
                description: CloneStrategy defines the preferred method for performing
                  a CDI clone
                type: string
              dataImportCronSourceFormat:
                description: DataImportCronSourceFormat defines the format of the
                  DataImportCron-created disk image sources
                type: string
              provisioner:
                description: The Storage class provisioner plugin name
                type: string
              snapshotClass:
                description: SnapshotClass is optional specific VolumeSnapshotClass
                  for CloneStrategySnapshot. If not set, a VolumeSnapshotClass is
                  chosen according to the provisioner.
                type: string
              storageClass:
                description: The StorageClass name for which capabilities are defined
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
status:
  acceptedNames:
    kind: StorageProfile
    listKind: StorageProfileList
    plural: storageprofiles
    singular: storageprofile
  conditions:
  - lastTransitionTime: "2025-10-29T11:53:23Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-29T11:53:23Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1beta1
