This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit 99636e0a3632159f4d9b90ad0fe0d93ec3a1be19 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu Jul 30 15:07:56 2020 +0200 Regen website docs --- .../modules/ROOT/pages/arangodb-component.adoc | 2 + .../ROOT/pages/kubernetes-job-component.adoc | 111 +++++++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/docs/components/modules/ROOT/pages/arangodb-component.adoc b/docs/components/modules/ROOT/pages/arangodb-component.adoc index d7ca783..510a5ee 100644 --- a/docs/components/modules/ROOT/pages/arangodb-component.adoc +++ b/docs/components/modules/ROOT/pages/arangodb-component.adoc @@ -95,3 +95,5 @@ with the following path and query parameters: | *user* (security) | user if user and/or password different from default | | String |=== // endpoint options: END + +include::camel-spring-boot::page$arangodb-starter.adoc[] diff --git a/docs/components/modules/ROOT/pages/kubernetes-job-component.adoc b/docs/components/modules/ROOT/pages/kubernetes-job-component.adoc index 88a37da..f280fe1 100644 --- a/docs/components/modules/ROOT/pages/kubernetes-job-component.adoc +++ b/docs/components/modules/ROOT/pages/kubernetes-job-component.adoc @@ -138,5 +138,116 @@ from("direct:listByLabels").process(new Processor() { This operation return a List of Jobs from your cluster, using a label selector (with key1 and key2, with value value1 and value2) +- createJob: This operation create a job on a Kubernetes Cluster + +We have a wonderful example of this operation thanks to https://github.com/Emmerson-Miranda[Emmerson Miranda] from this https://github.com/Emmerson-Miranda/camel/blob/master/camel3-cdi/cdi-k8s-pocs/src/main/java/edu/emmerson/camel/k8s/jobs/camel_k8s_jobs/KubernetesCreateJob.java[Java test] + +[source,java] +-------------------------------------------------------------------------------- +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.inject.Inject; + +import org.apache.camel.Endpoint; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.cdi.Uri; +import org.apache.camel.component.kubernetes.KubernetesConstants; +import org.apache.camel.component.kubernetes.KubernetesOperations; + +import io.fabric8.kubernetes.api.model.Container; +import io.fabric8.kubernetes.api.model.ObjectMeta; +import io.fabric8.kubernetes.api.model.PodSpec; +import io.fabric8.kubernetes.api.model.PodTemplateSpec; +import io.fabric8.kubernetes.api.model.batch.JobSpec; + +/** + * + */ +public class KubernetesCreateJob extends RouteBuilder { + + @Inject + @Uri("timer:foo?delay=1000&repeatCount=1") + private Endpoint inputEndpoint; + + @Inject + @Uri("log:output") + private Endpoint resultEndpoint; + + @Override + public void configure() { + // you can configure the route rule with Java DSL here + + from(inputEndpoint) + .routeId("kubernetes-jobcreate-client") + .process(exchange -> { + exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_NAME, "camel-job"); //DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*') + exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "default"); + + Map<String, String> joblabels = new HashMap<String, String>(); + joblabels.put("jobLabelKey1", "value1"); + joblabels.put("jobLabelKey2", "value2"); + joblabels.put("app", "jobFromCamelApp"); + exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_LABELS, joblabels); + + exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_SPEC, generateJobSpec()); + }) + .toF("kubernetes-job:///{{kubernetes-master-url}}?oauthToken={{kubernetes-oauth-token:}}&operation=" + KubernetesOperations.CREATE_JOB_OPERATION) + .log("Job created:") + .process(exchange -> { + System.out.println(exchange.getIn().getBody()); + }) + .to(resultEndpoint); + } + + /** + * Create a new JobSpec + * @return + */ + private JobSpec generateJobSpec() { + JobSpec js = new JobSpec(); + + PodTemplateSpec pts = new PodTemplateSpec(); + + PodSpec ps = new PodSpec(); + ps.setRestartPolicy("Never"); + ps.setContainers(generateContainers()); + pts.setSpec(ps); + + ObjectMeta metadata = new ObjectMeta(); + Map<String, String> annotations = new HashMap<String, String>(); + annotations.put("jobMetadataAnnotation1", "random value"); + metadata.setAnnotations(annotations); + + Map<String, String> podlabels = new HashMap<String, String>(); + podlabels.put("podLabelKey1", "value1"); + podlabels.put("podLabelKey2", "value2"); + podlabels.put("app", "podFromCamelApp"); + metadata.setLabels(podlabels); + + pts.setMetadata(metadata); + js.setTemplate(pts); + return js; + } + + private List<Container> generateContainers() { + Container container = new Container(); + container.setName("pi"); + container.setImage("perl"); + List<String> command = new ArrayList<String>(); + command.add("echo"); + command.add("Job created from Apache Camel code at " + (new Date())); + container.setCommand(command); + List<Container> containers = new ArrayList<Container>(); + containers.add(container); + return containers; + } + +} +-------------------------------------------------------------------------------- + include::camel-spring-boot::page$kubernetes-starter.adoc[]