# ---------------------------------------------------------------------------
# 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: integrations.camel.apache.org
spec:
  group: camel.apache.org
  names:
    categories:
    - kamel
    - camel
    kind: Integration
    listKind: IntegrationList
    plural: integrations
    shortNames:
    - it
    singular: integration
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The integration phase
      jsonPath: .status.phase
      name: Phase
      type: string
    - description: The integration kit
      jsonPath: .status.integrationKit.name
      name: Kit
      type: string
    - description: The number of pods
      jsonPath: .status.replicas
      name: Replicas
      type: integer
    name: v1
    schema:
      openAPIV3Schema:
        description: Integration is the Schema for the integrations 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: IntegrationSpec defines the desired state of Integration
            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
              flows:
                items:
                  description: Flow is an unstructured object representing a Camel
                    Flow in YAML/JSON DSL
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              integrationKit:
                description: 'ObjectReference contains enough information to let you
                  inspect or modify the referred object. --- New uses of this type
                  are discouraged because of difficulty describing its usage when
                  embedded in APIs.  1. Ignored fields.  It includes many fields which
                  are not generally honored.  For instance, ResourceVersion and FieldPath
                  are both very rarely valid in actual usage.  2. Invalid usage help.  It
                  is impossible to add specific help for individual usage.  In most
                  embedded usages, there are particular     restrictions like, "must
                  refer only to types A and B" or "UID not honored" or "name must
                  be restricted".     Those cannot be well described when embedded.  3.
                  Inconsistent validation.  Because the usages are different, the
                  validation rules are different by usage, which makes it hard for
                  users to predict what will happen.  4. The fields are both imprecise
                  and overly precise.  Kind is not a precise mapping to a URL. This
                  can produce ambiguity     during interpretation and require a REST
                  mapping.  In most cases, the dependency is on the group,resource
                  tuple     and the version of the actual struct is irrelevant.  5.
                  We cannot easily change it.  Because this type is embedded in many
                  locations, updates to this type     will affect numerous schemas.  Don''t
                  make new APIs embed an underspecified API type they do not control.
                  Instead of using this type, create a locally provided and used type
                  that is well-focused on your reference. For example, ServiceReferences
                  for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                  .'
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              kit:
                description: 'Deprecated: use the IntegrationKit field'
                type: string
              profile:
                description: TraitProfile represents lists of traits that are enabled
                  for the specific installation/integration
                type: string
              replicas:
                format: int32
                type: integer
              repositories:
                items:
                  type: string
                type: array
              resources:
                items:
                  description: ResourceSpec --
                  properties:
                    compression:
                      type: boolean
                    content:
                      type: string
                    contentKey:
                      type: string
                    contentRef:
                      type: string
                    contentType:
                      type: string
                    mountPath:
                      type: string
                    name:
                      type: string
                    rawContent:
                      format: byte
                      type: string
                    type:
                      description: ResourceType --
                      type: string
                  type: object
                type: array
              serviceAccountName:
                type: string
              sources:
                items:
                  description: SourceSpec --
                  properties:
                    compression:
                      type: boolean
                    content:
                      type: string
                    contentKey:
                      type: string
                    contentRef:
                      type: string
                    contentType:
                      type: string
                    interceptors:
                      description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
                        uses to pre/post process sources
                      items:
                        type: string
                      type: array
                    language:
                      description: Language --
                      type: string
                    loader:
                      description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
                        that will interpret this source at runtime
                      type: string
                    name:
                      type: string
                    property-names:
                      description: List of property names defined in the source (e.g.
                        if type is "template")
                      items:
                        type: string
                      type: array
                    rawContent:
                      format: byte
                      type: string
                    type:
                      description: Type defines the kind of source described by this
                        object
                      type: string
                  type: object
                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: IntegrationStatus defines the observed state of Integration
            properties:
              capabilities:
                items:
                  type: string
                type: array
              conditions:
                items:
                  description: IntegrationCondition describes the state of a resource
                    at a certain point.
                  properties:
                    firstTruthyTime:
                      description: First time the condition status transitioned to
                        True.
                      format: date-time
                      type: string
                    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
              configuration:
                items:
                  description: ConfigurationSpec --
                  properties:
                    type:
                      type: string
                    value:
                      type: string
                  required:
                  - type
                  - value
                  type: object
                type: array
              dependencies:
                items:
                  type: string
                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
              generatedResources:
                items:
                  description: ResourceSpec --
                  properties:
                    compression:
                      type: boolean
                    content:
                      type: string
                    contentKey:
                      type: string
                    contentRef:
                      type: string
                    contentType:
                      type: string
                    mountPath:
                      type: string
                    name:
                      type: string
                    rawContent:
                      format: byte
                      type: string
                    type:
                      description: ResourceType --
                      type: string
                  type: object
                type: array
              generatedSources:
                items:
                  description: SourceSpec --
                  properties:
                    compression:
                      type: boolean
                    content:
                      type: string
                    contentKey:
                      type: string
                    contentRef:
                      type: string
                    contentType:
                      type: string
                    interceptors:
                      description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
                        uses to pre/post process sources
                      items:
                        type: string
                      type: array
                    language:
                      description: Language --
                      type: string
                    loader:
                      description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
                        that will interpret this source at runtime
                      type: string
                    name:
                      type: string
                    property-names:
                      description: List of property names defined in the source (e.g.
                        if type is "template")
                      items:
                        type: string
                      type: array
                    rawContent:
                      format: byte
                      type: string
                    type:
                      description: Type defines the kind of source described by this
                        object
                      type: string
                  type: object
                type: array
              image:
                type: string
              integrationKit:
                description: 'ObjectReference contains enough information to let you
                  inspect or modify the referred object. --- New uses of this type
                  are discouraged because of difficulty describing its usage when
                  embedded in APIs.  1. Ignored fields.  It includes many fields which
                  are not generally honored.  For instance, ResourceVersion and FieldPath
                  are both very rarely valid in actual usage.  2. Invalid usage help.  It
                  is impossible to add specific help for individual usage.  In most
                  embedded usages, there are particular     restrictions like, "must
                  refer only to types A and B" or "UID not honored" or "name must
                  be restricted".     Those cannot be well described when embedded.  3.
                  Inconsistent validation.  Because the usages are different, the
                  validation rules are different by usage, which makes it hard for
                  users to predict what will happen.  4. The fields are both imprecise
                  and overly precise.  Kind is not a precise mapping to a URL. This
                  can produce ambiguity     during interpretation and require a REST
                  mapping.  In most cases, the dependency is on the group,resource
                  tuple     and the version of the actual struct is irrelevant.  5.
                  We cannot easily change it.  Because this type is embedded in many
                  locations, updates to this type     will affect numerous schemas.  Don''t
                  make new APIs embed an underspecified API type they do not control.
                  Instead of using this type, create a locally provided and used type
                  that is well-focused on your reference. For example, ServiceReferences
                  for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                  .'
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  fieldPath:
                    description: 'If referring to a piece of an object instead of
                      an entire object, this string should contain a valid JSON/Go
                      field access statement, such as desiredState.manifest.containers[2].
                      For example, if the object reference is to a container within
                      a pod, this would take on a value like: "spec.containers{name}"
                      (where "name" refers to the name of the container that triggered
                      the event) or if no container name is specified "spec.containers[2]"
                      (container with index 2 in this pod). This syntax is chosen
                      only to have some well-defined way of referencing a part of
                      an object. TODO: this design is not final and this field is
                      subject to change in the future.'
                    type: string
                  kind:
                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                  resourceVersion:
                    description: 'Specific resourceVersion to which this reference
                      is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                    type: string
                  uid:
                    description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                    type: string
                type: object
              kit:
                description: 'Deprecated: use the IntegrationKit field'
                type: string
              lastInitTimestamp:
                description: The timestamp representing the last time when this integration
                  was initialized.
                format: date-time
                type: string
              phase:
                description: IntegrationPhase --
                type: string
              platform:
                type: string
              profile:
                description: TraitProfile represents lists of traits that are enabled
                  for the specific installation/integration
                type: string
              replicas:
                format: int32
                type: integer
              runtimeProvider:
                description: RuntimeProvider --
                type: string
              runtimeVersion:
                type: string
              selector:
                type: string
              version:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      scale:
        labelSelectorPath: .status.selector
        specReplicasPath: .spec.replicas
        statusReplicasPath: .status.replicas
      status: {}
