apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: configs.samples.operator.openshift.io
  annotations:
    description: Extension for configuring openshif samples operator.
    displayName: ConfigsSamples
    include.release.openshift.io/self-managed-high-availability: "true"
spec:
  scope: Cluster
  subresources:
    status: {}
  preserveUnknownFields: false
  group: samples.operator.openshift.io
  versions:
  - name: v1
    served: true
    storage: true
  names:
    plural: configs
    singular: config
    kind: Config
    listKind: ConfigList
  "validation":
    "openAPIV3Schema":
      description: Config contains the configuration and detailed condition status
        for the Samples Operator.
      type: object
      required:
      - metadata
      - 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: ConfigSpec contains the desired configuration and state for
            the Samples Operator, controlling various behavior around the imagestreams
            and templates it creates/updates in the openshift namespace.
          type: object
          properties:
            architectures:
              description: architectures determine which hardware architecture(s)
                to install, where x86_64, ppc64le, and s390x are the only supported
                choices currently.
              type: array
              items:
                type: string
            managementState:
              description: managementState is top level on/off type of switch for
                all operators. When "Managed", this operator processes config and
                manipulates the samples accordingly. When "Unmanaged", this operator
                ignores any updates to the resources it watches. When "Removed", it
                reacts that same wasy as it does if the Config object is deleted,
                meaning any ImageStreams or Templates it manages (i.e. it honors the
                skipped lists) and the registry secret are deleted, along with the
                ConfigMap in the operator's namespace that represents the last config
                used to manipulate the samples,
              type: string
              pattern: ^(Managed|Unmanaged|Force|Removed)$
            samplesRegistry:
              description: samplesRegistry allows for the specification of which registry
                is accessed by the ImageStreams for their image content.  Defaults
                on the content in https://github.com/openshift/library that are pulled
                into this github repository, but based on our pulling only ocp content
                it typically defaults to registry.redhat.io.
              type: string
            skippedImagestreams:
              description: skippedImagestreams specifies names of image streams that
                should NOT be created/updated.  Admins can use this to allow them
                to delete content they don’t want.  They will still have to manually
                delete the content but the operator will not recreate(or update) anything
                listed here.
              type: array
              items:
                type: string
            skippedTemplates:
              description: skippedTemplates specifies names of templates that should
                NOT be created/updated.  Admins can use this to allow them to delete
                content they don’t want.  They will still have to manually delete
                the content but the operator will not recreate(or update) anything
                listed here.
              type: array
              items:
                type: string
        status:
          description: ConfigStatus contains the actual configuration in effect, as
            well as various details that describe the state of the Samples Operator.
          type: object
          properties:
            architectures:
              description: architectures determine which hardware architecture(s)
                to install, where x86_64 and ppc64le are the supported choices.
              type: array
              items:
                type: string
            conditions:
              description: conditions represents the available maintenance status
                of the sample imagestreams and templates.
              type: array
              items:
                description: ConfigCondition captures various conditions of the Config
                  as entries are processed.
                type: object
                required:
                - status
                - type
                properties:
                  lastTransitionTime:
                    description: lastTransitionTime is the last time the condition
                      transitioned from one status to another.
                    type: string
                    format: date-time
                  lastUpdateTime:
                    description: lastUpdateTime is the last time this condition was
                      updated.
                    type: string
                    format: date-time
                  message:
                    description: message is a human readable message indicating details
                      about the transition.
                    type: string
                  reason:
                    description: reason is what caused the condition's last transition.
                    type: string
                  status:
                    description: status of the condition, one of True, False, Unknown.
                    type: string
                  type:
                    description: type of condition.
                    type: string
            managementState:
              description: managementState reflects the current operational status
                of the on/off switch for the operator.  This operator compares the
                ManagementState as part of determining that we are turning the operator
                back on (i.e. "Managed") when it was previously "Unmanaged".
              type: string
              pattern: ^(Managed|Unmanaged|Force|Removed)$
            samplesRegistry:
              description: samplesRegistry allows for the specification of which registry
                is accessed by the ImageStreams for their image content.  Defaults
                on the content in https://github.com/openshift/library that are pulled
                into this github repository, but based on our pulling only ocp content
                it typically defaults to registry.redhat.io.
              type: string
            skippedImagestreams:
              description: skippedImagestreams specifies names of image streams that
                should NOT be created/updated.  Admins can use this to allow them
                to delete content they don’t want.  They will still have to manually
                delete the content but the operator will not recreate(or update) anything
                listed here.
              type: array
              items:
                type: string
            skippedTemplates:
              description: skippedTemplates specifies names of templates that should
                NOT be created/updated.  Admins can use this to allow them to delete
                content they don’t want.  They will still have to manually delete
                the content but the operator will not recreate(or update) anything
                listed here.
              type: array
              items:
                type: string
            version:
              description: version is the value of the operator's payload based version
                indicator when it was last successfully processed
              type: string
