# ---------------------------------------------------------------------------
# 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:
  annotations:
    controller-gen.kubebuilder.io/version: v0.4.1
  creationTimestamp: null
  labels:
    app: camel-k
  name: integrationkits.camel.apache.org
spec:
  group: camel.apache.org
  names:
    categories:
    - kamel
    - camel
    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:
                      description: TraitConfiguration --
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  required:
                  - configuration
                  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
                    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: {}
