From bf2f9c944f73cb8457261c12e137f67fd79f8d96 Mon Sep 17 00:00:00 2001 From: Pasquale Congiusti Date: Fri, 8 Mar 2024 09:18:41 +0100 Subject: [PATCH] fix(trait): revert persisted status The work done in #5153 is based on the wrong assumption that a trait status can be persisted at any point of the Integration/IntegrationKit lifecycle This cannot be always true, because the resource move towards different .status.phase with the execution of its logic or not depending on the phase. Therefore we cannot persist in a consistent way, as the status would reflect the latest execution of a trait which may happen in a different phase (and would be overridden by the new execution phase). The best way to deal with this, at this stage, seems to be the usage of .status.conditions in order to warn that some trait value was overwritten. --- .../ROOT/partials/apis/camel-k-crds.adoc | 16 - helm/camel-k/crds/crd-integration-kit.yaml | 231 --- helm/camel-k/crds/crd-integration.yaml | 1466 ----------------- pkg/apis/camel/v1/integration_types.go | 2 - pkg/apis/camel/v1/integrationkit_types.go | 2 - pkg/apis/camel/v1/zz_generated.deepcopy.go | 2 - .../camel/v1/integrationkitstatus.go | 9 - .../camel/v1/integrationstatus.go | 9 - pkg/cmd/promote_test.go | 12 +- pkg/cmd/run_test.go | 9 +- pkg/controller/integration/kits.go | 4 +- pkg/controller/integration/kits_test.go | 48 - .../camel.apache.org_integrationkits.yaml | 231 --- .../bases/camel.apache.org_integrations.yaml | 1466 ----------------- pkg/trait/trait.go | 6 - pkg/trait/util.go | 4 - pkg/util/digest/digest.go | 3 - pkg/util/digest/digest_test.go | 34 - 18 files changed, 9 insertions(+), 3545 deletions(-) diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc index 49674b263a..c90e8e44dc 100644 --- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc +++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc @@ -2602,13 +2602,6 @@ the Camel K operator version for which this kit was configured a list of conditions which happened for the events related the kit -|`traits` + -*xref:#_camel_apache_org_v1_IntegrationKitTraits[IntegrationKitTraits]* -| - - -generated traits executed by the kit - |=== @@ -2618,7 +2611,6 @@ generated traits executed by the kit *Appears on:* * <<#_camel_apache_org_v1_IntegrationKitSpec, IntegrationKitSpec>> -* <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>> IntegrationKitTraits defines traits assigned to an `IntegrationKit`. @@ -3506,13 +3498,6 @@ label selector features offered by the Integration -|`traits` + -*xref:#_camel_apache_org_v1_Traits[Traits]* -| - - -the traits generated and executed for this Integration - |`lastInitTimestamp` + *https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#time-v1-meta[Kubernetes meta/v1.Time]* | @@ -5667,7 +5652,6 @@ TraitConfiguration parameters configuration * <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>> * <<#_camel_apache_org_v1_IntegrationProfileSpec, IntegrationProfileSpec>> * <<#_camel_apache_org_v1_IntegrationSpec, IntegrationSpec>> -* <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>> Traits represents the collection of trait configurations. diff --git a/helm/camel-k/crds/crd-integration-kit.yaml b/helm/camel-k/crds/crd-integration-kit.yaml index 7c5296f85f..28880c09cb 100644 --- a/helm/camel-k/crds/crd-integration-kit.yaml +++ b/helm/camel-k/crds/crd-integration-kit.yaml @@ -540,237 +540,6 @@ spec: runtimeVersion: description: the runtime version for which this kit was configured type: string - traits: - description: generated traits executed by the kit - properties: - addons: - additionalProperties: - description: AddonTrait represents the configuration of an addon - trait. - type: object - x-kubernetes-preserve-unknown-fields: true - description: The collection of addon trait configurations - type: object - builder: - description: The builder trait is internally used to determine - the best strategy to build and configure IntegrationKits. - properties: - annotations: - additionalProperties: - type: string - description: When using `pod` strategy, annotation to use - for the builder pod. - type: object - baseImage: - description: Specify a base image - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - incrementalImageBuild: - description: Use the incremental image build option, to reuse - existing containers (default `true`) - type: boolean - limitCPU: - description: 'When using `pod` strategy, the maximum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - limitMemory: - description: 'When using `pod` strategy, the maximum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - mavenProfiles: - description: 'A list of references pointing to configmaps/secrets - that contains a maven profile. The content of the maven - profile is expected to be a text containing a valid maven - profile starting with `` and ending with `` - that will be integrated as an inline profile in the POM. - Syntax: [configmap|secret]:name[/key], where name represents - the resource name, key optionally represents the resource - key to be filtered (default key value = profile.xml).' - items: - type: string - type: array - nodeSelector: - additionalProperties: - type: string - description: Defines a set of nodes the builder pod is eligible - to be scheduled on, based on labels on the node. - type: object - orderStrategy: - description: The build order strategy to use, either `dependencies`, - `fifo` or `sequential` (default `sequential`) - enum: - - dependencies - - fifo - - sequential - type: string - properties: - description: A list of properties to be provided to the build - task - items: - type: string - type: array - requestCPU: - description: 'When using `pod` strategy, the minimum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - requestMemory: - description: 'When using `pod` strategy, the minimum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - strategy: - description: The strategy to use, either `pod` or `routine` - (default `routine`) - enum: - - pod - - routine - type: string - tasks: - description: A list of tasks to be executed (available only - when using `pod` strategy) with format `;;`. - items: - type: string - type: array - tasksFilter: - description: A list of tasks sorted by the order of execution - in a csv format, ie, `,,...`. Mind - that you must include also the operator tasks (`builder`, - `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if - you need to execute them. Useful only with `pod` strategy. - type: string - tasksLimitCPU: - description: A list of limit cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksLimitMemory: - description: A list of limit memory configuration for the - specific task with format `:`. - items: - type: string - type: array - tasksRequestCPU: - description: A list of request cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksRequestMemory: - description: A list of request memory configuration for the - specific task with format `:`. - items: - type: string - type: array - verbose: - description: Enable verbose logging on build components that - support it (e.g. Kaniko build pod). Deprecated no longer - in use - type: boolean - type: object - camel: - description: The Camel trait sets up Camel configuration. - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - properties: - description: A list of properties to be provided to the Integration - runtime - items: - type: string - type: array - runtimeVersion: - description: The camel-k-runtime version to use for the integration. - It overrides the default version set in the Integration - Platform. - type: string - type: object - quarkus: - description: 'The Quarkus trait configures the Quarkus runtime. - It''s enabled by default. NOTE: Compiling to a native executable, - requires at least 4GiB of memory, so the Pod running the native - build must have enough memory available.' - properties: - buildMode: - description: 'The Quarkus mode to run: either `jvm` or `native` - (default `jvm`). In case both `jvm` and `native` are specified, - two `IntegrationKit` resources are created, with the `native` - kit having precedence over the `jvm` one once ready.' - items: - description: QuarkusMode is the type of Quarkus build packaging. - enum: - - jvm - - native - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - nativeBaseImage: - description: The base image to use when running a native build - (default `quay.io/quarkus/quarkus-micro-image:2.0`) - type: string - nativeBuilderImage: - description: The image containing the tooling required for - a native build (by default it will use the one provided - in the runtime catalog) - type: string - packageTypes: - description: 'The Quarkus package types, `fast-jar` or `native` - (default `fast-jar`). In case both `fast-jar` and `native` - are specified, two `IntegrationKit` resources are created, - with the native kit having precedence over the `fast-jar` - one once ready. The order influences the resolution of the - current kit for the integration. The kit corresponding to - the first package type will be assigned to the integration - in case no existing kit that matches the integration exists. - Deprecated: use `build-mode` instead.' - items: - description: 'QuarkusPackageType is the type of Quarkus - build packaging. Deprecated: use `QuarkusMode` instead.' - enum: - - fast-jar - - native - type: string - type: array - type: object - registry: - description: 'The Registry trait sets up Maven to use the Image - registry as a Maven repository. Deprecated: use jvm trait or - read documentation.' - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - type: object version: description: the Camel K operator version for which this kit was configured type: string diff --git a/helm/camel-k/crds/crd-integration.yaml b/helm/camel-k/crds/crd-integration.yaml index bbe33a05a7..000da77f6f 100644 --- a/helm/camel-k/crds/crd-integration.yaml +++ b/helm/camel-k/crds/crd-integration.yaml @@ -8082,1472 +8082,6 @@ spec: selector: description: label selector type: string - traits: - description: the traits generated and executed for this Integration - properties: - 3scale: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - addons: - additionalProperties: - description: AddonTrait represents the configuration of an addon - trait. - type: object - x-kubernetes-preserve-unknown-fields: true - description: The extension point with addon traits - type: object - affinity: - description: The configuration of Affinity trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - nodeAffinityLabels: - description: Defines a set of nodes the integration pod(s) - are eligible to be scheduled on, based on labels on the - node. - items: - type: string - type: array - podAffinity: - description: Always co-locates multiple replicas of the integration - in the same node (default `false`). - type: boolean - podAffinityLabels: - description: Defines a set of pods (namely those matching - the label selector, relative to the given namespace) that - the integration pod(s) should be co-located with. - items: - type: string - type: array - podAntiAffinity: - description: Never co-locates multiple replicas of the integration - in the same node (default `false`). - type: boolean - podAntiAffinityLabels: - description: Defines a set of pods (namely those matching - the label selector, relative to the given namespace) that - the integration pod(s) should not be co-located with. - items: - type: string - type: array - type: object - builder: - description: The configuration of Builder trait - properties: - annotations: - additionalProperties: - type: string - description: When using `pod` strategy, annotation to use - for the builder pod. - type: object - baseImage: - description: Specify a base image - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - incrementalImageBuild: - description: Use the incremental image build option, to reuse - existing containers (default `true`) - type: boolean - limitCPU: - description: 'When using `pod` strategy, the maximum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - limitMemory: - description: 'When using `pod` strategy, the maximum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - mavenProfiles: - description: 'A list of references pointing to configmaps/secrets - that contains a maven profile. The content of the maven - profile is expected to be a text containing a valid maven - profile starting with `` and ending with `` - that will be integrated as an inline profile in the POM. - Syntax: [configmap|secret]:name[/key], where name represents - the resource name, key optionally represents the resource - key to be filtered (default key value = profile.xml).' - items: - type: string - type: array - nodeSelector: - additionalProperties: - type: string - description: Defines a set of nodes the builder pod is eligible - to be scheduled on, based on labels on the node. - type: object - orderStrategy: - description: The build order strategy to use, either `dependencies`, - `fifo` or `sequential` (default `sequential`) - enum: - - dependencies - - fifo - - sequential - type: string - properties: - description: A list of properties to be provided to the build - task - items: - type: string - type: array - requestCPU: - description: 'When using `pod` strategy, the minimum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - requestMemory: - description: 'When using `pod` strategy, the minimum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - strategy: - description: The strategy to use, either `pod` or `routine` - (default `routine`) - enum: - - pod - - routine - type: string - tasks: - description: A list of tasks to be executed (available only - when using `pod` strategy) with format `;;`. - items: - type: string - type: array - tasksFilter: - description: A list of tasks sorted by the order of execution - in a csv format, ie, `,,...`. Mind - that you must include also the operator tasks (`builder`, - `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if - you need to execute them. Useful only with `pod` strategy. - type: string - tasksLimitCPU: - description: A list of limit cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksLimitMemory: - description: A list of limit memory configuration for the - specific task with format `:`. - items: - type: string - type: array - tasksRequestCPU: - description: A list of request cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksRequestMemory: - description: A list of request memory configuration for the - specific task with format `:`. - items: - type: string - type: array - verbose: - description: Enable verbose logging on build components that - support it (e.g. Kaniko build pod). Deprecated no longer - in use - type: boolean - type: object - camel: - description: The configuration of Camel trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - properties: - description: A list of properties to be provided to the Integration - runtime - items: - type: string - type: array - runtimeVersion: - description: The camel-k-runtime version to use for the integration. - It overrides the default version set in the Integration - Platform. - type: string - type: object - container: - description: The configuration of Container trait - properties: - auto: - description: To automatically enable the trait - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - expose: - description: Can be used to enable/disable exposure via kubernetes - Service. - type: boolean - image: - description: The main container image - type: string - imagePullPolicy: - description: 'The pull policy: Always|Never|IfNotPresent' - enum: - - Always - - Never - - IfNotPresent - type: string - limitCPU: - description: The maximum amount of CPU required. - type: string - limitMemory: - description: The maximum amount of memory required. - type: string - name: - description: The main container name. It's named `integration` - by default. - type: string - port: - description: To configure a different port exposed by the - container (default `8080`). - type: integer - portName: - description: To configure a different port name for the port - exposed by the container. It defaults to `http` only when - the `expose` parameter is true. - type: string - requestCPU: - description: The minimum amount of CPU required. - type: string - requestMemory: - description: The minimum amount of memory required. - type: string - servicePort: - description: To configure under which service port the container - port is to be exposed (default `80`). - type: integer - servicePortName: - description: To configure under which service port name the - container port is to be exposed (default `http`). - type: string - type: object - cron: - description: The configuration of Cron trait - properties: - activeDeadlineSeconds: - description: Specifies the duration in seconds, relative to - the start time, that the job may be continuously active - before it is considered to be failed. It defaults to 60s. - format: int64 - type: integer - auto: - description: "Automatically deploy the integration as CronJob - when all routes are either starting from a periodic consumer - (only `cron`, `timer` and `quartz` are supported) or a passive - consumer (e.g. `direct` is a passive consumer). \n It's - required that all periodic consumers have the same period, - and it can be expressed as cron schedule (e.g. `1m` can - be expressed as `0/1 * * * *`, while `35m` or `50s` cannot)." - type: boolean - backoffLimit: - description: Specifies the number of retries before marking - the job failed. It defaults to 2. - format: int32 - type: integer - components: - description: "A comma separated list of the Camel components - that need to be customized in order for them to work when - the schedule is triggered externally by Kubernetes. A specific - customizer is activated for each specified component. E.g. - for the `timer` component, the `cron-timer` customizer is - activated (it's present in the `org.apache.camel.k:camel-k-cron` - library). \n Supported components are currently: `cron`, - `timer` and `quartz`." - type: string - concurrencyPolicy: - description: 'Specifies how to treat concurrent executions - of a Job. Valid values are: - "Allow": allows CronJobs to - run concurrently; - "Forbid" (default): forbids concurrent - runs, skipping next run if previous run hasn''t finished - yet; - "Replace": cancels currently running job and replaces - it with a new one' - enum: - - Allow - - Forbid - - Replace - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - fallback: - description: Use the default Camel implementation of the `cron` - endpoint (`quartz`) instead of trying to materialize the - integration as Kubernetes CronJob. - type: boolean - schedule: - description: The CronJob schedule for the whole integration. - If multiple routes are declared, they must have the same - schedule for this mechanism to work correctly. - type: string - startingDeadlineSeconds: - description: Optional deadline in seconds for starting the - job if it misses scheduled time for any reason. Missed - jobs executions will be counted as failed ones. - format: int64 - type: integer - type: object - dependencies: - description: The configuration of Dependencies trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - type: object - deployer: - description: The configuration of Deployer trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - kind: - description: Allows to explicitly select the desired deployment - kind between `deployment`, `cron-job` or `knative-service` - when creating the resources for running the integration. - enum: - - deployment - - cron-job - - knative-service - type: string - useSSA: - description: Use server-side apply to update the owned resources - (default `true`). Note that it automatically falls back - to client-side patching, if SSA is not available, e.g., - on old Kubernetes clusters. - type: boolean - type: object - deployment: - description: The configuration of Deployment trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - progressDeadlineSeconds: - description: The maximum time in seconds for the deployment - to make progress before it is considered to be failed. It - defaults to `60s`. - format: int32 - type: integer - rollingUpdateMaxSurge: - description: 'The maximum number of pods that can be scheduled - above the desired number of pods. Value can be an absolute - number (ex: 5) or a percentage of desired pods (ex: 10%). - This can not be 0 if MaxUnavailable is 0. Absolute number - is calculated from percentage by rounding up. Defaults to - `25%`.' - type: integer - rollingUpdateMaxUnavailable: - description: 'The maximum number of pods that can be unavailable - during the update. Value can be an absolute number (ex: - 5) or a percentage of desired pods (ex: 10%). Absolute number - is calculated from percentage by rounding down. This can - not be 0 if MaxSurge is 0. Defaults to `25%`.' - type: integer - strategy: - description: The deployment strategy to use to replace existing - pods with new ones. - enum: - - Recreate - - RollingUpdate - type: string - type: object - environment: - description: The configuration of Environment trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - containerMeta: - description: Enables injection of `NAMESPACE` and `POD_NAME` - environment variables (default `true`) - type: boolean - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - httpProxy: - description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and - `NO_PROXY` environment variables (default `true`) - type: boolean - vars: - description: A list of environment variables to be added to - the integration container. The syntax is KEY=VALUE, e.g., - `MY_VAR="my value"`. These take precedence over the previously - defined environment variables. - items: - type: string - type: array - type: object - error-handler: - description: The configuration of Error Handler trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - ref: - description: The error handler ref name provided or found - in application properties - type: string - type: object - gc: - description: The configuration of GC trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - discoveryCache: - description: 'Discovery client cache to be used, either `disabled`, - `disk` or `memory` (default `memory`). Deprecated: to be - removed from trait configuration.' - enum: - - disabled - - disk - - memory - type: string - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - health: - description: The configuration of Health trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - livenessFailureThreshold: - description: Minimum consecutive failures for the liveness - probe to be considered failed after having succeeded. - format: int32 - type: integer - livenessInitialDelay: - description: Number of seconds after the container has started - before the liveness probe is initiated. - format: int32 - type: integer - livenessPeriod: - description: How often to perform the liveness probe. - format: int32 - type: integer - livenessProbeEnabled: - description: Configures the liveness probe for the integration - container (default `false`). - type: boolean - livenessScheme: - description: Scheme to use when connecting to the liveness - probe (default `HTTP`). - type: string - livenessSuccessThreshold: - description: Minimum consecutive successes for the liveness - probe to be considered successful after having failed. - format: int32 - type: integer - livenessTimeout: - description: Number of seconds after which the liveness probe - times out. - format: int32 - type: integer - readinessFailureThreshold: - description: Minimum consecutive failures for the readiness - probe to be considered failed after having succeeded. - format: int32 - type: integer - readinessInitialDelay: - description: Number of seconds after the container has started - before the readiness probe is initiated. - format: int32 - type: integer - readinessPeriod: - description: How often to perform the readiness probe. - format: int32 - type: integer - readinessProbeEnabled: - description: Configures the readiness probe for the integration - container (default `true`). - type: boolean - readinessScheme: - description: Scheme to use when connecting to the readiness - probe (default `HTTP`). - type: string - readinessSuccessThreshold: - description: Minimum consecutive successes for the readiness - probe to be considered successful after having failed. - format: int32 - type: integer - readinessTimeout: - description: Number of seconds after which the readiness probe - times out. - format: int32 - type: integer - startupFailureThreshold: - description: Minimum consecutive failures for the startup - probe to be considered failed after having succeeded. - format: int32 - type: integer - startupInitialDelay: - description: Number of seconds after the container has started - before the startup probe is initiated. - format: int32 - type: integer - startupPeriod: - description: How often to perform the startup probe. - format: int32 - type: integer - startupProbeEnabled: - description: Configures the startup probe for the integration - container (default `false`). - type: boolean - startupScheme: - description: Scheme to use when connecting to the startup - probe (default `HTTP`). - type: string - startupSuccessThreshold: - description: Minimum consecutive successes for the startup - probe to be considered successful after having failed. - format: int32 - type: integer - startupTimeout: - description: Number of seconds after which the startup probe - times out. - format: int32 - type: integer - type: object - ingress: - description: The configuration of Ingress trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to the ingress. This can - be used to set controller specific annotations, e.g., when - using the NGINX Ingress controller: See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md' - type: object - auto: - description: To automatically add an ingress whenever the - integration uses an HTTP endpoint consumer. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - host: - description: To configure the host exposed by the ingress. - type: string - path: - description: To configure the path exposed by the ingress - (default `/`). - type: string - pathType: - description: To configure the path type exposed by the ingress. - One of `Exact`, `Prefix`, `ImplementationSpecific` (default - to `Prefix`). - enum: - - Exact - - Prefix - - ImplementationSpecific - type: string - type: object - istio: - description: The configuration of Istio trait - properties: - allow: - description: Configures a (comma-separated) list of CIDR subnets - that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16` - by default). - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - inject: - description: Forces the value for labels `sidecar.istio.io/inject`. - By default the label is set to `true` on deployment and - not set on Knative Service. - type: boolean - type: object - jolokia: - description: The configuration of Jolokia trait - properties: - CACert: - description: The PEM encoded CA certification file path, used - to verify client certificates, applicable when `protocol` - is `https` and `use-ssl-client-authentication` is `true` - (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` - for OpenShift). - type: string - clientPrincipal: - description: The principal(s) which must be given in a client - certificate to allow access to the Jolokia endpoint, applicable - when `protocol` is `https` and `use-ssl-client-authentication` - is `true` (default `clientPrincipal=cn=system:master-proxy`, - `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` - for OpenShift). - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - discoveryEnabled: - description: Listen for multicast requests (default `false`) - type: boolean - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - extendedClientCheck: - description: Mandate the client certificate contains a client - flag in the extended key usage section, applicable when - `protocol` is `https` and `use-ssl-client-authentication` - is `true` (default `true` for OpenShift). - type: boolean - host: - description: The Host address to which the Jolokia agent should - bind to. If `"\*"` or `"0.0.0.0"` is given, the servers - binds to every network interface (default `"*"`). - type: string - options: - description: A list of additional Jolokia options as defined - in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM - agent configuration options] - items: - type: string - type: array - password: - description: The password used for authentication, applicable - when the `user` option is set. - type: string - port: - description: The Jolokia endpoint port (default `8778`). - type: integer - protocol: - description: The protocol to use, either `http` or `https` - (default `https` for OpenShift) - type: string - useSSLClientAuthentication: - description: Whether client certificates should be used for - authentication (default `true` for OpenShift). - type: boolean - user: - description: The user to be used for authentication - type: string - type: object - jvm: - description: The configuration of JVM trait - properties: - classpath: - description: Additional JVM classpath (use `Linux` classpath - separator) - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - debug: - description: Activates remote debugging, so that a debugger - can be attached to the JVM, e.g., using port-forwarding - type: boolean - debugAddress: - description: Transport address at which to listen for the - newly launched JVM (default `*:5005`) - type: string - debugSuspend: - description: Suspends the target JVM immediately before the - main class is loaded - type: boolean - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - options: - description: A list of JVM options - items: - type: string - type: array - printCommand: - description: Prints the command used the start the JVM in - the container logs (default `true`) - type: boolean - type: object - kamelets: - description: The configuration of Kamelets trait - properties: - auto: - description: Automatically inject all referenced Kamelets - and their default configuration (enabled by default) - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - list: - description: Comma separated list of Kamelet names to load - into the current integration - type: string - mountPoint: - description: The directory where the application mounts and - reads Kamelet spec (default `/etc/camel/kamelets`) - type: string - type: object - keda: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - knative: - description: The configuration of Knative trait - properties: - auto: - description: Enable automatic discovery of all trait properties. - type: boolean - channelSinks: - description: List of channels used as destination of integration - routes. Can contain simple channel names or full Camel URIs. - items: - type: string - type: array - channelSources: - description: List of channels used as source of integration - routes. Can contain simple channel names or full Camel URIs. - items: - type: string - type: array - config: - description: Can be used to inject a Knative complete configuration - in JSON format. - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - endpointSinks: - description: List of endpoints used as destination of integration - routes. Can contain simple endpoint names or full Camel - URIs. - items: - type: string - type: array - endpointSources: - description: List of channels used as source of integration - routes. - items: - type: string - type: array - eventSinks: - description: List of event types that the integration will - produce. Can contain simple event types or full Camel URIs - (to use a specific broker). - items: - type: string - type: array - eventSources: - description: List of event types that the integration will - be subscribed to. Can contain simple event types or full - Camel URIs (to use a specific broker different from "default"). - items: - type: string - type: array - filterSourceChannels: - description: Enables filtering on events based on the header - "ce-knativehistory". Since this header has been removed - in newer versions of Knative, filtering is disabled by default. - type: boolean - namespaceLabel: - description: 'Enables the camel-k-operator to set the "bindings.knative.dev/include=true" - label to the namespace As Knative requires this label to - perform injection of K_SINK URL into the service. If this - is false, the integration pod may start and fail, read the - SinkBinding Knative documentation. (default: true)' - type: boolean - sinkBinding: - description: Allows binding the integration to a sink via - a Knative SinkBinding resource. This can be used when the - integration targets a single sink. It's enabled by default - when the integration targets a single sink (except when - the integration is owned by a Knative source). - type: boolean - type: object - knative-service: - description: The configuration of Knative Service trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to route. This can be - used to set knative service specific annotations CLI usage - example: -t "knative-service.annotations.''haproxy.router.openshift.io/balance''=true"' - type: object - auto: - description: "Automatically deploy the integration as Knative - service when all conditions hold: \n * Integration is using - the Knative profile * All routes are either starting from - an HTTP based consumer or a passive consumer (e.g. `direct` - is a passive consumer)" - type: boolean - autoscalingMetric: - description: "Configures the Knative autoscaling metric property - (e.g. to set `concurrency` based or `cpu` based autoscaling). - \n Refer to the Knative documentation for more information." - type: string - autoscalingTarget: - description: "Sets the allowed concurrency level or CPU percentage - (depending on the autoscaling metric) for each Pod. \n Refer - to the Knative documentation for more information." - type: integer - class: - description: "Configures the Knative autoscaling class property - (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` - autoscaling). \n Refer to the Knative documentation for - more information." - enum: - - kpa.autoscaling.knative.dev - - hpa.autoscaling.knative.dev - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - maxScale: - description: "An upper bound for the number of Pods that can - be running in parallel for the integration. Knative has - its own cap value that depends on the installation. \n Refer - to the Knative documentation for more information." - type: integer - minScale: - description: "The minimum number of Pods that should be running - at any time for the integration. It's **zero** by default, - meaning that the integration is scaled down to zero when - not used for a configured amount of time. \n Refer to the - Knative documentation for more information." - type: integer - rolloutDuration: - description: Enables to gradually shift traffic to the latest - Revision and sets the rollout duration. It's disabled by - default and must be expressed as a Golang `time.Duration` - string representation, rounded to a second precision. - type: string - visibility: - description: "Setting `cluster-local`, Knative service becomes - a private service. Specifically, this option applies the - `networking.knative.dev/visibility` label to Knative service. - \n Refer to the Knative documentation for more information." - enum: - - cluster-local - type: string - type: object - logging: - description: The configuration of Logging trait - properties: - color: - description: Colorize the log output - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - format: - description: Logs message format - type: string - json: - description: Output the logs in JSON - type: boolean - jsonPrettyPrint: - description: Enable "pretty printing" of the JSON logs - type: boolean - level: - description: Adjust the logging level (defaults to `INFO`) - enum: - - FATAL - - WARN - - INFO - - DEBUG - - TRACE - type: string - type: object - master: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - mount: - description: The configuration of Mount trait - properties: - configs: - description: 'A list of configuration pointing to configmap/secret. - The configuration are expected to be UTF-8 resources as - they are processed by runtime Camel Context and tried to - be parsed as property files. They are also made available - on the classpath in order to ease their usage directly from - the Route. Syntax: [configmap|secret]:name[/key], where - name represents the resource name and key optionally represents - the resource key to be filtered' - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - hotReload: - description: Enable "hot reload" when a secret/configmap mounted - is edited (default `false`). The configmap/secret must be - marked with `camel.apache.org/integration` label to be taken - in account. The resource will be watched for any kind change, - also for changes in metadata. - type: boolean - resources: - description: 'A list of resources (text or binary content) - pointing to configmap/secret. The resources are expected - to be any resource type (text or binary content). The destination - path can be either a default location or any path specified - by the user. Syntax: [configmap|secret]:name[/key][@path], - where name represents the resource name, key optionally - represents the resource key to be filtered and path represents - the destination path' - items: - type: string - type: array - scanKameletsImplicitLabelSecrets: - description: 'Deprecated: include your properties in an explicit - property file backed by a secret. Let the operator to scan - for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`. - These secrets are mounted to the application and treated - as plain properties file with their key/value list (ie .spec.data["camel.my-property"] - = my-value) (default `true`).' - type: boolean - volumes: - description: 'A list of Persistent Volume Claims to be mounted. - Syntax: [pvcname:/container/path]' - items: - type: string - type: array - type: object - openapi: - description: The configuration of OpenAPI trait - properties: - configmaps: - description: The configmaps holding the spec of the OpenAPI - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - type: object - owner: - description: The configuration of Owner trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - targetAnnotations: - description: The set of annotations to be transferred - items: - type: string - type: array - targetLabels: - description: The set of labels to be transferred - items: - type: string - type: array - type: object - pdb: - description: The configuration of PDB trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - maxUnavailable: - description: The number of pods for the Integration that can - be unavailable after an eviction. It can be either an absolute - number or a percentage (default `1` if `min-available` is - also not set). Only one of `max-unavailable` and `min-available` - can be specified. - type: string - minAvailable: - description: The number of pods for the Integration that must - still be available after an eviction. It can be either an - absolute number or a percentage. Only one of `min-available` - and `max-unavailable` can be specified. - type: string - type: object - platform: - description: The configuration of Platform trait - properties: - auto: - description: 'To automatically detect from the environment - if a default platform can be created (it will be created - on OpenShift or when a registry address is set). Deprecated: - Platform is auto generated by the operator install procedure - - maintained for backward compatibility' - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - createDefault: - description: 'To create a default (empty) platform when the - platform is missing. Deprecated: Platform is auto generated - by the operator install procedure - maintained for backward - compatibility' - type: boolean - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - global: - description: 'Indicates if the platform should be created - globally in the case of global operator (default true). - Deprecated: Platform is auto generated by the operator install - procedure - maintained for backward compatibility' - type: boolean - type: object - pod: - description: The configuration of Pod trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - prometheus: - description: The configuration of Prometheus trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - podMonitor: - description: Whether a `PodMonitor` resource is created (default - `true`). - type: boolean - podMonitorLabels: - description: The `PodMonitor` resource labels, applicable - when `pod-monitor` is `true`. - items: - type: string - type: array - type: object - pull-secret: - description: The configuration of Pull Secret trait - properties: - auto: - description: Automatically configures the platform registry - secret on the pod if it is of type `kubernetes.io/dockerconfigjson`. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - imagePullerDelegation: - description: When using a global operator with a shared platform, - this enables delegation of the `system:image-puller` cluster - role on the operator namespace to the integration service - account. - type: boolean - secretName: - description: The pull secret name to set on the Pod. If left - empty this is automatically taken from the `IntegrationPlatform` - registry configuration. - type: string - type: object - quarkus: - description: The configuration of Quarkus trait - properties: - buildMode: - description: 'The Quarkus mode to run: either `jvm` or `native` - (default `jvm`). In case both `jvm` and `native` are specified, - two `IntegrationKit` resources are created, with the `native` - kit having precedence over the `jvm` one once ready.' - items: - description: QuarkusMode is the type of Quarkus build packaging. - enum: - - jvm - - native - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - nativeBaseImage: - description: The base image to use when running a native build - (default `quay.io/quarkus/quarkus-micro-image:2.0`) - type: string - nativeBuilderImage: - description: The image containing the tooling required for - a native build (by default it will use the one provided - in the runtime catalog) - type: string - packageTypes: - description: 'The Quarkus package types, `fast-jar` or `native` - (default `fast-jar`). In case both `fast-jar` and `native` - are specified, two `IntegrationKit` resources are created, - with the native kit having precedence over the `fast-jar` - one once ready. The order influences the resolution of the - current kit for the integration. The kit corresponding to - the first package type will be assigned to the integration - in case no existing kit that matches the integration exists. - Deprecated: use `build-mode` instead.' - items: - description: 'QuarkusPackageType is the type of Quarkus - build packaging. Deprecated: use `QuarkusMode` instead.' - enum: - - fast-jar - - native - type: string - type: array - type: object - registry: - description: 'The configuration of Registry trait Deprecated: - use jvm trait or read documentation.' - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - route: - description: The configuration of Route trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to route. This can be - used to set route specific annotations For annotations options - see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations - CLI usage example: -t "route.annotations.''haproxy.router.openshift.io/balance''=true"' - type: object - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - host: - description: To configure the host exposed by the route. - type: string - tlsCACertificate: - description: "The TLS CA certificate contents. \n Refer to - the OpenShift route documentation for additional information." - type: string - tlsCACertificateSecret: - description: "The secret name and key reference to the TLS - CA certificate. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsCertificate: - description: "The TLS certificate contents. \n Refer to the - OpenShift route documentation for additional information." - type: string - tlsCertificateSecret: - description: "The secret name and key reference to the TLS - certificate. The format is \"secret-name[/key-name]\", the - value represents the secret name, if there is only one key - in the secret it will be read, otherwise you can set a key - name separated with a \"/\". \n Refer to the OpenShift route - documentation for additional information." - type: string - tlsDestinationCACertificate: - description: "The destination CA certificate provides the - contents of the ca certificate of the final destination. - \ When using reencrypt termination this file should be provided - in order to have routers use it for health checks on the - secure connection. If this field is not specified, the router - may provide its own destination CA and perform hostname - validation using the short service name (service.namespace.svc), - which allows infrastructure generated certificates to automatically - verify. \n Refer to the OpenShift route documentation for - additional information." - type: string - tlsDestinationCACertificateSecret: - description: "The secret name and key reference to the destination - CA certificate. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsInsecureEdgeTerminationPolicy: - description: "To configure how to deal with insecure traffic, - e.g. `Allow`, `Disable` or `Redirect` traffic. \n Refer - to the OpenShift route documentation for additional information." - enum: - - None - - Allow - - Redirect - type: string - tlsKey: - description: "The TLS certificate key contents. \n Refer to - the OpenShift route documentation for additional information." - type: string - tlsKeySecret: - description: "The secret name and key reference to the TLS - certificate key. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsTermination: - description: "The TLS termination type, like `edge`, `passthrough` - or `reencrypt`. \n Refer to the OpenShift route documentation - for additional information." - enum: - - edge - - reencrypt - - passthrough - type: string - type: object - service: - description: The configuration of Service trait - properties: - auto: - description: To automatically detect from the code if a Service - needs to be created. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - nodePort: - description: 'Enable Service to be exposed as NodePort (default - `false`). Deprecated: Use service type instead.' - type: boolean - type: - description: The type of service to be used, either 'ClusterIP', - 'NodePort' or 'LoadBalancer'. - enum: - - ClusterIP - - NodePort - - LoadBalancer - type: string - type: object - service-binding: - description: The configuration of Service Binding trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - services: - description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name - items: - type: string - type: array - type: object - strimzi: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - toleration: - description: The configuration of Toleration trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - taints: - description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]` - items: - type: string - type: array - type: object - tracing: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - type: object version: description: the operator version type: string diff --git a/pkg/apis/camel/v1/integration_types.go b/pkg/apis/camel/v1/integration_types.go index c72a96253f..9f293f6a63 100644 --- a/pkg/apis/camel/v1/integration_types.go +++ b/pkg/apis/camel/v1/integration_types.go @@ -118,8 +118,6 @@ type IntegrationStatus struct { Selector string `json:"selector,omitempty"` // features offered by the Integration Capabilities []string `json:"capabilities,omitempty"` - // the traits generated and executed for this Integration - Traits Traits `json:"traits,omitempty"` // the timestamp representing the last time when this integration was initialized. InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"` } diff --git a/pkg/apis/camel/v1/integrationkit_types.go b/pkg/apis/camel/v1/integrationkit_types.go index 74e9a61322..8763237319 100644 --- a/pkg/apis/camel/v1/integrationkit_types.go +++ b/pkg/apis/camel/v1/integrationkit_types.go @@ -121,8 +121,6 @@ type IntegrationKitStatus struct { Version string `json:"version,omitempty"` // a list of conditions which happened for the events related the kit Conditions []IntegrationKitCondition `json:"conditions,omitempty"` - // generated traits executed by the kit - Traits IntegrationKitTraits `json:"traits,omitempty"` } // +kubebuilder:object:root=true diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go index ded77d34ba..96f5e5fc6e 100644 --- a/pkg/apis/camel/v1/zz_generated.deepcopy.go +++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go @@ -1280,7 +1280,6 @@ func (in *IntegrationKitStatus) DeepCopyInto(out *IntegrationKitStatus) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - in.Traits.DeepCopyInto(&out.Traits) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationKitStatus. @@ -1812,7 +1811,6 @@ func (in *IntegrationStatus) DeepCopyInto(out *IntegrationStatus) { *out = make([]string, len(*in)) copy(*out, *in) } - in.Traits.DeepCopyInto(&out.Traits) if in.InitializationTimestamp != nil { in, out := &in.InitializationTimestamp, &out.InitializationTimestamp *out = (*in).DeepCopy() diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go index 931c92f89f..12650227af 100644 --- a/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go +++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationkitstatus.go @@ -39,7 +39,6 @@ type IntegrationKitStatusApplyConfiguration struct { Platform *string `json:"platform,omitempty"` Version *string `json:"version,omitempty"` Conditions []IntegrationKitConditionApplyConfiguration `json:"conditions,omitempty"` - Traits *IntegrationKitTraitsApplyConfiguration `json:"traits,omitempty"` } // IntegrationKitStatusApplyConfiguration constructs an declarative configuration of the IntegrationKitStatus type for use with @@ -161,11 +160,3 @@ func (b *IntegrationKitStatusApplyConfiguration) WithConditions(values ...*Integ } return b } - -// WithTraits sets the Traits field in the declarative configuration to the given value -// and returns the receiver, so that objects can be built by chaining "With" function invocations. -// If called multiple times, the Traits field is set to the value of the last call. -func (b *IntegrationKitStatusApplyConfiguration) WithTraits(value *IntegrationKitTraitsApplyConfiguration) *IntegrationKitStatusApplyConfiguration { - b.Traits = value - return b -} diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go index 8ef4bdfcf5..d17acaa2b2 100644 --- a/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go +++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationstatus.go @@ -45,7 +45,6 @@ type IntegrationStatusApplyConfiguration struct { Replicas *int32 `json:"replicas,omitempty"` Selector *string `json:"selector,omitempty"` Capabilities []string `json:"capabilities,omitempty"` - Traits *TraitsApplyConfiguration `json:"traits,omitempty"` InitializationTimestamp *metav1.Time `json:"lastInitTimestamp,omitempty"` } @@ -210,14 +209,6 @@ func (b *IntegrationStatusApplyConfiguration) WithCapabilities(values ...string) return b } -// WithTraits sets the Traits field in the declarative configuration to the given value -// and returns the receiver, so that objects can be built by chaining "With" function invocations. -// If called multiple times, the Traits field is set to the value of the last call. -func (b *IntegrationStatusApplyConfiguration) WithTraits(value *TraitsApplyConfiguration) *IntegrationStatusApplyConfiguration { - b.Traits = value - return b -} - // WithInitializationTimestamp sets the InitializationTimestamp field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the InitializationTimestamp field is set to the value of the last call. diff --git a/pkg/cmd/promote_test.go b/pkg/cmd/promote_test.go index ca54fb6e6f..2f43c85469 100644 --- a/pkg/cmd/promote_test.go +++ b/pkg/cmd/promote_test.go @@ -104,8 +104,7 @@ spec: image: my-special-image jvm: enabled: true -status: - traits: {} +status: {} `, output) } @@ -205,8 +204,7 @@ spec: image: my-special-image jvm: enabled: true -status: - traits: {} +status: {} `, output) } @@ -329,8 +327,7 @@ spec: image: my-special-image jvm: enabled: true -status: - traits: {} +status: {} `, output) // Verify also when the operator Id is set in the integration defaultIntegration.Annotations = map[string]string{ @@ -354,7 +351,6 @@ spec: image: my-special-image jvm: enabled: true -status: - traits: {} +status: {} `, output) } diff --git a/pkg/cmd/run_test.go b/pkg/cmd/run_test.go index 18cf8c1fa2..03286b10d2 100644 --- a/pkg/cmd/run_test.go +++ b/pkg/cmd/run_test.go @@ -608,8 +608,7 @@ spec: {\n\t from(\"timer:tick\")\n .log(\"Hello Camel K!\");\n }\n}\n" name: %s traits: {} -status: - traits: {} +status: {} `, fileName, fileName), output) } @@ -649,8 +648,7 @@ spec: service-binding: services: - my-service-binding -status: - traits: {} +status: {} `, fileName, fileName), output) } @@ -958,7 +956,6 @@ spec: mount: configs: - configmap:my-cm -status: - traits: {} +status: {} `, output) } diff --git a/pkg/controller/integration/kits.go b/pkg/controller/integration/kits.go index fd1a106ddf..20df5c682e 100644 --- a/pkg/controller/integration/kits.go +++ b/pkg/controller/integration/kits.go @@ -127,7 +127,7 @@ func integrationMatches(ctx context.Context, c client.Client, integration *v1.In if err != nil { return false, err } - ikc, err := trait.NewStatusTraitsOptionsForIntegrationKit(kit) + ikc, err := trait.NewSpecTraitsOptionsForIntegrationKit(kit) if err != nil { return false, err } @@ -190,7 +190,7 @@ func kitMatches(kit *v1.IntegrationKit, target *v1.IntegrationKit) (bool, error) if err != nil { return false, err } - c2, err := trait.NewStatusTraitsOptionsForIntegrationKit(target) + c2, err := trait.NewSpecTraitsOptionsForIntegrationKit(target) if err != nil { return false, err } diff --git a/pkg/controller/integration/kits_test.go b/pkg/controller/integration/kits_test.go index 58852be167..685f5d0e01 100644 --- a/pkg/controller/integration/kits_test.go +++ b/pkg/controller/integration/kits_test.go @@ -183,11 +183,6 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) }, Status: v1.IntegrationKitStatus{ Phase: v1.IntegrationKitPhaseReady, - Traits: v1.IntegrationKitTraits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - }, - }, }, }, // Should NOT be discarded because it contains a subset of the required traits and @@ -220,14 +215,6 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) }, Status: v1.IntegrationKitStatus{ Phase: v1.IntegrationKitPhaseReady, - Traits: v1.IntegrationKitTraits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - Properties: []string{ - "build-key1=build-value1", - }, - }, - }, }, }, ) @@ -262,14 +249,6 @@ func TestLookupKitForIntegration_DiscardKitsWithIncompatibleTraits(t *testing.T) "camel-core", "camel-irc", }, - Traits: v1.Traits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - Properties: []string{ - "build-key1=build-value1", - }, - }, - }, }, }) @@ -296,13 +275,6 @@ func TestHasMatchingTraits_KitNoTraitShouldNotBePicked(t *testing.T) { }, }, }, - Status: v1.IntegrationStatus{ - Traits: v1.Traits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - }, - }, - }, } kit := &v1.IntegrationKit{ @@ -344,16 +316,6 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) { }, }, }, - Status: v1.IntegrationStatus{ - Traits: v1.Traits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - Properties: []string{ - "build-key1=build-value1", - }, - }, - }, - }, } kit := &v1.IntegrationKit{ @@ -375,16 +337,6 @@ func TestHasMatchingTraits_KitSameTraitShouldBePicked(t *testing.T) { }, }, }, - Status: v1.IntegrationKitStatus{ - Traits: v1.IntegrationKitTraits{ - Builder: &traitv1.BuilderTrait{ - PlatformBaseTrait: traitv1.PlatformBaseTrait{}, - Properties: []string{ - "build-key1=build-value1", - }, - }, - }, - }, } a := buildKitAction{} diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml index 7c5296f85f..28880c09cb 100644 --- a/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml +++ b/pkg/resources/config/crd/bases/camel.apache.org_integrationkits.yaml @@ -540,237 +540,6 @@ spec: runtimeVersion: description: the runtime version for which this kit was configured type: string - traits: - description: generated traits executed by the kit - properties: - addons: - additionalProperties: - description: AddonTrait represents the configuration of an addon - trait. - type: object - x-kubernetes-preserve-unknown-fields: true - description: The collection of addon trait configurations - type: object - builder: - description: The builder trait is internally used to determine - the best strategy to build and configure IntegrationKits. - properties: - annotations: - additionalProperties: - type: string - description: When using `pod` strategy, annotation to use - for the builder pod. - type: object - baseImage: - description: Specify a base image - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - incrementalImageBuild: - description: Use the incremental image build option, to reuse - existing containers (default `true`) - type: boolean - limitCPU: - description: 'When using `pod` strategy, the maximum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - limitMemory: - description: 'When using `pod` strategy, the maximum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - mavenProfiles: - description: 'A list of references pointing to configmaps/secrets - that contains a maven profile. The content of the maven - profile is expected to be a text containing a valid maven - profile starting with `` and ending with `` - that will be integrated as an inline profile in the POM. - Syntax: [configmap|secret]:name[/key], where name represents - the resource name, key optionally represents the resource - key to be filtered (default key value = profile.xml).' - items: - type: string - type: array - nodeSelector: - additionalProperties: - type: string - description: Defines a set of nodes the builder pod is eligible - to be scheduled on, based on labels on the node. - type: object - orderStrategy: - description: The build order strategy to use, either `dependencies`, - `fifo` or `sequential` (default `sequential`) - enum: - - dependencies - - fifo - - sequential - type: string - properties: - description: A list of properties to be provided to the build - task - items: - type: string - type: array - requestCPU: - description: 'When using `pod` strategy, the minimum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - requestMemory: - description: 'When using `pod` strategy, the minimum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - strategy: - description: The strategy to use, either `pod` or `routine` - (default `routine`) - enum: - - pod - - routine - type: string - tasks: - description: A list of tasks to be executed (available only - when using `pod` strategy) with format `;;`. - items: - type: string - type: array - tasksFilter: - description: A list of tasks sorted by the order of execution - in a csv format, ie, `,,...`. Mind - that you must include also the operator tasks (`builder`, - `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if - you need to execute them. Useful only with `pod` strategy. - type: string - tasksLimitCPU: - description: A list of limit cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksLimitMemory: - description: A list of limit memory configuration for the - specific task with format `:`. - items: - type: string - type: array - tasksRequestCPU: - description: A list of request cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksRequestMemory: - description: A list of request memory configuration for the - specific task with format `:`. - items: - type: string - type: array - verbose: - description: Enable verbose logging on build components that - support it (e.g. Kaniko build pod). Deprecated no longer - in use - type: boolean - type: object - camel: - description: The Camel trait sets up Camel configuration. - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - properties: - description: A list of properties to be provided to the Integration - runtime - items: - type: string - type: array - runtimeVersion: - description: The camel-k-runtime version to use for the integration. - It overrides the default version set in the Integration - Platform. - type: string - type: object - quarkus: - description: 'The Quarkus trait configures the Quarkus runtime. - It''s enabled by default. NOTE: Compiling to a native executable, - requires at least 4GiB of memory, so the Pod running the native - build must have enough memory available.' - properties: - buildMode: - description: 'The Quarkus mode to run: either `jvm` or `native` - (default `jvm`). In case both `jvm` and `native` are specified, - two `IntegrationKit` resources are created, with the `native` - kit having precedence over the `jvm` one once ready.' - items: - description: QuarkusMode is the type of Quarkus build packaging. - enum: - - jvm - - native - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - nativeBaseImage: - description: The base image to use when running a native build - (default `quay.io/quarkus/quarkus-micro-image:2.0`) - type: string - nativeBuilderImage: - description: The image containing the tooling required for - a native build (by default it will use the one provided - in the runtime catalog) - type: string - packageTypes: - description: 'The Quarkus package types, `fast-jar` or `native` - (default `fast-jar`). In case both `fast-jar` and `native` - are specified, two `IntegrationKit` resources are created, - with the native kit having precedence over the `fast-jar` - one once ready. The order influences the resolution of the - current kit for the integration. The kit corresponding to - the first package type will be assigned to the integration - in case no existing kit that matches the integration exists. - Deprecated: use `build-mode` instead.' - items: - description: 'QuarkusPackageType is the type of Quarkus - build packaging. Deprecated: use `QuarkusMode` instead.' - enum: - - fast-jar - - native - type: string - type: array - type: object - registry: - description: 'The Registry trait sets up Maven to use the Image - registry as a Maven repository. Deprecated: use jvm trait or - read documentation.' - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - type: object version: description: the Camel K operator version for which this kit was configured type: string diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml index bbe33a05a7..000da77f6f 100644 --- a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml +++ b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml @@ -8082,1472 +8082,6 @@ spec: selector: description: label selector type: string - traits: - description: the traits generated and executed for this Integration - properties: - 3scale: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - addons: - additionalProperties: - description: AddonTrait represents the configuration of an addon - trait. - type: object - x-kubernetes-preserve-unknown-fields: true - description: The extension point with addon traits - type: object - affinity: - description: The configuration of Affinity trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - nodeAffinityLabels: - description: Defines a set of nodes the integration pod(s) - are eligible to be scheduled on, based on labels on the - node. - items: - type: string - type: array - podAffinity: - description: Always co-locates multiple replicas of the integration - in the same node (default `false`). - type: boolean - podAffinityLabels: - description: Defines a set of pods (namely those matching - the label selector, relative to the given namespace) that - the integration pod(s) should be co-located with. - items: - type: string - type: array - podAntiAffinity: - description: Never co-locates multiple replicas of the integration - in the same node (default `false`). - type: boolean - podAntiAffinityLabels: - description: Defines a set of pods (namely those matching - the label selector, relative to the given namespace) that - the integration pod(s) should not be co-located with. - items: - type: string - type: array - type: object - builder: - description: The configuration of Builder trait - properties: - annotations: - additionalProperties: - type: string - description: When using `pod` strategy, annotation to use - for the builder pod. - type: object - baseImage: - description: Specify a base image - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - incrementalImageBuild: - description: Use the incremental image build option, to reuse - existing containers (default `true`) - type: boolean - limitCPU: - description: 'When using `pod` strategy, the maximum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - limitMemory: - description: 'When using `pod` strategy, the maximum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - mavenProfiles: - description: 'A list of references pointing to configmaps/secrets - that contains a maven profile. The content of the maven - profile is expected to be a text containing a valid maven - profile starting with `` and ending with `` - that will be integrated as an inline profile in the POM. - Syntax: [configmap|secret]:name[/key], where name represents - the resource name, key optionally represents the resource - key to be filtered (default key value = profile.xml).' - items: - type: string - type: array - nodeSelector: - additionalProperties: - type: string - description: Defines a set of nodes the builder pod is eligible - to be scheduled on, based on labels on the node. - type: object - orderStrategy: - description: The build order strategy to use, either `dependencies`, - `fifo` or `sequential` (default `sequential`) - enum: - - dependencies - - fifo - - sequential - type: string - properties: - description: A list of properties to be provided to the build - task - items: - type: string - type: array - requestCPU: - description: 'When using `pod` strategy, the minimum amount - of CPU required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - requestMemory: - description: 'When using `pod` strategy, the minimum amount - of memory required by the pod builder. Deprecated: use TasksRequestCPU - instead with task name `builder`.' - type: string - strategy: - description: The strategy to use, either `pod` or `routine` - (default `routine`) - enum: - - pod - - routine - type: string - tasks: - description: A list of tasks to be executed (available only - when using `pod` strategy) with format `;;`. - items: - type: string - type: array - tasksFilter: - description: A list of tasks sorted by the order of execution - in a csv format, ie, `,,...`. Mind - that you must include also the operator tasks (`builder`, - `quarkus-native`, `package`, `jib`, `spectrum`, `s2i`) if - you need to execute them. Useful only with `pod` strategy. - type: string - tasksLimitCPU: - description: A list of limit cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksLimitMemory: - description: A list of limit memory configuration for the - specific task with format `:`. - items: - type: string - type: array - tasksRequestCPU: - description: A list of request cpu configuration for the specific - task with format `:`. - items: - type: string - type: array - tasksRequestMemory: - description: A list of request memory configuration for the - specific task with format `:`. - items: - type: string - type: array - verbose: - description: Enable verbose logging on build components that - support it (e.g. Kaniko build pod). Deprecated no longer - in use - type: boolean - type: object - camel: - description: The configuration of Camel trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - properties: - description: A list of properties to be provided to the Integration - runtime - items: - type: string - type: array - runtimeVersion: - description: The camel-k-runtime version to use for the integration. - It overrides the default version set in the Integration - Platform. - type: string - type: object - container: - description: The configuration of Container trait - properties: - auto: - description: To automatically enable the trait - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - expose: - description: Can be used to enable/disable exposure via kubernetes - Service. - type: boolean - image: - description: The main container image - type: string - imagePullPolicy: - description: 'The pull policy: Always|Never|IfNotPresent' - enum: - - Always - - Never - - IfNotPresent - type: string - limitCPU: - description: The maximum amount of CPU required. - type: string - limitMemory: - description: The maximum amount of memory required. - type: string - name: - description: The main container name. It's named `integration` - by default. - type: string - port: - description: To configure a different port exposed by the - container (default `8080`). - type: integer - portName: - description: To configure a different port name for the port - exposed by the container. It defaults to `http` only when - the `expose` parameter is true. - type: string - requestCPU: - description: The minimum amount of CPU required. - type: string - requestMemory: - description: The minimum amount of memory required. - type: string - servicePort: - description: To configure under which service port the container - port is to be exposed (default `80`). - type: integer - servicePortName: - description: To configure under which service port name the - container port is to be exposed (default `http`). - type: string - type: object - cron: - description: The configuration of Cron trait - properties: - activeDeadlineSeconds: - description: Specifies the duration in seconds, relative to - the start time, that the job may be continuously active - before it is considered to be failed. It defaults to 60s. - format: int64 - type: integer - auto: - description: "Automatically deploy the integration as CronJob - when all routes are either starting from a periodic consumer - (only `cron`, `timer` and `quartz` are supported) or a passive - consumer (e.g. `direct` is a passive consumer). \n It's - required that all periodic consumers have the same period, - and it can be expressed as cron schedule (e.g. `1m` can - be expressed as `0/1 * * * *`, while `35m` or `50s` cannot)." - type: boolean - backoffLimit: - description: Specifies the number of retries before marking - the job failed. It defaults to 2. - format: int32 - type: integer - components: - description: "A comma separated list of the Camel components - that need to be customized in order for them to work when - the schedule is triggered externally by Kubernetes. A specific - customizer is activated for each specified component. E.g. - for the `timer` component, the `cron-timer` customizer is - activated (it's present in the `org.apache.camel.k:camel-k-cron` - library). \n Supported components are currently: `cron`, - `timer` and `quartz`." - type: string - concurrencyPolicy: - description: 'Specifies how to treat concurrent executions - of a Job. Valid values are: - "Allow": allows CronJobs to - run concurrently; - "Forbid" (default): forbids concurrent - runs, skipping next run if previous run hasn''t finished - yet; - "Replace": cancels currently running job and replaces - it with a new one' - enum: - - Allow - - Forbid - - Replace - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - fallback: - description: Use the default Camel implementation of the `cron` - endpoint (`quartz`) instead of trying to materialize the - integration as Kubernetes CronJob. - type: boolean - schedule: - description: The CronJob schedule for the whole integration. - If multiple routes are declared, they must have the same - schedule for this mechanism to work correctly. - type: string - startingDeadlineSeconds: - description: Optional deadline in seconds for starting the - job if it misses scheduled time for any reason. Missed - jobs executions will be counted as failed ones. - format: int64 - type: integer - type: object - dependencies: - description: The configuration of Dependencies trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - type: object - deployer: - description: The configuration of Deployer trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - kind: - description: Allows to explicitly select the desired deployment - kind between `deployment`, `cron-job` or `knative-service` - when creating the resources for running the integration. - enum: - - deployment - - cron-job - - knative-service - type: string - useSSA: - description: Use server-side apply to update the owned resources - (default `true`). Note that it automatically falls back - to client-side patching, if SSA is not available, e.g., - on old Kubernetes clusters. - type: boolean - type: object - deployment: - description: The configuration of Deployment trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - progressDeadlineSeconds: - description: The maximum time in seconds for the deployment - to make progress before it is considered to be failed. It - defaults to `60s`. - format: int32 - type: integer - rollingUpdateMaxSurge: - description: 'The maximum number of pods that can be scheduled - above the desired number of pods. Value can be an absolute - number (ex: 5) or a percentage of desired pods (ex: 10%). - This can not be 0 if MaxUnavailable is 0. Absolute number - is calculated from percentage by rounding up. Defaults to - `25%`.' - type: integer - rollingUpdateMaxUnavailable: - description: 'The maximum number of pods that can be unavailable - during the update. Value can be an absolute number (ex: - 5) or a percentage of desired pods (ex: 10%). Absolute number - is calculated from percentage by rounding down. This can - not be 0 if MaxSurge is 0. Defaults to `25%`.' - type: integer - strategy: - description: The deployment strategy to use to replace existing - pods with new ones. - enum: - - Recreate - - RollingUpdate - type: string - type: object - environment: - description: The configuration of Environment trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - containerMeta: - description: Enables injection of `NAMESPACE` and `POD_NAME` - environment variables (default `true`) - type: boolean - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - httpProxy: - description: Propagates the `HTTP_PROXY`, `HTTPS_PROXY` and - `NO_PROXY` environment variables (default `true`) - type: boolean - vars: - description: A list of environment variables to be added to - the integration container. The syntax is KEY=VALUE, e.g., - `MY_VAR="my value"`. These take precedence over the previously - defined environment variables. - items: - type: string - type: array - type: object - error-handler: - description: The configuration of Error Handler trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - ref: - description: The error handler ref name provided or found - in application properties - type: string - type: object - gc: - description: The configuration of GC trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - discoveryCache: - description: 'Discovery client cache to be used, either `disabled`, - `disk` or `memory` (default `memory`). Deprecated: to be - removed from trait configuration.' - enum: - - disabled - - disk - - memory - type: string - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - health: - description: The configuration of Health trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - livenessFailureThreshold: - description: Minimum consecutive failures for the liveness - probe to be considered failed after having succeeded. - format: int32 - type: integer - livenessInitialDelay: - description: Number of seconds after the container has started - before the liveness probe is initiated. - format: int32 - type: integer - livenessPeriod: - description: How often to perform the liveness probe. - format: int32 - type: integer - livenessProbeEnabled: - description: Configures the liveness probe for the integration - container (default `false`). - type: boolean - livenessScheme: - description: Scheme to use when connecting to the liveness - probe (default `HTTP`). - type: string - livenessSuccessThreshold: - description: Minimum consecutive successes for the liveness - probe to be considered successful after having failed. - format: int32 - type: integer - livenessTimeout: - description: Number of seconds after which the liveness probe - times out. - format: int32 - type: integer - readinessFailureThreshold: - description: Minimum consecutive failures for the readiness - probe to be considered failed after having succeeded. - format: int32 - type: integer - readinessInitialDelay: - description: Number of seconds after the container has started - before the readiness probe is initiated. - format: int32 - type: integer - readinessPeriod: - description: How often to perform the readiness probe. - format: int32 - type: integer - readinessProbeEnabled: - description: Configures the readiness probe for the integration - container (default `true`). - type: boolean - readinessScheme: - description: Scheme to use when connecting to the readiness - probe (default `HTTP`). - type: string - readinessSuccessThreshold: - description: Minimum consecutive successes for the readiness - probe to be considered successful after having failed. - format: int32 - type: integer - readinessTimeout: - description: Number of seconds after which the readiness probe - times out. - format: int32 - type: integer - startupFailureThreshold: - description: Minimum consecutive failures for the startup - probe to be considered failed after having succeeded. - format: int32 - type: integer - startupInitialDelay: - description: Number of seconds after the container has started - before the startup probe is initiated. - format: int32 - type: integer - startupPeriod: - description: How often to perform the startup probe. - format: int32 - type: integer - startupProbeEnabled: - description: Configures the startup probe for the integration - container (default `false`). - type: boolean - startupScheme: - description: Scheme to use when connecting to the startup - probe (default `HTTP`). - type: string - startupSuccessThreshold: - description: Minimum consecutive successes for the startup - probe to be considered successful after having failed. - format: int32 - type: integer - startupTimeout: - description: Number of seconds after which the startup probe - times out. - format: int32 - type: integer - type: object - ingress: - description: The configuration of Ingress trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to the ingress. This can - be used to set controller specific annotations, e.g., when - using the NGINX Ingress controller: See https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md' - type: object - auto: - description: To automatically add an ingress whenever the - integration uses an HTTP endpoint consumer. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - host: - description: To configure the host exposed by the ingress. - type: string - path: - description: To configure the path exposed by the ingress - (default `/`). - type: string - pathType: - description: To configure the path type exposed by the ingress. - One of `Exact`, `Prefix`, `ImplementationSpecific` (default - to `Prefix`). - enum: - - Exact - - Prefix - - ImplementationSpecific - type: string - type: object - istio: - description: The configuration of Istio trait - properties: - allow: - description: Configures a (comma-separated) list of CIDR subnets - that should not be intercepted by the Istio proxy (`10.0.0.0/8,172.16.0.0/12,192.168.0.0/16` - by default). - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - inject: - description: Forces the value for labels `sidecar.istio.io/inject`. - By default the label is set to `true` on deployment and - not set on Knative Service. - type: boolean - type: object - jolokia: - description: The configuration of Jolokia trait - properties: - CACert: - description: The PEM encoded CA certification file path, used - to verify client certificates, applicable when `protocol` - is `https` and `use-ssl-client-authentication` is `true` - (default `/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt` - for OpenShift). - type: string - clientPrincipal: - description: The principal(s) which must be given in a client - certificate to allow access to the Jolokia endpoint, applicable - when `protocol` is `https` and `use-ssl-client-authentication` - is `true` (default `clientPrincipal=cn=system:master-proxy`, - `cn=hawtio-online.hawtio.svc` and `cn=fuse-console.fuse.svc` - for OpenShift). - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - discoveryEnabled: - description: Listen for multicast requests (default `false`) - type: boolean - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - extendedClientCheck: - description: Mandate the client certificate contains a client - flag in the extended key usage section, applicable when - `protocol` is `https` and `use-ssl-client-authentication` - is `true` (default `true` for OpenShift). - type: boolean - host: - description: The Host address to which the Jolokia agent should - bind to. If `"\*"` or `"0.0.0.0"` is given, the servers - binds to every network interface (default `"*"`). - type: string - options: - description: A list of additional Jolokia options as defined - in https://jolokia.org/reference/html/agents.html#agent-jvm-config[JVM - agent configuration options] - items: - type: string - type: array - password: - description: The password used for authentication, applicable - when the `user` option is set. - type: string - port: - description: The Jolokia endpoint port (default `8778`). - type: integer - protocol: - description: The protocol to use, either `http` or `https` - (default `https` for OpenShift) - type: string - useSSLClientAuthentication: - description: Whether client certificates should be used for - authentication (default `true` for OpenShift). - type: boolean - user: - description: The user to be used for authentication - type: string - type: object - jvm: - description: The configuration of JVM trait - properties: - classpath: - description: Additional JVM classpath (use `Linux` classpath - separator) - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - debug: - description: Activates remote debugging, so that a debugger - can be attached to the JVM, e.g., using port-forwarding - type: boolean - debugAddress: - description: Transport address at which to listen for the - newly launched JVM (default `*:5005`) - type: string - debugSuspend: - description: Suspends the target JVM immediately before the - main class is loaded - type: boolean - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - options: - description: A list of JVM options - items: - type: string - type: array - printCommand: - description: Prints the command used the start the JVM in - the container logs (default `true`) - type: boolean - type: object - kamelets: - description: The configuration of Kamelets trait - properties: - auto: - description: Automatically inject all referenced Kamelets - and their default configuration (enabled by default) - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - list: - description: Comma separated list of Kamelet names to load - into the current integration - type: string - mountPoint: - description: The directory where the application mounts and - reads Kamelet spec (default `/etc/camel/kamelets`) - type: string - type: object - keda: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - knative: - description: The configuration of Knative trait - properties: - auto: - description: Enable automatic discovery of all trait properties. - type: boolean - channelSinks: - description: List of channels used as destination of integration - routes. Can contain simple channel names or full Camel URIs. - items: - type: string - type: array - channelSources: - description: List of channels used as source of integration - routes. Can contain simple channel names or full Camel URIs. - items: - type: string - type: array - config: - description: Can be used to inject a Knative complete configuration - in JSON format. - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - endpointSinks: - description: List of endpoints used as destination of integration - routes. Can contain simple endpoint names or full Camel - URIs. - items: - type: string - type: array - endpointSources: - description: List of channels used as source of integration - routes. - items: - type: string - type: array - eventSinks: - description: List of event types that the integration will - produce. Can contain simple event types or full Camel URIs - (to use a specific broker). - items: - type: string - type: array - eventSources: - description: List of event types that the integration will - be subscribed to. Can contain simple event types or full - Camel URIs (to use a specific broker different from "default"). - items: - type: string - type: array - filterSourceChannels: - description: Enables filtering on events based on the header - "ce-knativehistory". Since this header has been removed - in newer versions of Knative, filtering is disabled by default. - type: boolean - namespaceLabel: - description: 'Enables the camel-k-operator to set the "bindings.knative.dev/include=true" - label to the namespace As Knative requires this label to - perform injection of K_SINK URL into the service. If this - is false, the integration pod may start and fail, read the - SinkBinding Knative documentation. (default: true)' - type: boolean - sinkBinding: - description: Allows binding the integration to a sink via - a Knative SinkBinding resource. This can be used when the - integration targets a single sink. It's enabled by default - when the integration targets a single sink (except when - the integration is owned by a Knative source). - type: boolean - type: object - knative-service: - description: The configuration of Knative Service trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to route. This can be - used to set knative service specific annotations CLI usage - example: -t "knative-service.annotations.''haproxy.router.openshift.io/balance''=true"' - type: object - auto: - description: "Automatically deploy the integration as Knative - service when all conditions hold: \n * Integration is using - the Knative profile * All routes are either starting from - an HTTP based consumer or a passive consumer (e.g. `direct` - is a passive consumer)" - type: boolean - autoscalingMetric: - description: "Configures the Knative autoscaling metric property - (e.g. to set `concurrency` based or `cpu` based autoscaling). - \n Refer to the Knative documentation for more information." - type: string - autoscalingTarget: - description: "Sets the allowed concurrency level or CPU percentage - (depending on the autoscaling metric) for each Pod. \n Refer - to the Knative documentation for more information." - type: integer - class: - description: "Configures the Knative autoscaling class property - (e.g. to set `hpa.autoscaling.knative.dev` or `kpa.autoscaling.knative.dev` - autoscaling). \n Refer to the Knative documentation for - more information." - enum: - - kpa.autoscaling.knative.dev - - hpa.autoscaling.knative.dev - type: string - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - maxScale: - description: "An upper bound for the number of Pods that can - be running in parallel for the integration. Knative has - its own cap value that depends on the installation. \n Refer - to the Knative documentation for more information." - type: integer - minScale: - description: "The minimum number of Pods that should be running - at any time for the integration. It's **zero** by default, - meaning that the integration is scaled down to zero when - not used for a configured amount of time. \n Refer to the - Knative documentation for more information." - type: integer - rolloutDuration: - description: Enables to gradually shift traffic to the latest - Revision and sets the rollout duration. It's disabled by - default and must be expressed as a Golang `time.Duration` - string representation, rounded to a second precision. - type: string - visibility: - description: "Setting `cluster-local`, Knative service becomes - a private service. Specifically, this option applies the - `networking.knative.dev/visibility` label to Knative service. - \n Refer to the Knative documentation for more information." - enum: - - cluster-local - type: string - type: object - logging: - description: The configuration of Logging trait - properties: - color: - description: Colorize the log output - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - format: - description: Logs message format - type: string - json: - description: Output the logs in JSON - type: boolean - jsonPrettyPrint: - description: Enable "pretty printing" of the JSON logs - type: boolean - level: - description: Adjust the logging level (defaults to `INFO`) - enum: - - FATAL - - WARN - - INFO - - DEBUG - - TRACE - type: string - type: object - master: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - mount: - description: The configuration of Mount trait - properties: - configs: - description: 'A list of configuration pointing to configmap/secret. - The configuration are expected to be UTF-8 resources as - they are processed by runtime Camel Context and tried to - be parsed as property files. They are also made available - on the classpath in order to ease their usage directly from - the Route. Syntax: [configmap|secret]:name[/key], where - name represents the resource name and key optionally represents - the resource key to be filtered' - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - hotReload: - description: Enable "hot reload" when a secret/configmap mounted - is edited (default `false`). The configmap/secret must be - marked with `camel.apache.org/integration` label to be taken - in account. The resource will be watched for any kind change, - also for changes in metadata. - type: boolean - resources: - description: 'A list of resources (text or binary content) - pointing to configmap/secret. The resources are expected - to be any resource type (text or binary content). The destination - path can be either a default location or any path specified - by the user. Syntax: [configmap|secret]:name[/key][@path], - where name represents the resource name, key optionally - represents the resource key to be filtered and path represents - the destination path' - items: - type: string - type: array - scanKameletsImplicitLabelSecrets: - description: 'Deprecated: include your properties in an explicit - property file backed by a secret. Let the operator to scan - for secret labeled with `camel.apache.org/kamelet` and `camel.apache.org/kamelet.configuration`. - These secrets are mounted to the application and treated - as plain properties file with their key/value list (ie .spec.data["camel.my-property"] - = my-value) (default `true`).' - type: boolean - volumes: - description: 'A list of Persistent Volume Claims to be mounted. - Syntax: [pvcname:/container/path]' - items: - type: string - type: array - type: object - openapi: - description: The configuration of OpenAPI trait - properties: - configmaps: - description: The configmaps holding the spec of the OpenAPI - items: - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - type: object - owner: - description: The configuration of Owner trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - targetAnnotations: - description: The set of annotations to be transferred - items: - type: string - type: array - targetLabels: - description: The set of labels to be transferred - items: - type: string - type: array - type: object - pdb: - description: The configuration of PDB trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - maxUnavailable: - description: The number of pods for the Integration that can - be unavailable after an eviction. It can be either an absolute - number or a percentage (default `1` if `min-available` is - also not set). Only one of `max-unavailable` and `min-available` - can be specified. - type: string - minAvailable: - description: The number of pods for the Integration that must - still be available after an eviction. It can be either an - absolute number or a percentage. Only one of `min-available` - and `max-unavailable` can be specified. - type: string - type: object - platform: - description: The configuration of Platform trait - properties: - auto: - description: 'To automatically detect from the environment - if a default platform can be created (it will be created - on OpenShift or when a registry address is set). Deprecated: - Platform is auto generated by the operator install procedure - - maintained for backward compatibility' - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - createDefault: - description: 'To create a default (empty) platform when the - platform is missing. Deprecated: Platform is auto generated - by the operator install procedure - maintained for backward - compatibility' - type: boolean - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - global: - description: 'Indicates if the platform should be created - globally in the case of global operator (default true). - Deprecated: Platform is auto generated by the operator install - procedure - maintained for backward compatibility' - type: boolean - type: object - pod: - description: The configuration of Pod trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - prometheus: - description: The configuration of Prometheus trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - podMonitor: - description: Whether a `PodMonitor` resource is created (default - `true`). - type: boolean - podMonitorLabels: - description: The `PodMonitor` resource labels, applicable - when `pod-monitor` is `true`. - items: - type: string - type: array - type: object - pull-secret: - description: The configuration of Pull Secret trait - properties: - auto: - description: Automatically configures the platform registry - secret on the pod if it is of type `kubernetes.io/dockerconfigjson`. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - imagePullerDelegation: - description: When using a global operator with a shared platform, - this enables delegation of the `system:image-puller` cluster - role on the operator namespace to the integration service - account. - type: boolean - secretName: - description: The pull secret name to set on the Pod. If left - empty this is automatically taken from the `IntegrationPlatform` - registry configuration. - type: string - type: object - quarkus: - description: The configuration of Quarkus trait - properties: - buildMode: - description: 'The Quarkus mode to run: either `jvm` or `native` - (default `jvm`). In case both `jvm` and `native` are specified, - two `IntegrationKit` resources are created, with the `native` - kit having precedence over the `jvm` one once ready.' - items: - description: QuarkusMode is the type of Quarkus build packaging. - enum: - - jvm - - native - type: string - type: array - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: 'Deprecated: no longer in use.' - type: boolean - nativeBaseImage: - description: The base image to use when running a native build - (default `quay.io/quarkus/quarkus-micro-image:2.0`) - type: string - nativeBuilderImage: - description: The image containing the tooling required for - a native build (by default it will use the one provided - in the runtime catalog) - type: string - packageTypes: - description: 'The Quarkus package types, `fast-jar` or `native` - (default `fast-jar`). In case both `fast-jar` and `native` - are specified, two `IntegrationKit` resources are created, - with the native kit having precedence over the `fast-jar` - one once ready. The order influences the resolution of the - current kit for the integration. The kit corresponding to - the first package type will be assigned to the integration - in case no existing kit that matches the integration exists. - Deprecated: use `build-mode` instead.' - items: - description: 'QuarkusPackageType is the type of Quarkus - build packaging. Deprecated: use `QuarkusMode` instead.' - enum: - - fast-jar - - native - type: string - type: array - type: object - registry: - description: 'The configuration of Registry trait Deprecated: - use jvm trait or read documentation.' - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - type: object - route: - description: The configuration of Route trait - properties: - annotations: - additionalProperties: - type: string - description: 'The annotations added to route. This can be - used to set route specific annotations For annotations options - see https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html#route-specific-annotations - CLI usage example: -t "route.annotations.''haproxy.router.openshift.io/balance''=true"' - type: object - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - host: - description: To configure the host exposed by the route. - type: string - tlsCACertificate: - description: "The TLS CA certificate contents. \n Refer to - the OpenShift route documentation for additional information." - type: string - tlsCACertificateSecret: - description: "The secret name and key reference to the TLS - CA certificate. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsCertificate: - description: "The TLS certificate contents. \n Refer to the - OpenShift route documentation for additional information." - type: string - tlsCertificateSecret: - description: "The secret name and key reference to the TLS - certificate. The format is \"secret-name[/key-name]\", the - value represents the secret name, if there is only one key - in the secret it will be read, otherwise you can set a key - name separated with a \"/\". \n Refer to the OpenShift route - documentation for additional information." - type: string - tlsDestinationCACertificate: - description: "The destination CA certificate provides the - contents of the ca certificate of the final destination. - \ When using reencrypt termination this file should be provided - in order to have routers use it for health checks on the - secure connection. If this field is not specified, the router - may provide its own destination CA and perform hostname - validation using the short service name (service.namespace.svc), - which allows infrastructure generated certificates to automatically - verify. \n Refer to the OpenShift route documentation for - additional information." - type: string - tlsDestinationCACertificateSecret: - description: "The secret name and key reference to the destination - CA certificate. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsInsecureEdgeTerminationPolicy: - description: "To configure how to deal with insecure traffic, - e.g. `Allow`, `Disable` or `Redirect` traffic. \n Refer - to the OpenShift route documentation for additional information." - enum: - - None - - Allow - - Redirect - type: string - tlsKey: - description: "The TLS certificate key contents. \n Refer to - the OpenShift route documentation for additional information." - type: string - tlsKeySecret: - description: "The secret name and key reference to the TLS - certificate key. The format is \"secret-name[/key-name]\", - the value represents the secret name, if there is only one - key in the secret it will be read, otherwise you can set - a key name separated with a \"/\". \n Refer to the OpenShift - route documentation for additional information." - type: string - tlsTermination: - description: "The TLS termination type, like `edge`, `passthrough` - or `reencrypt`. \n Refer to the OpenShift route documentation - for additional information." - enum: - - edge - - reencrypt - - passthrough - type: string - type: object - service: - description: The configuration of Service trait - properties: - auto: - description: To automatically detect from the code if a Service - needs to be created. - type: boolean - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - nodePort: - description: 'Enable Service to be exposed as NodePort (default - `false`). Deprecated: Use service type instead.' - type: boolean - type: - description: The type of service to be used, either 'ClusterIP', - 'NodePort' or 'LoadBalancer'. - enum: - - ClusterIP - - NodePort - - LoadBalancer - type: string - type: object - service-binding: - description: The configuration of Service Binding trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - services: - description: List of Services in the form [[apigroup/]version:]kind:[namespace/]name - items: - type: string - type: array - type: object - strimzi: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - toleration: - description: The configuration of Toleration trait - properties: - configuration: - description: 'Legacy trait configuration parameters. Deprecated: - for backward compatibility.' - type: object - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Can be used to enable or disable a trait. All - traits share this common property. - type: boolean - taints: - description: The list of taints to tolerate, in the form `Key[=Value]:Effect[:Seconds]` - items: - type: string - type: array - type: object - tracing: - description: 'Deprecated: for backward compatibility.' - properties: - configuration: - description: TraitConfiguration parameters configuration - type: object - x-kubernetes-preserve-unknown-fields: true - required: - - configuration - type: object - type: object version: description: the operator version type: string diff --git a/pkg/trait/trait.go b/pkg/trait/trait.go index 4ac35aa147..48e45b4d03 100644 --- a/pkg/trait/trait.go +++ b/pkg/trait/trait.go @@ -85,14 +85,8 @@ func Apply(ctx context.Context, c client.Client, integration *v1.Integration, ki switch { case integration != nil: ilog.Debug("Applied traits to Integration", "integration", integration.Name, "namespace", integration.Namespace) - // The spec.traits may have been altered by other traits execution. We can save here the status for future - // reference - integration.Status.Traits = integration.Spec.Traits case kit != nil: ilog.Debug("Applied traits to Integration kit", "integration kit", kit.Name, "namespace", kit.Namespace) - // The spec.traits may have been altered by other traits execution We can save here the status for future - // reference - kit.Status.Traits = kit.Spec.Traits default: ilog.Debug("Applied traits") } diff --git a/pkg/trait/util.go b/pkg/trait/util.go index 19089baac3..fe1190ea65 100644 --- a/pkg/trait/util.go +++ b/pkg/trait/util.go @@ -492,10 +492,6 @@ func newTraitsOptionsForIntegrationKit(i *v1.IntegrationKit, traits v1.Integrati return newTraitsOptions(m1, &i.ObjectMeta) } -func NewStatusTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) { - return newTraitsOptionsForIntegrationKit(i, i.Status.Traits) -} - func NewSpecTraitsOptionsForIntegrationKit(i *v1.IntegrationKit) (Options, error) { return newTraitsOptionsForIntegrationKit(i, i.Spec.Traits) } diff --git a/pkg/util/digest/digest.go b/pkg/util/digest/digest.go index 25798a52df..50978725af 100644 --- a/pkg/util/digest/digest.go +++ b/pkg/util/digest/digest.go @@ -118,9 +118,6 @@ func ComputeForIntegration(integration *v1.Integration, configmapVersions []stri if err := computeForTraits(hash, integration.Spec.Traits); err != nil { return "", err } - if err := computeForTraits(hash, integration.Status.Traits); err != nil { - return "", err - } // Integration traits as annotations for _, k := range sortedTraitAnnotationsKeys(integration) { diff --git a/pkg/util/digest/digest_test.go b/pkg/util/digest/digest_test.go index c7fbde62e7..dd019fe60b 100644 --- a/pkg/util/digest/digest_test.go +++ b/pkg/util/digest/digest_test.go @@ -141,44 +141,10 @@ func TestDigestMatchingTraitsUpdated(t *testing.T) { }, } - itStatusOnlyTraitUpdated := v1.Integration{ - Spec: v1.IntegrationSpec{}, - Status: v1.IntegrationStatus{ - Traits: v1.Traits{ - Camel: &trait.CamelTrait{ - Properties: []string{"hello=world2"}, - }, - }, - }, - } - itDigest, err := ComputeForIntegration(&it, nil, nil) require.NoError(t, err) itSpecOnlyTraitUpdatedDigest, err := ComputeForIntegration(&itSpecOnlyTraitUpdated, nil, nil) require.NoError(t, err) - itStatusOnlyTraitUpdatedDigest, err := ComputeForIntegration(&itStatusOnlyTraitUpdated, nil, nil) - require.NoError(t, err) assert.NotEqual(t, itSpecOnlyTraitUpdatedDigest, itDigest, "Digests must not be equal") - assert.NotEqual(t, itStatusOnlyTraitUpdatedDigest, itDigest, "Digests must not be equal") - assert.Equal(t, itSpecOnlyTraitUpdatedDigest, itStatusOnlyTraitUpdatedDigest, "Digests must be equal") -} - -func TestSpecStatusDrift(t *testing.T) { - it := v1.Integration{} - it.Spec.Traits.Camel = &trait.CamelTrait{} - it.Status.Traits.Camel = &trait.CamelTrait{} - - it.Spec.Traits.Camel.Properties = []string{"hello=world1"} - d1, err := ComputeForIntegration(&it, nil, nil) - require.NoError(t, err) - it.Status.Traits.Camel.Properties = []string{"hello=world2"} - d2, err := ComputeForIntegration(&it, nil, nil) - require.NoError(t, err) - it.Spec.Traits.Camel.Properties = []string{"hello=world3"} - d3, err := ComputeForIntegration(&it, nil, nil) - require.NoError(t, err) - - assert.NotEqual(t, d2, d1, "d2 must not be equal to d1") - assert.NotEqual(t, d3, d2, "d3 must not be equal to d2") }