{{- if .Values.lvmLocalPv.enabled -}}
##############################################
###########                       ############
###########     LVMNode CRD       ############
###########                       ############
##############################################

# LVMNode CRD is autogenerated via `make manifests` command.
# Do the modification in the code and run the `make manifests` command
# to generate the CRD definition

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.13.0
    {{- include "crds.extraAnnotations" .Values.lvmLocalPv | nindent 4 }}
  creationTimestamp: null
  name: lvmnodes.local.openebs.io
spec:
  group: local.openebs.io
  names:
    kind: LVMNode
    listKind: LVMNodeList
    plural: lvmnodes
    shortNames:
    - lvmnode
    singular: lvmnode
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: LVMNode records information about all lvm volume groups available
          in a node. In general, the openebs node-agent creates the LVMNode object
          & periodically synchronizing the volume groups available in the node. LVMNode
          has an owner reference pointing to the corresponding node object.
        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
          volumeGroups:
            items:
              description: VolumeGroup specifies attributes of a given vg exists on
                node.
              properties:
                allocationPolicy:
                  description: 'AllocationPolicy indicates the volume group allocation
                    policy. AllocationPolicy has the following mapping between int
                    and string for its value: [-1: "", 0: "normal", 1: "contiguous",
                    2: "cling", 3: "anywhere", 4: "inherited"]'
                  type: integer
                free:
                  anyOf:
                  - type: integer
                  - type: string
                  description: Free specifies the available capacity of volume group.
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
                lvCount:
                  description: LVCount denotes total number of logical volumes in
                    volume group.
                  format: int32
                  minimum: 0
                  type: integer
                maxLv:
                  description: MaxLV denotes maximum number of logical volumes allowed
                    in volume group or 0 if unlimited.
                  format: int32
                  type: integer
                maxPv:
                  description: MaxPV denotes maximum number of physical volumes allowed
                    in volume group or 0 if unlimited.
                  format: int32
                  type: integer
                metadataCount:
                  description: MetadataCount denotes number of metadata areas on the
                    volume group.
                  format: int32
                  type: integer
                metadataFree:
                  anyOf:
                  - type: integer
                  - type: string
                  description: MetadataFree specifies the available metadata area
                    space for the volume group
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
                metadataSize:
                  anyOf:
                  - type: integer
                  - type: string
                  description: MetadataSize specifies size of smallest metadata area
                    for the volume group
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
                metadataUsedCount:
                  description: MetadataUsedCount denotes number of used metadata areas
                    in volume group
                  format: int32
                  type: integer
                missingPvCount:
                  description: MissingPVCount denotes number of physical volumes in
                    volume group which are missing.
                  format: int32
                  type: integer
                name:
                  description: Name of the lvm volume group.
                  minLength: 1
                  type: string
                permissions:
                  description: 'Permission indicates the volume group permission which
                    can be writable or read-only. Permission has the following mapping
                    between int and string for its value: [-1: "", 0: "writeable",
                    1: "read-only"]'
                  type: integer
                pvCount:
                  description: PVCount denotes total number of physical volumes constituting
                    the volume group.
                  format: int32
                  minimum: 0
                  type: integer
                size:
                  anyOf:
                  - type: integer
                  - type: string
                  description: Size specifies the total size of volume group.
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
                snapCount:
                  description: SnapCount denotes number of snapshots in volume group.
                  format: int32
                  type: integer
                thinPools:
                  description: ThinPools hosted by the volume group.
                  items:
                    description: ThinPool LV present on VG.
                    properties:
                      free:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Free capacity of thinpool. In bytes, if no unit
                          specified.
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      name:
                        description: Name of the thinpool lv.
                        type: string
                      size:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Size of the thinpool lv. In bytes, if no unit
                          specified.
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                    required:
                    - free
                    - name
                    - size
                    type: object
                  type: array
                uuid:
                  description: UUID denotes a unique identity of a lvm volume group.
                  minLength: 1
                  type: string
              required:
              - allocationPolicy
              - free
              - lvCount
              - maxLv
              - maxPv
              - metadataCount
              - metadataFree
              - metadataSize
              - metadataUsedCount
              - missingPvCount
              - name
              - permissions
              - pvCount
              - size
              - snapCount
              - uuid
              type: object
            type: array
        required:
        - volumeGroups
        type: object
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
{{- end -}}