
# Copyright 2019 The Knative 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: redisstreamsources.sources.knative.dev
  labels:
    eventing.knative.dev/release: devel
    knative.dev/crd-install: "true"
    duck.knative.dev/addressable: "true"
spec:
  group: sources.knative.dev
  versions:
    - name: v1alpha1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          type: object
          properties:
              spec:
                  type: object
                  properties:
                      address:
                          description: Address is the Redis TCP address
                          type: string
                      ceOverrides:
                          description: CloudEventOverrides defines overrides to control the
                              output format and modifications of the event sent to the sink.
                          type: object
                          properties:
                              extensions:
                                  description: Extensions specify what attribute are added or
                                      overridden on the outbound event. Each `Extensions` key-value
                                      pair are set on the event as an attribute extension independently.
                                  type: object
                                  x-kubernetes-preserve-unknown-fields: true
                      dialOptions:
                          description: Options are the connection options
                          type: object
                          properties:
                              caCert:
                                  description: CACert is the Kubernetes secret containing the
                                      server CA cert.
                                  type: object
                                  required:
                                    - secretKeyRef
                                  properties:
                                      secretKeyRef:
                                          description: The Secret key to select from.
                                          type: object
                                          properties:
                                              key:
                                                  description: The key of the secret to select
                                                      from.  Must be a valid secret key.
                                                  type: string
                                              name:
                                                  description: 'Name of the referent. More info:
                                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                                  type: string
                                              optional:
                                                  description: Specify whether the Secret or
                                                      its key must be defined
                                                  type: boolean
                              cert:
                                  description: Cert is the Kubernetes secret containing the
                                      client certificate.
                                  type: object
                                  required:
                                    - secretKeyRef
                                  properties:
                                      secretKeyRef:
                                          description: The Secret key to select from.
                                          type: object
                                          properties:
                                              key:
                                                  description: The key of the secret to select
                                                      from.  Must be a valid secret key.
                                                  type: string
                                              name:
                                                  description: 'Name of the referent. More info:
                                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                                  type: string
                                              optional:
                                                  description: Specify whether the Secret or
                                                      its key must be defined
                                                  type: boolean
                              key:
                                  description: Key is the Kubernetes secret containing the client
                                      key.
                                  type: object
                                  required:
                                    - secretKeyRef
                                  properties:
                                      secretKeyRef:
                                          description: The Secret key to select from.
                                          type: object
                                          properties:
                                              key:
                                                  description: The key of the secret to select
                                                      from.  Must be a valid secret key.
                                                  type: string
                                              name:
                                                  description: 'Name of the referent. More info:
                                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                                  type: string
                                              optional:
                                                  description: Specify whether the Secret or
                                                      its key must be defined
                                                  type: boolean
                              password:
                                  description: Password to use for connecting to Redis
                                  type: object
                                  properties:
                                      apiVersion:
                                          description: API version of the referent.
                                          type: string
                                      fieldPath:
                                          description: 'If referring to a piece of an object
                                              instead of an entire object, this string should
                                              contain a valid JSON/Go field access statement,
                                              such as desiredState.manifest.containers[2]. For
                                              example, if the object reference is to a container
                                              within a pod, this would take on a value like:
                                              "spec.containers{name}" (where "name" refers to
                                              the name of the container that triggered the event)
                                              or if no container name is specified "spec.containers[2]"
                                              (container with index 2 in this pod). This syntax
                                              is chosen only to have some well-defined way of
                                              referencing a part of an object.'
                                          type: string
                                      kind:
                                          description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                          type: string
                                      name:
                                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                          type: string
                                      namespace:
                                          description: 'Namespace of the referent. More info:
                                              https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                          type: string
                                      resourceVersion:
                                          description: 'Specific resourceVersion to which this
                                              reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                          type: string
                                      uid:
                                          description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                          type: string
                              skipVerify:
                                  description: SkipVerify indicates whether to skip TLS verification
                                      or not
                                  type: boolean
                              useTLS:
                                  description: UseTLS indicates whether to use TLS or not
                                  type: boolean
                      group:
                          description: Group is the name of the consumer group associated to
                              this source. When left empty, a group is automatically created
                              for this source and deleted when this source is deleted.
                          type: string
                      sink:
                          description: Sink is a reference to an object that will resolve to
                              a uri to use as the sink.
                          type: object
                          properties:
                              ref:
                                  description: Ref points to an Addressable.
                                  type: object
                                  properties:
                                      apiVersion:
                                          description: API version of the referent.
                                          type: string
                                      kind:
                                          description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                          type: string
                                      name:
                                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                          type: string
                                      namespace:
                                          description: 'Namespace of the referent. More info:
                                              https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                                              This is optional field, it gets defaulted to the
                                              object holding it if left out.'
                                          type: string
                              uri:
                                  description: URI can be an absolute URL(non-empty scheme and
                                      non-empty host) pointing to the target or a relative URI.
                                      Relative URIs will be resolved using the base URI retrieved
                                      from Ref.
                                  type: string
                      stream:
                          description: Stream is the name of the stream.
                          type: string
              status:
                  type: object
                  properties:
                      Group:
                          description: Group is the actual name of the consumer group associated
                              to this source
                          type: string
                      annotations:
                          description: Annotations is additional Status fields for the Resource
                              to save some additional State as well as convey more information
                              to the user. This is roughly akin to Annotations on any k8s resource,
                              just the reconciler conveying richer information outwards.
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                      ceAttributes:
                          description: CloudEventAttributes are the specific attributes that
                              the Source uses as part of its CloudEvents.
                          type: array
                          items:
                              type: object
                              properties:
                                  source:
                                      description: Source is the CloudEvents source attribute.
                                      type: string
                                  type:
                                      description: Type refers to the CloudEvent type attribute.
                                      type: string
                      conditions:
                          description: Conditions the latest available observations of a resource's
                              current state.
                          type: array
                          items:
                              type: object
                              required:
                                - type
                                - status
                              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
                      observedGeneration:
                          description: ObservedGeneration is the 'Generation' of the Service
                              that was last processed by the controller.
                          type: integer
                          format: int64
                      sinkUri:
                          description: SinkURI is the current active sink URI that has been
                              configured for the Source.
                          type: string
      additionalPrinterColumns:
        - name: Sink
          type: string
          jsonPath: .status.sinkUri
        - name: Age
          type: date
          jsonPath: .metadata.creationTimestamp
        - name: Ready
          type: string
          jsonPath: ".status.conditions[?(@.type=='Ready')].status"
        - name: Reason
          type: string
          jsonPath: ".status.conditions[?(@.type=='Ready')].reason"
  names:
    categories:
      - all
      - knative
      - eventing
      - sources
    kind: RedisStreamSource
    plural: redisstreamsources
    singular: redisstreamsource
  scope: Namespaced
