{
  "description": "LVMVolume represents a LVM based volume",
  "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",
        "null"
      ]
    },
    "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",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "VolumeInfo defines LVM info",
      "properties": {
        "capacity": {
          "description": "Capacity of the volume",
          "minLength": 1,
          "type": "string"
        },
        "ownerNodeID": {
          "description": "OwnerNodeID is the Node ID where the volume group is present which is where\nthe volume has been provisioned.\nOwnerNodeID can not be edited after the volume has been provisioned.",
          "minLength": 1,
          "type": "string"
        },
        "qos": {
          "additionalProperties": false,
          "description": "QoS contains VAC realization based on cgroup v2 io controller.\nNil means \"no explicit QoS settings applied\".",
          "properties": {
            "readBPS": {
              "type": "string"
            },
            "readIOPS": {
              "type": "string"
            },
            "writeBPS": {
              "type": "string"
            },
            "writeIOPS": {
              "type": "string"
            }
          },
          "required": [
            "readBPS",
            "readIOPS",
            "writeBPS",
            "writeIOPS"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "shared": {
          "description": "Shared specifies whether the volume can be shared among multiple pods.\nIf it is not set to \"yes\", then the LVM LocalPV Driver will not allow\nthe volumes to be mounted by more than one pods.",
          "enum": [
            "yes",
            "no"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "description": "Source defines the data source from which the volume should be created.\nIt can reference either a snapshot or an existing volume.\nIf not specified, a standard LVM volume will be created.\nIf specified, the new volume will be created using the defined data source.",
          "type": [
            "string",
            "null"
          ]
        },
        "thinProvision": {
          "description": "ThinProvision specifies whether logical volumes can be thinly provisioned.\nIf it is set to \"yes\", then the LVM LocalPV Driver will create\nthinProvision i.e. logical volumes that are larger than the available extents.",
          "enum": [
            "yes",
            "no"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "vgPattern": {
          "description": "VgPattern specifies the regex to choose volume groups where volume\nneeds to be created.",
          "type": "string"
        },
        "volGroup": {
          "description": "VolGroup specifies the name of the volume group where the volume has been created.",
          "type": "string"
        }
      },
      "required": [
        "capacity",
        "ownerNodeID",
        "vgPattern",
        "volGroup"
      ],
      "type": "object"
    },
    "status": {
      "additionalProperties": false,
      "description": "VolStatus string that specifies the current state of the volume provisioning request.",
      "properties": {
        "error": {
          "additionalProperties": false,
          "description": "Error denotes the error occurred during provisioning/expanding a volume.\nError field should only be set when State becomes Failed.",
          "properties": {
            "code": {
              "description": "VolumeErrorCode represents the error code to represent\nspecific class of errors.",
              "type": [
                "string",
                "null"
              ]
            },
            "message": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "state": {
          "description": "State specifies the current state of the volume provisioning request.\nThe state \"Pending\" means that the volume creation request has not\nprocessed yet. The state \"Ready\" means that the volume has been created\nand it is ready for the use. \"Failed\" means that volume provisioning\nhas been failed and will not be retried by node agent controller.",
          "enum": [
            "Pending",
            "Ready",
            "Failed"
          ],
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}