This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 1e85c97d3995 CAMEL-16861: Update docs
1e85c97d3995 is described below
commit 1e85c97d3995478cbe0ff59641b6c88f47640572
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Feb 24 20:35:07 2026 +0100
CAMEL-16861: Update docs
---
.../org/apache/camel/catalog/dataformats/pgp.json | 2 +-
.../camel/catalog/dataformats/xmlSecurity.json | 2 +-
.../org/apache/camel/catalog/models/pgp.json | 2 +-
.../apache/camel/catalog/models/xmlSecurity.json | 2 +-
.../org/apache/camel/converter/crypto/pgp.json | 2 +-
.../src/main/docs/pgp-dataformat.adoc | 4 +-
.../camel/dataformat/xmlsecurity/xmlSecurity.json | 2 +-
.../org/apache/camel/model/dataformat/pgp.json | 2 +-
.../apache/camel/model/dataformat/xmlSecurity.json | 2 +-
.../camel/model/dataformat/PGPDataFormat.java | 3 +-
.../model/dataformat/XMLSecurityDataFormat.java | 2 +-
docs/components/modules/dataformats/nav.adoc | 2 +-
.../modules/ROOT/pages/scheduledroutepolicy.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/security.adoc | 1249 ++++++++++++++++----
.../modules/ROOT/pages/service-registry.adoc | 12 +-
.../dsl/yaml/deserializers/ModelDeserializers.java | 2 +-
.../generated/resources/schema/camelYamlDsl.json | 2 +-
17 files changed, 1060 insertions(+), 236 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/pgp.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/pgp.json
index dae60719f70a..d8d246f2dc3b 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/pgp.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/pgp.json
@@ -2,7 +2,7 @@
"dataformat": {
"kind": "dataformat",
"name": "pgp",
- "title": "PGP",
+ "title": "PGP (Pretty Good Privacy Cryptographic)",
"description": "Encrypt and decrypt messages using Java Cryptographic
Extension (JCE) and PGP.",
"deprecated": false,
"firstVersion": "2.9.0",
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/xmlSecurity.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/xmlSecurity.json
index 68ba09d31c81..4307eb84f290 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/xmlSecurity.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/xmlSecurity.json
@@ -6,7 +6,7 @@
"description": "Encrypt and decrypt XML payloads using Apache Santuario.",
"deprecated": false,
"firstVersion": "2.0.0",
- "label": "dataformat,transformation,xml",
+ "label": "dataformat,transformation,security,xml",
"javaType":
"org.apache.camel.dataformat.xmlsecurity.XMLSecurityDataFormat",
"supportLevel": "Stable",
"groupId": "org.apache.camel",
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pgp.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pgp.json
index fda39c0a7b56..1b21ee02d5a0 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pgp.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pgp.json
@@ -2,7 +2,7 @@
"model": {
"kind": "model",
"name": "pgp",
- "title": "PGP",
+ "title": "PGP (Pretty Good Privacy Cryptographic)",
"description": "Encrypt and decrypt messages using Java Cryptographic
Extension (JCE) and PGP.",
"deprecated": false,
"firstVersion": "2.9.0",
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/xmlSecurity.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/xmlSecurity.json
index 4a778ce9dff5..9151422b679a 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/xmlSecurity.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/xmlSecurity.json
@@ -6,7 +6,7 @@
"description": "Encrypt and decrypt XML payloads using Apache Santuario.",
"deprecated": false,
"firstVersion": "2.0.0",
- "label": "dataformat,transformation,xml",
+ "label": "dataformat,transformation,security,xml",
"javaType": "org.apache.camel.model.dataformat.XMLSecurityDataFormat",
"abstract": false,
"input": false,
diff --git
a/components/camel-crypto-pgp/src/generated/resources/META-INF/org/apache/camel/converter/crypto/pgp.json
b/components/camel-crypto-pgp/src/generated/resources/META-INF/org/apache/camel/converter/crypto/pgp.json
index dae60719f70a..d8d246f2dc3b 100644
---
a/components/camel-crypto-pgp/src/generated/resources/META-INF/org/apache/camel/converter/crypto/pgp.json
+++
b/components/camel-crypto-pgp/src/generated/resources/META-INF/org/apache/camel/converter/crypto/pgp.json
@@ -2,7 +2,7 @@
"dataformat": {
"kind": "dataformat",
"name": "pgp",
- "title": "PGP",
+ "title": "PGP (Pretty Good Privacy Cryptographic)",
"description": "Encrypt and decrypt messages using Java Cryptographic
Extension (JCE) and PGP.",
"deprecated": false,
"firstVersion": "2.9.0",
diff --git a/components/camel-crypto-pgp/src/main/docs/pgp-dataformat.adoc
b/components/camel-crypto-pgp/src/main/docs/pgp-dataformat.adoc
index 47373b795543..65d8a16ce597 100644
--- a/components/camel-crypto-pgp/src/main/docs/pgp-dataformat.adoc
+++ b/components/camel-crypto-pgp/src/main/docs/pgp-dataformat.adoc
@@ -1,5 +1,5 @@
-= PGP DataFormat
-:doctitle: PGP
+= PGP (Pretty Good Privacy Cryptographic) DataFormat
+:doctitle: PGP (Pretty Good Privacy Cryptographic)
:shortname: pgp
:artifactid: camel-crypto-pgp
:description: Encrypt and decrypt messages using Java Cryptographic Extension
(JCE) and PGP.
diff --git
a/components/camel-xmlsecurity/src/generated/resources/META-INF/org/apache/camel/dataformat/xmlsecurity/xmlSecurity.json
b/components/camel-xmlsecurity/src/generated/resources/META-INF/org/apache/camel/dataformat/xmlsecurity/xmlSecurity.json
index 68ba09d31c81..4307eb84f290 100644
---
a/components/camel-xmlsecurity/src/generated/resources/META-INF/org/apache/camel/dataformat/xmlsecurity/xmlSecurity.json
+++
b/components/camel-xmlsecurity/src/generated/resources/META-INF/org/apache/camel/dataformat/xmlsecurity/xmlSecurity.json
@@ -6,7 +6,7 @@
"description": "Encrypt and decrypt XML payloads using Apache Santuario.",
"deprecated": false,
"firstVersion": "2.0.0",
- "label": "dataformat,transformation,xml",
+ "label": "dataformat,transformation,security,xml",
"javaType":
"org.apache.camel.dataformat.xmlsecurity.XMLSecurityDataFormat",
"supportLevel": "Stable",
"groupId": "org.apache.camel",
diff --git
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/pgp.json
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/pgp.json
index fda39c0a7b56..1b21ee02d5a0 100644
---
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/pgp.json
+++
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/pgp.json
@@ -2,7 +2,7 @@
"model": {
"kind": "model",
"name": "pgp",
- "title": "PGP",
+ "title": "PGP (Pretty Good Privacy Cryptographic)",
"description": "Encrypt and decrypt messages using Java Cryptographic
Extension (JCE) and PGP.",
"deprecated": false,
"firstVersion": "2.9.0",
diff --git
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/xmlSecurity.json
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/xmlSecurity.json
index 4a778ce9dff5..9151422b679a 100644
---
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/xmlSecurity.json
+++
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/xmlSecurity.json
@@ -6,7 +6,7 @@
"description": "Encrypt and decrypt XML payloads using Apache Santuario.",
"deprecated": false,
"firstVersion": "2.0.0",
- "label": "dataformat,transformation,xml",
+ "label": "dataformat,transformation,security,xml",
"javaType": "org.apache.camel.model.dataformat.XMLSecurityDataFormat",
"abstract": false,
"input": false,
diff --git
a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
index 9923cf7b06b2..f1d9ad3a5e1c 100644
---
a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
+++
b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/PGPDataFormat.java
@@ -29,7 +29,8 @@ import org.apache.camel.spi.Metadata;
/**
* Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and
PGP.
*/
-@Metadata(firstVersion = "2.9.0", label =
"dataformat,transformation,security", title = "PGP")
+@Metadata(firstVersion = "2.9.0", label = "dataformat,transformation,security",
+ title = "PGP (Pretty Good Privacy Cryptographic)")
@XmlRootElement(name = "pgp")
@XmlAccessorType(XmlAccessType.FIELD)
public class PGPDataFormat extends DataFormatDefinition {
diff --git
a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
index 26ba52c01050..7e27322f4d00 100644
---
a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
+++
b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/XMLSecurityDataFormat.java
@@ -35,7 +35,7 @@ import org.apache.camel.support.jsse.KeyStoreParameters;
/**
* Encrypt and decrypt XML payloads using Apache Santuario.
*/
-@Metadata(firstVersion = "2.0.0", label = "dataformat,transformation,xml",
title = "XML Security")
+@Metadata(firstVersion = "2.0.0", label =
"dataformat,transformation,security,xml", title = "XML Security")
@XmlRootElement(name = "xmlSecurity")
@XmlAccessorType(XmlAccessType.FIELD)
public class XMLSecurityDataFormat extends DataFormatDefinition implements
NamespaceAware {
diff --git a/docs/components/modules/dataformats/nav.adoc
b/docs/components/modules/dataformats/nav.adoc
index a6d116915726..cf82edf790ec 100644
--- a/docs/components/modules/dataformats/nav.adoc
+++ b/docs/components/modules/dataformats/nav.adoc
@@ -34,7 +34,7 @@
** xref:mimeMultipart-dataformat.adoc[MIME Multipart]
** xref:ocsf-dataformat.adoc[OCSF]
** xref:parquetAvro-dataformat.adoc[Parquet File]
-** xref:pgp-dataformat.adoc[PGP]
+** xref:pgp-dataformat.adoc[PGP (Pretty Good Privacy Cryptographic)]
** xref:pqc-dataformat.adoc[PQC (Post-Quantum Cryptography)]
** xref:protobuf-dataformat.adoc[Protobuf]
** xref:protobufJackson-dataformat.adoc[Protobuf Jackson]
diff --git a/docs/user-manual/modules/ROOT/pages/scheduledroutepolicy.adoc
b/docs/user-manual/modules/ROOT/pages/scheduledroutepolicy.adoc
index b2fb68846bde..d383d036d047 100644
--- a/docs/user-manual/modules/ROOT/pages/scheduledroutepolicy.adoc
+++ b/docs/user-manual/modules/ROOT/pages/scheduledroutepolicy.adoc
@@ -21,7 +21,7 @@ route resumption and client requests will be accepted by the
route
consumer to be forwarded along the route.
Camel offers two such concrete policies that offer scheduled route policy
-support:
+support in the `camel-quartz` component:
* xref:simplescheduledroutepolicy.adoc[SimpleScheduledRoutePolicy] - An
ability to offer route scheduling services using a Simple
xref:components::quartz-component.adoc[Quartz] trigger.
@@ -31,4 +31,4 @@ trigger.
== More Information
-See xref:route-policy.adoc[Route Policy]
\ No newline at end of file
+See xref:route-policy.adoc[Route Policy] and
xref:components::quartz-component.adoc[Quartz] component.
\ No newline at end of file
diff --git a/docs/user-manual/modules/ROOT/pages/security.adoc
b/docs/user-manual/modules/ROOT/pages/security.adoc
index e0444ec69420..6bf4ee7311ee 100644
--- a/docs/user-manual/modules/ROOT/pages/security.adoc
+++ b/docs/user-manual/modules/ROOT/pages/security.adoc
@@ -25,10 +25,10 @@ Authentication and Authorization Services
Camel offers xref:route-policy.adoc[Route Policy] driven security capabilities
that may be wired into
routes or route segments. A route policy in Camel utilizes a strategy pattern
for applying interceptors on Camel Processors. It's offering the ability
-to apply cross-cutting concerns (for example. security, transactions etc) of a
Camel route.
+to apply cross-cutting concerns (for example. security, transactions etc.) of
a Camel route.
The components offering authentication and authorization services
-utilizing xref:route-policy.adoc[Route Policy] are:
+utilizing xref:route-policy.adoc[Route Policy] based on
`org.apache.camel.spi.AuthorizationPolicy` are:
* xref:components:others:shiro.adoc[Shiro Security]
* xref:components:others:spring-security.adoc[Spring Security]
@@ -39,17 +39,18 @@ Camel offers encryption/decryption services to secure
payloads or
selectively apply encryption/decryption capabilities on
portions/sections of a payload.
-The dataformats offering encryption/decryption of payloads
+The data-formats offering encryption/decryption of payloads
utilizing xref:components:eips:marshal-eip.adoc[Marshal] are:
* xref:components:dataformats:crypto-dataformat.adoc[Crypto]
* xref:components:dataformats:pgp-dataformat.adoc[PGP]
-* xref:components:dataformats:xmlSecurity-dataformat.adoc[XML security]
+* xref:components:dataformats:pqc-dataformat.adoc[Post Quantum Cryptography]
+* xref:components:dataformats:xmlSecurity-dataformat.adoc[XML Security]
== Endpoint Security
Some components in Camel offer an ability to secure their endpoints
-(using interceptors etc) and therefore ensure that they offer the
+(using interceptors etc.) and therefore ensure that they offer the
ability to secure payloads as well as provide
authentication/authorization capabilities at endpoints created using the
components.
@@ -71,10 +72,11 @@ Camel also supports accessing the secured configuration
from an external vault s
The following _Vaults_ are supported by Camel:
* xref:components::aws-secrets-manager-component.adoc[AWS Secrets Manager]
-* xref:components::google-secret-manager-component.adoc[Google Secret Manager]
* xref:components::azure-key-vault-component.adoc[Azure Key Vault]
+* xref:components::cyberark-vault-component.adoc[CyberArk Conjur Vault]
+* xref:components::google-secret-manager-component.adoc[Google Secret Manager]
* xref:components::hashicorp-vault-component.adoc[Hashicorp Vault]
-* CyberArk Conjur
+* xref:components::ibm-secrets-manager-component.adoc[IBM Secrets Manager]
==== Using AWS Vault
@@ -133,31 +135,79 @@ camel.vault.aws.region = region
At this point you'll be able to reference a property in the following way by
using `aws:` as prefix in the `{{ }}` syntax:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{aws:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{aws:route}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{aws:route}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{aws:route}}"
+----
+====
Where `route` will be the name of the secret stored in the AWS Secrets Manager
Service.
-You could specify a default value in case the secret is not present on AWS
Secret Manager:
+You could specify a default value (`aws:key:default-value`) in case the secret
is not present on AWS Secret Manager:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{aws:route:myDefault}}");
+----
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{aws:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{aws:route:myDefault}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{aws:route:myDefault}}"
----
+====
-In this case, if the secret doesn't exist, the property will fallback to
"default" as value.
+In this case, if the secret doesn't exist, the property will fallback to
"myDefault" as value.
Also, you are able to get a particular field of the secret, if you have, for
example, a secret named database of this form:
@@ -175,30 +225,79 @@ Also, you are able to get a particular field of the
secret, if you have, for exa
You're able to do get single secret value in your route, like for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{aws:database#username}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{aws:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{aws:database#username}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{aws2:database#username}}"
+----
+====
+
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on AWS Secret Manager:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{aws:database#username:admin}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{aws:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{aws:database#username:admin}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{aws:database#username:admin}}"
+----
+====
+
In this case, if the secret doesn't exist or the secret exists, but the
username field is not part of the secret, the property will fall back to
"admin" as value.
NOTE: For the moment we are not considering the rotation function if any are
applied, but it is in the work to be done.
@@ -242,31 +341,79 @@ camel.vault.aws.projectId = region
At this point you'll be able to reference a property in the following way by
using `gcp:` as prefix in the `{{ }}` syntax:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{gcp:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
<route>
<from uri="direct:start"/>
<to uri="{{gcp:route}}"/>
</route>
-</camelContext>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{gcp:route}}"
+----
+====
+
Where `route` will be the name of the secret stored in the GCP Secret Manager
Service.
-You could specify a default value in case the secret is not present on GCP
Secret Manager:
+You could specify a default value (`gcp:key:default-value`) in case the secret
is not present GCP Secret Manager:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{gcp:route:myDefault}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{gcp:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{gcp:route:myDefault}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{gcp:route:myDefault}}"
----
+====
-In this case, if the secret doesn't exist, the property will fallback to
"default" as value.
+In this case, if the secret doesn't exist, the property will fallback to
"myDefault" as value.
Also, you are able to get a particular field of the secret, if you have, for
example, a secret named database of this form:
@@ -284,29 +431,78 @@ Also, you are able to get a particular field of the
secret, if you have, for exa
You're able to do get single secret value in your route, like for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{gcp:database#username}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{gcp:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{gcp:database#username}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{gcp:database#username}}"
----
+====
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on GCP Secret Manager:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{gcp:database#username:admin}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{gcp:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{gcp:database#username:admin}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{gcp:database#username:admin}}"
+----
+====
In this case, if the secret doesn't exist or the secret exists, but the
username field is not part of the secret, the property will fallback to "admin"
as value.
@@ -356,31 +552,79 @@ camel.vault.azure.vaultName = vaultName
At this point, you'll be able to reference a property in the following way:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{azure:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{azure:route}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{azure:route}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{azure:route}}"
+----
+====
+
Where route will be the name of the secret stored in the Azure Key Vault
Service.
-You could specify a default value in case the secret is not present on Azure
Key Vault Service:
+You could specify a default value (`azure:key:default-value`) in case the
secret is not present on Azure Key Value Service:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{azure:route:myDefault}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{azure:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{azure:route:myDefault}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{azure:route:myDefault}}"
----
+====
-In this case, if the secret doesn't exist, the property will fallback to
"default" as value.
+In this case, if the secret doesn't exist, the property will fallback to
"myDefault" as value.
Also you are able to get a particular field of the secret if you have, for
example, a secret named database of this form:
@@ -398,29 +642,78 @@ Also you are able to get a particular field of the secret
if you have, for examp
You're able to do get single secret value in your route, like for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{azure:database#username}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{azure:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{azure:database#username}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{azure:database#username}}"
----
+====
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on Azure Key Vault:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{azure:database#username:admin}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{azure:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{azure:database#username:admin}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{azure:database#username:admin}}"
+----
+====
In this case, if the secret doesn't exist or the secret exists, but the
username field is not part of the secret, the property will fallback to "admin"
as value.
@@ -476,31 +769,81 @@ camel.vault.hashicorp.namespace = namespace
At this point, you'll be able to reference a property in the following way:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{hashicorp:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{hashicorp:secret:route}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{hashicorp:route}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{hashicorp:route}}"
----
+====
Where route will be the name of the secret stored in the Hashicorp Vault
instance, in the 'secret' engine.
You could specify a default value in case the secret is not present on
Hashicorp Vault instance:
+You could specify a default value (`azure:key:default-value`) in case the
secret is not present on Azure Key Value Service:
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{hashicorp:route:myDefault}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{hashicorp:secret:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{hashicorp:route:myDefault}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{hashicorp:route:myDefault}}"
----
+====
-In this case, if the secret doesn't exist in the 'secret' engine, the property
will fall back to "default" as value.
+In this case, if the secret doesn't exist, the property will fallback to
"myDefault" as value.
Also, you are able to get a particular field of the secret, if you have, for
example, a secret named database of this form:
@@ -518,68 +861,191 @@ Also, you are able to get a particular field of the
secret, if you have, for exa
You're able to do get single secret value in your route, in the 'secret'
engine, like, for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{hashicorp:database#username}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{hashicorp:secret:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{hashicorp:database#username}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{hashicorp:database#username}}"
----
+====
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on Hashicorp Vault instance, in the 'secret' engine:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{hashicorp:database#username:admin}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is
{{hashicorp:secret:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{hashicorp:database#username:admin}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{hashicorp:database#username:admin}}"
+----
+====
+
In this case, if the secret doesn't exist or the secret exists (in the
'secret' engine) but the username field is not part of the secret, the property
will fall back to "admin" as value.
There is also the syntax to get a particular version of the secret for both
the approach, with field/default value specified or only with secret:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{hashicorp:secret:route@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{hashicorp:secret:route@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{hashicorp:secret:route@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{hashicorp:secret:route@2}}"
+----
+====
+
This approach will return the RAW route secret with version '2', in the
'secret' engine.
+
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{hashicorp:route:default@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{hashicorp:route:default@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{hashicorp:route:default@2}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{hashicorp:route:default@2}}"
+----
+====
+
This approach will return the route secret value with version '2' or default
value in case the secret doesn't exist or the version doesn't exist (in the
'secret' engine).
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{hashicorp:secret:database#username:admin@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is
{{hashicorp:secret:database#username:admin@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{hashicorp:secret:database#username:admin@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is
{{hashicorp:secret:database#username:admin@2}}"
+----
+====
+
This approach will return the username field of the database secret with
version '2' or admin in case the secret doesn't exist or the version doesn't
exist (in the 'secret' engine).
==== Using IBM Secrets Manager Vault
@@ -607,30 +1073,78 @@ When using the `operation` option to create, get, list
secrets etc., you should
At this point, you'll be able to reference a property in the following way:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{ibm:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{ibm:default:route}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{ibm:route}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{ibm:route}}"
+----
+====
+
Where route will be the name of the secret stored in the IBM Secrets Manager
Vault instance, in the 'default' secret group.
You could specify a default value in case the secret is not present on IBM
Secrets Manager Vault instance:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{ibm:default:route:default}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{ibm:default:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{ibm:default:route:default}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{ibm:default:route:default}}"
+----
+====
+
In this case, if the secret doesn't exist in the 'default' secret group, the
property will fall back to "default" as value.
Also, you are able to get a particular field of the secret, if you have, for
example, a secret named database of this form:
@@ -649,71 +1163,195 @@ Also, you are able to get a particular field of the
secret, if you have, for exa
You're able to do get single secret value in your route, in the 'default'
secret group, like for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{ibm:default:database#username}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{ibm:default:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{ibm:default:database#username}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{ibm:default:database#username}}"
+----
+====
+
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on IBM Secrets Manager Vault instance, in the 'secret' engine:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{ibm:default:database#username:admin}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{ibm:default:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{ibm:default:database#username:admin}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{ibm:default:database#username:admin}}"
+----
+====
+
In this case, if the secret doesn't exist or the secret exists (in the
'default' secret group) but the username field is not part of the secret, the
property will fall back to "admin" as value.
There is also the syntax to get a particular version of the secret for both
the approaches, with field/default value specified or only with secret:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{ibm:default:route@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{ibm:default:route@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{ibm:default:route@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{ibm:default:route@2}}"
+----
+====
+
This approach will return the RAW route secret with version '2', in the
'default' secret group.
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{ibm:default:route:default@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{ibm:default:route:default@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{ibm:default:route:default@2}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{ibm:default:route:default@2}}"
----
+====
This approach will return the route secret value with version '2' or default
value in case the secret doesn't exist or the version doesn't exist (in the
'default' secret group).
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{ibm:default:database#username:admin@2}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{ibm:default:database#username:admin@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{ibm:default:database#username:admin@2}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{ibm:default:database#username:admin@2}}"
----
+====
This approach will return the username field of the database secret with
version '2' or admin in case the secret doesn't exist or the version doesn't
exist (in the 'default' secret group).
-The only requirement is adding the camel-ibm-secrets-manager jar to your Camel
application.
+The only requirement is adding the `camel-ibm-secrets-manager` JAR to your
Camel application.
+
==== Using CyberArk Conjur Vault
@@ -761,29 +1399,77 @@ NOTE: If you're running the application on a Kubernetes
based cloud platform, yo
At this point, you'll be able to reference a property in the following way:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{cyberark:route}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{cyberark:route}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{cyberark:route}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{cyberark:route}}"
----
+====
Where `route` will be the name of the secret (variable) stored in the CyberArk
Conjur Vault instance.
You could specify a default value in case the secret is not present on
CyberArk Conjur:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{cyberark:route:default}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{cyberark:route:default}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{cyberark:route:default}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{cyberark:route:default}}"
----
+====
In this case, if the secret doesn't exist, the property will fall back to
"default" as value.
@@ -803,73 +1489,196 @@ Also, you are able to get a particular field of the
secret, if you have, for exa
You're able to get single secret value in your route, like for example:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{cyberark:database#username}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{cyberark:database#username}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{cyberark:database#username}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{cyberark:database#username}}"
----
+====
Or re-use the property as part of an endpoint.
You could specify a default value in case the particular field of secret is
not present on CyberArk Conjur:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{cyberark:database#username:admin}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{cyberark:database#username:admin}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{cyberark:database#username:admin}}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{cyberark:database#username:admin}}"
+----
+====
In this case, if the secret doesn't exist or the secret exists but the
username field is not part of the secret, the property will fall back to
"admin" as value.
There is also the syntax to get a particular version of the secret for both
the approaches, with field/default value specified or only with secret:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{cyberark:route@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{cyberark:route@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{cyberark:route@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{cyberark:route@2}}"
+----
+====
+
This approach will return the RAW route secret with version '2'.
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .to("{{cyberark:route:default@2}}");
+----
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <to uri="{{cyberark:route:default@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <to uri="{{cyberark:route:default@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - to:
+ uri: "{{cyberark:route:default@2}}"
+----
+====
+
This approach will return the route secret value with version '2' or default
value in case the secret doesn't exist or the version doesn't exist.
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .log("Username is {{cyberark:database#username:admin@2}}");
+----
+
+
+XML::
++
[source,xml]
----
-<camelContext>
- <route>
- <from uri="direct:start"/>
- <log message="Username is {{cyberark:database#username:admin@2}}"/>
- </route>
-</camelContext>
+<route>
+ <from uri="direct:start"/>
+ <log message="Username is {{cyberark:database#username:admin@2}}"/>
+</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - log:
+ message: "Username is {{cyberark:database#username:admin@2}}"
+----
+====
+
This approach will return the username field of the database secret with
version '2' or admin in case the secret doesn't exist or the version doesn't
exist.
NOTE: CyberArk Conjur requires secrets (variables) to be defined in a policy
file before they can be set.
-The only requirement is adding the camel-cyberark-vault jar to your Camel
application.
+The only requirement is adding the `camel-cyberark-vault` JAR to your Camel
application.
+
==== Automatic Camel context reloading on Secret Refresh while using AWS
Secrets Manager
@@ -907,9 +1716,10 @@ where `camel.vault.aws.refreshEnabled` will enable the
automatic context reload,
Note that `camel.vault.aws.secrets` is not mandatory: if not specified the
task responsible for checking updates events will take into accounts or the
properties with an `aws:` prefix.
-The only requirement is adding the camel-aws-secrets-manager jar to your Camel
application.
+The only requirement is adding the `camel-aws-secrets-manager` JAR to your
Camel application.
-==== Automatic Camel context reloading on Secret Refresh while using AWS
Secrets Manager with Eventbridge and AWS SQS Services
+
+==== Automatic Camel context reloading on Secret Refresh while using AWS
Secrets Manager with EventBridge and AWS SQS Services
Another option is to use AWS EventBridge in conjunction with the AWS SQS
service.
@@ -932,9 +1742,9 @@ On the AWS side, the following resources need to be
created:
This rule will make the event related to AWS Secrets Manager filtered
-- You need to set the a Rule target to the AWS SQS Queue for Eventbridge rule
+- You need to set the Rule target to the AWS SQS Queue for EventBridge rule
-- You need to give permission to the Eventbrige rule, to write on the above
SQS Queue. For doing this you'll need to define a json file like this:
+- You need to give permission to the EventBrige rule, to write on the above
SQS Queue. For doing this you'll need to define a json file like this:
[source,json]
----
@@ -968,6 +1778,7 @@ where queue_url is the AWS SQS Queue URL of the just
created Queue.
Whenever an event of PutSecretValue for the Secret named 'Secret' will happen,
a message will be enqueued in the AWS SQS Queue and consumed on the Camel side
and a context reload will be triggered.
+
==== Automatic Camel context reloading on Secret Refresh while using Google
Secret Manager
Being able to reload Camel context on a Secret Refresh, could be done by
specifying the usual credentials (the same used for Google Secret Manager
Property Function).
@@ -1015,6 +1826,7 @@ There are only two requirements:
- Adding `camel-google-secret-manager` JAR to your Camel application.
- Give the service account used permissions to do operation at secret
management level (for example, accessing the secret payload, or being admin of
secret manager service and also have permission over the Pubsub service)
+
==== Automatic Camel context reloading on Secret Refresh while using Azure Key
Vault
Being able to reload Camel context on a Secret Refresh, could be done by
specifying the usual credentials (the same used for Azure Key Vault Property
Function).
@@ -1075,7 +1887,8 @@ where `camel.vault.azure.eventhubConnectionString` is the
eventhub connection st
Note that `camel.vault.azure.secrets` is not mandatory: if not specified the
task responsible for checking updates events will take into accounts or the
properties with an `azure:` prefix.
-The only requirement is adding the camel-azure-key-vault jar to your Camel
application.
+The only requirement is adding the `camel-azure-key-vault` JAR to your Camel
application.
+
==== Automatic Camel context reloading on Secret Refresh while using IBM
Secrets Manager
@@ -1124,7 +1937,8 @@ where `camel.vault.ibm.eventStreamBootstrapServers` is
the comma-separated list
Note that `camel.vault.ibm.secrets` is not mandatory: if not specified the
task responsible for checking updates events will take into accounts or the
properties with an `ibm:` prefix.
-The only requirement is adding the camel-ibm-secrets-manager jar to your Camel
application.
+The only requirement is adding the `camel-ibm-secrets-manager` JAR to your
Camel application.
+
==== Automatic Camel context reloading on Secret Refresh while using Hashicorp
Vault
@@ -1177,6 +1991,8 @@
camel.vault.hashicorp.secrets=omsecret/test,kv:myapp/credentials
Note that `camel.vault.hashicorp.secrets` is not mandatory: if not specified
the task responsible for checking updates events will take into account all the
properties with a `hashicorp:` prefix.
+The only requirement is adding the `camel-hashicorp-vault` JAR to your Camel
application.
+
===== How the Refresh Mechanism Works
Unlike cloud-based secret managers (AWS, GCP, Azure) that provide event-driven
notifications, Hashicorp Vault does not have a native event notification system
for secret changes. Therefore, this implementation uses a *polling-based
approach*:
@@ -1194,4 +2010,3 @@ For example, if a secret named `database` is updated in
Vault:
This polling approach works with all Hashicorp Vault deployments (on-premise,
cloud, enterprise, and open-source) without requiring additional infrastructure.
-The only requirement is adding the camel-hashicorp-vault jar to your Camel
application.
diff --git a/docs/user-manual/modules/ROOT/pages/service-registry.adoc
b/docs/user-manual/modules/ROOT/pages/service-registry.adoc
index dbca0882d033..5bada7cd3dd0 100644
--- a/docs/user-manual/modules/ROOT/pages/service-registry.adoc
+++ b/docs/user-manual/modules/ROOT/pages/service-registry.adoc
@@ -4,6 +4,9 @@ Service registration is a key part of service discovery which
Camel leverages th
the _Service Call EIP_ and support to ease the process to expose routes in a
cloud environment and consume them with minimal configuration.
+IMPORTANT: The Service Call EIP is deprecated.
+
+
== Service Registry Set-Up
A `ServiceRegistry` is just like any other camel service so set it up you only
need
@@ -23,7 +26,6 @@ Out of the box camel provides the following implementations:
|====
|Type |Module | Class
|consul |camel-consul |
org.apache.camel.component.consul.cloud.ConsulServiceRegistry
-|spring-cloud |camel-spring-cloud |
org.apache.camel.component.spring.cloud.CamelSpringCloudServiceRegistry
|zookeeper |camel-zookeeper |
org.apache.camel.component.zookeeper.cloud.ZooKeeperServiceRegistry
|====
@@ -38,7 +40,7 @@ to a given `ServiceRegistry` according to route's life-cycle:
[source,java]
----
-RoutePolicy policy = new ServiceRegistrationRoutePolicy()
+RoutePolicy policy = new ServiceRegistrationRoutePolicy();
// bind the policy to one or more routes
from("undertow:http://0.0.0.0:8080")
@@ -84,6 +86,7 @@ Any property prefixed with _service._ is automatically added
to the service's me
TIP: Some component such has camel-undertow and those based on
camel-http-common implement _DiscoverableService_ and they can automatically
provide the metadata needed for service registration.
+
=== Service Component
The xref:components::service-component.adoc[Service] component is similar to a
`ServiceRegistrationRoutePolicyFactory`
@@ -113,3 +116,8 @@
from("service:my-service:undertow:http://0.0.0.0:8080?service.id=my-service-id")
Any option prefixed with _service._ is automatically added to the service's
metadata.
+
+== See More
+
+- xref:components::consul-component.adoc[Consul] component
+- xref:components::zookeeper-component.adoc[Zookeeper] component
\ No newline at end of file
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index 98af5f3327b3..b858b853a32c 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -11736,7 +11736,7 @@ public final class ModelDeserializers extends
YamlDeserializerSupport {
nodes = "pgp",
types = org.apache.camel.model.dataformat.PGPDataFormat.class,
order =
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
- displayName = "PGP",
+ displayName = "PGP (Pretty Good Privacy Cryptographic)",
description = "Encrypt and decrypt messages using Java
Cryptographic Extension (JCE) and PGP.",
deprecated = false,
properties = {
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index c863c11076ce..faa6977a189d 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -12458,7 +12458,7 @@
}
},
"org.apache.camel.model.dataformat.PGPDataFormat" : {
- "title" : "PGP",
+ "title" : "PGP (Pretty Good Privacy Cryptographic)",
"description" : "Encrypt and decrypt messages using Java Cryptographic
Extension (JCE) and PGP.",
"type" : "object",
"additionalProperties" : false,