# ---------------------------------------------------------------------------
# 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/v1beta1
kind: CustomResourceDefinition
metadata:
  labels:
    app: "camel-k"
  annotations:
    controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b
  creationTimestamp: null
  name: integrationkits.camel.apache.org
spec:
  additionalPrinterColumns:
  - JSONPath: .status.phase
    description: The integration kit phase
    name: Phase
    type: string
  - JSONPath: .metadata.labels.camel\.apache\.org\/kit\.type
    description: The integration kit type
    name: Type
    type: string
  - JSONPath: .status.image
    description: The integration kit image
    name: Image
    type: string
  group: camel.apache.org
  names:
    categories:
    - kamel
    - camel
    kind: IntegrationKit
    listKind: IntegrationKitList
    plural: integrationkits
    shortNames:
    - ik
    singular: integrationkit
  scope: Namespaced
  subresources:
    status: {}
  validation:
    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:
                    type: object
                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
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
