# Copyright 2020 The Tekton Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: tektonaddons.operator.tekton.dev
  labels:
    version: "devel"
    operator.tekton.dev/release: "devel"
spec:
  group: operator.tekton.dev
  names:
    kind: TektonAddon
    listKind: TektonAddonList
    plural: tektonaddons
    singular: tektonaddon
  preserveUnknownFields: false
  scope: Cluster
  versions:
  - name: v1alpha1
    served: true
    storage: true
    subresources:
      status: {}
    additionalPrinterColumns:
    - jsonPath: .status.version
      name: Version
      type: string
    - jsonPath: .status.conditions[?(@.type=="Ready")].status
      name: Ready
      type: string
    - jsonPath: ".status.conditions[?(@.type==\"Ready\")].reason"
      name: Reason
      type: string
    schema:
      openAPIV3Schema:
        type: object
        description: Schema for the tektonaddons API
        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/  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/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: Spec defines the desired state of TektonAddon
            properties:
              targetNamespace:
                description: namespace where tekton addons will be installed
                type: string
              params:
                type: array
                description: list of params to customize installation of components
                items:
                  type: object
                  properties:
                    name:
                      description: name of param
                      type: string
                    value:
                      description: value of param
                      type: string
            type: object
          status:
            description: Status defines the observed state of TektonAddon
            properties:
              observedGeneration:
                description: The generation last processed by the controller
                type: integer
              conditions:
                description: The latest available observations of a resource's current
                  state.
                items:
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the last time the condition
                        transitioned from one status to another. We use VolatileTime
                        in place of metav1.Time to exclude this from creating equality.Semantic
                        differences (all other things held constant).
                      type: string
                    message:
                      description: A human readable message indicating details about
                        the transition.
                      type: string
                    reason:
                      description: The reason for the condition's last transition.
                      type: string
                    severity:
                      description: Severity with which to treat failures of this type
                        of condition. When this is not specified, it defaults to Error.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of condition.
                      type: string
                  required:
                    - type
                    - status
                  type: object
                type: array
              version:
                description: The version of the installed release
                type: string
              manifests:
                description: The list of addons manifests, which have been installed by the operator
                type: array
                items:
                  type: string
            type: object
