# Copyright 2020 VMware, Inc.
# SPDX-License-Identifier: Apache-2.0

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: provisionedservices.bindings.labs.vmware.com
  labels:
    bindings.labs.vmware.com/release: devel
    bindings.labs.vmware.com/crd-install: "true"
    servicebinding.io/provisioned-service: "true"
spec:
  group: bindings.labs.vmware.com
  names:
    kind: ProvisionedService
    listKind: ProvisionedServiceList
    plural: provisionedservices
    singular: provisionedservice
    categories:
    - all
    - bind
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=="Ready")].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=="Ready")].reason
      name: Reason
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ProvisionedService exposes an existing Secret as a Service for binding
          via a ServiceBinding
        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: ProvisionedServiceSpec defines the desired state of ProvisionedService
            properties:
              binding:
                description: Binding exposes the secret for this service
                properties:
                  name:
                    description: 'Name of the referent secret. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                required:
                - name
                type: object
            required:
            - binding
            type: object
          status:
            description: ProvisionedServiceStatus defines the observed state of ProvisionedService
            properties:
              binding:
                description: Binding exposes the secret for this service
                properties:
                  name:
                    description: 'Name of the referent secret. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                required:
                - name
                type: object
              conditions:
                description: Conditions are the conditions of this ProvisionedService
                items:
                  description: Condition contains details for the current condition of
                    this ProvisionedService
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another
                      format: date-time
                      type: string
                    message:
                      description: Human-readable message indicating details about last
                        transition
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's
                        last transition
                      type: string
                    status:
                      description: Status is the status of the condition Can be True,
                        False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration is the 'Generation' of the ProvisionedService
                  that was last processed by the controller.
                format: int64
                type: integer
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
