apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/562
    include.release.openshift.io/ibm-cloud-managed: "true"
    include.release.openshift.io/self-managed-high-availability: "true"
    include.release.openshift.io/single-node-developer: "true"
  name: csisnapshotcontrollers.operator.openshift.io
spec:
  group: operator.openshift.io
  names:
    kind: CSISnapshotController
    plural: csisnapshotcontrollers
    singular: csisnapshotcontroller
  scope: Cluster
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: "CSISnapshotController provides a means to configure an operator to manage the CSI snapshots. `cluster` is the canonical name. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
          type: object
          required:
            - spec
          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: spec holds user settable values for configuration
              type: object
              properties:
                logLevel:
                  description: "logLevel is an intent based logging for an overall component.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for their operands. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\"."
                  type: string
                  default: Normal
                  enum:
                    - ""
                    - Normal
                    - Debug
                    - Trace
                    - TraceAll
                managementState:
                  description: managementState indicates whether and how the operator should manage the component
                  type: string
                  pattern: ^(Managed|Unmanaged|Force|Removed)$
                observedConfig:
                  description: observedConfig holds a sparse config that controller has observed from the cluster state.  It exists in spec because it is an input to the level for the operator
                  type: object
                  nullable: true
                  x-kubernetes-preserve-unknown-fields: true
                operatorLogLevel:
                  description: "operatorLogLevel is an intent based logging for the operator itself.  It does not give fine grained control, but it is a simple way to manage coarse grained logging choices that operators have to interpret for themselves. \n Valid values are: \"Normal\", \"Debug\", \"Trace\", \"TraceAll\". Defaults to \"Normal\"."
                  type: string
                  default: Normal
                  enum:
                    - ""
                    - Normal
                    - Debug
                    - Trace
                    - TraceAll
                unsupportedConfigOverrides:
                  description: 'unsupportedConfigOverrides holds a sparse config that will override any previously set options.  It only needs to be the fields to override it will end up overlaying in the following order: 1. hardcoded defaults 2. observedConfig 3. unsupportedConfigOverrides'
                  type: object
                  nullable: true
                  x-kubernetes-preserve-unknown-fields: true
            status:
              description: status holds observed values from the cluster. They may not be overridden.
              type: object
              properties:
                conditions:
                  description: conditions is a list of conditions and their status
                  type: array
                  items:
                    description: OperatorCondition is just the standard condition fields.
                    type: object
                    properties:
                      lastTransitionTime:
                        type: string
                        format: date-time
                      message:
                        type: string
                      reason:
                        type: string
                      status:
                        type: string
                      type:
                        type: string
                generations:
                  description: generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction.
                  type: array
                  items:
                    description: GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made.
                    type: object
                    properties:
                      group:
                        description: group is the group of the thing you're tracking
                        type: string
                      hash:
                        description: hash is an optional field set for resources without generation that are content sensitive like secrets and configmaps
                        type: string
                      lastGeneration:
                        description: lastGeneration is the last generation of the workload controller involved
                        type: integer
                        format: int64
                      name:
                        description: name is the name of the thing you're tracking
                        type: string
                      namespace:
                        description: namespace is where the thing you're tracking is
                        type: string
                      resource:
                        description: resource is the resource type of the thing you're tracking
                        type: string
                observedGeneration:
                  description: observedGeneration is the last generation change you've dealt with
                  type: integer
                  format: int64
                readyReplicas:
                  description: readyReplicas indicates how many replicas are ready and at the desired state
                  type: integer
                  format: int32
                version:
                  description: version is the level this availability applies to
                  type: string
      served: true
      storage: true
      subresources:
        status: {}
