apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: configurations.akri.sh
spec:
  group: akri.sh
  versions:
    - name: v0
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                discoveryHandler: # {{DiscoveryHandlerInfo}}
                  type: object
                  properties:
                    name:
                      type: string
                    discoveryDetails:
                      type: string
                    discoveryProperties:
                      nullable: true
                      type: array
                      items: # {{DiscoveryProperty}}
                        type: object
                        required:
                          - name
                        properties:
                          name:
                            type: string
                            pattern: "^[_A-Za-z][_A-Za-z0-9]*$"
                          value:
                            type: string
                            nullable: true
                          valueFrom:
                            type: object
                            properties:
                              secretKeyRef:
                                type: object
                                required:
                                  - name
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                  optional:
                                    type: boolean
                              configMapKeyRef:
                                type: object
                                required:
                                  - name
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                  optional:
                                    type: boolean
                            oneOf:
                              - properties:
                                required: ["secretKeyRef"]
                              - properties:
                                required: ["configMapKeyRef"]
                        oneOf:
                          - properties:
                            required: ["value"]
                          - properties:
                            required: ["valueFrom"]
                capacity:
                  type: integer
                brokerSpec: # {{BrokerSpec}}
                  type: object
                  properties: 
                    brokerJobSpec: # {{JobSpec}}
                      x-kubernetes-preserve-unknown-fields: true
                      type: object
                      nullable: true
                    brokerPodSpec: # {{PodSpec}}
                      x-kubernetes-preserve-unknown-fields: true
                      type: object
                      nullable: true
                instanceServiceSpec: # {{ServiceSpec}}
                  x-kubernetes-preserve-unknown-fields: true
                  type: object
                  nullable: true
                configurationServiceSpec: # {{ServiceSpec}}
                  x-kubernetes-preserve-unknown-fields: true
                  type: object
                  nullable: true
                brokerProperties: # map<string, string>
                  additionalProperties:
                    type: string
                  type: object
      additionalPrinterColumns:
      - name: Capacity
        type: string
        description: The capacity for each Instance discovered
        jsonPath: .spec.capacity
      - name: Age
        type: date
        jsonPath: .metadata.creationTimestamp
  scope: Namespaced
  names:
    plural: configurations
    singular: configuration
    kind: Configuration
    shortNames:
      - akric
