# ---------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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: integrationkits.camel.apache.org
  labels:
    app: "camel-k"
spec:
  group: camel.apache.org
  names:
    kind: IntegrationKit
    listKind: IntegrationKitList
    plural: integrationkits
    shortNames:
      - ik
    singular: integrationkit
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: The integration kit phase
          jsonPath: .status.phase
          name: Phase
          type: string
        - description: The integration kit type
          jsonPath: .metadata.labels.camel\.apache\.org\/kit\.type
          name: Type
          type: string
        - description: The integration kit image
          jsonPath: .status.image
          name: Image
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: IntegrationKit is the Schema for the integrationkits 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/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: IntegrationKitSpec defines the desired state of IntegrationKit
              properties:
                configuration:
                  items:
                    description: ConfigurationSpec --
                    properties:
                      type:
                        type: string
                      value:
                        type: string
                    required:
                      - type
                      - value
                    type: object
                  type: array
                dependencies:
                  items:
                    type: string
                  type: array
                image:
                  type: string
                profile:
                  description: TraitProfile represents lists of traits that are enabled
                    for the specific installation/integration
                  type: string
                repositories:
                  items:
                    type: string
                  type: array
                traits:
                  additionalProperties:
                    description: A TraitSpec contains the configuration of a trait
                    properties:
                      configuration:
                        additionalProperties:
                          type: string
                        type: object
                    type: object
                  type: object
              type: object
            status:
              description: IntegrationKitStatus defines the observed state of IntegrationKit
              properties:
                artifacts:
                  items:
                    description: Artifact --
                    properties:
                      checksum:
                        type: string
                      id:
                        type: string
                      location:
                        type: string
                      target:
                        type: string
                    required:
                      - id
                    type: object
                  type: array
                baseImage:
                  type: string
                conditions:
                  items:
                    description: IntegrationKitCondition describes the state of a resource
                      at a certain point.
                    properties:
                      lastTransitionTime:
                        description: Last time the condition transitioned from one status
                          to another.
                        format: date-time
                        type: string
                      lastUpdateTime:
                        description: The last time this condition was updated.
                        format: date-time
                        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
                      status:
                        description: Status of the condition, one of True, False, Unknown.
                        type: string
                      type:
                        description: Type of integration condition.
                        type: string
                    required:
                      - status
                      - type
                    type: object
                  type: array
                digest:
                  type: string
                failure:
                  description: Failure --
                  properties:
                    reason:
                      type: string
                    recovery:
                      description: FailureRecovery --
                      properties:
                        attempt:
                          type: integer
                        attemptMax:
                          type: integer
                        attemptTime:
                          format: date-time
                          type: string
                      required:
                        - attempt
                        - attemptMax
                        - attemptTime
                      type: object
                    time:
                      format: date-time
                      type: string
                  required:
                    - reason
                    - recovery
                    - time
                  type: object
                image:
                  type: string
                phase:
                  description: IntegrationKitPhase --
                  type: string
                platform:
                  type: string
                runtimeProvider:
                  description: RuntimeProvider --
                  type: string
                runtimeVersion:
                  type: string
                version:
                  type: string
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
    - name: v1alpha1
      served: true
      storage: false
