| [[traits]] |
| = Traits |
| |
| Traits are high level named features of Camel K that can be enabled/disabled or configured to customize the |
| behavior of the final integration. |
| |
| Camel K provide sensible defaults for all such traits, taking into account the details of the target platform where |
| the integration is going to run into. However, it's possible for a **expert user** to configure them in |
| order to obtain a different behavior. |
| |
| [[traits-configuration]] |
| == Configuration |
| |
| Each trait has a unique ID that can be used to configure it using the command line tool. |
| |
| E.g. in order to disable the creation of a Service for a integration, a user can execute: |
| |
| ``` |
| kamel run --trait service.enabled=false file.groovy |
| ``` |
| |
| The flag `--trait` can be also abbreviated with `-t`. |
| |
| The `enabled` property is available on all traits and can be used to enable/disable them. All traits have their own |
| internal logic to determine if they need to be enabled when the user does not activate them explicitly. |
| |
| Some traits share also a `auto` property that can be used to enable/disable auto-configuration of the trait based on the |
| environment. The auto-configuration mechanism is able to enable/disable the trait when the `enabled` property is not explicitly |
| set by the user and also change the trait configuration. |
| |
| NOTE: Some traits are applicable only to specific platforms (see the "profiles" in the trait description page). |
| |
| A trait may have additional properties that can be configured by the end user. |
| |
| [[traits-integration-spec]] |
| === Configure the Integration spec |
| |
| Let's use a further example to show how to configure a trait in an `Integration`. If you want to set an additional `JVM` classpath pointing to a known dependency, we can use the CLI as we've seen above: |
| |
| [source,console] |
| ---- |
| $ kamel run --trait jvm.classpath=/path/to/my.jar MyIntegration.java |
| ---- |
| |
| The command is creating an `Integration` with the configuration below: |
| |
| [source,yaml] |
| ---- |
| apiVersion: camel.apache.org/v1 |
| kind: Integration |
| metadata: |
| name: my-integration |
| spec: |
| traits: |
| jvm: |
| configuration: |
| classpath: /path/to/my.jar |
| ... |
| ---- |
| |
| The `.spec.traits` holds an array of traits, identified by their id (`jvm`, in this case). Then, the `.jvm.configuration.classpath` is the property we want to set. If you need to set a trait directly in the `Integration` spec, then, you should proceed in the way illustrated above. |
| |
| [[traits-list]] |
| == List of available traits |
| There are indexCount:[] traits. See each trait description page for more information on a specific trait: |
| |
| indexList::[] |