You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2020/10/21 07:40:03 UTC
[camel-k] 01/07: API: remove unnecessary packages
This is an automated email from the ASF dual-hosted git repository.
nferraro pushed a commit to branch api
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 1a2989fffa1bc1525b30e6dc50f361bb934bc596
Author: Nicola Ferraro <ni...@gmail.com>
AuthorDate: Thu Apr 30 17:45:29 2020 +0200
API: remove unnecessary packages
---
.dockerignore | 1 -
.github/pull_request_template.md | 18 -
.github/workflows/build.yml | 54 -
.github/workflows/builder.yml | 132 -
.github/workflows/knative.yml | 320 --
.github/workflows/kubernetes.yml | 129 -
.github/workflows/openshift.yml | 154 -
.github/workflows/release.yml | 137 -
.github/workflows/validate.yml | 45 -
.gitignore | 146 -
.golangci.yml | 69 -
.mvn/wrapper/MavenWrapperDownloader.java | 110 -
.mvn/wrapper/maven-wrapper.jar | Bin 48337 -> 0 bytes
.mvn/wrapper/maven-wrapper.properties | 1 -
.pre-commit-config.yaml | 23 -
.travis.yml | 51 -
KEYS | 1773 ---------
LICENSE | 203 -
Makefile | 1 -
NOTICE | 11 -
README.adoc | 397 +-
addons/master/master.go | 214 --
addons/master/zz_desc_generated.go | 1 -
addons/master/zz_generated_doc.go | 1 -
addons/register_3scale.go | 27 -
addons/register_master.go | 27 -
addons/threescale/3scale.go | 138 -
addons/threescale/3scale_test.go | 114 -
addons/threescale/zz_desc_generated.go | 1 -
addons/threescale/zz_generated_doc.go | 1 -
addons/zz_desc_generated.go | 1 -
addons/zz_generated_doc.go | 1 -
build/Dockerfile | 38 -
build/maven/pom-catalog.xml | 129 -
build/maven/pom-runtime.xml | 378 --
cmd/kamel/main.go | 54 -
cmd/manager/main.go | 1 -
cmd/util/doc-gen/generators/generators.go | 69 -
cmd/util/doc-gen/generators/traitdocgen.go | 359 --
cmd/util/doc-gen/generators/traitmetadatagen.go | 172 -
cmd/util/doc-gen/main.go | 48 -
cmd/util/license-check/main.go | 56 -
cmd/util/vfs-gen/main.go | 158 -
deploy/addons/master/master-role-binding.tmpl | 16 -
deploy/addons/master/master-role.tmpl | 27 -
deploy/builder-role-binding.yaml | 30 -
deploy/builder-role-kubernetes.yaml | 60 -
deploy/builder-role-openshift.yaml | 104 -
deploy/builder-service-account.yaml | 23 -
deploy/camel-catalog-1.3.0-SNAPSHOT-main.yaml | 3135 ---------------
deploy/camel-catalog-1.3.0-SNAPSHOT-quarkus.yaml | 1524 --------
deploy/cr-example.yaml | 37 -
deploy/crd-build.yaml | 65 -
deploy/crd-camel-catalog.yaml | 53 -
deploy/crd-integration-kit.yaml | 56 -
deploy/crd-integration-platform.yaml | 48 -
deploy/crd-integration.yaml | 59 -
deploy/olm-catalog/.vfsignore | 1 -
.../camel-k.v0.3.3.clusterserviceversion.yaml | 290 --
.../camel-k.v0.3.4.clusterserviceversion.yaml | 397 --
deploy/olm-catalog/camel-k/0.3.4/crd-build.yaml | 54 -
.../camel-k/0.3.4/crd-camel-catalog.yaml | 42 -
.../camel-k/0.3.4/crd-integration-context.yaml | 49 -
.../camel-k/0.3.4/crd-integration-platform.yaml | 41 -
.../olm-catalog/camel-k/0.3.4/crd-integration.yaml | 45 -
.../camel-k.v1.0.0-M1.clusterserviceversion.yaml | 399 --
deploy/olm-catalog/camel-k/1.0.0-m1/crd-build.yaml | 54 -
.../camel-k/1.0.0-m1/crd-camel-catalog.yaml | 42 -
.../camel-k/1.0.0-m1/crd-integration-kit.yaml | 49 -
.../camel-k/1.0.0-m1/crd-integration-platform.yaml | 41 -
.../camel-k/1.0.0-m1/crd-integration.yaml | 45 -
.../camel-k.v1.0.0-M2.clusterserviceversion.yaml | 402 --
deploy/olm-catalog/camel-k/1.0.0-m2/crd-build.yaml | 54 -
.../camel-k/1.0.0-m2/crd-camel-catalog.yaml | 42 -
.../camel-k/1.0.0-m2/crd-integration-kit.yaml | 49 -
.../camel-k/1.0.0-m2/crd-integration-platform.yaml | 41 -
.../camel-k/1.0.0-m2/crd-integration.yaml | 52 -
.../camel-k.v1.0.0-m3.clusterserviceversion.yaml | 402 --
deploy/olm-catalog/camel-k/1.0.0-m3/crd-build.yaml | 54 -
.../camel-k/1.0.0-m3/crd-camel-catalog.yaml | 42 -
.../camel-k/1.0.0-m3/crd-integration-kit.yaml | 49 -
.../camel-k/1.0.0-m3/crd-integration-platform.yaml | 41 -
.../camel-k/1.0.0-m3/crd-integration.yaml | 45 -
.../camel-k.v1.0.0-m4.clusterserviceversion.yaml | 402 --
deploy/olm-catalog/camel-k/1.0.0-m4/crd-build.yaml | 54 -
.../camel-k/1.0.0-m4/crd-camel-catalog.yaml | 42 -
.../camel-k/1.0.0-m4/crd-integration-kit.yaml | 49 -
.../camel-k/1.0.0-m4/crd-integration-platform.yaml | 41 -
.../camel-k/1.0.0-m4/crd-integration.yaml | 45 -
.../camel-k.v1.0.0-rc1.clusterserviceversion.yaml | 406 --
.../olm-catalog/camel-k/1.0.0-rc1/crd-build.yaml | 65 -
.../camel-k/1.0.0-rc1/crd-camel-catalog.yaml | 53 -
.../camel-k/1.0.0-rc1/crd-integration-kit.yaml | 56 -
.../1.0.0-rc1/crd-integration-platform.yaml | 48 -
.../camel-k/1.0.0-rc1/crd-integration.yaml | 59 -
.../camel-k.v1.0.0-rc2.clusterserviceversion.yaml | 420 ---
.../olm-catalog/camel-k/1.0.0-rc2/crd-build.yaml | 65 -
.../camel-k/1.0.0-rc2/crd-camel-catalog.yaml | 53 -
.../camel-k/1.0.0-rc2/crd-integration-kit.yaml | 56 -
.../1.0.0-rc2/crd-integration-platform.yaml | 48 -
.../camel-k/1.0.0-rc2/crd-integration.yaml | 59 -
.../builds.camel.apache.org.crd.yaml | 65 -
...el-k.v1.0.0-snapshot.clusterserviceversion.yaml | 456 ---
.../camelcatalogs.camel.apache.org.crd.yaml | 53 -
.../integrationkits.camel.apache.org.crd.yaml | 56 -
.../integrationplatforms.camel.apache.org.crd.yaml | 48 -
.../integrations.camel.apache.org.crd.yaml | 59 -
deploy/olm-catalog/camel-k/camel-k.package.yaml | 22 -
deploy/olm-catalog/csv-config.yaml | 27 -
deploy/operator-deployment.yaml | 62 -
deploy/operator-role-binding-events.yaml | 30 -
deploy/operator-role-binding-knative.yaml | 30 -
deploy/operator-role-binding.yaml | 30 -
deploy/operator-role-events.yaml | 34 -
deploy/operator-role-knative.yaml | 51 -
deploy/operator-role-kubernetes.yaml | 121 -
deploy/operator-role-olm-cluster.yaml | 43 -
deploy/operator-role-olm.yaml | 236 --
deploy/operator-role-openshift.yaml | 173 -
deploy/operator-service-account.yaml | 23 -
deploy/platform-cr.yaml | 23 -
deploy/platform-integration-kit-groovy.yaml | 30 -
deploy/platform-integration-kit-java.yaml | 30 -
deploy/platform-integration-kit-js.yaml | 30 -
deploy/platform-integration-kit-knative.yaml | 30 -
deploy/platform-integration-kit-kotlin.yaml | 30 -
deploy/platform-integration-kit-main.yaml | 29 -
deploy/platform-integration-kit-xml.yaml | 30 -
deploy/platform-integration-kit-yaml.yaml | 30 -
deploy/prometheus-jmx-exporter.yaml | 603 ---
deploy/resources.go | 558 ---
deploy/resources_support.go | 103 -
deploy/resources_test.go | 56 -
deploy/templates/groovy.tmpl | 24 -
deploy/templates/java.tmpl | 33 -
deploy/templates/js.tmpl | 22 -
deploy/templates/kts.tmpl | 24 -
deploy/templates/xml.tmpl | 33 -
deploy/templates/yaml.tmpl | 27 -
deploy/traits.yaml | 776 ----
deploy/user-cluster-role.yaml | 30 -
docs/.gitignore | 2 -
docs/README.adoc | 32 -
docs/antora-playbook-dev.yml | 15 -
docs/antora-playbook.yml | 15 -
docs/antora.yml | 7 -
docs/charts/camel-k-0.1.0.tgz | Bin 5060 -> 0 bytes
docs/charts/camel-k-0.1.1.tgz | Bin 5148 -> 0 bytes
docs/charts/index.yaml | 54 -
docs/index.html | 12 -
.../tekton/camel-k-pipeline-permissions.yaml | 178 -
.../tekton/camel-k-pipeline-task-definition.yaml | 90 -
.../tekton/camel-k-pipeline-task-run.yaml | 30 -
.../images/tekton/tekton-pipeline-definition.png | Bin 23836 -> 0 bytes
.../images/tekton/tekton-pipeline-result.png | Bin 31685 -> 0 bytes
.../assets/images/tekton/tekton-pipeline-run.png | Bin 21832 -> 0 bytes
docs/modules/ROOT/nav-end.adoc | 4 -
docs/modules/ROOT/nav.adoc | 45 -
.../ROOT/pages/configuration/components.adoc | 20 -
.../ROOT/pages/configuration/configmap-secret.adoc | 79 -
.../ROOT/pages/configuration/configuration.adoc | 23 -
.../ROOT/pages/configuration/dependencies.adoc | 24 -
docs/modules/ROOT/pages/configuration/logging.adoc | 15 -
docs/modules/ROOT/pages/developers.adoc | 195 -
docs/modules/ROOT/pages/index.adoc | 26 -
docs/modules/ROOT/pages/installation/gke.adoc | 34 -
.../ROOT/pages/installation/installation.adoc | 47 -
docs/modules/ROOT/pages/installation/minikube.adoc | 19 -
.../modules/ROOT/pages/installation/minishift.adoc | 21 -
.../modules/ROOT/pages/installation/openshift.adoc | 19 -
.../pages/installation/registry/dockerhub.adoc | 44 -
.../ROOT/pages/installation/registry/gcr.adoc | 37 -
.../ROOT/pages/installation/registry/github.adoc | 29 -
.../ROOT/pages/installation/registry/registry.adoc | 42 -
docs/modules/ROOT/pages/running/dev-mode.adoc | 53 -
docs/modules/ROOT/pages/running/running.adoc | 42 -
docs/modules/ROOT/pages/traits/3scale.adoc | 52 -
docs/modules/ROOT/pages/traits/affinity.adoc | 74 -
docs/modules/ROOT/pages/traits/builder.adoc | 36 -
docs/modules/ROOT/pages/traits/camel.adoc | 35 -
docs/modules/ROOT/pages/traits/container.adoc | 130 -
docs/modules/ROOT/pages/traits/cron.adoc | 89 -
docs/modules/ROOT/pages/traits/debug.adoc | 30 -
docs/modules/ROOT/pages/traits/dependencies.adoc | 32 -
docs/modules/ROOT/pages/traits/deployer.adoc | 36 -
docs/modules/ROOT/pages/traits/deployment.adoc | 32 -
docs/modules/ROOT/pages/traits/environment.adoc | 36 -
docs/modules/ROOT/pages/traits/gc.adoc | 33 -
docs/modules/ROOT/pages/traits/ingress.adoc | 40 -
docs/modules/ROOT/pages/traits/istio.adoc | 38 -
docs/modules/ROOT/pages/traits/jolokia.adoc | 84 -
docs/modules/ROOT/pages/traits/jvm.adoc | 47 -
.../modules/ROOT/pages/traits/knative-service.adoc | 72 -
docs/modules/ROOT/pages/traits/knative.adoc | 82 -
docs/modules/ROOT/pages/traits/master.adoc | 57 -
docs/modules/ROOT/pages/traits/openapi.adoc | 31 -
docs/modules/ROOT/pages/traits/owner.adoc | 40 -
docs/modules/ROOT/pages/traits/platform.adoc | 43 -
docs/modules/ROOT/pages/traits/prometheus.adoc | 53 -
docs/modules/ROOT/pages/traits/pull-secret.adoc | 46 -
docs/modules/ROOT/pages/traits/quarkus.adoc | 35 -
docs/modules/ROOT/pages/traits/route.adoc | 73 -
docs/modules/ROOT/pages/traits/service.adoc | 36 -
docs/modules/ROOT/pages/traits/traits.adoc | 63 -
.../ROOT/pages/tutorials/tekton/tekton.adoc | 236 --
docs/modules/ROOT/pages/tutorials/tutorials.adoc | 6 -
docs/modules/ROOT/pages/uninstalling.adoc | 9 -
docs/package.json | 18 -
docs/yarn.lock | 3975 --------------------
e2e/builder/build_test.go | 72 -
e2e/builder/doc.go | 23 -
e2e/builder/docker_hub_test.go | 58 -
e2e/builder/files/Java.java | 28 -
e2e/builder/files/groovy.groovy | 23 -
e2e/builder/github_packages_test.go | 59 -
e2e/builder/global_test.go | 61 -
e2e/common/addons_test.go | 72 -
e2e/common/backward_compat_test.go | 121 -
e2e/common/client_test.go | 61 -
e2e/common/cron_test.go | 72 -
e2e/common/dev_mode_test.go | 82 -
e2e/common/doc.go | 23 -
e2e/common/files/Java.java | 28 -
e2e/common/files/Master.java | 28 -
e2e/common/files/Prop.java | 27 -
e2e/common/files/RestConsumer.java | 29 -
e2e/common/files/RestProducer.groovy | 19 -
e2e/common/files/cron-fallback.groovy | 24 -
e2e/common/files/cron-timer.groovy | 23 -
e2e/common/files/cron.groovy | 23 -
e2e/common/files/groovy.groovy | 23 -
e2e/common/files/js-polyglot.js | 21 -
e2e/common/files/js.js | 21 -
e2e/common/files/kotlin.kts | 23 -
e2e/common/files/prop.properties | 3 -
e2e/common/files/xml.xml | 33 -
e2e/common/files/yaml-polyglot.yaml | 28 -
e2e/common/files/yaml.yaml | 28 -
e2e/common/init_test.go | 63 -
e2e/common/install_test.go | 60 -
e2e/common/offline_commands_test.go | 49 -
e2e/common/platformless_run_test.go | 60 -
e2e/common/rest_test.go | 95 -
e2e/common/run_test.go | 117 -
e2e/common/tekton_test.go | 44 -
e2e/common/uninstall_test.go | 102 -
e2e/common/upgrade_test.go | 95 -
e2e/knative/doc.go | 23 -
e2e/knative/files/knative1.groovy | 27 -
e2e/knative/files/knative2.groovy | 19 -
e2e/knative/files/knative3.groovy | 19 -
e2e/knative/files/knativech1.groovy | 20 -
e2e/knative/files/knativech2.groovy | 19 -
e2e/knative/files/knativeevt1.groovy | 24 -
e2e/knative/files/knativeevt2.groovy | 22 -
e2e/knative/files/knativegetpost1.groovy | 21 -
e2e/knative/files/knativegetpost2.groovy | 19 -
e2e/knative/files/knativemultihop1.groovy | 24 -
e2e/knative/files/knativemultihop2.groovy | 21 -
e2e/knative/files/knativemultihop3.groovy | 24 -
e2e/knative/files/petstore-api.yaml | 111 -
e2e/knative/files/petstore.groovy | 29 -
e2e/knative/files/yaml.yaml | 28 -
e2e/knative/knative_platform_test.go | 78 -
e2e/knative/knative_test.go | 132 -
e2e/knative/openapi_test.go | 83 -
e2e/support/test_staging_hooks.go | 55 -
e2e/support/test_support.go | 1094 ------
e2e/support/util/dump.go | 152 -
e2e/support/util/log_scanner.go | 73 -
e2e/support/util/temp_file.go | 72 -
e2e/yaks/knative/receiver.groovy | 19 -
e2e/yaks/knative/source.yaml | 39 -
e2e/yaks/knative/sources.feature | 5 -
e2e/yaks/knative/yaks-config.yaml | 12 -
e2e/yaks/yaks-config.yaml | 2 -
examples/AMQPBindToRegistry.java | 41 -
examples/CaffeineCacheSample.java | 44 -
examples/Master.java | 37 -
examples/README.md | 3 -
examples/RestDSL.java | 36 -
examples/Sample.java | 26 -
examples/amqp.groovy | 39 -
examples/amqp.js | 31 -
examples/camel-caffeine.groovy | 59 -
examples/cron.groovy | 22 -
examples/dns.js | 32 -
examples/greetings-api.json | 46 -
examples/greetings.groovy | 26 -
examples/hello.xml | 30 -
examples/kafka/README.adoc | 25 -
examples/kafka/SampleKafkaConsumer.java | 32 -
examples/kafka/application.properties | 24 -
examples/knative/README.adoc | 136 -
examples/knative/feed.groovy | 22 -
examples/knative/messages-channel.yaml | 21 -
examples/knative/printer.groovy | 21 -
examples/knative/reader.groovy | 20 -
examples/knative/splitter.groovy | 22 -
examples/knative/words-channel.yaml | 21 -
examples/knative/writer.groovy | 21 -
examples/kotlin-routes.kts | 34 -
examples/petstore-api.yaml | 111 -
examples/petstore.groovy | 29 -
examples/polyglot/JavaRoute.java | 31 -
examples/polyglot/README.adoc | 8 -
examples/polyglot/beans.groovy | 23 -
examples/polyglot/routes.xml | 29 -
examples/props.js | 25 -
examples/pulsar.groovy | 62 -
examples/resources-data.txt | 1 -
examples/resources-route.groovy | 29 -
examples/routes-rest.js | 31 -
examples/routes.groovy | 55 -
examples/routes.js | 37 -
examples/routes.yaml | 27 -
examples/saga/Flight.java | 46 -
examples/saga/Payment.java | 49 -
examples/saga/Readme.md | 48 -
examples/saga/Saga.java | 42 -
examples/saga/Train.java | 46 -
examples/saga/lra-coordinator.yaml | 98 -
examples/simple.groovy | 23 -
examples/simple.js | 21 -
examples/tekton/README.md | 5 -
examples/tekton/hello.groovy | 19 -
helm/camel-k/.helmignore | 23 -
helm/camel-k/Chart.yaml | 56 -
helm/camel-k/README.md | 89 -
helm/camel-k/crds/crd-build.yaml | 65 -
helm/camel-k/crds/crd-camel-catalog.yaml | 53 -
helm/camel-k/crds/crd-integration-kit.yaml | 56 -
helm/camel-k/crds/crd-integration-platform.yaml | 48 -
helm/camel-k/crds/crd-integration.yaml | 59 -
helm/camel-k/templates/NOTES.txt | 8 -
helm/camel-k/templates/_helpers.tpl | 64 -
helm/camel-k/templates/cluster-role.yaml | 34 -
helm/camel-k/templates/operator-role-binding.yaml | 31 -
helm/camel-k/templates/operator-role.yaml | 237 --
.../templates/operator-service-account.yaml | 24 -
helm/camel-k/templates/operator.yaml | 65 -
helm/camel-k/templates/platform.yaml | 26 -
helm/camel-k/values.yaml | 30 -
mvnw | 286 --
mvnw.cmd | 161 -
pkg/builder/builder.go | 182 -
pkg/builder/builder_steps.go | 427 ---
pkg/builder/builder_steps_test.go | 208 -
pkg/builder/builder_test.go | 66 -
pkg/builder/builder_types.go | 124 -
pkg/builder/builder_utils.go | 41 -
pkg/builder/kaniko/kaniko.go | 21 -
pkg/builder/runtime/main.go | 143 -
pkg/builder/runtime/main_test.go | 229 --
pkg/builder/runtime/quarkus.go | 221 --
pkg/builder/runtime/runtime.go | 73 -
pkg/builder/s2i/publisher.go | 194 -
pkg/builder/s2i/s2i.go | 43 -
pkg/builder/spectrum/publisher.go | 84 -
pkg/builder/spectrum/spectrum.go | 43 -
pkg/cmd/builder.go | 52 -
pkg/cmd/builder/builder.go | 115 -
pkg/cmd/builder_test.go | 37 -
pkg/cmd/completion.go | 39 -
pkg/cmd/completion_bash.go | 268 --
pkg/cmd/completion_zsh.go | 64 -
pkg/cmd/delete.go | 122 -
pkg/cmd/delete_test.go | 37 -
pkg/cmd/describe.go | 79 -
pkg/cmd/describe_integration.go | 183 -
pkg/cmd/describe_kit.go | 131 -
pkg/cmd/describe_platform.go | 128 -
pkg/cmd/get.go | 89 -
pkg/cmd/init.go | 114 -
pkg/cmd/install.go | 602 ---
pkg/cmd/install_test.go | 86 -
pkg/cmd/kit.go | 36 -
pkg/cmd/kit_create.go | 227 --
pkg/cmd/kit_create_test.go | 39 -
pkg/cmd/kit_delete.go | 153 -
pkg/cmd/kit_get.go | 96 -
pkg/cmd/kit_test.go | 31 -
pkg/cmd/log.go | 94 -
pkg/cmd/log_test.go | 39 -
pkg/cmd/operator.go | 37 -
pkg/cmd/operator/operator.go | 167 -
pkg/cmd/rebuild.go | 109 -
pkg/cmd/reset.go | 130 -
pkg/cmd/root.go | 189 -
pkg/cmd/root_test.go | 170 -
pkg/cmd/run.go | 722 ----
pkg/cmd/run_test.go | 146 -
pkg/cmd/trait_help.go | 259 --
pkg/cmd/trait_help_test.go | 39 -
pkg/cmd/uninstall.go | 371 --
pkg/cmd/uninstall_test.go | 66 -
pkg/cmd/util.go | 239 --
pkg/cmd/util_config.go | 195 -
pkg/cmd/version.go | 47 -
pkg/controller/add_build.go | 26 -
pkg/controller/add_integration.go | 26 -
pkg/controller/add_integrationkit.go | 26 -
pkg/controller/add_integrationplatform.go | 26 -
pkg/controller/build/action.go | 54 -
pkg/controller/build/build_controller.go | 253 --
pkg/controller/build/error.go | 48 -
pkg/controller/build/initialize_pod.go | 105 -
pkg/controller/build/initialize_routine.go | 50 -
pkg/controller/build/log.go | 23 -
pkg/controller/build/monitor_pod.go | 99 -
pkg/controller/build/monitor_routine.go | 61 -
pkg/controller/build/recovery.go | 97 -
pkg/controller/build/schedule_pod.go | 204 -
pkg/controller/build/schedule_routine.go | 161 -
pkg/controller/controller.go | 34 -
pkg/controller/integration/action.go | 54 -
pkg/controller/integration/build_kit.go | 151 -
pkg/controller/integration/deploy.go | 64 -
pkg/controller/integration/error.go | 61 -
pkg/controller/integration/initialize.go | 60 -
.../integration/integration_controller.go | 303 --
pkg/controller/integration/log.go | 23 -
pkg/controller/integration/monitor.go | 105 -
pkg/controller/integration/platform_setup.go | 85 -
pkg/controller/integration/util.go | 142 -
pkg/controller/integration/util_test.go | 291 --
pkg/controller/integrationkit/action.go | 54 -
pkg/controller/integrationkit/build.go | 193 -
pkg/controller/integrationkit/error.go | 59 -
pkg/controller/integrationkit/initialize.go | 65 -
.../integrationkit/integrationkit_controller.go | 270 --
pkg/controller/integrationkit/log.go | 23 -
pkg/controller/integrationkit/monitor.go | 59 -
pkg/controller/integrationplatform/action.go | 54 -
pkg/controller/integrationplatform/create.go | 86 -
pkg/controller/integrationplatform/create_test.go | 78 -
pkg/controller/integrationplatform/initialize.go | 151 -
.../integrationplatform/initialize_test.go | 160 -
.../integrationplatform_controller.go | 190 -
pkg/controller/integrationplatform/kaniko_cache.go | 113 -
pkg/controller/integrationplatform/log.go | 23 -
pkg/controller/integrationplatform/monitor.go | 58 -
pkg/controller/integrationplatform/warm.go | 78 -
pkg/controller/integrationplatform/warm_test.go | 138 -
pkg/event/manager.go | 245 --
pkg/install/builder.go | 55 -
pkg/install/cluster.go | 239 --
pkg/install/common.go | 130 -
pkg/install/openshift.go | 181 -
pkg/install/operator.go | 225 --
pkg/install/optional.go | 47 -
pkg/install/secret.go | 58 -
pkg/metadata/doc.go | 19 -
pkg/metadata/metadata.go | 112 -
pkg/metadata/metadata_capabilities_test.go | 57 -
pkg/metadata/metadata_dependencies_test.go | 749 ----
pkg/metadata/metadata_http_test.go | 273 --
pkg/metadata/metadata_uri_test.go | 298 --
pkg/metadata/types.go | 27 -
pkg/platform/defaults.go | 357 --
pkg/platform/doc.go | 19 -
pkg/platform/operator.go | 82 -
pkg/platform/platform.go | 112 -
pkg/platform/resources.go | 52 -
pkg/trait/affinity.go | 279 --
pkg/trait/affinity_test.go | 154 -
pkg/trait/builder.go | 549 ---
pkg/trait/builder_test.go | 161 -
pkg/trait/camel.go | 156 -
pkg/trait/camel_test.go | 102 -
pkg/trait/container.go | 504 ---
pkg/trait/container_probes_test.go | 179 -
pkg/trait/container_test.go | 149 -
pkg/trait/cron.go | 526 ---
pkg/trait/cron_test.go | 520 ---
pkg/trait/dependencies.go | 114 -
pkg/trait/dependencies_test.go | 329 --
pkg/trait/deployer.go | 141 -
pkg/trait/deployer_test.go | 94 -
pkg/trait/deployment.go | 199 -
pkg/trait/deployment_test.go | 213 --
pkg/trait/doc.go | 19 -
pkg/trait/environment.go | 88 -
pkg/trait/environment_test.go | 244 --
pkg/trait/gc.go | 255 --
pkg/trait/gc_test.go | 87 -
pkg/trait/ingress.go | 149 -
pkg/trait/ingress_test.go | 199 -
pkg/trait/init.go | 81 -
pkg/trait/istio.go | 86 -
pkg/trait/istio_test.go | 165 -
pkg/trait/jolokia.go | 232 --
pkg/trait/jolokia_test.go | 278 --
pkg/trait/jvm.go | 169 -
pkg/trait/jvm_test.go | 227 --
pkg/trait/knative.go | 453 ---
pkg/trait/knative_service.go | 325 --
pkg/trait/knative_service_test.go | 325 --
pkg/trait/knative_test.go | 533 ---
pkg/trait/openapi.go | 306 --
pkg/trait/openapi_test.go | 64 -
pkg/trait/owner.go | 141 -
pkg/trait/owner_test.go | 96 -
pkg/trait/platform.go | 123 -
pkg/trait/platform_test.go | 172 -
pkg/trait/prometheus.go | 246 --
pkg/trait/prometheus_test.go | 205 -
pkg/trait/pull_secret.go | 88 -
pkg/trait/pull_secret_test.go | 81 -
pkg/trait/quarkus.go | 62 -
pkg/trait/quarkus_test.go | 89 -
pkg/trait/route.go | 188 -
pkg/trait/route_test.go | 202 -
pkg/trait/service.go | 136 -
pkg/trait/service_test.go | 297 --
pkg/trait/trait.go | 99 -
pkg/trait/trait_catalog.go | 220 --
pkg/trait/trait_factory.go | 29 -
pkg/trait/trait_register.go | 48 -
pkg/trait/trait_test.go | 496 ---
pkg/trait/trait_types.go | 751 ----
pkg/trait/util.go | 182 -
pkg/trait/util_test.go | 101 -
pkg/trait/zz_desc_generated.go | 1 -
pkg/trait/zz_generated_doc.go | 1 -
pkg/util/camel/catalog.go | 150 -
pkg/util/camel/catalog_test.go | 44 -
release.adoc | 177 -
script/Makefile | 253 --
script/build_catalog.sh | 33 -
script/build_olm.sh | 33 -
script/check_licenses.sh | 64 -
script/cross_compile.sh | 63 -
script/embed_resources.sh | 30 -
script/gen_client.sh | 52 -
script/gen_doc.sh | 24 -
script/gen_release_notes.sh | 69 -
script/git_tag.sh | 36 -
script/headers/default-jvm.txt | 16 -
script/headers/default.txt | 16 -
script/headers/js.txt | 14 -
script/headers/sh.txt | 14 -
script/headers/xml.txt | 14 -
script/headers/yaml.txt | 16 -
script/images_push.sh | 27 -
script/install_minikube.sh | 28 -
script/install_minishift.sh | 43 -
script/next_snapshot.sh | 30 -
script/package_examples.sh | 30 -
script/package_maven_artifacts.sh | 55 -
script/prepare_release.sh | 27 -
script/publish_base_images.sh | 32 -
script/rat_check.sh | 29 -
script/release_helm.sh | 30 -
script/set_version.sh | 40 -
script/travis_build.sh | 86 -
script/trigger_nightly_build.sh | 20 -
script/unsnapshot_olm.sh | 49 -
558 files changed, 2 insertions(+), 64250 deletions(-)
diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 6b9e372..0000000
--- a/.dockerignore
+++ /dev/null
@@ -1 +0,0 @@
-openshift.local.clusterup*
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
deleted file mode 100644
index 0755d0d..0000000
--- a/.github/pull_request_template.md
+++ /dev/null
@@ -1,18 +0,0 @@
-<!-- Description -->
-
-
-
-
-<!--
-Enter your extended release note in the below block. If the PR requires
-additional action from users switching to the new release, include the string
-"action required". If no release note is required, write "NONE".
-
-You can (optionally) mark this PR with labels "kind/bug" or "kind/feature" to make sure
-the text is added to the right section of the release notes.
--->
-
-**Release Note**
-```release-note
-NONE
-```
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index 8d0d100..0000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: build
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-jobs:
- build:
- strategy:
- matrix:
- # TODO: test an all the supported OS
- # [ubuntu-latest, macos-latest, windows-latest]
- os: [ubuntu-latest]
- runs-on: ${{ matrix.os }}
- steps:
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Install Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cache modules
- uses: actions/cache@v1
- with:
- path: ~/go/pkg/mod
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-
- - name: Test
- run: make
diff --git a/.github/workflows/builder.yml b/.github/workflows/builder.yml
deleted file mode 100644
index a0a385a..0000000
--- a/.github/workflows/builder.yml
+++ /dev/null
@@ -1,132 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: builder
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- strategy:
- matrix:
- publisher: ["Buildah", "Spectrum", "Kaniko"]
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cleanup
- run: |
- ls -lart
- echo "Initial status:"
- df -h
-
- echo "Cleaning up resources:"
- sudo swapoff -a
- sudo rm -f /swapfile
- sudo apt clean
- docker rmi $(docker image ls -aq)
-
- echo "Final status:"
- df -h
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Set Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Get KinD (Kubernetes in Docker)
- uses: engineerd/setup-kind@v0.1.0
- with:
- version: v0.6.1
- skipClusterCreation: "true"
- - name: Start KinD Cluster with Internal Registry
- run: |
- CLUSTER_NAME="kind"
- REGISTRY_CONTAINER_NAME='kind-registry'
- REGISTRY_PORT='5000'
- docker run -d -p "${REGISTRY_PORT}:5000" --restart=always --name "${REGISTRY_CONTAINER_NAME}" registry:2
-
- REGISTRY_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}")
- cat <<EOF | kind create cluster --config=-
- kind: Cluster
- apiVersion: kind.x-k8s.io/v1alpha4
- containerdConfigPatches:
- - |-
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."${REGISTRY_IP}:${REGISTRY_PORT}"]
- endpoint = ["http://${REGISTRY_IP}:${REGISTRY_PORT}"]
- EOF
- for node in $(kind get nodes --name ${CLUSTER_NAME}); do
- docker exec "${node}" sh -c "echo $(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}") registry >> /etc/hosts"
- done
- - name: Info
- run: |
- kubectl cluster-info
- kubectl describe nodes
- - name: Run IT
- # Disable registry tests as not compatible with KinD
- #env:
- # TEST_DOCKER_HUB_USERNAME: ${{ secrets.TEST_DOCKER_HUB_USERNAME }}
- # TEST_DOCKER_HUB_PASSWORD: ${{ secrets.TEST_DOCKER_HUB_PASSWORD }}
- # TEST_GITHUB_PACKAGES_REPO: ${{ secrets.TEST_GITHUB_PACKAGES_REPO }}
- # TEST_GITHUB_PACKAGES_USERNAME: ${{ secrets.TEST_GITHUB_PACKAGES_USERNAME }}
- # TEST_GITHUB_PACKAGES_PASSWORD: ${{ secrets.TEST_GITHUB_PACKAGES_PASSWORD }}
- env:
- KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY: ${{ matrix.publisher }}
- run: |
- # Set the test to periodically cleanup the docker system
- export KAMEL_TEST_CLEANUP="docker system prune -f"
-
- # Compute registry parameters
- CAMEL_K_REGISTRY=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "kind-registry")
- echo "Using registry ${CAMEL_K_REGISTRY}:5000"
- echo "Build project"
- make build-kamel
- echo "Adding maven artifacts to the image context"
- make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts
- echo "Copying binary file to docker dir"
- mkdir -p ./build/_output/bin
- cp ./kamel ./build/_output/bin/
- echo "Building the images"
- export LOCAL_IMAGE=localhost:5000/apache/camel-k:$(make version)
- export IMAGE=${CAMEL_K_REGISTRY}:5000/apache/camel-k:$(make version)
- docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile .
- docker push ${LOCAL_IMAGE}
-
- # Make the Apache Snapshots repository enabled by efault
- export KAMEL_INSTALL_MAVEN_REPOSITORIES=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
-
- echo "installing camel k cluster resources"
- ./kamel install --cluster-setup
-
- # Then run integration tests
- export KAMEL_INSTALL_REGISTRY=${CAMEL_K_REGISTRY}:5000
- export KAMEL_INSTALL_REGISTRY_INSECURE=true
- export KAMEL_INSTALL_OPERATOR_IMAGE=${IMAGE}
- export CAMEL_K_TEST_IMAGE_NAME=${CAMEL_K_REGISTRY}:5000/apache/camel-k
- export CAMEL_K_TEST_IMAGE_VERSION=$(make version)
- make test-builder
diff --git a/.github/workflows/knative.yml b/.github/workflows/knative.yml
deleted file mode 100644
index 24d4013..0000000
--- a/.github/workflows/knative.yml
+++ /dev/null
@@ -1,320 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: knative
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-
-jobs:
- test:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cleanup
- run: |
- ls -lart
- echo "Initial status:"
- df -h
-
- echo "Cleaning up resources:"
- sudo swapoff -a
- sudo rm -f /swapfile
- sudo apt clean
- docker rmi $(docker image ls -aq)
-
- echo "Final status:"
- df -h
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Set Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Get KinD (Kubernetes in Docker)
- uses: engineerd/setup-kind@v0.1.0
- with:
- version: v0.6.1
- skipClusterCreation: "true"
- - name: Start KinD Cluster with Internal Registry
- run: |
- CLUSTER_NAME="kind"
- REGISTRY_CONTAINER_NAME='kind-registry'
- REGISTRY_PORT='5000'
- docker run -d -p "${REGISTRY_PORT}:5000" --restart=always --name "${REGISTRY_CONTAINER_NAME}" registry:2
-
- REGISTRY_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}")
- cat <<EOF | kind create cluster --config=-
- kind: Cluster
- apiVersion: kind.x-k8s.io/v1alpha4
- containerdConfigPatches:
- - |-
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."${REGISTRY_IP}:${REGISTRY_PORT}"]
- endpoint = ["http://${REGISTRY_IP}:${REGISTRY_PORT}"]
- EOF
- for node in $(kind get nodes --name ${CLUSTER_NAME}); do
- docker exec "${node}" sh -c "echo $(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}") registry >> /etc/hosts"
- done
- - name: Downgrade Kubectl
- run: |
- # It fails with version 1.18
- sudo apt-get install -y --allow-downgrades kubectl=1.16.3-00
-
- - name: Info
- run: |
- kubectl version
- kubectl cluster-info
- kubectl describe nodes
- - name: Install Knative
- run: |
- # Prerequisites
- sudo pip install yq
-
- export SERVING_VERSION=v0.14.0
- export EVENTING_VERSION=v0.14.1
- export SOURCES_VERSION=v0.14.1
-
- # Serving
- kubectl apply --filename https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-crds.yaml
- curl -L -s https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Kourier
- kubectl apply --filename https://github.com/knative/net-kourier/releases/download/$SERVING_VERSION/kourier.yaml
- kubectl patch configmap/config-network \
- --namespace knative-serving \
- --type merge \
- --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'
-
- # Eventing
- kubectl apply --filename https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-crds.yaml
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Eventing channels
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/in-memory-channel.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Eventing broker
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/channel-broker.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Camel Sources
- kubectl apply --filename https://github.com/knative/eventing-contrib/releases/download/$SOURCES_VERSION/camel.yaml
-
- # Wait for installation completed
- while [ "$(kubectl get pod -n kourier-system --no-headers | wc -l)" == "0" ]; do echo "Waiting for pods to start in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done
- while [ "$(kubectl get pod -n kourier-system -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done
- while [ "$(kubectl get pod -n knative-serving -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-serving"; kubectl get pod -n knative-serving; sleep 5; done
- while [ "$(kubectl get pod -n knative-eventing -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-eventing"; kubectl get pod -n knative-eventing; sleep 5; done
- while [ "$(kubectl get pod -n knative-sources -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-sources"; kubectl get pod -n knative-sources; sleep 5; done
-
- - name: Run IT
- run: |
- # Set the test to periodically cleanup the docker system
- export KAMEL_TEST_CLEANUP="docker system prune -f"
-
- # Use spectrum builder (faster):
- export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum
-
- # Compute registry parameters
- CAMEL_K_REGISTRY=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "kind-registry")
- echo "Using registry ${CAMEL_K_REGISTRY}:5000"
-
- echo "Build project"
- make build-kamel
- echo "Adding maven artifacts to the image context"
- make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts
- echo "Copying binary file to docker dir"
- mkdir -p ./build/_output/bin
- cp ./kamel ./build/_output/bin/
- echo "Building the images"
- export LOCAL_IMAGE=localhost:5000/apache/camel-k:$(make version)
- export IMAGE=${CAMEL_K_REGISTRY}:5000/apache/camel-k:$(make version)
- docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile .
- docker push ${LOCAL_IMAGE}
-
- # Make the Apache Snapshots repository enabled by efault
- export KAMEL_INSTALL_MAVEN_REPOSITORIES=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
-
- echo "installing camel k cluster resources"
- ./kamel install --cluster-setup
-
- # Then run integration tests
- export KAMEL_INSTALL_REGISTRY=${CAMEL_K_REGISTRY}:5000
- export KAMEL_INSTALL_REGISTRY_INSECURE=true
- export KAMEL_INSTALL_OPERATOR_IMAGE=${IMAGE}
- export CAMEL_K_TEST_IMAGE_NAME=${CAMEL_K_REGISTRY}:5000/apache/camel-k
- export CAMEL_K_TEST_IMAGE_VERSION=$(make version)
- make test-knative
-
- yaks:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cleanup
- run: |
- ls -lart
- echo "Initial status:"
- df -h
-
- echo "Cleaning up resources:"
- sudo swapoff -a
- sudo rm -f /swapfile
- sudo apt clean
- docker rmi $(docker image ls -aq)
-
- echo "Final status:"
- df -h
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Set Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Get YAKS
- run: |
- export YAKS_VERSION=0.0.33
- curl -L https://github.com/citrusframework/yaks/releases/download/v${YAKS_VERSION}/yaks_${YAKS_VERSION}_Linux_x86_64.tar.gz -o yaks.tar.gz
- tar -zxf yaks.tar.gz
- sudo mv yaks /usr/local/bin/
- - name: Get KinD (Kubernetes in Docker)
- uses: engineerd/setup-kind@v0.1.0
- with:
- version: v0.6.1
- skipClusterCreation: "true"
- - name: Start KinD Cluster with Internal Registry
- run: |
- CLUSTER_NAME="kind"
- REGISTRY_CONTAINER_NAME='kind-registry'
- REGISTRY_PORT='5000'
- docker run -d -p "${REGISTRY_PORT}:5000" --restart=always --name "${REGISTRY_CONTAINER_NAME}" registry:2
-
- REGISTRY_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}")
- cat <<EOF | kind create cluster --config=-
- kind: Cluster
- apiVersion: kind.x-k8s.io/v1alpha4
- containerdConfigPatches:
- - |-
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."${REGISTRY_IP}:${REGISTRY_PORT}"]
- endpoint = ["http://${REGISTRY_IP}:${REGISTRY_PORT}"]
- EOF
- for node in $(kind get nodes --name ${CLUSTER_NAME}); do
- docker exec "${node}" sh -c "echo $(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}") registry >> /etc/hosts"
- done
- - name: Downgrade Kubectl
- run: |
- # It fails with version 1.18
- sudo apt-get install -y --allow-downgrades kubectl=1.16.3-00
-
- - name: Info
- run: |
- kubectl version
- kubectl cluster-info
- kubectl describe nodes
- - name: Install YAKS
- run: |
- yaks install --cluster-setup
- - name: Install Knative
- run: |
- # Prerequisites
- sudo pip install yq
-
- export SERVING_VERSION=v0.14.0
- export EVENTING_VERSION=v0.14.1
- export SOURCES_VERSION=v0.14.1
-
- # Serving
- kubectl apply --filename https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-crds.yaml
- curl -L -s https://github.com/knative/serving/releases/download/$SERVING_VERSION/serving-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Kourier
- kubectl apply --filename https://github.com/knative/net-kourier/releases/download/$SERVING_VERSION/kourier.yaml
- kubectl patch configmap/config-network \
- --namespace knative-serving \
- --type merge \
- --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'
-
- # Eventing
- kubectl apply --filename https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-crds.yaml
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/eventing-core.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Eventing channels
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/in-memory-channel.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Eventing broker
- curl -L -s https://github.com/knative/eventing/releases/download/$EVENTING_VERSION/channel-broker.yaml | yq 'del(.spec.template.spec.containers[]?.resources)' -y | kubectl apply -f -
-
- # Camel Sources
- kubectl apply --filename https://github.com/knative/eventing-contrib/releases/download/$SOURCES_VERSION/camel.yaml
-
- # Wait for installation completed
- while [ "$(kubectl get pod -n kourier-system --no-headers | wc -l)" == "0" ]; do echo "Waiting for pods to start in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done
- while [ "$(kubectl get pod -n kourier-system -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in kourier-system"; kubectl get pod -n kourier-system; sleep 5; done
- while [ "$(kubectl get pod -n knative-serving -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-serving"; kubectl get pod -n knative-serving; sleep 5; done
- while [ "$(kubectl get pod -n knative-eventing -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-eventing"; kubectl get pod -n knative-eventing; sleep 5; done
- while [ "$(kubectl get pod -n knative-sources -o 'jsonpath={range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}' | grep -v True | wc -l)" != "0" ]; do echo "Waiting for all pods to be ready in knative-sources"; kubectl get pod -n knative-sources; sleep 5; done
-
- - name: Run IT
- run: |
- # Set the test to periodically cleanup the docker system
- export KAMEL_TEST_CLEANUP="docker system prune -f"
-
- # Use spectrum builder (faster):
- export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum
-
- # Compute registry parameters
- CAMEL_K_REGISTRY=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "kind-registry")
- echo "Using registry ${CAMEL_K_REGISTRY}:5000"
-
- echo "Build project"
- make build-kamel
- echo "Adding maven artifacts to the image context"
- make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts
- echo "Copying binary file to docker dir"
- mkdir -p ./build/_output/bin
- cp ./kamel ./build/_output/bin/
- echo "Building the images"
- export LOCAL_IMAGE=localhost:5000/apache/camel-k:$(make version)
- export IMAGE=${CAMEL_K_REGISTRY}:5000/apache/camel-k:$(make version)
- docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile .
- docker push ${LOCAL_IMAGE}
-
- # Make the Apache Snapshots repository enabled by efault
- export KAMEL_INSTALL_MAVEN_REPOSITORIES=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
-
- echo "Making kamel global"
- sudo mv kamel /usr/local/bin/
-
- echo "installing camel k cluster resources"
- kamel install --cluster-setup
-
- # Then run integration tests
- export KAMEL_INSTALL_REGISTRY=${CAMEL_K_REGISTRY}:5000
- export KAMEL_INSTALL_REGISTRY_INSECURE=true
- export KAMEL_INSTALL_OPERATOR_IMAGE=${IMAGE}
- export CAMEL_K_TEST_IMAGE_NAME=${CAMEL_K_REGISTRY}:5000/apache/camel-k
- export CAMEL_K_TEST_IMAGE_VERSION=$(make version)
-
- yaks test e2e/yaks
diff --git a/.github/workflows/kubernetes.yml b/.github/workflows/kubernetes.yml
deleted file mode 100644
index 4da0ef7..0000000
--- a/.github/workflows/kubernetes.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: kubernetes
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cleanup
- run: |
- ls -lart
- echo "Initial status:"
- df -h
-
- echo "Cleaning up resources:"
- sudo swapoff -a
- sudo rm -f /swapfile
- sudo apt clean
- docker rmi $(docker image ls -aq)
-
- echo "Final status:"
- df -h
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Set Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Get KinD (Kubernetes in Docker)
- uses: engineerd/setup-kind@v0.1.0
- with:
- version: v0.6.1
- skipClusterCreation: "true"
- - name: Start KinD Cluster with Internal Registry
- run: |
- CLUSTER_NAME="kind"
- REGISTRY_CONTAINER_NAME='kind-registry'
- REGISTRY_PORT='5000'
- docker run -d -p "${REGISTRY_PORT}:5000" --restart=always --name "${REGISTRY_CONTAINER_NAME}" registry:2
-
- REGISTRY_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}")
- cat <<EOF | kind create cluster --config=-
- kind: Cluster
- apiVersion: kind.x-k8s.io/v1alpha4
- containerdConfigPatches:
- - |-
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."${REGISTRY_IP}:${REGISTRY_PORT}"]
- endpoint = ["http://${REGISTRY_IP}:${REGISTRY_PORT}"]
- EOF
- for node in $(kind get nodes --name ${CLUSTER_NAME}); do
- docker exec "${node}" sh -c "echo $(docker inspect --format '{{.NetworkSettings.IPAddress }}' "${REGISTRY_CONTAINER_NAME}") registry >> /etc/hosts"
- done
- - name: Info
- run: |
- kubectl cluster-info
- kubectl describe nodes
- - name: Run IT
- # Disable registry tests as not compatible with KinD
- #env:
- # TEST_DOCKER_HUB_USERNAME: ${{ secrets.TEST_DOCKER_HUB_USERNAME }}
- # TEST_DOCKER_HUB_PASSWORD: ${{ secrets.TEST_DOCKER_HUB_PASSWORD }}
- # TEST_GITHUB_PACKAGES_REPO: ${{ secrets.TEST_GITHUB_PACKAGES_REPO }}
- # TEST_GITHUB_PACKAGES_USERNAME: ${{ secrets.TEST_GITHUB_PACKAGES_USERNAME }}
- # TEST_GITHUB_PACKAGES_PASSWORD: ${{ secrets.TEST_GITHUB_PACKAGES_PASSWORD }}
- run: |
- # Set the test to periodically cleanup the docker system
- export KAMEL_TEST_CLEANUP="docker system prune -f"
-
- # Using Spectrum as builder (faster)
- export KAMEL_INSTALL_BUILD_PUBLISH_STRATEGY=Spectrum
-
- # Compute registry parameters
- CAMEL_K_REGISTRY=$(docker inspect --format '{{.NetworkSettings.IPAddress }}' "kind-registry")
- echo "Using registry ${CAMEL_K_REGISTRY}:5000"
- echo "Build project"
- make build-kamel
- echo "Adding maven artifacts to the image context"
- make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts
- echo "Copying binary file to docker dir"
- mkdir -p ./build/_output/bin
- cp ./kamel ./build/_output/bin/
- echo "Building the images"
- export LOCAL_IMAGE=localhost:5000/apache/camel-k:$(make version)
- export IMAGE=${CAMEL_K_REGISTRY}:5000/apache/camel-k:$(make version)
- docker build -t "${LOCAL_IMAGE}" -f build/Dockerfile .
- docker push ${LOCAL_IMAGE}
-
- # Make the Apache Snapshots repository enabled by efault
- export KAMEL_INSTALL_MAVEN_REPOSITORIES=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
-
- echo "installing camel k cluster resources"
- ./kamel install --cluster-setup
-
- # Then run integration tests
- export KAMEL_INSTALL_REGISTRY=${CAMEL_K_REGISTRY}:5000
- export KAMEL_INSTALL_REGISTRY_INSECURE=true
- export KAMEL_INSTALL_OPERATOR_IMAGE=${IMAGE}
- export CAMEL_K_TEST_IMAGE_NAME=${CAMEL_K_REGISTRY}:5000/apache/camel-k
- export CAMEL_K_TEST_IMAGE_VERSION=$(make version)
- make test-integration
diff --git a/.github/workflows/openshift.yml b/.github/workflows/openshift.yml
deleted file mode 100644
index 0e7ac3d..0000000
--- a/.github/workflows/openshift.yml
+++ /dev/null
@@ -1,154 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: openshift-builder
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cleanup
- run: |
- ls -lart
- echo "Initial status:"
- df -h
-
- echo "Cleaning up resources:"
- sudo swapoff -a
- sudo rm -f /swapfile
- sudo apt clean
- docker rmi $(docker image ls -aq)
-
- echo "Final status:"
- df -h
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Set Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Get OpenShift Client (oc)
- run: |
- export OPENSHIFT_VERSION=v3.11.0
- export OPENSHIFT_COMMIT=0cbc58b
- export MAVEN_OPTS=-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-
- # set docker0 to promiscuous mode
- sudo ip link set docker0 promisc on
-
- # Download and install the oc binary
- sudo mount --make-shared /
-
- sudo apt-get install resolvconf
- echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/head > /dev/null
- echo "nameserver 8.8.4.4" | sudo tee /etc/resolvconf/resolv.conf.d/head > /dev/null
- sudo service resolvconf restart
-
- sudo service docker stop
- sudo echo '{"insecure-registries": ["172.30.0.0/16"]}' | sudo tee /etc/docker/daemon.json > /dev/null
- sudo service docker start
-
- DOWNLOAD_URL=https://github.com/openshift/origin/releases/download/$OPENSHIFT_VERSION/openshift-origin-client-tools-$OPENSHIFT_VERSION-$OPENSHIFT_COMMIT-linux-64bit.tar.gz
- wget -O client.tar.gz ${DOWNLOAD_URL}
- tar xvzOf client.tar.gz > oc.bin
- sudo mv oc.bin /usr/local/bin/oc
- sudo chmod 755 /usr/local/bin/oc
-
- - name: Start OpenShift Cluster
- run: |
- # Figure out this host's IP address
- IP_ADDR="$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)"
-
- # Setup cluster dir
- sudo mkdir -p /home/runner/lib/oc
- sudo chmod 777 /home/runner/lib/oc
- cd /home/runner/lib/oc
-
- # Start OpenShift
- oc cluster up --public-hostname=$IP_ADDR --enable=persistent-volumes,registry,router
- oc login -u system:admin
-
- # Wait until we have a ready node in openshift
- TIMEOUT=0
- TIMEOUT_COUNT=60
- until [ $TIMEOUT -eq $TIMEOUT_COUNT ]; do
- if [ -n "$(oc get nodes | grep Ready)" ]; then
- break
- fi
- echo "openshift is not up yet"
- TIMEOUT=$((TIMEOUT+1))
- sleep 5
- done
-
- if [ $TIMEOUT -eq $TIMEOUT_COUNT ]; then
- echo "Failed to start openshift"
- exit 1
- fi
-
- echo "openshift is deployed and reachable"
-
- - name: Info
- run: |
- oc describe nodes
- - name: Run IT
- #env:
- # TEST_DOCKER_HUB_USERNAME: ${{ secrets.TEST_DOCKER_HUB_USERNAME }}
- # TEST_DOCKER_HUB_PASSWORD: ${{ secrets.TEST_DOCKER_HUB_PASSWORD }}
- # TEST_GITHUB_PACKAGES_REPO: ${{ secrets.TEST_GITHUB_PACKAGES_REPO }}
- # TEST_GITHUB_PACKAGES_USERNAME: ${{ secrets.TEST_GITHUB_PACKAGES_USERNAME }}
- # TEST_GITHUB_PACKAGES_PASSWORD: ${{ secrets.TEST_GITHUB_PACKAGES_PASSWORD }}
- run: |
- # Compute registry parameters
- echo "Build project"
- make build-kamel
-
- echo "Adding maven artifacts to the image context"
- make PACKAGE_ARTIFACTS_STRATEGY=download package-artifacts
-
- echo "Copying binary file to docker dir"
- mkdir -p ./build/_output/bin
- cp ./kamel ./build/_output/bin/
-
- echo "Building the images"
- export IMAGE=docker.io/apache/camel-k:$(make version)
- docker build -t "${IMAGE}" -f build/Dockerfile .
-
- # Make the Apache Snapshots repository enabled by efault
- export KAMEL_INSTALL_MAVEN_REPOSITORIES=https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots
-
- echo "installing camel k cluster resources"
- ./kamel install --cluster-setup
-
- # Login as normal user
- oc login -u developer
-
- # Then run integration tests
- make test-builder
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
deleted file mode 100644
index b1d32e7..0000000
--- a/.github/workflows/release.yml
+++ /dev/null
@@ -1,137 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: release
-
-on:
- push:
- tags:
- - '*nightly*'
-
-jobs:
- release:
- runs-on: ubuntu-latest
- steps:
- - name: Set up JDK 11
- uses: joschi/setup-jdk@v1
- with:
- java-version: openjdk11
- - name: Install Go
- uses: actions/setup-go@v1
- with:
- go-version: 1.13.x
- - name: Checkout code
- uses: actions/checkout@v2
- - name: Cache modules
- uses: actions/cache@v1
- with:
- path: ~/go/pkg/mod
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-
- - name: Prerequisites
- run: |
- export OPERATOR_SDK_VERSION=v0.15.2
- curl -L https://github.com/operator-framework/operator-sdk/releases/download/v0.15.2/operator-sdk-${OPERATOR_SDK_VERSION}-x86_64-linux-gnu -o operator-sdk
- chmod a+x operator-sdk
- sudo mv operator-sdk /usr/local/bin
-
- - name: Global Env
- env:
- TEST_DOCKER_HUB_USERNAME: ${{ secrets.TEST_DOCKER_HUB_USERNAME }}
- TEST_DOCKER_HUB_PASSWORD: ${{ secrets.TEST_DOCKER_HUB_PASSWORD }}
- run: |
- VERSION=${GITHUB_REF##*/}
- echo "Using VERSION=$VERSION"
- echo "::set-env name=VERSION::$VERSION"
-
- IMAGE_NAME=docker.io/${TEST_DOCKER_HUB_USERNAME:-testcamelk}/camel-k
- echo "Using IMAGE_NAME=$IMAGE_NAME"
- echo "::set-env name=IMAGE_NAME::$IMAGE_NAME"
-
- MAVEN_REPOSITORY=$(make get-staging-repo)
- echo "Using MAVEN_REPOSITORY=$MAVEN_REPOSITORY"
- echo "::set-env name=MAVEN_REPOSITORY::$MAVEN_REPOSITORY"
-
- docker login -u $TEST_DOCKER_HUB_USERNAME -p $TEST_DOCKER_HUB_PASSWORD
-
- - name: Codegen
- run: |
- make VERSION=$VERSION IMAGE_NAME=$IMAGE_NAME codegen set-version build-resources
-
- - name: Build
- run: |
- make VERSION=$VERSION IMAGE_NAME=$IMAGE_NAME release-nightly
-
- - name: Check
- run: ls -l
-
- - name: Create Release
- id: create_release
- uses: actions/create-release@latest
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ env.VERSION }}
- release_name: Release ${{ env.VERSION }}
- body: |
- Apache Camel K nightly build for testing (unstable).
-
- To test it, download the client for your OS and run:
-
- ```
- kamel install --olm=false --maven-repository=${{ env.MAVEN_REPOSITORY }}
- ```
-
- draft: false
- prerelease: true
- - name: Upload Client Linux
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./camel-k-client-${{ env.VERSION }}-linux-64bit.tar.gz
- asset_name: camel-k-client-${{ env.VERSION }}-linux-64bit.tar.gz
- asset_content_type: application/tar+gzip
- - name: Upload Client Mac
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./camel-k-client-${{ env.VERSION }}-mac-64bit.tar.gz
- asset_name: camel-k-client-${{ env.VERSION }}-mac-64bit.tar.gz
- asset_content_type: application/tar+gzip
- - name: Upload Client Windows
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./camel-k-client-${{ env.VERSION }}-windows-64bit.tar.gz
- asset_name: camel-k-client-${{ env.VERSION }}-windows-64bit.tar.gz
- asset_content_type: application/tar+gzip
- - name: Upload Examples
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./camel-k-examples-${{ env.VERSION }}.tar.gz
- asset_name: camel-k-examples-${{ env.VERSION }}.tar.gz
- asset_content_type: application/tar+gzip
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
deleted file mode 100644
index f8c2be7..0000000
--- a/.github/workflows/validate.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-name: validate
-
-on:
- pull_request:
- branches:
- - master
- push:
- branches:
- - master
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - name: Check out code
- uses: actions/checkout@v2
- - name: Cache modules
- uses: actions/cache@v1
- with:
- path: ~/go/pkg/mod
- key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go-
- - name: Lint
- run: |
- curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b . v1.20.1
- ./golangci-lint config path
- ./golangci-lint --version
- GOGC=20 ./golangci-lint run --verbose --deadline 15m --config .golangci.yml
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index b32db58..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,146 +0,0 @@
-# Go vendor
-/vendor
-
-# Binary files
-/kamel
-/license-check
-
-# Config files
-/kamel-config.yaml
-/.kamel/kamel-config.yaml
-
-# Released Packages
-*.tar.gz
-
-# Release Notes
-/release-notes.md
-
-# Unuseful file
-/deploy/operator.yaml
-
-# IDEs
-.idea
-*.iml
-.project
-.metadata
-.gopath
-
-# Temporary Build Files
-build/_output
-build/_test
-build/_maven_output
-
-# envrc
-.envrc
-
-# eclipse / vscode
-.settings
-.classpath
-.factorypath
-
-# Created by https://www.gitignore.io/api/go,vim,emacs,visualstudiocode
-
-### Emacs ###
-# -*- mode: gitignore; -*-
-*~
-\#*\#
-/.emacs.desktop
-/.emacs.desktop.lock
-*.elc
-auto-save-list
-tramp
-.\#*
-
-# Org-mode
-.org-id-locations
-*_archive
-
-# flymake-mode
-*_flymake.*
-
-# eshell files
-/eshell/history
-/eshell/lastdir
-
-# elpa packages
-/elpa/
-
-# reftex files
-*.rel
-
-# AUCTeX auto folder
-/auto/
-
-# cask packages
-.cask/
-dist/
-
-# Flycheck
-flycheck_*.el
-
-# server auth directory
-/server/
-
-# projectiles files
-.projectile
-projectile-bookmarks.eld
-
-# directory configuration
-.dir-locals.el
-
-# saveplace
-places
-
-# url cache
-url/cache/
-
-# cedet
-ede-projects.el
-
-# smex
-smex-items
-
-# company-statistics
-company-statistics-cache.el
-
-# anaconda-mode
-anaconda-mode/
-
-### Go ###
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-
-# Test binary, build with 'go test -c'
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-### Vim ###
-# swap
-.sw[a-p]
-.*.sw[a-p]
-# session
-Session.vim
-# temporary
-.netrwhist
-# auto-generated tag files
-tags
-
-### VisualStudioCode ###
-.vscode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-# Unix line endings for the Maven wrapper script
-mvnw text eol=lf
-.history
-
-# End of https://www.gitignore.io/api/go,vim,emacs,visualstudiocode
diff --git a/.golangci.yml b/.golangci.yml
deleted file mode 100644
index 2d901b8..0000000
--- a/.golangci.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-linters-settings:
- lll:
- line-length: 170
-linters:
- enable-all: true
- disable:
- - dupl
- - gochecknoinits
- - gochecknoglobals
- - funlen
- - godox
- - whitespace
- - gocognit
- - wsl
-issues:
- exclude-rules:
- - path: pkg/client/clientset
- linters:
- - stylecheck
- - golint
- - deadcode
- - lll
- - unparam
- - varcheck
- - unused
- - path: pkg/client/informers
- linters:
- - stylecheck
- - golint
- - deadcode
- - lll
- - unparam
- - varcheck
- - unused
- - path: pkg/client/listers
- linters:
- - stylecheck
- - golint
- - deadcode
- - lll
- - unparam
- - varcheck
- - unused
- - path: deploy/resources.go
- linters:
- - stylecheck
- - golint
- - deadcode
- - lll
- - unparam
- - varcheck
- - unused
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100755
index fa4f7b4..0000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-import java.net.*;
-import java.io.*;
-import java.nio.channels.*;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL =
- "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if(mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if(mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: : " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if(!outputFile.getParentFile().exists()) {
- if(!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100755
index 01e6799..0000000
Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100755
index d6f02e6..0000000
--- a/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
\ No newline at end of file
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
deleted file mode 100644
index b49b4c1..0000000
--- a/.pre-commit-config.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-- repo: git://github.com/dnephin/pre-commit-golang
- sha: HEAD
- exclude:
- - vendor/.*
- hooks:
- - id: golangci-lint
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index c87e9c0..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-# Configuration file for Travis continuous integration.
-# See https://travis-ci.org/apache/camel-k
-
-sudo: required
-
-language: go
-
-# Go modules require xenial for mercurial TLS 1.2 support
-dist: xenial
-
-go:
- - 1.13.x
-
-install:
- - go mod tidy
-
-env:
- global:
- - OPENSHIFT_VERSION=3.11.0
- - OPENSHIFT_COMMIT=0cbc58b
- - MAVEN_OPTS=-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-
-services:
- - docker
-
-before_script:
- - true
-
-script:
- - ./script/travis_build.sh
-
-cache:
- directories:
- - $GOPATH/pkg/mod
diff --git a/KEYS b/KEYS
deleted file mode 100644
index 5099276..0000000
--- a/KEYS
+++ /dev/null
@@ -1,1773 +0,0 @@
-pub 1024D/F5BA7E4F 2006-02-10
-uid Hiram Chirino <hi...@hiramchirino.com>
-sig 3 F5BA7E4F 2006-02-10 Hiram Chirino <hi...@hiramchirino.com>
-sub 1024g/6733C080 2006-02-10
-sig F5BA7E4F 2006-02-10 Hiram Chirino <hi...@hiramchirino.com>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.1 (Darwin)
-
-mQGiBEPspSsRBADdguKAxMQbA32vTQrCyONR6Zs/YGdvau2Zrr3SSSSR0Ge4FMjZ
-4tzwpf6+32m4Bsf7YIwdLl0H5hI1CgT5gDl9kXvfaFUehFnwR+FDyiBRiyHjUpGF
-4dgkQfWy9diYeWGtsvszsvWHXtED4SXb322StX4MfJj+YesA1iEdTiXK6wCg1QDa
-RucfjC+kx4zPsJwkJOgYpyMEAMTiXtNwQcke6nIFb/lb5374NjwwVAuuMTrRWLyq
-5HodugEIHaw3EitQWtnFfXNkXTJZzS6t2HAGv29UTfhiBzKdkydgCkOk2MLWISOV
-fqcg0tNIp5ZJCmUHg3s+OFNSH4oUi65u+FyDseUid3OKtPI+ZhIk8N+DjOIg2Kvo
-/UALA/9q+WfBd7re+W3iUtU7TutUcwbKsjP+jpaJeUHg2ChOBxVfQKt4YlPHVdrR
-iCrfNi90Z8qbsZ0iAXuqexrfMq20pAPmpHRpe54mmP1CMT5m+Gq71eKIfkUrb3LC
-/zv08dLG2vm9oghd242wbcifaX+t7AhNAIpe/WTvQsB0gpdO4LQmSGlyYW0gQ2hp
-cmlubyA8aGlyYW1AaGlyYW1jaGlyaW5vLmNvbT6IWwQTEQIAGwUCQ+ylKwYLCQgH
-AwIDFQIDAxYCAQIeAQIXgAAKCRCf8lmA9bp+T/G/AKDM1QDs7il/CJhTycgDvE3c
-EOgUBwCfelsVK4sgBCooZptoaCCDgVtt71G5AQ0EQ+ylLhAEAJD25AWgwcNgBFKY
-svExQaGIojIGJyn4Cf/5U30cui/K7fIU7JtyNhKcfZdCrh2hKx+x3H/dTF6e0SrR
-hzKV7Dx0j76yhHHB1Ak25kjRxoU4Jk+CG0m+bRNTF9xz9k1ALSm3Y+A5RqNU10K6
-e/5KsPuXMGSGoQgJ1H6g/i80Wf8PAAMFA/9mIxu7lMaqE1OE7EeAsHgLslNbi0h9
-pjDUVNv8bc1Os2gBPaJD8B89EeheTHw6NMNIe75HVOpKk4UA0gvOBrxJqCr18yFJ
-BM5sIlaEmuJwZOW4dDGOR1oS5qgE9NzpmyKhE+fu/S1wmy0coL667+1xZcnrPbUF
-D4i7/aD1r8qJhohGBBgRAgAGBQJD7KUuAAoJEJ/yWYD1un5Pth0An0QEUs5cxpl8
-zL5kZCj7c8MN8YZDAKDR9LTb6woveul50+uGtUl2fIH1uA==
-=RBPl
------END PGP PUBLIC KEY BLOCK-----
-pub 1024D/E31AF533 2007-12-17 [expires: 2009-06-09]
-uid Hadrian Zbarcea (Apache) <ha...@apache.org>
-sig 3 E31AF533 2007-12-17 Hadrian Zbarcea (Apache) <ha...@apache.org>
-sig B4493B94 2007-12-17 Guillaume Nodet <gn...@apache.org>
-sig BB550746 2007-12-17 J. Daniel Kulp <da...@kulp.com>
-sub 2048g/6180521C 2007-12-17 [expires: 2009-06-09]
-sig E31AF533 2007-12-17 Hadrian Zbarcea (Apache) <ha...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-mQGiBEdmrcgRBADzy0H/OIT7ASGfTj4JDdnBiJCQfSZpeY2n3r5yW0tzMtb1jik/
-TyAwGyWvXMUCrRHlw33dVKNLztFQcNDfprmZxxORyTphhf6MMDhp3nAk56KT0vSF
-i/D8Kh4ERb86/bjveJDZJf0oPIaiwTz6Rdr5YxJCkR58cW/xpxBayb858wCgoex4
-1/1wipbpe7mGp9H2g8r/8WcEAOkm7S8gcg3NLZ62+RCwUZOJuIKCnq/UlwPEfIEL
-WwnOFVn3rL+y8U1560U3LYIAykBko+aCa7ZvqwvrW4OPUXJi+6MR1dKBAPiOQYkW
-NCtcGLa/Wdrxo5wjrP/XBFpSabvmxv19LUW8SJr/vH3XWQRYm5SJlnBaDgAzSBp3
-Cb7CBACj8wi9tJ8k5U/VV74ORRBJltlqaWBtMm3q9zf5WN/Rb1fxnfpZjvvpDQjQ
-PY6W0RNufE8V27558aTfuniBAVBOvxn4xedS91L7PMB2D/32J09/ICYFT9ekYGTA
-5Yl2pcTLd8PZu8MjFUssa8k/oxG9XrM4Zd764eIOAT+FmrZX9bQtSGFkcmlhbiBa
-YmFyY2VhIChBcGFjaGUpIDxoYWRyaWFuQGFwYWNoZS5vcmc+iGYEExECACYFAkdm
-rcgCGwMFCQLH6gAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAINWtR4xr1Mzuu
-AJ9mQdn6z2+gh5dDi6/fX7k1tISp7wCeON1lHB3RaQfJrabz63bLkKzROeOIRgQQ
-EQIABgUCR2a94wAKCRDs3+o8tEk7lJzcAJ9qAzsu1SoLekNJboMzJbsuQxrgNgCg
-vZcr6fHEXJajUejbOkd8caQQFQyIRgQQEQIABgUCR2a9SAAKCRCryO45u1UHRgf6
-AJ9BCGTjrCOQsrIfLYoIVxTVDT9pCACeMYK/6kaf80OHvBwlM3BwQbXBF065Ag0E
-R2at1xAIALiA44fG70XTj+XnlAbqq705B/yTCOTkOJh/Jayof9Rp78cok2eeCKOO
-HZ+YupiWcp6shdmyXAQGcfxyqcyskPIG42wwoDBONWj5kMvGbuJgooZRwDhbaPaY
-PRAHhPlCj+QTrzTsTJmy94bzYkkbfqNI3TOyvKUzmgYy9TLfLku7dLzncmSs+W/d
-bzjRpeoyLxQ+t7aeHPjxG93tIVvNrFHgAYGgvof5sWl0h0MitSVI7PHvVlHTHhNG
-dJ/quacr+xYLdF95eXDXGPvM0Jl/+UJk1GFdoDd1LXdzo0d4OzEMv2mWPZy+HVnB
-MFjTsrZp7+YIJj3WXU0WVgX0p+AYjE8AAwUH/ieONEnadpYN9bShfJKOiSNxlZ8L
-Y6L1nrWIhXtfibPIJsaW5AkFugVZfpMqvODV+ccildADJRQRvoRP7xUedztedeLw
-3ZsK5ApIoEVeEx9oSaS06QgQ8CFRptb3hRFAAmb9tzWalxpghXUR63fMO0bpaKDI
-VgFykuJyLjcW5RQsSHqfNk4LbfaSq3qCGL/3iVZlFtk4dbo70NLzFC7MnG27CWKK
-NPLjldTQXDU388GTzYqQTdy+SyPj9TzBFTlOATg+4a6KQsL9KMMMJQ56VX1c5Hyp
-WYkcDV9c/38/zVV80BfqYuX1DAJty3uRKn9+d86SYHDQ2YN4wDE/UtQpwsaITwQY
-EQIADwUCR2at1wIbDAUJAsfqAAAKCRAINWtR4xr1M27MAJ0VEQ9j2h5cgdhbrXnB
-bMLb26TK5ACgjeCxQDIepWB96CZMGDPb2CMdeFg=
-=2f9B
------END PGP PUBLIC KEY BLOCK-----
-
-pub 4096R/6A70C608 2009-06-10
- Fingerprint=4AAC 7338 D125 F866 4167 6AF6 1522 6672 6A70 C608
-
-uid Hadrian Zbarcea <ha...@apache.org>
-sig sig3 6A70C608 2009-06-10 __________ __________ [selfsig]
-sig sig B4493B94 2009-06-10 __________ __________ Guillaume Nodet <gn...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: SKS 1.1.0
-
-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
-HzSpeZz97HtFnC/bNqM=
-=H3nh
------END PGP PUBLIC KEY BLOCK-----
-
-pub 4096R/F43856A3 2009-08-22
- Key fingerprint = 51B5 2DC5 DD45 2F92 BE34 2CC2 858F C4C4 F438 56A3
-uid J. Daniel Kulp <da...@kulp.com>
-uid J. Daniel Kulp <dk...@apache.org>
-uid J. Daniel Kulp <dk...@progress.com>
-uid J. Daniel Kulp <da...@sopera.com>
-uid J. Daniel Kulp <dk...@talend.com>
-sub 4096R/6A36A392 2009-08-22
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v2.0.17 (GNU/Linux)
-
-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
-=xhT3
------END PGP PUBLIC KEY BLOCK-----
-pub 1024D/7FBBDC54 2007-09-24
-uid Freeman Fang <fr...@gmail.com>
-sig 3 7FBBDC54 2011-01-05 Freeman Fang <fr...@gmail.com>
-sub 1024g/9A39DC2F 2007-09-24
-sig 7FBBDC54 2007-09-24 Freeman Fang <fr...@gmail.com>
-
-pub 4096R/9F9C8684 2011-01-05
-uid Freeman(Yue) Fang (new signing key) <ff...@apache.org>
-sig 3 9F9C8684 2011-01-05 Freeman(Yue) Fang (new signing key) <ff...@apache.org>
-sig 7FBBDC54 2011-01-05 Freeman Fang <fr...@gmail.com>
-sub 4096R/C1270665 2011-01-05
-sig 9F9C8684 2011-01-05 Freeman(Yue) Fang (new signing key) <ff...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG/MacGPG2 v2.0.16 (Darwin)
-
-mQGiBEb3GWIRBADPBQjRwj9zqK/o0O+ahz02OncAN4AoSkv6W3BpRV3E4t6Agq40
-KhleD2BIn94eV6sAt+JltFhqFC4vrb35dmCqVqX6Rmi5X543aIJTBdUYKfbirbxQ
-zJZMv+AxgSfWRHQo5LCV8H20DjLybso/YDuSkA8xFqGnnypvNH6alUhBdwCguaJf
-2NiJCVllFTbfKiFbFyNKLUcD/3OXL5cI0sDPz7YhZ9bcFZC4zf2/5N1xFgavfmU7
-OWQpQKoP7jJmvNofNNHcDOBrXnG7L6+DxMUmL93QwUpuYh1/v9v0oFmTifXn8/12
-Px/bDdfJVHQGGXYY5+FmtVCcvC39hdcjUA52+yBZjaHeNyCP5533+ieh2l1QXPIT
-OH+8BACC6BeHZ3ONFtxfnaAsvlUQvmEZsWyIa6UaLmJUxWObYjtbW3USbEepCHGs
-K+b4x4TB9Sb88NrLuXl8EU2zAeiO0UE6OlXrhpvx0xbs2er8S65Zn8fUZCK3G467
-/n7lbmRUMRmQaLzwDrZSPo9a36RF+e2wWBk8zA1B69VdVFdcRbQlRnJlZW1hbiBG
-YW5nIDxmcmVlbWFuLmZhbmdAZ21haWwuY29tPohWBBMRAgAWAhsDAh4BAheABQJN
-JFRTBhUKCQgLAgAKCRDjK/8if7vcVDsaAJ9ESZgmrWO0lBoLYz0BvO1ydNoEywCe
-K+NJ3cheqgcyEmkhQPjJ89g5+Bq5AQ0ERvcZYxAEAJRJuWzIlKYu7yDq/1Ed+eC3
-6rbi21mGVfQ58HkrkW/glMpLfwxCZVewwn4Gr0Ooi07jEcA3fLhG0CQldKPVcSGw
-JVzY8+Ix+CpaKHKrXZ68Qj47pXkN99ctbmPpTTgqcsh0ozeOIjWSjCjvuFkawet1
-fhsVp/fjQyjdPjZ1ojTDAAMFA/4txISVDwFgfwqt+T0V0YFt9P3+KIaEGs1H6ipQ
-ujSt3GFy01ezLC9HDFG5vd7RFj2uoYwUu7ajaDtkcB0b2i/TtzdM2VFHfoOH/cQL
-Uwtmbx1u1EC0+dzsA4G0EjxMz+/AgQLYcIcrEchhLDY+pC+I0cjjK7h46YO1hGNU
-w3rpw4hIBBgRAgAJBQJG9xljAhsMAAoJEOMr/yJ/u9xUjK0AmKXZKposMEdmfcLK
-A36vMcxR/gkAnj6OoFeo8i+9j+2H1sX1l25PoSWXmQINBE0kVKQBEACshOznApFj
-OJp5FGstZoUtsBHvVXcYlbNMWzuVmcS4qIqfT6qjrMUjLX8OTyjdBmN+jOvCxFGt
-QRmzC9XOQsz8Nu8MhN88rZzmKsmOGZR7ZlIkbNQpNJx6k4f30Sqx8bw44kJUlrVl
-pm+fnjnbwfjVRjL/reDKGzfKrUoBWMg1A3cofuESwrrziHgMjfGu9FusulDMA1w5
-7JR/9z76jmr9Zx4XDswjPl+SEQ7CsckLaSWSv0sqYVAeGvGIlWkR/1th2Guz3lRW
-BhL1uhhpW5xF0F1Fr4LK3UwTO2xC+l4xJTh9kT8CzCPCWjaZEUf+JUHvK3qjeBzk
-1YFMRjUj+OapIJDKknPJvzXDoWEAOkn15/a4Nw44G54vJom9tc8Nsvq6Wg0mBwsF
-RZJKeEPzuQPmQK1sTFGYiWeDciwabzjdwwC4EQEqgt28jH+pK3FsCMQKX/XWl7Zi
-IRB2fxn1GDkd3ZuelZVwWtqnSlD7d4ToTSljq4SbPlr5pbrX117CenQXSppieC1R
-q558HVsb4xEpPp5IaM2YS0AEAPBu0VIZp5efunQjun1hDPPpltZKTaCh6O4BtF2R
-MS4sxmLSgEFOrbyZutv0INrYg58FXk4QYTN1gjsj7j28hlwXsU9mdDp3KjT0CpmW
-tGes/Ytraax7IEIyPko/DPrZLCJhfUyuDwARAQABtDZGcmVlbWFuKFl1ZSkgRmFu
-ZyAobmV3IHNpZ25pbmcga2V5KSA8ZmZhbmdAYXBhY2hlLm9yZz6JAiwEEwECABYC
-GwMCHgECF4AFAk0kVc8GFQoJCAsCAAoJELWdPQ+fnIaECPUQAIhxVXlw0VML6Ogk
-xXmZcl+jMiGzrdZrclZgumdflBuX4wkLxCceuiwzVfTPvFQulGryYcf9HBoqrXQr
-yJsCVM2176CNo31XlrnqYh5+/DKlwcGQtiNSZjjwcFe+BX1RcOXsDc1QV5W6AQkt
-T7/ogwiwq1kb0Rp14c3AO9RUGZeVpNXhUVlcp+BYc1QaXWlbYwUYznyhCnOHlQGq
-3Y+JbJh6eXhPxmOWNm9BJIS64DXABwyALBkLt6MGkwxNxJ0cUm69/HyUS97K0EFW
-kYIwRmWw+y4X/1br0zGuM6EPUK2CxAR4QTlZ222R6J+Q8IgtZZRnJ+0Uf0KD4RTZ
-6m9/gDNGXk6wPv0tXABSx9CKjP1DqrIByF86AZ1mA9ZAP5fGxGWFy/kPr60FE3hU
-fEXYGKXC9u8yyvnNwF688/dz4r3fz2pcw1gfmOM70gTy5+0QLg/fcic5gvlyShyT
-RwrDyjwdONaqOYgluhFhhmHmonQNWlCGII2JGXGN2o9cp34AvsK0plF5ZJNsWDre
-rIliAImcXKCRHgivSMdgNUU6T6rw4DlcU0dpGD1iMytmS3UTod+dDxxut8aSZbBV
-VgxP8P67lj0U9kTrkXXLDAl8fYAcfVWUIqIKvUZBJ14xOkTqSfGiNkTaQ6TRJLLh
-UEhX6E6tv7JnSnZi90SKY7YE2/6wiEYEEBECAAYFAk0kVkQACgkQ4yv/In+73FTo
-BgCePGkgDrONFTce6CAqq0v3Eb8G+2AAoKWd3MIwTfdTMi2OV/oax9QDXvdguQIN
-BE0kVKQBEAC/Li5vRmGyNNX6n1qrSYESUTgzzIBPdin5n7fga0oTU51fc5pzl8oF
-2ioKdSnGneZRrZouMrDf8nUmIZHZLTe5Kz9ncCFx9VtVhOkp84bwe9gBLrqglDy0
-mn5uB2DlRi2iB6vmxMy4Lm8mblGycJxN8uaAerJtHhNkInAYAY3SRl/zGZfrweFn
-WlFRAsjMYl1Ml3y0dv7WGfb/TmakF2Ngh3iMgaWAbzF0oC0NZ0VLSY9eB5SCg9Kb
-wFMf+T4cYjzM8OH89Lmv5if7CC4PQ71voVC90rfNweLQ0hMT/t+gFL1vwludjZ9M
-57flxMUta/RJk4yJ5wc3LBH8xf+Br8tTkX0Q5yCdMskCw6CMImDQjJNDUD7gfb/f
-pkX7qW6hfLBRpdK8Iwk5q06/bjZZa2VfCL6gZO3U5i1+HQDbCqfz9RVcrT6VDzY2
-RIB6KxUDa9xrEEzO+kTKMuW6gXCplPInV4Jfi3payCrH1G8hvAA/CsNr+uqICRFX
-kE8uKn1c6b/1dsUzJdMwnCT2V6+DjDtESbil4AR+p3PIzDl03kyRjk6QvLeQ/UEq
-aaspV9QFiVt1unhu/7sKlZVSlAZE0MNREiKnvr0xdG+IZVo8OO/F50+4Esew82oM
-9RTmTxLpyTbhc2byb67cXjyv+1I/jUXdyv/7JKUtv/FRDcCj/G5gOwARAQABiQIf
-BBgBAgAJBQJNJFSkAhsMAAoJELWdPQ+fnIaEgjsP/AufC5z1XsKD9qz/VWhp0hwI
-LCIY9au83XHUpZdgYm56VjVh9V+YmVoT0I2dedRrw9bMtUc8xLFvV/uY3iFvioOi
-lGrhzdqiWFw3DH/gIJ/D2U2XmAbAOj8ZBa0Cd0L5n6hlE6ztpaE3xqXG+y3vxm5w
-Chq0/6id0S3MRpPVH6rVlJBeAL3fqbT3Pt6eCsc9JEkNY3ek8oTg2tWzz2fqafF4
-KTvfIec/0+8GuzKRU2uiCJz/h4nl7wy8CO2Hrx2nqrvXq7O84u7EHp1AxNX9No+9
-Lc5k9+CmDtlUpNnl8XU9K/Ld5aIJHZLE4YRTb3oWf1lVDrvPbm9lSq0psaP6M0wr
-oMYie2UeszVK4xpRSP2uCWIINRL7hFP+AaPgS0pgudfXOE8ac8Wl+hQIhENxrrUz
-puBOVAzRGEAZE7popymd79TkttFofFJguJtHRjGUP2q+vVFt+Xrg3cm61ZNcgwhz
-fvYEnW4fIYDnDwBP7FLXbIuj9CpdVk5y05FGIEJXHjETj8Lll95npK2WgcfRnFC7
-XmfXs9o6izeRyWvNBGzUldooBSNibsQJLdzjuepjpW+sbKFaoTtcLUO20ZlYpmb8
-aXBFB9GtEAATQf2vS/UJw/PtInCQlF3Or3MmBPYR0qZVLHIxBjZRheRFSWffpThw
-/Gq+wPWmBdjNBDyd5REj
-=aGvL
------END PGP PUBLIC KEY BLOCK-----
-pub 1024D/AE8DE9E4 2008-02-26
-uid Willem Jiang <ni...@apache.org>
-sig 3 AE8DE9E4 2011-01-07 Willem Jiang <ni...@apache.org>
-sig 2 7FBBDC54 2008-02-29 Freeman Fang <fr...@gmail.com>
-sub 2048g/7103E49E 2008-02-26
-sig AE8DE9E4 2008-02-26 Willem Jiang <ni...@apache.org>
-
-pub 4096R/14D0DEE9 2011-01-07
-uid Willem Jiang (CODE SIGNING KEY) <ni...@apache.org>
-sig 3 14D0DEE9 2011-01-07 Willem Jiang (CODE SIGNING KEY) <ni...@apache.org>
-sig AE8DE9E4 2011-01-07 Willem Jiang <ni...@apache.org>
-sub 4096R/FE639F22 2011-01-07
-sig 14D0DEE9 2011-01-07 Willem Jiang (CODE SIGNING KEY) <ni...@apache.org>
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG/MacGPG2 v2.0.16 (Darwin)
-
-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
-gxPfPeJOHeS8nl6gLwgouXCN/s2so4l1YeE3ig==
-=lu9b
------END PGP PUBLIC KEY BLOCK-----
-pub 4096R/2A239C2C 2011-11-01
-uid Christian Mueller (CODE SIGNING KEY) <cm...@apache.org>
-sig 3 2A239C2C 2011-11-01 Christian Mueller (CODE SIGNING KEY) <cm...@apache.org>
-sig 4E24517C 2011-11-10 Hyrum K. Wright (Personal) <hy...@hyrumwright.org>
-sig C4FC9A65 2011-11-10 Bernd Bohmann <bo...@apache.org>
-sig 1F49ECA5 2011-11-10 Ulrich Staerk <ul...@apache.org>
-sig 2 F2EFD0F0 2011-11-17 Christopher David Schultz (Christopher David Schultz) <ch...@christopherschultz.net>
-sig 352ACF76 2011-11-11 Richard Keith Turner (CODE SIGNING KEY) <ke...@deenlo.com>
-sig B84508EC 2011-11-11 Bryan W. Call <bc...@apache.org>
-sig B6CD3280 2011-11-11 Udo Schnurpfeil <lo...@apache.org>
-sig F5CBAE6B 2011-11-16 Akitoshi Yoshida (CODE SIGNING KEY) <ay...@apache.org>
-sig 0208FC11 2011-11-14 Carlos Sanchez <ca...@apache.org>
-sig 088335A9 2011-11-24 Chris Darroch (CODE SIGNING KEY) <ch...@apache.org>
-sig E1303A99 2011-12-02 Marshall I Schor (Code Signing Key 2) <sc...@apache.org>
-sig 791485A8 2011-11-10 Jim Jagielski (Release Signing Key) <ji...@apache.org>
-sub 4096R/7501638F 2011-11-01
-sig 2A239C2C 2011-11-01 Christian Mueller (CODE SIGNING KEY) <cm...@apache.org>
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: SKS 1.1.0
-
-mQINBE6wZQgBEADEcX0n9AFHaUjnyzfq8UOlMcE+1tNlHxj5zcycZF/Chww/60NRpQmWbmZ7
-8P5mMovPwG4B9iOk02f3FNxWKq+JIhgZr71zN3U8bdRKoPEpnSJbwF6qhc/HLmiIyob2ztFg
-P56Q/DfME8yLIabIKMjAa4gbXJfZRxRPrCOfNMclXPuiKpHabLk9p9mWQsMdi/9gN15n48WJ
-sR9Ov603C8BHY8ktcU4j01wcp8csJBm4znN8ULuZ83WjFpdiYGOa1EZnZxBISq1ARiGZU8zP
-9yStfqZ1ChcGXQDAVE0NK1TGnKYMO5O2dGChFCpnN/csybLEwtGLAyOnrOFV9Bnhgto4KQE4
-C4n3gLhOEFnCOJgia9rygwPy1TN9eba+/jx3JnUes22Dpl+6ajLuqXjBW00VICUoX+ND+Dwc
-8NCA0Cj37sW54F53LnVXj0Sv9OpwvPh875PfXZMQc6x2xHtm2Vu5sqwuFIqo3I48Yd1bL8Ak
-taySNl/5WNrNZtsVP+vVAMKJY0ONQEh68oN7f6HuK/0FAuDNtOMtBVMOoMoTVum1IXmyyY8Y
-78K7WZa6rUw0+zJnm7wHcb1a3bC0yLZXONMwyOFOfh85eTtcIrhGG1+ZUgxtWqBbDQDgrQsx
-J3Cfa3iPBrX3t/fnhv2yr3xDJkNxCPddVxIz4u/LiYKMP2h3KQARAQABtDpDaHJpc3RpYW4g
-TXVlbGxlciAoQ09ERSBTSUdOSU5HIEtFWSkgPGNtdWVsbGVyQGFwYWNoZS5vcmc+iEYEEBEC
-AAYFAk68LXsACgkQCwOubk4kUXzLFACfSl8/Znm1goTBg/JoAjAaetR/c7gAn14AYgHBas8O
-2tVpNoBvjS1Hdh82iEYEEBECAAYFAk68LdYACgkQq9Yy7MT8mmWX0ACfecgZvC2LEE4nbQKX
-jMlJoL4YIL0An1CCmRT/3CWl8DW25sJmNJpRNdWLiEYEEBECAAYFAk68UM0ACgkQLz5dMR9J
-7KX7zwCfWn9QzW0nM0OXB0ds+yyLeRsFCZ0An1L+P8xKircu3EccilZJStGbSK/qiEwEEhEC
-AAwFAk7FRQcFgweGH4AACgkQ9CaO5/Lv0PDeqQCgwT8pGxByA+A+b5cNMFALnvvg5XQAniRT
-Yfi+prQLBLLUYrjS1xUTYGL+iQIcBBABAgAGBQJOvGkNAAoJEJqs+1Y1Ks92cOYQAKERde0w
-pkGwm6JW7tF+FDubmCHL0TF7jNZCFHoXE2ztMmPdEKsRx2pcl2ozTemVcQcu7wRCK/bAow+4
-9V14nOTBXI1N7RfRS4Q69f8JFb247Oim3oCIDLTixjtUbxWrJyW11ilhRNvjRkROdpUh5w2k
-fMnqoJEjgEuYk4YHqIiNLVpJHNUN6O4L7lGJEv2wPZDjRSzfn3RJPhN2RqEeYJbQmfRmbGus
-amgB7u/d0zs2BZNobFGotcOkB84acyq/QJSqERt6AoB5DdSeTEFgMbGGKbDi5Qaix61DTP8g
-NsMM8NL0BwmZqTTGgbujrd7PnafD0lh66cnQoPT29RzyMUhiTWb41rFCA8/q8qJm0VF3L0lo
-QKOkdr5nK1+ZS8ZjPdKb0viRzf/8fH+EXPNOD63XabGhbvoJfTmKolRFi8J7nE5itknn2GjR
-KrUguDcxFp3YKk556MvlLhOEskq4jugc0ifCscy0O4QrWEDGrKoHSfM49mU5WyOtT6dUQUSM
-uuPglYGhN1GzI5fPyJh1dibvbW7/FGpTQWsCNaB/XDITnVM94JRs4jorl/9jQ2d8nG+qvt1+
-3PR1Qu45rSLV01fmtb31HWue0C+RNyKPHCSV10gCqQNQhr41WOxO9UgRrM+ek1w21KsNf+Ds
-JIBi8gTrVlZL9PG/PjGpRzFSBdPtiQIcBBABAgAGBQJOvVMGAAoJEE0VQRC4RQjsibEQAKrC
-5x5vXd9YmxF1QD1uAjGeA6JleV66CTqNSGWwkzuMjLtW1m7BI4n4mttQielilAlNI0L+MhRT
-LLD+RpLu0N0Y5N1fEPh/JIPJJwMdY/SHzQ+xfNL2HaFiYlcdoPUkJP2kUJXyx8VvtQGRxiqE
-Hd7mWjhT8o+TtmzYcKwB6OG9QiqXUaUJczGXqOgoiJ46NgYaQeJy1qwQTGs6dDcMPBaEvoRx
-2r49HwCDXt66gfh9NKSsVS4/IkPeVbw1F11zbd1fYjL4nz0UxlGP1jb2Y28ujkWrwUTs52En
-5yC4uf4rrIbrAevh0CPkkw7yuCGNHqLBjlQKR3ZBivU3COd2sMp36RL2+y9U9ic9TWKBserz
-ccetBB55MH6daj9380sbJDDlB+IFi7ycvCFLaNJtiNLFMUktdQKPUft1r4djHjc/prEhZspx
-P1E/SPxWfoaruerjDGeSlzGeXekR+9lDtozjnO7oj3oeg+2MsRULBQOcXqHsMU9/f30Ff46G
-JfJwZA6RSpSDAEdKBMoSSXz9+2cV77EBQZKwlEEXj7q1bba0AWAnIALLliev3nHNbdA2NdL/
-G1VJ7i+DNUaYFxJ33WBUeN8EjJZ4jG5A3e7JWpHbh4LTH5+gErY2fMuLn7HBMUqw+h3cyM8b
-ACTuF052ceuvZMbVWrAIff9bSHyXANiHiQIcBBABAgAGBQJOvbIeAAoJEAEbRra2zTKA0mEP
-/iNS9YDRKJ9zQi3n7nW7Rxs3pkdYLjsJ3y/vMk5EBwBpQoVO7lvn26FlJ3LD9Efdpmb4KXul
-W0Upme/kSL7Vh1Atv0BogdGS2u5eh+TZdW31xpIR8iJbMxtM9SjrBmyEXqT75WZLBDve6+QD
-0B/QEoVxwq3WRe4vs9cmsOGEaWvpMiumoXWrlwgaYGwroVG5HT2ewEZaKjx6RaQXtcCmzxQ9
-Vor2tlHro1NQTRtufwb4Ny3vBOa9E2hqNotleAqI9Xj+HI8TQizL+B1lPtek0T+MBsoxF7lg
-IM64b7EQ2AURqf1JzfPHJNxBxs1M6OGo3yMSAWdDBgq/yWoTz9LC1NbXQXfNtP/tuREqZ9gn
-lhApuLNQpuEDhdXK18OqYXZGC7vbTXL8uYCtYuQGkg0kNHZrErkXiVbPuUFlWwY6c5O8NK7b
-0Q1KltoSdLX0rFINRmRI/BWx2Vmr+3abJT33AuwCWWJMaccfw10qCcSZzwM8eQI346DyJ+UI
-AzmWYK3lE0Yh0j3P+B+HJGYL3oUzd8w3+2cI8vRwoGhxEezC8eurKkvTV8mqjp9j+GMB7Sha
-jByYEzutJlGpfoxxtYV2xysdeN1Z/+3spkU9sXXIn9zfqLHP/hbuInzzXi9fApSZFu1FSU9C
-O9juOYegkLt0/x/k7z4hG81PpFxA2ZY+rt4KiQIcBBABAgAGBQJOw/FiAAoJEPtjPej1y65r
-o8oP/AvOA+KiF0Sx4JahU1L05x7MXqHgSmeoJ7k8LbjxW5UtmGhMVBQpncXVeXyTqqJPL4+0
-hmjGYcozs6zYq2oJDcvyLBVW8P60Y9tnE0LlI3MHeITdr0KdkkkHK6mDM4T2sYiGiPZig4Yg
-ZSag5nzRtE8QfmM5sLkbqlF3tYyqhxUe/UgiGoEYgo6FzvfEFn+KW6LQ0lPbQl0drVbjHLAK
-gQZhmujkDMhebi+sPcSwQD9I649uGig5UW2AOi0/ey7s6mZHdCe4Z7oNOS7dDXiTtaXt1iq1
-H6iw4Ep6MwZj1qtHrc4U9riEg9U7QnLw+Y7E++1SFpDbonBhVd9p+uSKSYCCC2pYHi1ko9B/
-+F2hxk2am3jGlbfKozI+MwhtTpVaIDEHZsbMr/ADfDHFGSPOGhAXNm2Rq4G9YDtQGS5oI8ZK
-K3Jp2h3Ti2ESSVgiwfDupXu+TWAtlyoEJQtFUhlhuSftKmv8TTRqm9/rmDYCouGMwUbTzGVt
-tfC/oCtqt3RA3yejEYPNsRJA46xjEs1+5B7sm+eGtXt6nQLBW34OqMdx/QBIaVS1AzONUY90
-djqnYo03KhUnHAfX/M5WjbPnwW5R64DZrXD/FCiVH+MAbDgTVON6xBMI2+auxJgjVe0TLkcr
-gMrIUznSkt786ENcMY36NzSXP0lHsvFLQ3SVXueniQIcBBABCgAGBQJOwWRjAAoJEE68DJ8C
-CPwR7IUP/RpFXuW8GCb1wmfNRiiOa8QjtnO4D0cpba9fE8+44hr6FWn4t1JAEO0mF3pfvXe0
-FJOnZ6Yq0IoD12NnJVjKjwBZa9JKvbGx45PYfi+hRIvhwan0f3BroKA1gna43d6NrKF+K1w9
-O7hODKjZ4xjjQLxj4uyLZtJml7jcCrHcy8sET/7sViLZCpBC9w6ahYmhpxRXschrEjn36szz
-U2buHvvS4CPd+b9K1/nKvqtIYyFd7ZtL3vAai2Hg4EbsqoQRSkTYZVOd8OhFcIuiVQeCfTeC
-zjXAaeZgY+KeUoyfh/B5rWXZtestowAHbTOR4CVxL1zgZmfnWfA4eiARSDZMN1jEz3DEVt8A
-/YdAXrEwyORYs5pU00UmB7zeeFhQGeSv0yjoXvO6nVtTUVn729adAWnB8zGwQjYTB/fUc/RP
-Yi5FtoJk++9k4RpwG08I+xmtr3lbngR8DahLiUq/qlw1ng+KHIgdxjYyQrNOejVwOxzDi7TD
-P5nuDHLtCP4e466IoMVIgn8E3ciQukolFQ/vqYq1EbdrPluW1zkSiqUN1p+y290ahtagrezQ
-DHJsTtUcs1iSU4EqYjSJCKSAKN0B/RnT5nlPOT32dXaKop985HRMPIjeo8e7KdElkM8DYS1F
-LzSJvhKQp2a4uQzH5aSqFEZoWHQsc3DPiWl+I5+Can2MiQIcBBABCgAGBQJOzbkXAAoJEPVP
-5kgIgzWp/y8QAJ5UduWVQC8VEOIeYNT+Srx6oGjO43Q8prbLjeUWFywvyVQLSKkO+jdpOYyi
-wIoI/CEZydl08PgI1KQbvfLTWqiJP7RjxoluZ3wcE1TLW9lPtd6pBb6QzwzfJN8EkptSvPP0
-7QFWZ6pN9m4LHV9ERXvvIyPRRAKbtXD/Drg0gTI1RJ8eUQaXZ6u8qC7LggWTL3Rruq+9Q1tG
-/jHFyvXxfF4gyk1vMRhPNjq8SV3oO63ePqYALIQq95BvCqvMe/4QzlLMT9qv7Mi3xp4Bgq/g
-A0p2XsOc7kNELdn+kmayLMqkDESJNjRSk2cBoeLxMFDW6smZ0Ec1QmgdJJfjg5jVkEfmEqoM
-2lSYzKVbIdPaN0VxmTzO7rC4KOp8vhZxk6RQte8vwexu+S0F7A43+Wdx87LpW+y7i/GDroAE
-cxL1N5ht0ozWxDey/l0M4M2KQr3MUbaqEibB5mRhcQzUIfDwotA3X6TJIIaP2rshhARbxzWe
-++ogW+kPZOOaGhO8Ugz6fClsiGxANQNg886g2X1MYsKj+1tHqB/ZYP1ueX14IYyQOB2A2k3b
-l+FrerqNWJt5efL9iwSVGSlv5MCFqVkF44qzdMqVHc7Qq7wNBNrkKxmmhhoLB3gTcy3jSZjQ
-fhingTK7iTsBzjXvfoY8V4Bb1LtB+/E6o4fReIo7fq0rNy8/iQIcBBABCgAGBQJO2SxyAAoJ
-EHMl+QLhMDqZHz4QAIvD2fbzrFnTTLK3vlowJKwfRGiyfd5HJTbrfMJT+oLwTtbNIfPEq2LW
-TR+CBPLmLVh84cNIA+dOvWrZRc4MI9DSJfAYAtqxXbC5kOvZyfKZDgp5CroWMT2SeMKyT/Va
-3Q/XO9DnniPGEApJk9NnUgQsuQ9cLwVUj6DPYZfJyn5m6r/VdiI6DJDxCJSpcACDnyTTKgps
-1rrUCNYGQCF6wZEb85ViaPuP4hERWDIWDPqt2LbYDlkg8XDvLaTIc+4AU0HWBeSRcAEXI3sY
-HFITsUV83DFpJoYRcC8QGm8D1LSi85q5E7Om2rqRXLbT56i60YKDsXl3aOMcGetXTW66yixa
-3vIwv/NR37/0v1x4y3H3i5KBlvT0lEQmwkSjS1KT8XmXvQOaKqh2brKG/Dnzws8M65YD4V4s
-Ccvpq3+vSTdRmzObNoQZ/hhEXxsbIMKhcf4GTLW/TLC5z+QqqegErCoUSYLBOcJzzrWzuChj
-79Gzadu9omoOFE0kT1C5IbdWDxvi9bLTpbFarbEq9OUvDp1eC4jLW3lN06cZs4S0Ncldd3AS
-doO+hLLZ03HRnP9Q7ymdNJ1kdzG3QWqR8OjxEbjQBfVOVn5iOwQkhfsuoT38aDUeI0JWhnbS
-UJ3Zhs379EIkD7X2DJ59I7lGbsdc0KyiMpkyBJLcZo1HloyB/OHtiQIxBBMBAgAbAhsDAh4B
-AheABQJOsGgTBQsJCAcDBRUKCQgLAAoJEImh9lEqI5ws+nIQAJktu1c80oVYmyrkjQPB+LkU
-f06TVSRLkBILdgRddNSRBdaRWtWPcEeQUE9FcrzDANGbgw41quy/8AJbzBXV2d2v0llDQg5y
-xNaT+QV1fe8QzJIeEHtY3Z2PBdJ22O35PJ31991jiVd/a7OIF2TcdgXBN08NeukgYpQImNtF
-9etna3sivsI+BxpXlDAU2dUCRfAoLel79xmu4yz+rQIJthd96NA+oLCgEXRLLYrk3kkIryBW
-YT/TPymr7hSdREi8qd8pfbUhTCFdYEmRjQ1F/kcwgTXfQ7k+vBSpmzpQBJflXaYv5zA1XXB0
-6VF+/qrHGZQm2EfXpQ9CxXYmsWHUpqS02NRINdFJquxpUOjvo2JBP060JbQrAf/wx5wyF94c
-TvOkKhHOUZ53Y5aBaj/yS/C9v133g+IavXnRZ90Rkz6LEftVYoUrw4ZgsbD8t3jnuEN/Csgc
-rSZzKH0LTMl/j8H7L54a3ZXbxAdMahpeEZpx/8ONrrdK4UYA4wCNmAYfJIz5LdElWhZeADc/
-+435s0GBX4z1zYbmzqCMkYjmts+Mf7Kt5UsUCWuHwObH2JmRxab3ifMT+JLROa3PYIaKt4EB
-MIXT8Rd6anoTH+xd8T5x1djBfmRB4q2a1Sue2Z/33pboaHsXBetfTfgyLkZzztBT0pE/qSLS
-4dxcG/wCxt7YiQKTBBABAgB9BQJOvChhNRxKaW0gSmFnaWVsc2tpIChSZWxlYXNlIFNpZ25p
-bmcgS2V5KSA8amltQGFwYWNoZS5vcmc+IBxKaW0gSmFnaWVsc2tpIDxqaW1AamFndU5FVC5j
-b20+HxxKaW0gSmFnaWVsc2tpIDxqaW1AamltamFnLmNvbT4ACgkQNOp25nkUhaizMQ//aFY0
-UHuC45xuhx4FT9YNNrYi1JAFHe4CM7VUX7cF4qjalcYBlnFDt/cAI6CkKlftZGueZl4wt9Of
-3nl+mwXZAhb+FiKUw22RG2qfclG0mkrWlGIjrH5w8v6jQC75jaV503EhDjZpnLrydrBhUPqw
-M4CmSrBBQBTJunSyltQoPKmPIXgRNqUvlMCekUNq5uzbf3bDhY9rwQwe3etR2JV4eADxMwGP
-YJGfkLd7sv6gjeKR/TYxdAJEdibH29US67KO6ZdbbxYacV8tIDBKriwG3ob1hN7bnpq4TvdX
-dVlGiW1kpIMKRTq9OK0ZI+8mkvaz93ZfUrnq5X43Y87iAoXmGp+1tATPbJnJLtep3+MhK1Sn
-5PJ577NqptGRJkti+/oBmzSwuINZJFUG89gStOU7cq7Uy71VNQ1TgQ4wggJ6Z9tkAejNFidS
-KBmoITgWOhnWLNUXX8W33tCQYTVsN7TH2IKoiDLRwD1uoTnI7EFLGyRvdRCGw2GFuhzy0yGH
-/V9fwPx8pJ5GDT4DXzhJecgawDvmdcp0Vl9hicm8vIw/MUCyYbYT9V4FPQdI583k+L98UAU7
-0/wHSf6f6Ip0VxZItSGVPpHhDRm8m8jaaBO35UNR1ipZAcCKYhhxX4NOhdz63l4rY/O+OUgw
-r22P7cBnmw2fslAY4D4XHcmcznO6LZ+5Ag0ETrBlCAEQAK6AEQyVjKhjDNXWvR9voFmpU5yQ
-s92aAvmHC1zqHMpZ8gVxfKQaoZ/T4JIx5ntfp6fqGzO1mOJT0yZB3S1VhQz9e34705hdR0dN
-DPPqSZg+fAtx3cJlMfBRcF4YI1C5p+LgFZQtoY2oOPgxB4jpPvjbEHdZ7Orb939Fu1c2h9fy
-/QoMuxqIj0PcLEYVMC73WrQSL3gi7nCrfg8Qw506iftfvRKdwPvaBUX/xu8/YBKkyl5zVJQO
-8g+3LGquYvxNToLLrbwhOLVHX0m7bQdAohwX7rQV1E1vcZwQAy1iFYzC6GdgxjGdAqT2ysX7
-Acvc1ZV8YZ9bTh1iGIZOpv1jdM86lrDiuGBa7jMYbc5gyyrImZQcSeLk9JHzm6BSVU6ryt9s
-sE9JkwY49ft4BRJOC9wCwEEJJHOIBOgGu+xoZdrDH1Scm3voCuJ3Qu+WBzsEMxxnWEiNSKu4
-qU1nO/iP8lKCbOgci9KpUMN3jwcbT81MRFKPD5Cp9OYDGrF87DYhEtRCZLMZD89nZXpMMTCa
-9XJu6Ln6QcHtKV+kaHAQb1ka0l8jaQU84zqAfcA/0bQndNLfR4LR+GuKchzU5OxMVV12ZEnD
-76sYP7BJHBhRlI5fohQtj4FcSsWsmd6tnP5qNafp64rUfm8FisHC4lbE26BpPQvlw3MaFYXI
-vhXJ4tLlABEBAAGJAh8EGAECAAkFAk6wZQgCGwwACgkQiaH2USojnCzGPRAAkwbLKBvSXvWW
-RijgeEmwBp1JFpmWX5QGHE8s7A4zXnZ+JjR7s63a3UNWchrOL6/4FhfQPfT4w697VYIEE3SQ
-wuM1M+0MJK3G+sUFGIwVUfDhG2KZNiMxDBkXcpk3HhKumfgp7FQx/jgpIDW2oNtU4O1opZvg
-AgSw+B6iQPQBeLCqmtL/H77vNfJUUJKH3eSvARkI7ceAwP/egf/UGZu4ZEUwHnM9LBRajOFT
-tz/LtoOcMcDTLHUTzv3LHqSAe+9/FQeu6TEbKWWOh2vBQ4NLTe85yMSCi3L9kpqajZJ57meV
-PTxDk9K9MXe4q8YTI+WGeYKoKKo/nuJgtxdXzNaWXk3krrUKaNEKlkzshkfBcjkxcP0ha8DW
-O2W+dA5oVrMjehs2cV53kzmvnS+KhcpbFuSrFyP6mMa3vE0Qg1KE5YK6hnEesd6JxbpKsdQ+
-MjGlOtzvJL+E8aXOpFpATXs/2fBaaAdZq05E9pPeDo7CseCWB3bFiJlg4dir71gvwgvvarfP
-cQOcLlStKrxTnxqjiuK2WDC8cQmYc4g9klmFqkqG9EbZSqvAxAxWR566Rd5Zp+bUJcLAAvgS
-3iUUvBR5ZHxkwJSDwG0dEgRNB+hrAmT16LRRTcG/0pa2LVGbjQzoUgVJRZ6d7YViVuT8KX5V
-21fnJtXDujubpXKuQqFl/SY=
-=drZJ
------END PGP PUBLIC KEY BLOCK-----
-pub 2048R/94CB9113 2013-02-04 [verf�llt: 2017-02-04]
-uid Babak Vahdat <ba...@swissonline.ch>
-sig 3 94CB9113 2013-02-04 Babak Vahdat <ba...@swissonline.ch>
-sub 2048R/CB41C100 2013-02-04 [verf�llt: 2017-02-04]
-sig 94CB9113 2013-02-04 Babak Vahdat <ba...@swissonline.ch>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
-Comment: GPGTools - http://gpgtools.org
-
-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
-S0maYlA=
-=OANb
------END PGP PUBLIC KEY BLOCK-----
-pub 2048R/9C8D3B59 2012-10-10
-uid Henryk Konsek <he...@apache.com>
-sub 2048R/4DF29C4A 2012-10-10
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
-
-mQENBFB05RYBCAC5Gvz0zm/upu2XNyiDCxGe62vCjRWGo+lLRmlAYxYLm9iMI7Tf
-8Vh32TlgVCn0D0fKsFzz/7cmPCXjaTNH/8wc+cJrZVPgO4+9h9DKPADjtpbaYIgR
-toHMSLHH+jzcIJ4Q3uCXR0CoM7tDvybCfHGInkUTECYGEa6Owbl6yJ/KBfUqXxGk
-hayAnNXO3kQXWutqkCEfUmGbXHq7YYcPf2jQc3a1oIB1BQcMSGOlsko3Dvf/kOrr
-7tiEOAlpdkQRc5oSnw4wmWwU+Sij9kTdymka5lCBxhrgsnv4YhFgn4tXyhn405pR
-l4MBcvDanM3KpVHYzNKfb2SMgpVdqk1A8hxRABEBAAG0I0hlbnJ5ayBLb25zZWsg
-PGhla29uc2VrQGFwYWNoZS5jb20+iQE4BBMBAgAiBQJQdOUWAhsDBgsJCAcDAgYV
-CAIJCgsEFgIDAQIeAQIXgAAKCRBo2rMmnI07WYAiB/46HxLhPNNRQ0O1sThZZiXz
-OrELs0KePIDMb2Y++N/iRiR5qi/sCXmLD1AvHaknCN7fucWiVnRepGAgogC2rt8P
-+Cnfa+aFo+Cck8OXX915GS5uUoWJhdMWRAAgVBNg5LdiAQD0dkG2v8uzfAW1n/eR
-dvnSGTGzxAJ2kTQ9zRuljOKYn639w/ErfzN88jNpVNe658xHRgwxVOxxRuWHW5EF
-Z5YWZZDAkhmbKPk8nnbdqJGXI/mGbczGYIZt9CJcy5dbELmFoz6aFL1dYMwzHFjv
-LKZSrxLi52vXny3gNOCOki21cJWqnDYrlZTXoHteb3dftJvuf+yW5SjTRc0lx1me
-uQENBFB05RYBCAC8oKi2jJ39OAtRC7BTeaTIcTtTeoZel1xTL6jxOt5ijF8md2ra
-VL5lVhrthCWuWXanypT3Gc0lcn14RcFy3zXdEamRmihpKfSsMzbmvd2BD7PCzwk7
-6My8XRHXuwWCsjdn2RmtwUMNlkOVSMAMOiUEQg2nUOIQkzblMmzlYH+3aTrYxdn+
-y6J2/odY/SVrOH2crmImh/pPB3Q9u5LA+G3wXWsyccIBQgPqTtMLpEZyyL4/1MiX
-cjnpA90ICyhC0AYSAwNe0yshKy702ucGO3OwpNPEm5L6hprw0TUZDKCcQORr5sI9
-teR2rauC8Q582mIiB9WMN2vJ2MMUO6kGJtkpABEBAAGJAR8EGAECAAkFAlB05RYC
-GwwACgkQaNqzJpyNO1mFegf/bTN0NFDem3bGMSlEZedOTUMSRsEGZY7/nD0sfmLe
-gSsAoxKQg48/MnSFRGgWkSCSkerZRtjmLi0JguP0ufxcV/t5dd0nbYrIC/YrYHNu
-hijWCHSd+XY67RD9sQ3AV+SA0/4y8vZlnudrDz6SvP5EV3bZ+p8TBE7ch7OgyLM9
-zisG9BugFPsD5S7Zy0+ES2x4E+IxVYzZrUiajfT1PLrAgLfQ2TOwCggvSRU17xu8
-VcGkOXenZaUgBAp1p1GyxGlmFa8/VJAhsMzUvOUVU2T3nVKb/moMk7kZ34L11Ycm
-O89+mqkE1TM0W6OF2aHV+RbQgyyufR/gsvKBfIKxEDATew==
-=eNwt
------END PGP PUBLIC KEY BLOCK-----
-
-pub 4096R/5942C049 2015-10-15
-uid Gregor Zurowski <gz...@apache.org>
-sig 3 5942C049 2015-10-15 Gregor Zurowski <gz...@apache.org>
-sub 4096R/A48CCE10 2015-10-15
-sig 5942C049 2015-10-15 Gregor Zurowski <gz...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
-
-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
-uxLacDc=
-=QAF1
------END PGP PUBLIC KEY BLOCK-----
-
-pub 4096R/6B400F69 2015-12-17 [expires: 2019-12-17]
-uid [ultimate] Claus Ibsen <cl...@gmail.com>
-uid [ultimate] [jpeg image of size 13356]
-sub 4096R/5E3FACEC 2015-12-17 [expires: 2019-12-17]
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Comment: GPGTools - https://gpgtools.org
-
-mQINBFZybkIBEADjxTHn+rgc0kSVC7AbzFAI3IwVaSl0G1NOP+6lxZ/JbIlEONat
-yJCpiDz9vPV5zSv0ErkRLXxzS2jl0letfqcaVl1NfQFxoKBrh+2z/S6jHWaFgItz
-y7rdGNnPZBgPIINzQ0EGz9rYS3QatdurGZB8U06NEgLWOhpNFSZ9UQZKU6WDHhw9
-9y2jcgfhxEdGxMUv/KxoWY9CICSLMrtLHLQmshLW24aIXZJXhi6X2wjRJdrAS1gb
-1kBci71st20i3EU9qP5vKwxefKEhqx5D3oBwVST3wQyI9t5yl1XnQwffCcFDkhg0
-NeRZUgntA9cdJ36qoO5g9dXOaUplm1gAqHes3uM29O7J4RabXdHv6wASeDWIP2NI
-iGyyMOnC16h0n5IaTD294bLXo7/iOuuXPxMXfq7qq6p2n/bRVNrpX3XT0gIuowHE
-rtHqPBixTAOeaU1S9qWmyBgF0OuW+GD2SkU8moDEIAGItYmu+riFib0Hv4I3cnRJ
-iPeP1Ne0f10tceUNLC5hBsmIfJA5DURDMGQONZZUePgwkcpT6IPvIQhdemWE62B7
-v2v/gnlidWe6QAZa/LJmr2s88p59CGpm1x7SXKbxGMr+T90n2NTS15cn9XCi7sF0
-A9LTEhaePO3uPzMORmbjjmo5VjwhlBNrvItr9dHgxPDUeXMZmWCr+K0rMwARAQAB
-tCNDbGF1cyBJYnNlbiA8Y2xhdXMuaWJzZW5AZ21haWwuY29tPokCPQQTAQoAJwUC
-VnJuQgIbAwUJB4YfgAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRDdcFCna0AP
-aYmKEACfLh42vaslFiGJsgw25oWVTKDqKkBEukHWCqcBMjkoClBWLD5sl1pSnCiR
-tlUnwHMwyQz7d/jfsNDFvuZrAVh1Tn6ZhOUzDWaP11N2dJlB0fFCu5LDoEY2l3xV
-0Ku7SEh9Kqbf/Ia3rlYYVafwFarFzyydE9gTlQMxC5kuef/SHDOAZDYyXY1f+hCw
-63CuylDKTZQzPi1WgBpBeOpSZaIdeMGg9+YzaH5414yyEG0eUFialR8OVvpXLyNe
-95RFH+74DPXcGvU55QidKnDuEMCpoPgscYPyBwk/tJC6/+kIN63xk24Vxs6PK0lD
-QTN+R9tTUpx6peg1cpxzul+hUKIqWCNLKaC8r4dNvqlfg5onUqxGPloaVZciVqhg
-v6Pg2spFoDMdLeAvS7xIEKTz3Zsu2mo3YisqoD9QyX1CZ+qyzlJH2CrBnid+4wUi
-kBnCvjXPjhxEqcl6vvv2B0ZpxvYlsMJkegKKSEqUzLHLMSswrsDFX0wMT9nnbD/P
-xlJtSSYwHwd+xd4ABgRLyW2Z2ExeNABH45LHoIyqp5jokYfDzLIb7VsrN+d1l/PN
-Rz5xoai49GTXYk9gFyRC2eETzQs5CMkaX1uGQd8imv2vpC8ZxTSJhm1PJDaMuURL
-egUvNXl8amjU95ZBpwwpsuvoxCAmQbcv7KMt7JuBb7q2cCtM1dH/AAA0Qv8AADQ9
-ARAAAQEAAAAAAAAAAAAAAAD/2P/gABBKRklGAAEBAABIAEgAAP/hAGRFeGlmAABN
-TQAqAAAACAADAQYAAwAAAAEAAgAAARIAAwAAAAEAAQAAh2kABAAAAAEAAAAyAAAA
-AAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAFAoAMABAAAAAEAAAFzAAAAAP/hCSFo
-dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/
-IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1s
-bnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4g
-PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
-LXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIv
-PiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz4A/+0AOFBob3Rvc2hvcCAzLjAA
-OEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIAXMB
-QAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1
-EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR
-8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo
-aWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE
-xcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEB
-AQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQF
-ITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3
-ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SV
-lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo
-6ery8/T19vf4+fr/2wBDAAoKCgoKChEKChEYERERGCEYGBgYISkhISEhISkyKSkp
-KSkpMjIyMjIyMjI8PDw8PDxGRkZGRk5OTk5OTk5OTk7/2wBDAQwNDRQSFCISEiJS
-Ny03UlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJS
-UlJSUlL/3QAEABT/2gAMAwEAAhEDEQA/AKPGMYpoxt6U7pTRyKCA5FHuKWikA3FB
-p3PWm/WgA5pB6Cne1HvTAbwBS9qMUnSgA/Kij6UoGBnFIBOvNJxjNIzY5qLLPwtJ
-uxcYt7D2kUZqAzE8CrMdo8mMitGGwXgYzWTqdjojQ7mIGlbOBSrHKw5rp0sMYZR7
-GrC2SgHI7dahzZqqUTk/IlIzzzTltZsZGTXUm125Uc09IcHp7/4Uudlezj2ORMc6
-djRlx94V2BtuQCMg881aGnwSD5lANP2jJdCLOIDcZNOyOtddLokcgynBxWPcaLcw
-ZKjI9quNXuZSw9tjK4/L1pKeyshIYYporZO5zuLW4lJjPWl+lFMkSgDindKQ0AJQ
-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
-+T34FjE=
-=FJmK
------END PGP PUBLIC KEY BLOCK-----
-
-pub 4096R/1AC2F4BA 2013-03-06
-uid Jonathan Anstey (CODE SIGNING KEY) <ja...@gmail.com>
-sig 3 1AC2F4BA 2013-03-06 Jonathan Anstey (CODE SIGNING KEY) <ja...@gmail.com>
-sub 4096R/8F2837E7 2013-03-06
-sig 1AC2F4BA 2013-03-06 Jonathan Anstey (CODE SIGNING KEY) <ja...@gmail.com>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1
-
-mQINBFE2oIUBEADb/1b6Ef9/zQT6u0UF0FARiq6QoAvSKseqWaqdNaiq66ROvaxB
-b6QrmqpHyz8y9/rxHLB5gJSx9jXo+vo4/FtBYM/sndSI4w4EasVLwr9cJqn3NzyM
-R++8R2YhSttfyTznADctoDfFPvFxOEiW2Y9RQ57DIphLGIRpMUhO4WOtZW/UW21D
-qqYEr5QRLnxogryNUp7gA26dnnHcjVJXOXlqSke12NIypgA78DYhml87zTgaKo+R
-TsOb7bUgzBiEIu9IJ0ScJD/85G95pLi5GlmqOXyjAXQC7sDRVA4MzywAzLxWwkdc
-fs03uoQXk0b7ECNeB+hvluf7aLfBDZI+13cRcpXfMKZ+iJNMSdUem03sUhHROPRA
-4K0VwaHYWok1CAj+70SXa2t467ZvL4utlfEc/Nx5htRKdOHXXK7vtLf1Qm2TuI+V
-mWYdKxe572tT96E9sYZuCSkCvSBKozZ7e9oeCex6gxR/VV1Nf6HHGU8z1doh+u8t
-j/4RUh29Z6pJzmcU+kNo5+3VeqZ4b2PlOkfUXNw+ev6Q6pQqYixrVq6B9bsOG7c9
-sq7i/X6IDOaa2aAmx1LCrmLwCX98AWPOzSJPt31m0D4W7Bp1dk8lAJdIg/WlIxEg
-replg5G057OYrRc2ELaB+syLWBq7SYE6RkPl1XQ97J2QqHWJUUnk/vJb+wARAQAB
-tDZKb25hdGhhbiBBbnN0ZXkgKENPREUgU0lHTklORyBLRVkpIDxqYW5zdGV5QGdt
-YWlsLmNvbT6JAjgEEwECACIFAlE2oIUCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4B
-AheAAAoJEHXtbYMawvS67fsQAIQB12GiGJOwr3yLbFXlOTh1c3LDBKahd0yWcUID
-LLQs3v+qm6siaIrrw884JHWWyxVgk0XMJk5WpRWFQyHaOeIBRNNkjg9/BhX6YUpE
-adisvKJjZLog9hpoflm7eVKSJqyufJpbDQw/5N95G11PZINVZJeizDVgVts5e3fa
-U8/nny7ln0sOVuiJx33LSl7f2q9EBwjzwOe/pYFbPLeZ4z+Xg+869w4b9JR/MTWP
-ScVi0JphQh80TvePhj44tlKQY0bWVIrEVeNDZWjqh0cGN37l/w/XmHEJv8nyP6/U
-t872WZSj8020cI5JeDMJKtV8yJ2ACZS0Y9u1/osGleDEqMO6WEM9UqRvfIGXET+P
-v2dCoqeaEGdM47M2GEJMhHnk/zvDZGE4nbp8PTv3ANXWrei+RmnOEjalONFBkAWu
-T42GrswDmOji3PXceWo9UMmAfqLErj9JcEcvjFouhuZ0fzCjAj2BxYCcFnMBaqM0
-2k+n+AGIp8AuDkrDcRJywK16CcV4PSlXTFcgfoSqIOQ1kxmU+X0qodYPGbT58WZ4
-LTZpVJy0M5YL56vpWt6O0VWpWcckPt/H/bF19hAgbGMi9hJYL2TP/yMZD6ZtYM7E
-irJLtJwbnle4AyOnJo6VnZ5UNhVKaoKEYjGZorl//X0Sd03+J2HG+Upki6tEofvd
-9lvUuQINBFE2oIUBEADJxG3GNjwcaZuW/owmf0Zhx3c9KcOxFBlzYxXDxSEfhnR7
-o19Ham/gABDUGUxA6cvjmkgnZiV3NWUhoFq9duRjg85l/vznJZ20J/Zn17xtX6KK
-BVfF6MGVWsc6wJ4VfiaoeVwN/Cf2KCYY4wdnLe95WxwONNrhIJGQy2sC+FRarmVG
-Ax4dziT4bTP5jm+Z7I634w4KaXqT82hGLzd31kxk72STXZ5p9a7pvus1I9NjQEu1
-V9yyEeQl2J9QcV5xzK2a4m8tXTRe9II+FHJvnojqtCx1zlFjp5fRqMhTbfmGVONI
-wSqCEGtdnDHYDS8E92ByyDv9/KfgdPw1VbFYLmyVky5WnUPDFyXP4snx4RiZ2JLK
-wkCluwaGeE5hJciRr9atYG6sVjF4olCFgcTaT9ww64kXWMUeTqmi13TqlK/QvaJz
-w006s2wUHg0ri4NYjUKRH7uSTwT9byYEjn7NhQjPxs/dmtUJlFO8Tx0XEQHZB36j
-Mw3XLnPBZgCmD1wJ9wlR3KvLrTSahn1ymqD2osxU2vDfUARkMG9Hp4kNhHbk2LTJ
-0j6cTQT8enueK4xp/LXAPzwRZm6Jv78aNMML1EW5NDGBme61M6zDrmSSWT3cmlA8
-Mjd8SqQdECQeuJhqfzq2eJ/xmQ+7FdkyIXunLzsZsiPVcTjeRf0APprWdNayHQAR
-AQABiQIfBBgBAgAJBQJRNqCFAhsMAAoJEHXtbYMawvS65XAP+wYxeoGPuwtYo4qo
-BTvzeg0wNCRUHCNSial36T/7y9tIUtLLkQFDIiUqrVAZizeqte1Kp7CHhsat4fV9
-YhCxV+BTJEzH3RoQk1M0zsguN+ANou1D0eeu1YBxrrgTZSzwf9U9gAjumVCGsVkT
-zENxMA9nu/KknLkEWECnpaQPk89s8ZoNuuPaoiNpd0rrexni5+TTJ6uLG/tsk/jO
-rZi9eWsP7GUZykBRumUTJHWh5+cKNOhDWt1+0pfcnCiiCLsbcGg9l72pP/4pxYXo
-pMLkMoJ8Ly0QTUlO4cNZIsqQYGdqpTI/plaJyrMTVBdwK0JorlEexICR73CYGBaz
-7jIysIIsy59QZXKaedYmhOc8OaZa/mz/IFASUV7FOpGxjSRgFtLUW74yfBj5uZJb
-Zo1Kd/yu/sg7E2/ROdvkGoARSBXyQwFw5Wp5xg7c0WZbXRXNR+Cv0Vpbe06NN0cp
-xHVxu7cc3di5+INpPywxxJIyS7JEGR/dIc4PnTb27fTc39AIQWuqKpprMQF3Oaoz
-xnNtapHHdaoFVykAN+B9czsUMH6YbDPD8cfxK97Xloh5p1aPKNtRDvgkq/l7LN9X
-YLxMAFiJVxTO4pYZx08oOSxZwc8WsRXFPYXbVgGYmGLjQIrT5TJAEmlxPFydSJcc
-advtsGhpGw2bQvnPEt4JVU+CV6/I
-=SRdD
------END PGP PUBLIC KEY BLOCK-----
-
-pub 2048R/02FF4100 2015-02-05
-uid Andrea Cosentino (Chiave) <an...@yahoo.com>
-sig 3 02FF4100 2015-02-05 Andrea Cosentino (Chiave) <an...@yahoo.com>
-sub 2048R/D7B65D33 2015-02-05
-sig 02FF4100 2015-02-05 Andrea Cosentino (Chiave) <an...@yahoo.com>
-
-pub 4096R/FD34417D 2015-04-23
-uid Andrea Cosentino (COMMITER KEY) <ac...@apache.org>
-sig 3 FD34417D 2015-04-23 Andrea Cosentino (COMMITER KEY) <ac...@apache.org>
-sub 4096R/E334BF85 2015-04-23
-sig FD34417D 2015-04-23 Andrea Cosentino (COMMITER KEY) <ac...@apache.org>
-
-pub 4096R/B4889CC0 2015-04-24
-uid Andrea Cosentino (NEW COMMITTER KEY) <ac...@apache.org>
-sig 3 B4889CC0 2015-04-24 Andrea Cosentino (NEW COMMITTER KEY) <ac...@apache.org>
-sub 4096R/D31B42C9 2015-04-24
-sig B4889CC0 2015-04-24 Andrea Cosentino (NEW COMMITTER KEY) <ac...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v2.0.22 (GNU/Linux)
-
-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
-Wg==
-=4Now
------END PGP PUBLIC KEY BLOCK-----
-pub 4096R/229754D2 2019-03-05
-uid Nicola Ferraro <nf...@apache.org>
-sub 4096R/A5AAD514 2019-03-05
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-SaGp
-=GGoO
------END PGP PUBLIC KEY BLOCK-----
-pub rsa4096 2016-04-07 [SC]
- 33E8BA5A41AB4B428475386137461E41A7B768D7
-uid [ unknown] Luca Burgazzoli <lb...@apache.org>
-sig 3 37461E41A7B768D7 2016-04-07 Luca Burgazzoli <lb...@apache.org>
-sub rsa4096 2016-04-07 [E]
-sig 37461E41A7B768D7 2016-04-07 Luca Burgazzoli <lb...@apache.org>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-Bq6lxl6uAA==
-=f/Ot
------END PGP PUBLIC KEY BLOCK-----
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 6b0b127..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,203 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/Makefile b/Makefile
deleted file mode 120000
index 770e545..0000000
--- a/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-./script/Makefile
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index f4f1281..0000000
--- a/NOTICE
+++ /dev/null
@@ -1,11 +0,0 @@
- =========================================================================
- == NOTICE file corresponding to the section 4 d of ==
- == the Apache License, Version 2.0, ==
- == in this case for the Apache Camel distribution. ==
- =========================================================================
-
- This product includes software developed by
- The Apache Software Foundation (http://www.apache.org/).
-
- Please read the different LICENSE files present in the licenses directory of
- this distribution.
\ No newline at end of file
diff --git a/README.adoc b/README.adoc
index 7b31fe3..7202666 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,396 +1,3 @@
-= Apache Camel K
+= Apache Camel K API
-image:https://github.com/apache/camel-k/workflows/build/badge.svg["Build", link="https://github.com/apache/camel-k/actions"]
-image:https://goreportcard.com/badge/github.com/apache/camel-k["Go Report Card", link="https://goreportcard.com/report/github.com/apache/camel-k"]
-image:https://godoc.org/github.com/apache/camel-k?status.svg["GoDoc", link="https://godoc.org/github.com/apache/camel-k"]
-image:https://img.shields.io/github/license/openshift/origin.svg?maxAge=2592000["Licensed under Apache License version 2.0", link="https://www.apache.org/licenses/LICENSE-2.0"]
-image:https://badges.gitter.im/apache/camel-k.png["Chat on Gitter", link="https://gitter.im/apache/camel-k"]
-
-image:https://github.com/apache/camel-k/workflows/kubernetes/badge.svg["Kubernetes", link="https://github.com/apache/camel-k/actions"]
-image:https://github.com/apache/camel-k/workflows/knative/badge.svg["Knative", link="https://github.com/apache/camel-k/actions"]
-image:https://img.shields.io/travis/apache/camel-k/master.svg?label=openshift["OpenShift", link="https://travis-ci.org/apache/camel-k"]
-
-Apache Camel K is a lightweight integration platform, born on Kubernetes, with serverless superpowers.
-
-[[getting-started]]
-== Getting Started
-
-Camel K allows to run integrations directly on a Kubernetes or OpenShift cluster.
-To use it, you need to be connected to a cloud environment or to a local cluster created for development purposes.
-
-If you need help on how to create a local development environment based on *Minishift* or *Minikube*, you can follow the https://camel.apache.org/camel-k/latest/installation/installation.html[local cluster setup guide].
-
-[[installation]]
-=== Installation
-
-Make sure you apply specific configuration settings for your cluster before installing Camel K. Customized instructions are needed for
-the following cluster types:
-
-- https://camel.apache.org/camel-k/latest/installation/minikube.html[Minikube]
-- https://camel.apache.org/camel-k/latest/installation/minishift.html[Minishift]
-- https://camel.apache.org/camel-k/latest/installation/gke.html[Google Kubernetes Engine (GKE)]
-- https://camel.apache.org/camel-k/latest/installation/openshift.html[OpenShift]
-
-Other cluster types (such as OpenShift clusters) should not need prior configuration.
-
-To start using Camel K you need the **"kamel"** binary, that can be used to both configure the cluster and run integrations.
-Look into the https://github.com/apache/camel-k/releases[release page] for latest version of the `kamel` tool.
-
-If you want to contribute, you can also **build it from source!** Refer to the https://camel.apache.org/camel-k/latest/developers.html[contributing guide]
-for information on how to do it.
-
-Once you have the "kamel" binary, log into your cluster using the standard "oc" (OpenShift) or "kubectl" (Kubernetes) client tool and execute the following command to install Camel K:
-
-```
-kamel install
-```
-
-This will configure the cluster with the Camel K custom resource definitions and install the operator on the current namespace.
-
-IMPORTANT: Custom Resource Definitions (CRD) are cluster-wide objects and you need admin rights to install them. Fortunately this
-operation can be done *once per cluster*. So, if the `kamel install` operation fails, you'll be asked to repeat it when logged as admin.
-For Minishift, this means executing `oc login -u system:admin` then `kamel install --cluster-setup` only for first-time installation.
-
-=== Running an Integration
-
-After the initial setup, you can run a Camel integration on the cluster by executing:
-
-```
-kamel run examples/Sample.java
-```
-
-During your first run you may see your console stuck with the following message:
-
-```
-integration "sample" created
-integration "sample" in phase Waiting For Platform
-```
-
-NOTE: It will take some time for your integration to get started for the first time. This is because the camel-k operator has to pull and cache the camel-k builder images into the cluster’s registry.
-
-You can follow this process by watching the pods in the namespace where the operator is running:
-
-```
-kubectl get pods -w
-```
-
-You should see something like:
-
-```
-$ kubectl get pods -w
-NAME READY STATUS RESTARTS AGE
-camel-k-cache 0/1 Completed 0 3m29s
-camel-k-groovy-builder 1/1 Running 0 32s
-camel-k-jvm 0/1 Completed 0 61s
-camel-k-jvm-builder 0/1 Completed 0 2m13s
-camel-k-operator-587b579567-fkz54 1/1 Running 1 43m
-camel-k-groovy 0/1 Pending 0 0s
-camel-k-groovy 0/1 ContainerCreating 0 0s
-camel-k-groovy 1/1 Running 0 2s
-camel-k-groovy 0/1 Completed 0 4s
-camel-k-kotlin-builder 0/1 Pending 0 0s
-camel-k-kotlin-builder 0/1 Pending 0 0s
-camel-k-kotlin-builder 0/1 ContainerCreating 0 0s
-camel-k-groovy-builder 0/1 Completed 0 75s
-...
-```
-
-After a couple of minutes you can see your integration runnning. To see the output log of your integration container get the pod id:
-
-```
-kubectl get pods | grep sample
-sample-67699569c4-724dv 1/1 Running 0 15m
-```
-
-And then see the logs using:
-
-```
-kubectl logs -f sample-67699569c4-724dv
-```
-
-An output like this should appear:
-
-```
-Starting the Java application using /opt/run-java/run-java.sh ...
-...
-2019-05-08 19:35:21.883 INFO [main] DefaultCamelContext - Apache Camel 2.23.2 (CamelContext: camel-k) started in 0.874 seconds
-2019-05-08 19:35:22.889 INFO [Camel (camel-k) thread #2 - timer://tick] route1 - Hello Camel K!
-2019-05-08 19:36:22.881 INFO [Camel (camel-k) thread #2 - timer://tick] route1 - Hello Camel K!
-...
-```
-
-A "Sample.java" file is included in the link:/examples[/examples] folder of this repository. You can change the content of the file and execute the command again to see the changes.
-
-==== Configure Integration properties
-
-Properties associated to an integration can be configured either using a ConfigMap/Secret or by setting using the "--property" flag, i.e.
-
-```
-kamel run --property my.message=test examples/props.js
-```
-```
-kamel run --configmap=<your name here> examples/props.js
-```
-Note: to create the config map first create a file called application.properties which contains lines with key=value pairs
-e.g. my.message="The text to display"
-Create the config map in the usual manner e.g.
-```
-kubectl create configmap <your name here> --from-file=application.properties
-```
-
-==== Configure Integration Logging
-
-camel-k runtime uses log4j2 as logging framework and can be configured through integration properties.
-If you need to change the logging level of various loggers, you can do so by using the `logging.level` prefix:
-
-```
-logging.level.org.apache.camel = DEBUG
-```
-
-==== Configure Integration Components
-
-camel-k component can be configured programmatically inside an integration or using properties with the following syntax.
-
-```
-camel.component.${scheme}.${property} = ${value}
-```
-
-As example if you want to change the queue size of the seda component, you can use the following property:
-
-```
-camel.component.seda.queueSize = 10
-```
-
-==== Configure Maven settings
-
-Maven settings can be configured by providing a custom settings.xml through a ConfigMap or secret.
-The source for maven settings can be configured using either the `kamel` CLI at installation time or by editing Camel K's IntegrationPlatform:
-
-- cli:
-+
-.Syntax
-[source]
-----
-kamel install --maven-settings=configmap|secret:name[/key]
-----
-+
-.Example
-[source]
-----
-kamel cmd --maven-settings=configmap:maven-settings/settings.xml
-----
-
-- IntegrationPlatform:
-+
-[source,yaml]
-----
-apiVersion: camel.apache.org/v1
-kind: IntegrationPlatform
-metadata:
- labels:
- app: camel-k
- name: camel-k
-spec:
- build:
- maven:
- settings:
- configMapKeyRef:
- key: settings.xml
- name: maven-settings
-----
-
-To quickly create a config map you can use the following command:
-
-[source]
-----
-kubectl create configmap maven-settings --from-file=settings.xml
-----
-
-
-As an installation shortcut, additional maven repositories can be alternatively added using the `--maven-repository` option
-
-
-[source]
-----
-kamel cmd --maven-repository http://repo1.my-company.com --maven-repository http://repo2.my-company.com
-----
-
-A repository url follow conventions used to configure additional repositories in https://karaf.apache.org[_Apache Karaf_] so it can be appended with zero or more of the following flags:
-
-* **@snapshots**: the repository contains snapshots
-* **@noreleases**: the repository does not contain any released artifacts
-* **@id=repository.id**: the id for the repository
-
-[source]
-----
-kamel install --maven-repository http://repository.apache.org/content/groups/snapshots-group@id=apache@snapshots@noreleases
-----
-
-This results in:
-
-[source,xml]
-----
-<repositories>
- <repository>
- <id>apache</id>
- <url>http://repository.apache.org/content/groups/snapshots-group</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
-</repositories>
-----
-
-IMPORTANT
-====
-the options `--maven-settings` and `--maven-repository` are mutually exclusive
-====
-
-==== Configure Integration Volumes
-
-It's possible to mount persistent volumes into integration containers by using the `-v` or `--volume` flag. The format of volume flag value is similar to that of the docker CLI. But instead of specifying a host path to mount from, you reference the name of a `PersistentVolumeClaim` that you have already configured within the cluster. E.g
-
-```
-kamel run examples/Sample.java -v myPvcName:/some/path
-```
-
-==== Configure Environment Variables
-
-It's possible to configure environment variables for integration containers by using the `-e` or `--env` flag:
-
-```
-kamel run examples/Sample.java -e MY_ENV_VAR=some-value
-```
-
-=== Running Integrations in "Dev" Mode for Fast Feedback
-
-If you want to iterate quickly on an integration to have fast feedback on the code you're writing, you can use by running it in **"dev" mode**:
-
-```
-kamel run examples/Sample.java --dev
-```
-
-The `--dev` flag deploys immediately the integration and shows the integration logs in the console. You can then change the code and see
-the **changes automatically applied (instantly)** to the remote integration pod.
-
-The console follows automatically all redeploys of the integration.
-
-Here's an example of the output:
-
-```
-[nferraro@localhost camel-k]$ kamel run examples/Sample.java --dev
-integration "sample" created
-integration "sample" in phase Building
-integration "sample" in phase Deploying
-integration "sample" in phase Running
-[1] Monitoring pod sample-776db787c4-zjhfr[1] Starting the Java application using /opt/run-java/run-java.sh ...
-[1] exec java -javaagent:/opt/prometheus/jmx_prometheus_javaagent.jar=9779:/opt/prometheus/prometheus-config.yml -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp .:/deployments/* org.apache.camel.k.jvm.Application
-[1] [INFO ] 2018-09-20 21:24:35.953 [main] Application - Routes: file:/etc/camel/conf/Sample.java
-[1] [INFO ] 2018-09-20 21:24:35.955 [main] Application - Language: java
-[1] [INFO ] 2018-09-20 21:24:35.956 [main] Application - Locations: file:/etc/camel/conf/application.properties
-[1] [INFO ] 2018-09-20 21:24:36.506 [main] DefaultCamelContext - Apache Camel 2.22.1 (CamelContext: camel-1) is starting
-[1] [INFO ] 2018-09-20 21:24:36.578 [main] ManagedManagementStrategy - JMX is enabled
-[1] [INFO ] 2018-09-20 21:24:36.680 [main] DefaultTypeConverter - Type converters loaded (core: 195, classpath: 0)
-[1] [INFO ] 2018-09-20 21:24:36.777 [main] DefaultCamelContext - StreamCaching is not in use. If using streams then its recommended to enable stream caching. See more details at http://camel.apache.org/stream-caching.html
-[1] [INFO ] 2018-09-20 21:24:36.817 [main] DefaultCamelContext - Route: route1 started and consuming from: timer://tick
-[1] [INFO ] 2018-09-20 21:24:36.818 [main] DefaultCamelContext - Total 1 routes, of which 1 are started
-[1] [INFO ] 2018-09-20 21:24:36.820 [main] DefaultCamelContext - Apache Camel 2.22.1 (CamelContext: camel-1) started in 0.314 seconds
-
-```
-
-=== Dependencies and Component Resolution
-
-Camel components used in an integration are automatically resolved. For example, take the following integration:
-
-```
-from("imap://admin@myserver.com")
- .to("seda:output")
-```
-
-Since the integration is using the **"imap:" prefix**, Camel K is able to **automatically add the "camel-mail" component** to the list of required dependencies.
-This will be transparent to the user, that will just see the integration running.
-
-Automatic resolution is also a nice feature in `--dev` mode, because you are allowed to add all components you need without exiting the dev loop.
-
-You can also use the `-d` flag to pass additional explicit dependencies to the Camel client tool:
-
-```
-kamel run -d mvn:com.google.guava:guava:26.0-jre -d camel-mina2 Integration.java
-```
-
-=== Not Just Java
-
-Camel K supports multiple languages for writing integrations:
-
-.Languages
-[options="header"]
-|=======================
-| Language | Description
-| Java | Integrations written in plain Java DSL are supported.
-| XML | Integrations written in plain XML DSL are supported (Spring XML or Blueprint not supported).
-| Groovy | Groovy `.groovy` files are supported (experimental).
-| JavaScript | JavaScript `.js` files are supported (experimental).
-| Kotlin | Kotlin Script `.kts` files are supported (experimental).
-|=======================
-
-More information about supported languages is provided in the https://camel.apache.org/camel-k/latest/languages/languages.html[languages guide].
-
-Integrations written in different languages are provided in the link:/examples[examples] directory.
-
-An example of integration written in JavaScript is the link:/examples/dns.js[/examples/dns.js] integration.
-Here's the content:
-
-```
-// Lookup every second the 'www.google.com' domain name and log the output
-from('timer:dns?period=1000')
- .routeId('dns')
- .setHeader('dns.domain')
- .constant('www.google.com')
- .to('dns:ip')
- .to('log:dns');
-```
-
-To run it, you need just to execute:
-
-```
-kamel run examples/dns.js
-```
-
-=== Traits
-
-The details of how the integration is mapped into Kubernetes resources can be *customized using traits*.
-More information is provided in the https://camel.apache.org/camel-k/latest/traits/traits.html[traits section].
-
-=== Monitoring the Status
-
-Camel K integrations follow a lifecycle composed of several steps before getting into the `Running` state.
-You can check the status of all integrations by executing the following command:
-
-```
-kamel get
-```
-
-[[contributing]]
-== Contributing
-
-We love contributions and we want to make Camel K great!
-
-Contributing is easy, just take a look at our https://camel.apache.org/camel-k/latest/developers.html[developer's guide].
-
-[[uninstalling]]
-== Uninstalling
-
-If you really need to, it is possible to completely uninstall Camel K from OpenShift or Kubernetes with the following command, using the "oc" or "kubectl" tool:
-
-```
-# kubectl on plain Kubernetes
-oc delete all,pvc,configmap,rolebindings,clusterrolebindings,secrets,sa,roles,clusterroles,crd -l 'app=camel-k'
-```
-
-[[licensing]]
-== Licensing
-
-This software is licensed under the terms you may find in the file named LICENSE in this directory.
+This is a temporary branch that mirrors the Camel K APIs.
diff --git a/addons/master/master.go b/addons/master/master.go
deleted file mode 100644
index a88d90c..0000000
--- a/addons/master/master.go
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package master
-
-import (
- "fmt"
- "strings"
-
- "github.com/apache/camel-k/deploy"
- v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
- "github.com/apache/camel-k/pkg/metadata"
- "github.com/apache/camel-k/pkg/trait"
- "github.com/apache/camel-k/pkg/util"
- "github.com/apache/camel-k/pkg/util/kubernetes"
- "github.com/apache/camel-k/pkg/util/uri"
- "k8s.io/apimachinery/pkg/runtime"
-)
-
-// The Master trait allows to configure the integration to automatically leverage Kubernetes resources for doing
-// leader election and starting *master* routes only on certain instances.
-//
-// It's activated automatically when using the master endpoint in a route, e.g. `from("master:lockname:telegram:bots")...`.
-//
-// NOTE: this trait adds special permissions to the integration service account in order to read/write configmaps and read pods.
-// It's recommended to use a different service account than "default" when running the integration.
-//
-// +camel-k:trait=master
-type masterTrait struct {
- trait.BaseTrait `property:",squash"`
- // Enables automatic configuration of the trait.
- Auto *bool `property:"auto"`
- // When this flag is active, the operator analyzes the source code to add dependencies required by delegate endpoints.
- // E.g. when using `master:lockname:timer`, then `camel:timer` is automatically added to the set of dependencies.
- // It's enabled by default.
- IncludeDelegateDependencies *bool `property:"include-delegate-dependencies"`
- // Name of the configmap that will be used to store the lock. Defaults to "<integration-name>-lock".
- Configmap *string `property:"configmap"`
- // Label that will be used to identify all pods contending the lock. Defaults to "camel.apache.org/integration".
- LabelKey *string `property:"label-key"`
- // Label value that will be used to identify all pods contending the lock. Defaults to the integration name.
- LabelValue *string `property:"label-value"`
- delegateDependencies []string
-}
-
-// NewMasterTrait --
-func NewMasterTrait() trait.Trait {
- return &masterTrait{
- BaseTrait: trait.NewBaseTrait("master", trait.TraitOrderBeforeControllerCreation),
- }
-}
-
-const (
- masterComponent = "master"
-)
-
-func (t *masterTrait) Configure(e *trait.Environment) (bool, error) {
- if t.Enabled != nil && !*t.Enabled {
- return false, nil
- }
-
- if !e.IntegrationInPhase(v1.IntegrationPhaseInitialization, v1.IntegrationPhaseDeploying, v1.IntegrationPhaseRunning) {
- return false, nil
- }
-
- if t.Auto == nil || *t.Auto {
- // Check if the master component has been used
- sources, err := kubernetes.ResolveIntegrationSources(t.Ctx, t.Client, e.Integration, e.Resources)
- if err != nil {
- return false, err
- }
-
- meta := metadata.ExtractAll(e.CamelCatalog, sources)
-
- if t.Enabled == nil {
- for _, endpoint := range meta.FromURIs {
- if uri.GetComponent(endpoint) == masterComponent {
- enabled := true
- t.Enabled = &enabled
- }
- }
- }
-
- if t.Enabled == nil || !*t.Enabled {
- return false, nil
- }
-
- if t.IncludeDelegateDependencies == nil || *t.IncludeDelegateDependencies {
- t.delegateDependencies = findAdditionalDependencies(e, meta)
- }
-
- if t.Configmap == nil {
- val := fmt.Sprintf("%s-lock", e.Integration.Name)
- t.Configmap = &val
- }
-
- if t.LabelKey == nil {
- val := "camel.apache.org/integration"
- t.LabelKey = &val
- }
-
- if t.LabelValue == nil {
- t.LabelValue = &e.Integration.Name
- }
- }
-
- return t.Enabled != nil && *t.Enabled, nil
-}
-
-func (t *masterTrait) Apply(e *trait.Environment) error {
-
- if e.IntegrationInPhase(v1.IntegrationPhaseInitialization) {
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-runtime-master")
-
- // Master sub endpoints need to be added to the list of dependencies
- for _, dep := range t.delegateDependencies {
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, dep)
- }
-
- } else if e.IntegrationInPhase(v1.IntegrationPhaseDeploying, v1.IntegrationPhaseRunning) {
- serviceAccount := e.Integration.Spec.ServiceAccountName
- if serviceAccount == "" {
- serviceAccount = "default"
- }
-
- var templateData = struct {
- Namespace string
- Name string
- ServiceAccount string
- }{
- Namespace: e.Integration.Namespace,
- Name: fmt.Sprintf("%s-master", e.Integration.Name),
- ServiceAccount: serviceAccount,
- }
-
- role, err := loadResource(e, "master-role.tmpl", templateData)
- if err != nil {
- return err
- }
- roleBinding, err := loadResource(e, "master-role-binding.tmpl", templateData)
- if err != nil {
- return err
- }
-
- e.Resources.Add(role)
- e.Resources.Add(roleBinding)
-
- e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
- v1.ConfigurationSpec{Type: "property", Value: "customizer.master.enabled=true"},
- )
-
- if t.Configmap != nil {
- e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.configMapName=%s", *t.Configmap)},
- )
- }
-
- if t.LabelKey != nil {
- e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelKey=%s", *t.LabelKey)},
- )
- }
-
- if t.LabelValue != nil {
- e.Integration.Status.Configuration = append(e.Integration.Status.Configuration,
- v1.ConfigurationSpec{Type: "property", Value: fmt.Sprintf("customizer.master.labelValue=%s", *t.LabelValue)},
- )
- }
- }
-
- return nil
-}
-
-func findAdditionalDependencies(e *trait.Environment, meta metadata.IntegrationMetadata) (dependencies []string) {
- for _, endpoint := range meta.FromURIs {
- if uri.GetComponent(endpoint) == masterComponent {
- parts := strings.Split(endpoint, ":")
- if len(parts) > 2 {
- // syntax "master:lockname:endpoint:..."
- childComponent := strings.ReplaceAll(parts[2], "/", "")
- if artifact := e.CamelCatalog.GetArtifactByScheme(childComponent); artifact != nil {
- dependencies = append(dependencies, artifact.GetDependencyID())
- }
- }
- }
- }
- return dependencies
-}
-
-func loadResource(e *trait.Environment, name string, params interface{}) (runtime.Object, error) {
- data, err := deploy.TemplateResource(fmt.Sprintf("/addons/master/%s", name), params)
- if err != nil {
- return nil, err
- }
- obj, err := kubernetes.LoadResourceFromYaml(e.Client.GetScheme(), data)
- if err != nil {
- return nil, err
- }
- return obj, nil
-}
diff --git a/addons/master/zz_desc_generated.go b/addons/master/zz_desc_generated.go
deleted file mode 100644
index 57d5fb2..0000000
--- a/addons/master/zz_desc_generated.go
+++ /dev/null
@@ -1 +0,0 @@
-package master
diff --git a/addons/master/zz_generated_doc.go b/addons/master/zz_generated_doc.go
deleted file mode 100644
index 57d5fb2..0000000
--- a/addons/master/zz_generated_doc.go
+++ /dev/null
@@ -1 +0,0 @@
-package master
diff --git a/addons/register_3scale.go b/addons/register_3scale.go
deleted file mode 100644
index aaa3cb1..0000000
--- a/addons/register_3scale.go
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package addons
-
-import (
- "github.com/apache/camel-k/addons/threescale"
- "github.com/apache/camel-k/pkg/trait"
-)
-
-func init() {
- trait.AddToTraits(threescale.NewThreeScaleTrait)
-}
diff --git a/addons/register_master.go b/addons/register_master.go
deleted file mode 100644
index 061ee2d..0000000
--- a/addons/register_master.go
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package addons
-
-import (
- "github.com/apache/camel-k/addons/master"
- "github.com/apache/camel-k/pkg/trait"
-)
-
-func init() {
- trait.AddToTraits(master.NewMasterTrait)
-}
diff --git a/addons/threescale/3scale.go b/addons/threescale/3scale.go
deleted file mode 100644
index fa2250c..0000000
--- a/addons/threescale/3scale.go
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package threescale
-
-import (
- "strconv"
-
- v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
- "github.com/apache/camel-k/pkg/trait"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-// The 3scale trait can be used to automatically create annotations that allow
-// 3scale to discover the generated service and make it available for API management.
-//
-// The 3scale trait is disabled by default.
-//
-// +camel-k:trait=3scale
-type threeScaleTrait struct {
- trait.BaseTrait `property:",squash"`
- // Enables automatic configuration of the trait.
- Auto *bool `property:"auto"`
- // The scheme to use to contact the service (default `http`)
- Scheme string `property:"scheme"`
- // The path where the API is published (default `/`)
- Path string `property:"path"`
- // The port where the service is exposed (default `80`)
- Port int `property:"port"`
- // The path where the Open-API specification is published (default `/api-doc`)
- DescriptionPath *string `property:"description-path"`
-}
-
-const (
- // ThreeScaleSchemeAnnotation --
- ThreeScaleSchemeAnnotation = "discovery.3scale.net/scheme"
- // ThreeScaleSchemeDefaultValue --
- ThreeScaleSchemeDefaultValue = "http"
-
- // ThreeScalePortAnnotation --
- ThreeScalePortAnnotation = "discovery.3scale.net/port"
- // ThreeScalePortDefaultValue --
- ThreeScalePortDefaultValue = 80
-
- // ThreeScalePathAnnotation --
- ThreeScalePathAnnotation = "discovery.3scale.net/path"
- // ThreeScalePathDefaultValue --
- ThreeScalePathDefaultValue = "/"
-
- // ThreeScaleDescriptionPathAnnotation --
- ThreeScaleDescriptionPathAnnotation = "discovery.3scale.net/description-path"
- // ThreeScaleDescriptionPathDefaultValue --
- ThreeScaleDescriptionPathDefaultValue = "/api-doc"
-
- // ThreeScaleDiscoveryLabel --
- ThreeScaleDiscoveryLabel = "discovery.3scale.net"
- // ThreeScaleDiscoveryLabelEnabled --
- ThreeScaleDiscoveryLabelEnabled = "true"
-)
-
-// NewThreeScaleTrait --
-func NewThreeScaleTrait() trait.Trait {
- return &threeScaleTrait{
- BaseTrait: trait.NewBaseTrait("3scale", trait.TraitOrderPostProcessResources),
- }
-}
-
-func (t *threeScaleTrait) Configure(e *trait.Environment) (bool, error) {
- if t.Enabled == nil || !*t.Enabled {
- // disabled by default
- return false, nil
- }
-
- if !e.IntegrationInPhase(v1.IntegrationPhaseDeploying) {
- return false, nil
- }
-
- if t.Auto == nil || *t.Auto {
- if t.Scheme == "" {
- t.Scheme = ThreeScaleSchemeDefaultValue
- }
- if t.Path == "" {
- t.Path = ThreeScalePathDefaultValue
- }
- if t.Port == 0 {
- t.Port = ThreeScalePortDefaultValue
- }
- if t.DescriptionPath == nil {
- openAPI := ThreeScaleDescriptionPathDefaultValue
- t.DescriptionPath = &openAPI
- }
- }
- return true, nil
-}
-
-func (t *threeScaleTrait) Apply(e *trait.Environment) error {
- if svc := e.Resources.GetServiceForIntegration(e.Integration); svc != nil {
- t.addLabelsAndAnnotations(&svc.ObjectMeta)
- }
- return nil
-}
-
-func (t *threeScaleTrait) addLabelsAndAnnotations(obj *metav1.ObjectMeta) {
- if obj.Labels == nil {
- obj.Labels = make(map[string]string)
- }
- obj.Labels[ThreeScaleDiscoveryLabel] = ThreeScaleDiscoveryLabelEnabled
-
- if obj.Annotations == nil {
- obj.Annotations = make(map[string]string)
- }
- if t.Scheme != "" {
- obj.Annotations[ThreeScaleSchemeAnnotation] = t.Scheme
- }
- if t.Path != "" {
- obj.Annotations[ThreeScalePathAnnotation] = t.Path
- }
- if t.Port != 0 {
- obj.Annotations[ThreeScalePortAnnotation] = strconv.Itoa(t.Port)
- }
- if t.DescriptionPath != nil && *t.DescriptionPath != "" {
- obj.Annotations[ThreeScaleDescriptionPathAnnotation] = *t.DescriptionPath
- }
-}
diff --git a/addons/threescale/3scale_test.go b/addons/threescale/3scale_test.go
deleted file mode 100644
index 2ac8506..0000000
--- a/addons/threescale/3scale_test.go
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package threescale
-
-import (
- "testing"
-
- v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
- "github.com/apache/camel-k/pkg/trait"
- "github.com/apache/camel-k/pkg/util/camel"
- "github.com/apache/camel-k/pkg/util/kubernetes"
- "github.com/stretchr/testify/assert"
- corev1 "k8s.io/api/core/v1"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-)
-
-func TestThreeScaleDisabled(t *testing.T) {
- catalog, err := camel.DefaultCatalog()
- assert.Nil(t, err)
-
- e := &trait.Environment{
- CamelCatalog: catalog,
- }
-
- threeScale := NewThreeScaleTrait()
- enabled, err := threeScale.Configure(e)
- assert.Nil(t, err)
- assert.False(t, enabled)
-}
-
-func TestThreeScaleInjection(t *testing.T) {
- svc, e := createEnvironment(t)
- threeScale := NewThreeScaleTrait()
- enabled := true
- threeScale.(*threeScaleTrait).Enabled = &enabled
- ok, err := threeScale.Configure(e)
- assert.Nil(t, err)
- assert.True(t, ok)
-
- err = threeScale.Apply(e)
- assert.Nil(t, err)
-
- assert.Equal(t, "true", svc.Labels["discovery.3scale.net"])
- assert.Equal(t, "http", svc.Annotations["discovery.3scale.net/scheme"])
- assert.Equal(t, "/", svc.Annotations["discovery.3scale.net/path"])
- assert.Equal(t, "80", svc.Annotations["discovery.3scale.net/port"])
- assert.Equal(t, "/api-doc", svc.Annotations["discovery.3scale.net/description-path"])
-}
-
-func TestThreeScaleInjectionNoAPIPath(t *testing.T) {
- svc, e := createEnvironment(t)
- threeScale := NewThreeScaleTrait()
- enabled := true
- threeScale.(*threeScaleTrait).Enabled = &enabled
- noPath := ""
- threeScale.(*threeScaleTrait).DescriptionPath = &noPath
- ok, err := threeScale.Configure(e)
- assert.Nil(t, err)
- assert.True(t, ok)
-
- err = threeScale.Apply(e)
- assert.Nil(t, err)
-
- assert.Equal(t, "true", svc.Labels["discovery.3scale.net"])
- assert.Equal(t, "http", svc.Annotations["discovery.3scale.net/scheme"])
- assert.Equal(t, "/", svc.Annotations["discovery.3scale.net/path"])
- assert.Equal(t, "80", svc.Annotations["discovery.3scale.net/port"])
- _, p := svc.Annotations["discovery.3scale.net/description-path"]
- assert.False(t, p)
-}
-
-func createEnvironment(t *testing.T) (*corev1.Service, *trait.Environment) {
- catalog, err := camel.DefaultCatalog()
- assert.Nil(t, err)
-
- e := trait.Environment{
- CamelCatalog: catalog,
- }
-
- svc := corev1.Service{
- ObjectMeta: metav1.ObjectMeta{
- Labels: map[string]string{
- "camel.apache.org/integration": "test",
- },
- },
- }
- e.Resources = kubernetes.NewCollection(&svc)
-
- it := v1.Integration{
- ObjectMeta: metav1.ObjectMeta{
- Name: "test",
- },
- Status: v1.IntegrationStatus{
- Phase: v1.IntegrationPhaseDeploying,
- },
- }
- e.Integration = &it
- return &svc, &e
-}
diff --git a/addons/threescale/zz_desc_generated.go b/addons/threescale/zz_desc_generated.go
deleted file mode 100644
index 38eec99..0000000
--- a/addons/threescale/zz_desc_generated.go
+++ /dev/null
@@ -1 +0,0 @@
-package threescale
diff --git a/addons/threescale/zz_generated_doc.go b/addons/threescale/zz_generated_doc.go
deleted file mode 100644
index 38eec99..0000000
--- a/addons/threescale/zz_generated_doc.go
+++ /dev/null
@@ -1 +0,0 @@
-package threescale
diff --git a/addons/zz_desc_generated.go b/addons/zz_desc_generated.go
deleted file mode 100644
index 1890561..0000000
--- a/addons/zz_desc_generated.go
+++ /dev/null
@@ -1 +0,0 @@
-package addons
diff --git a/addons/zz_generated_doc.go b/addons/zz_generated_doc.go
deleted file mode 100644
index 1890561..0000000
--- a/addons/zz_generated_doc.go
+++ /dev/null
@@ -1 +0,0 @@
-package addons
diff --git a/build/Dockerfile b/build/Dockerfile
deleted file mode 100644
index 76e022d..0000000
--- a/build/Dockerfile
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM adoptopenjdk/openjdk11:slim
-
-ARG MAVEN_VERSION="3.6.3"
-ARG SHA="c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0"
-ARG BASE_URL="https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries"
-
-RUN mkdir -p /usr/share/maven \
- && curl -Lso /tmp/maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
- && echo "${SHA} /tmp/maven.tar.gz" | sha512sum -c - \
- && tar -xzC /usr/share/maven --strip-components=1 -f /tmp/maven.tar.gz \
- && rm -v /tmp/maven.tar.gz \
- && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
-
-ADD build/_maven_output /tmp/artifacts/m2
-
-USER 0
-
-RUN chgrp -R 0 /tmp/artifacts/m2 \
- && chmod -R g=u /tmp/artifacts/m2
-
-USER 1000
-
-ADD build/_output/bin/kamel /usr/local/bin/kamel
diff --git a/build/maven/pom-catalog.xml b/build/maven/pom-catalog.xml
deleted file mode 100644
index 297a1ce..0000000
--- a/build/maven/pom-catalog.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-catalog-generator</artifactId>
- <version>1.0.0</version>
-
- <build>
- <defaultGoal>generate-resources</defaultGoal>
- <plugins>
- <plugin>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-maven-plugin</artifactId>
- <version>${runtime.version}</version>
- <executions>
- <execution>
- <id>generate-catalog</id>
- <goals>
- <goal>generate-catalog</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- <profiles>
- <profile>
- <id>staging</id>
- <activation>
- <property>
- <name>staging.repo</name>
- </property>
- </activation>
- <repositories>
- <repository>
- <id>staging</id>
- <url>${staging.repo}</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>staging</id>
- <url>${staging.repo}</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
-
- <repositories>
- <repository>
- <id>apache.snapshots</id>
- <url>https://repository.apache.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>oss.snapshots</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>apache.snapshots</id>
- <url>https://repository.apache.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>oss.snapshots</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
-
-</project>
diff --git a/build/maven/pom-runtime.xml b/build/maven/pom-runtime.xml
deleted file mode 100644
index 891f31c..0000000
--- a/build/maven/pom-runtime.xml
+++ /dev/null
@@ -1,378 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-builder</artifactId>
- <version>1.0.0</version>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-maven-plugin</artifactId>
- <version>${runtime.version}</version>
- <type>maven-plugin</type>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-bom</artifactId>
- <version>${runtime.version}</version>
- <type>pom</type>
- </dependency>
-
- <!-- camel-k -->
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-knative-api</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-knative</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-knative-http</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-core</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-main</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.cedarsoftware</groupId>
- <artifactId>java-util</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-health</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-http</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-webhook</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-knative</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-master</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-cron</artifactId>
- <version>${runtime.version}</version>
- </dependency>
-
- <!-- runtime - quarkus -->
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-runtime-quarkus</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-yaml</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-xml</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-js</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-java</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-groovy</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-loader-kotlin</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-core</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-quarkus-knative</artifactId>
- <version>${runtime.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.oracle.substratevm</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.graalvm.nativeimage</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- loaders -->
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-kotlin</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-groovy</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-yaml</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-js</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-xml</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.k</groupId>
- <artifactId>camel-k-loader-java</artifactId>
- <version>${runtime.version}</version>
- </dependency>
- </dependencies>
-
- <repositories>
- <repository>
- <id>apache.snapshots</id>
- <name>Apache Development Snapshot Repository</name>
- <url>https://repository.apache.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>oss.snapshots</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>apache.snapshots</id>
- <name>Apache Development Snapshot Repository</name>
- <url>https://repository.apache.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>oss.snapshots</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
-
- <profiles>
- <profile>
- <id>staging</id>
- <activation>
- <property>
- <name>staging.repo</name>
- </property>
- </activation>
-
- <repositories>
- <repository>
- <id>staging</id>
- <url>${staging.repo}</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <pluginRepositories>
- <pluginRepository>
- <id>staging</id>
- <url>${staging.repo}</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
-
- </profile>
- </profiles>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>3.1.1</version>
- <configuration>
- <useRepositoryLayout>true</useRepositoryLayout>
- <addParentPoms>true</addParentPoms>
- <copyPom>true</copyPom>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
diff --git a/cmd/kamel/main.go b/cmd/kamel/main.go
deleted file mode 100644
index 2ba8ea9..0000000
--- a/cmd/kamel/main.go
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "context"
- "math/rand"
- "os"
- "time"
-
- _ "github.com/apache/camel-k/addons"
- _ "github.com/apache/camel-k/pkg/builder/kaniko"
- _ "github.com/apache/camel-k/pkg/builder/s2i"
- "github.com/apache/camel-k/pkg/cmd"
-
- _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
- _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
-)
-
-func main() {
- rand.Seed(time.Now().UTC().UnixNano())
-
- ctx, cancel := context.WithCancel(context.Background())
-
- // Cancel ctx as soon as main returns
- defer cancel()
-
- rootCmd, err := cmd.NewKamelCommand(ctx)
- exitOnError(err)
-
- err = rootCmd.Execute()
- exitOnError(err)
-}
-
-func exitOnError(err error) {
- if err != nil {
- os.Exit(1)
- }
-}
diff --git a/cmd/manager/main.go b/cmd/manager/main.go
deleted file mode 120000
index 8413b53..0000000
--- a/cmd/manager/main.go
+++ /dev/null
@@ -1 +0,0 @@
-../kamel/main.go
\ No newline at end of file
diff --git a/cmd/util/doc-gen/generators/generators.go b/cmd/util/doc-gen/generators/generators.go
deleted file mode 100644
index 9c10088..0000000
--- a/cmd/util/doc-gen/generators/generators.go
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package generators
-
-import (
- "path/filepath"
- "strings"
-
- "k8s.io/gengo/args"
- "k8s.io/gengo/generator"
- "k8s.io/gengo/namer"
-)
-
-// CustomArgs --
-type CustomArgs struct {
- DocDir string
- DeployDir string
- TraitPath string
- NavPath string
- ListPath string
-}
-
-// NameSystems returns the name system used by the generators in this package.
-func NameSystems() namer.NameSystems {
- return namer.NameSystems{
- "default": namer.NewPublicNamer(0),
- }
-}
-
-// DefaultNameSystem returns the default name system for ordering the types to be
-// processed by the generators in this package.
-func DefaultNameSystem() string {
- return "default"
-}
-
-// Packages --
-func Packages(context *generator.Context, arguments *args.GeneratorArgs) (packages generator.Packages) {
- for _, i := range context.Inputs {
- pkg := context.Universe[i]
- if pkg == nil {
- continue
- }
-
- packages = append(packages, &generator.DefaultPackage{
- PackageName: strings.Split(filepath.Base(pkg.Path), ".")[0],
- PackagePath: pkg.Path,
- GeneratorFunc: func(c *generator.Context) (generators []generator.Generator) {
- generators = append(generators, NewTraitDocGen(arguments), NewtraitMetaDataGen(arguments))
- return generators
- },
- })
- }
- return packages
-}
diff --git a/cmd/util/doc-gen/generators/traitdocgen.go b/cmd/util/doc-gen/generators/traitdocgen.go
deleted file mode 100644
index f09f641..0000000
--- a/cmd/util/doc-gen/generators/traitdocgen.go
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package generators
-
-import (
- "context"
- "fmt"
- "io"
- "io/ioutil"
- "os"
- "path"
- "reflect"
- "regexp"
- "sort"
- "strings"
-
- v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
- "github.com/apache/camel-k/pkg/trait"
- "k8s.io/gengo/args"
- "k8s.io/gengo/generator"
- "k8s.io/gengo/types"
-)
-
-const (
- tagTrait = "+camel-k:trait"
-
- adocCommonMarkerStart = "// Start of autogenerated code - DO NOT EDIT!"
- adocCommonMarkerEnd = "// End of autogenerated code - DO NOT EDIT!"
-
- adocDescriptionMarkerStart = adocCommonMarkerStart + " (description)"
- adocDescriptionMarkerEnd = adocCommonMarkerEnd + " (description)"
-
- adocConfigurationMarkerStart = adocCommonMarkerStart + " (configuration)"
- adocConfigurationMarkerEnd = adocCommonMarkerEnd + " (configuration)"
-
- adocNavMarkerStart = adocCommonMarkerStart + " (trait-nav)"
- adocNavMarkerEnd = adocCommonMarkerEnd + " (trait-nav)"
-
- adocListMarkerStart = adocCommonMarkerStart + " (trait-list)"
- adocListMarkerEnd = adocCommonMarkerEnd + " (trait-list)"
-)
-
-var (
- tagTraitID = regexp.MustCompile(fmt.Sprintf("%s=([a-z0-9-]+)", regexp.QuoteMeta(tagTrait)))
-)
-
-// traitDocGen produces documentation about traits
-type traitDocGen struct {
- generator.DefaultGen
- arguments *args.GeneratorArgs
- generatedTraitFiles []string
-}
-
-// NewTraitDocGen --
-func NewTraitDocGen(arguments *args.GeneratorArgs) generator.Generator {
- return &traitDocGen{
- DefaultGen: generator.DefaultGen{},
- arguments: arguments,
- }
-}
-
-func (g *traitDocGen) Filename() string {
- return "zz_generated_doc.go"
-}
-
-func (g *traitDocGen) Filter(context *generator.Context, t *types.Type) bool {
- for _, c := range t.CommentLines {
- if strings.Contains(c, tagTrait) {
- return true
- }
- }
- return false
-}
-
-func (g *traitDocGen) GenerateType(context *generator.Context, t *types.Type, out io.Writer) error {
- docDir := g.arguments.CustomArgs.(*CustomArgs).DocDir
- traitPath := g.arguments.CustomArgs.(*CustomArgs).TraitPath
- traitID := getTraitID(t)
- traitFile := traitID + ".adoc"
- filename := path.Join(docDir, traitPath, traitFile)
-
- g.generatedTraitFiles = append(g.generatedTraitFiles, traitFile)
-
- file, content, err := readFile(filename)
- if err != nil {
- return err
- }
- defer file.Close()
-
- writeTitle(traitID, &content)
- writeDescription(t, traitID, &content)
- writeFields(t, traitID, &content)
-
- return writeFile(file, content)
-}
-
-func (g *traitDocGen) Finalize(c *generator.Context, w io.Writer) error {
- if err := g.FinalizeNav(c); err != nil {
- return err
- }
- return g.FinalizeList(c)
-}
-
-func (g *traitDocGen) FinalizeNav(*generator.Context) error {
- docDir := g.arguments.CustomArgs.(*CustomArgs).DocDir
- navPath := g.arguments.CustomArgs.(*CustomArgs).NavPath
- filename := path.Join(docDir, navPath)
-
- file, content, err := readFile(filename)
- if err != nil {
- return err
- }
- defer file.Close()
-
- pre, post := split(content, adocNavMarkerStart, adocNavMarkerEnd)
-
- content = append([]string(nil), pre...)
- content = append(content, adocNavMarkerStart)
- sort.Strings(g.generatedTraitFiles)
- for _, t := range g.generatedTraitFiles {
- name := traitNameFromFile(t)
- content = append(content, "** xref:traits/"+t+"["+name+"]")
- }
- content = append(content, adocNavMarkerEnd)
- content = append(content, post...)
-
- return writeFile(file, content)
-}
-
-func (g *traitDocGen) FinalizeList(*generator.Context) error {
- docDir := g.arguments.CustomArgs.(*CustomArgs).DocDir
- listPath := g.arguments.CustomArgs.(*CustomArgs).ListPath
- filename := path.Join(docDir, listPath)
-
- file, content, err := readFile(filename)
- if err != nil {
- return err
- }
- defer file.Close()
-
- pre, post := split(content, adocListMarkerStart, adocListMarkerEnd)
-
- content = append([]string(nil), pre...)
- content = append(content, adocListMarkerStart)
- sort.Strings(g.generatedTraitFiles)
- for _, t := range g.generatedTraitFiles {
- name := traitNameFromFile(t)
- content = append(content, "* xref:traits/"+t+"["+name+" Trait]")
- }
- content = append(content, adocListMarkerEnd)
- content = append(content, post...)
-
- return writeFile(file, content)
-}
-
-func traitNameFromFile(file string) string {
- name := strings.TrimSuffix(file, ".adoc")
- name = strings.ReplaceAll(name, "trait", "")
- name = strings.ReplaceAll(name, "-", " ")
- name = strings.Trim(name, " ")
- name = strings.Title(name)
- return name
-}
-
-func writeTitle(traitID string, content *[]string) {
- res := append([]string(nil), *content...)
- for _, s := range res {
- if strings.HasPrefix(s, "= ") {
- // Already has a title
- return
- }
- }
- res = append([]string{"= " + strings.Title(strings.ReplaceAll(traitID, "-", " ")) + " Trait"}, res...)
- *content = res
-}
-
-func writeDescription(t *types.Type, traitID string, content *[]string) {
- pre, post := split(*content, adocDescriptionMarkerStart, adocDescriptionMarkerEnd)
- res := append([]string(nil), pre...)
- res = append(res, adocDescriptionMarkerStart)
- res = append(res, filterOutTagsAndComments(t.CommentLines)...)
- profiles := strings.Join(determineProfiles(traitID), ", ")
- res = append(res, "", fmt.Sprintf("This trait is available in the following profiles: **%s**.", profiles))
- if isPlatformTrait(traitID) {
- res = append(res, "", fmt.Sprintf("WARNING: The %s trait is a *platform trait*: disabling it may compromise the platform functionality.", traitID))
- }
- res = append(res, "", adocDescriptionMarkerEnd)
- res = append(res, post...)
- *content = res
-}
-
-func writeFields(t *types.Type, traitID string, content *[]string) {
- pre, post := split(*content, adocConfigurationMarkerStart, adocConfigurationMarkerEnd)
- res := append([]string(nil), pre...)
- res = append(res, adocConfigurationMarkerStart, "== Configuration", "")
- res = append(res, "Trait properties can be specified when running any integration with the CLI:")
- res = append(res, "```")
- if len(t.Members) > 1 {
- res = append(res, fmt.Sprintf("kamel run --trait %s.[key]=[value] --trait %s.[key2]=[value2] integration.groovy", traitID, traitID))
- } else {
- res = append(res, fmt.Sprintf("kamel run --trait %s.[key]=[value] integration.groovy", traitID))
- }
- res = append(res, "```")
- res = append(res, "The following configuration options are available:", "")
- res = append(res, "[cols=\"2,1,5a\"]", "|===")
- res = append(res, "|Property | Type | Description", "")
- writeMembers(t, traitID, &res)
- res = append(res, "|===", "", adocConfigurationMarkerEnd)
- res = append(res, post...)
- *content = res
-}
-
-func writeMembers(t *types.Type, traitID string, content *[]string) {
- res := append([]string(nil), *content...)
- for _, m := range t.Members {
- prop := reflect.StructTag(m.Tags).Get("property")
- if prop != "" {
- if strings.Contains(prop, "squash") {
- writeMembers(m.Type, traitID, &res)
- } else {
- res = append(res, "| "+traitID+"."+prop)
- res = append(res, "| "+strings.TrimPrefix(m.Type.Name.Name, "*"))
- first := true
- for _, l := range filterOutTagsAndComments(m.CommentLines) {
- if first {
- res = append(res, "| "+l)
- first = false
- } else {
- res = append(res, l)
- }
- }
- res = append(res, "")
- }
- }
- }
- *content = res
-}
-
-func getTraitID(t *types.Type) string {
- for _, s := range t.CommentLines {
- if strings.Contains(s, tagTrait) {
- matches := tagTraitID.FindStringSubmatch(s)
- if len(matches) < 2 {
- panic(fmt.Sprintf("unable to extract trait ID from tag line `%s`", s))
- }
- return matches[1]
- }
- }
- panic(fmt.Sprintf("trait ID not found in type %s", t.Name.Name))
-}
-
-func filterOutTagsAndComments(comments []string) []string {
- res := make([]string, 0, len(comments))
- for _, l := range comments {
- if !strings.HasPrefix(strings.TrimLeft(l, " \t"), "+") &&
- !strings.HasPrefix(strings.TrimLeft(l, " \t"), "TODO:") {
- res = append(res, l)
- }
- }
- return res
-}
-
-func split(doc []string, startMarker, endMarker string) (pre []string, post []string) {
- if len(doc) == 0 {
- return nil, nil
- }
- idx := len(doc)
- for i, s := range doc {
- if s == startMarker {
- idx = i
- break
- }
- }
- idy := len(doc)
- for j, s := range doc {
- if j > idx && s == endMarker {
- idy = j
- break
- }
- }
- pre = doc[0:idx]
- if idy < len(doc) {
- post = doc[idy+1:]
- }
- return pre, post
-}
-
-func readFile(filename string) (file *os.File, content []string, err error) {
- if file, err = os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0777); err != nil {
- return file, content, err
- }
-
- bytes, err := ioutil.ReadFile(filename)
- if err != nil {
- return file, content, err
- }
- content = strings.Split(string(bytes), "\n")
- return file, content, nil
-}
-
-func writeFile(file *os.File, content []string) error {
- if err := file.Truncate(0); err != nil {
- return err
- }
- max := 0
- for i, line := range content {
- if line != "" {
- max = i
- }
- }
- for i, line := range content {
- if i <= max {
- if _, err := file.WriteString(line + "\n"); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func isPlatformTrait(traitID string) bool {
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
- catalog := trait.NewCatalog(ctx, nil)
- t := catalog.GetTrait(traitID)
- return t.IsPlatformTrait()
-}
-
-func determineProfiles(traitID string) (profiles []string) {
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
-
- catalog := trait.NewCatalog(ctx, nil)
- for _, p := range v1.AllTraitProfiles {
- traits := catalog.TraitsForProfile(p)
- for _, t := range traits {
- if string(t.ID()) == traitID {
- profiles = append(profiles, string(p))
- }
- }
- }
- return profiles
-}
diff --git a/cmd/util/doc-gen/generators/traitmetadatagen.go b/cmd/util/doc-gen/generators/traitmetadatagen.go
deleted file mode 100644
index ac39845..0000000
--- a/cmd/util/doc-gen/generators/traitmetadatagen.go
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package generators
-
-import (
- "fmt"
- "io"
- "os"
- "path"
- "reflect"
- "strings"
-
- "gopkg.in/yaml.v2"
- "k8s.io/gengo/args"
- "k8s.io/gengo/generator"
- "k8s.io/gengo/types"
-)
-
-// traitMetaDataGen produces YAML documentation about trait descriptions
-type traitMetaDataGen struct {
- generator.DefaultGen
- arguments *args.GeneratorArgs
- Root *traitMetaDataRoot
-}
-
-type traitMetaDataRoot struct {
- Traits []traitMetaData `yaml:"traits"`
-}
-
-type traitMetaData struct {
- Name string `yaml:"name"`
- Platform bool `yaml:"platform"`
- Profiles []string `yaml:"profiles"`
- Description string `yaml:"description"`
- Properties []traitPropertyMetaData `yaml:"properties"`
-}
-
-type traitPropertyMetaData struct {
- Name string `yaml:"name"`
- TypeName string `yaml:"type"`
- Description string `yaml:"description"`
-}
-
-// NewtraitMetaDataGen --
-func NewtraitMetaDataGen(arguments *args.GeneratorArgs) generator.Generator {
- return &traitMetaDataGen{
- DefaultGen: generator.DefaultGen{},
- arguments: arguments,
- Root: &traitMetaDataRoot{},
- }
-}
-
-func (g *traitMetaDataGen) Filename() string {
- return "zz_desc_generated.go"
-}
-
-func (g *traitMetaDataGen) Filter(context *generator.Context, t *types.Type) bool {
- for _, c := range t.CommentLines {
- if strings.Contains(c, tagTrait) {
- return true
- }
- }
- return false
-}
-
-func (g *traitMetaDataGen) GenerateType(context *generator.Context, t *types.Type, out io.Writer) error {
- traitID := g.getTraitID(t)
- td := &traitMetaData{}
- g.buildDescription(t, traitID, td)
- g.buildFields(t, td)
- g.Root.Traits = append(g.Root.Traits, *td)
- return nil
-}
-
-func (g *traitMetaDataGen) Finalize(c *generator.Context, w io.Writer) error {
-
- deployDir := g.arguments.CustomArgs.(*CustomArgs).DeployDir
- traitFile := "traits.yaml"
- filename := path.Join(deployDir, traitFile)
-
- var file *os.File
- var err error
- if file, err = os.OpenFile(filename, os.O_RDWR|os.O_CREATE, 0777); err != nil {
- return err
- }
- if err = file.Truncate(0); err != nil {
- return err
- }
- defer file.Close()
-
- data, err := yaml.Marshal(g.Root)
- if err != nil {
- fmt.Fprintf(file, "error: %v", err)
- }
- fmt.Fprintf(file, "%s", string(data))
- return nil
-}
-
-func (g *traitMetaDataGen) getTraitID(t *types.Type) string {
- for _, s := range t.CommentLines {
- if strings.Contains(s, tagTrait) {
- matches := tagTraitID.FindStringSubmatch(s)
- if len(matches) < 2 {
- panic(fmt.Sprintf("unable to extract trait ID from tag line `%s`", s))
- }
- return matches[1]
- }
- }
- panic(fmt.Sprintf("trait ID not found in type %s", t.Name.Name))
-}
-
-func (g *traitMetaDataGen) buildDescription(t *types.Type, traitID string, td *traitMetaData) {
- var desc = []string(nil)
- desc = append(desc, g.filterOutTagsAndComments(t.CommentLines)...)
- td.Name = traitID
- td.Description = strings.Join(desc, "")
- td.Profiles = determineProfiles(traitID)
- td.Platform = isPlatformTrait(traitID)
-}
-
-func (g *traitMetaDataGen) buildFields(t *types.Type, td *traitMetaData) {
- if len(t.Members) > 1 {
- var res = []string(nil)
- g.buildMembers(t, &res, td)
- }
-}
-
-func (g *traitMetaDataGen) buildMembers(t *types.Type, content *[]string, td *traitMetaData) {
- for _, m := range t.Members {
- res := append([]string(nil), *content...)
- prop := reflect.StructTag(m.Tags).Get("property")
- if prop != "" {
- if strings.Contains(prop, "squash") {
- g.buildMembers(m.Type, &res, td)
- } else {
- pd := traitPropertyMetaData{}
- pd.Name = prop
- pd.TypeName = strings.TrimPrefix(m.Type.Name.Name, "*")
-
- res = append(res, filterOutTagsAndComments(m.CommentLines)...)
- pd.Description = strings.Join(res, "")
- td.Properties = append(td.Properties, pd)
- }
- }
- }
-}
-
-func (g *traitMetaDataGen) filterOutTagsAndComments(comments []string) []string {
- res := make([]string, 0, len(comments))
- for _, l := range comments {
- if !strings.HasPrefix(strings.TrimLeft(l, " \t"), "+") &&
- !strings.HasPrefix(strings.TrimLeft(l, " \t"), "TODO:") {
- res = append(res, l)
- }
- }
- return res
-}
diff --git a/cmd/util/doc-gen/main.go b/cmd/util/doc-gen/main.go
deleted file mode 100644
index 84e7515..0000000
--- a/cmd/util/doc-gen/main.go
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "github.com/apache/camel-k/cmd/util/doc-gen/generators"
- "github.com/spf13/pflag"
- "k8s.io/gengo/args"
-
- _ "github.com/apache/camel-k/addons"
-)
-
-func main() {
- arguments := args.Default()
-
- // Custom args.
- customArgs := &generators.CustomArgs{}
- pflag.CommandLine.StringVar(&customArgs.DocDir, "doc-dir", "./docs", "Root of the document directory.")
- pflag.CommandLine.StringVar(&customArgs.DeployDir, "deploy-dir", "./deploy", "Root of the deploy directory.")
- pflag.CommandLine.StringVar(&customArgs.TraitPath, "traits-path", "modules/ROOT/pages/traits", "Path to the traits directory.")
- pflag.CommandLine.StringVar(&customArgs.NavPath, "nav-path", "modules/ROOT/nav.adoc", "Path to the navigation file.")
- pflag.CommandLine.StringVar(&customArgs.ListPath, "list-path", "modules/ROOT/pages/traits/traits.adoc", "Path to the trait list file.")
- arguments.CustomArgs = customArgs
-
- if err := arguments.Execute(
- generators.NameSystems(),
- generators.DefaultNameSystem(),
- generators.Packages,
- ); err != nil {
- panic(err)
- }
-
-}
diff --git a/cmd/util/license-check/main.go b/cmd/util/license-check/main.go
deleted file mode 100644
index 5b62c49..0000000
--- a/cmd/util/license-check/main.go
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "fmt"
- "io/ioutil"
- "os"
- "strings"
-)
-
-func main() {
-
- if len(os.Args) != 3 {
- fmt.Println(`Use "license-check <file> <license>`)
- os.Exit(1)
- }
-
- fileName := os.Args[1]
- licenseName := os.Args[2]
-
- fileBin, err := ioutil.ReadFile(fileName)
- if err != nil {
- os.Stderr.WriteString(fmt.Sprintf("cannot read file %s: %v\n", fileName, err))
- os.Exit(1)
- }
- file := string(fileBin)
-
- licenseBin, err := ioutil.ReadFile(licenseName)
- if err != nil {
- os.Stderr.WriteString(fmt.Sprintf("cannot read file %s: %v\n", licenseName, err))
- os.Exit(1)
- }
- license := string(licenseBin)
-
- if !strings.Contains(file, license) {
- os.Stderr.WriteString(fmt.Sprintf("file %s does not contain license\n", fileName))
- os.Exit(1)
- }
-
-}
diff --git a/cmd/util/vfs-gen/main.go b/cmd/util/vfs-gen/main.go
deleted file mode 100644
index bed29d4..0000000
--- a/cmd/util/vfs-gen/main.go
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "fmt"
- "io/ioutil"
- "log"
- "net/http"
- "os"
- "path"
- "path/filepath"
- "strings"
- "time"
-
- "github.com/shurcooL/httpfs/filter"
- "github.com/shurcooL/vfsgen"
-)
-
-func main() {
- if len(os.Args) != 2 {
- println("usage: vfs-gen directory")
- os.Exit(1)
- }
-
- dirName := os.Args[1]
- dir, err := os.Stat(dirName)
- if err != nil {
- log.Fatalln(err)
- }
- if !dir.IsDir() {
- fmt.Printf("path %s is not a directory\n", dirName)
- os.Exit(1)
- }
-
- var exclusions []string
- if err := filepath.Walk(dirName, func(resPath string, info os.FileInfo, err error) error {
- if info.IsDir() {
- ignoreFileName := path.Join(resPath, ".vfsignore")
- _, err := os.Stat(ignoreFileName)
- if err == nil {
- rel, err := filepath.Rel(dirName, resPath)
- if err != nil {
- log.Fatalln(err)
- }
- if !strings.HasPrefix(rel, "/") {
- rel = "/" + rel
- }
- exclusions = append(exclusions, rel)
- } else if !os.IsNotExist(err) {
- log.Fatalln(err)
- }
- }
- return nil
- }); err != nil {
- log.Fatalln(err)
- }
-
- var fs http.FileSystem = modTimeFS{
- fs: http.Dir(dirName),
- }
- fs = filter.Skip(fs, filter.FilesWithExtensions(".go"))
- fs = filter.Skip(fs, func(path string, fi os.FileInfo) bool {
- for _, ex := range exclusions {
- if strings.HasPrefix(path, ex) {
- return true
- }
- }
- return false
- })
-
- resourceFile := path.Join(dirName, "resources.go")
- err = vfsgen.Generate(fs, vfsgen.Options{
- Filename: resourceFile,
- PackageName: path.Base(dirName),
- })
- if err != nil {
- log.Fatalln(err)
- }
-
- header := `/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-`
- content, err := ioutil.ReadFile(resourceFile)
- if err != nil {
- log.Fatalln(err)
- }
- var finalContent []byte
- finalContent = append(finalContent, []byte(header)...)
- finalContent = append(finalContent, content...)
- if err := ioutil.WriteFile(resourceFile, finalContent, 0777); err != nil {
- log.Fatalln(err)
- }
-
-}
-
-// modTimeFS wraps http.FileSystem to set mod time to 0 for all files
-type modTimeFS struct {
- fs http.FileSystem
-}
-
-func (fs modTimeFS) Open(name string) (http.File, error) {
- f, err := fs.fs.Open(name)
- if err != nil {
- return nil, err
- }
- return modTimeFile{f}, nil
-}
-
-type modTimeFile struct {
- http.File
-}
-
-func (f modTimeFile) Stat() (os.FileInfo, error) {
- fi, err := f.File.Stat()
- if err != nil {
- return nil, err
- }
- return modTimeFileInfo{fi}, nil
-}
-
-type modTimeFileInfo struct {
- os.FileInfo
-}
-
-func (modTimeFileInfo) ModTime() time.Time {
- return time.Time{}
-}
diff --git a/deploy/addons/master/master-role-binding.tmpl b/deploy/addons/master/master-role-binding.tmpl
deleted file mode 100644
index b6d0bea..0000000
--- a/deploy/addons/master/master-role-binding.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-kind: RoleBinding
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: {{ .Name }}
- namespace: {{ .Namespace }}
- labels:
- app: "camel-k"
-subjects:
- - kind: ServiceAccount
- namespace: {{ .Namespace }}
- name: {{ .ServiceAccount }}
-roleRef:
- kind: Role
- namespace: {{ .Namespace }}
- name: {{ .Name }}
- apiGroup: rbac.authorization.k8s.io
diff --git a/deploy/addons/master/master-role.tmpl b/deploy/addons/master/master-role.tmpl
deleted file mode 100644
index efe939e..0000000
--- a/deploy/addons/master/master-role.tmpl
+++ /dev/null
@@ -1,27 +0,0 @@
-kind: Role
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: {{ .Name }}
- namespace: {{ .Namespace }}
- labels:
- app: "camel-k"
-rules:
-- apiGroups:
- - ""
- resources:
- - configmaps
- verbs:
- - create
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - ""
- resources:
- - pods
- verbs:
- - get
- - list
- - watch
diff --git a/deploy/builder-role-binding.yaml b/deploy/builder-role-binding.yaml
deleted file mode 100644
index 1c860b4..0000000
--- a/deploy/builder-role-binding.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-kind: RoleBinding
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: camel-k-builder
- labels:
- app: "camel-k"
-subjects:
-- kind: ServiceAccount
- name: camel-k-builder
-roleRef:
- kind: Role
- name: camel-k-builder
- apiGroup: rbac.authorization.k8s.io
diff --git a/deploy/builder-role-kubernetes.yaml b/deploy/builder-role-kubernetes.yaml
deleted file mode 100644
index 7a551ca..0000000
--- a/deploy/builder-role-kubernetes.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-kind: Role
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: camel-k-builder
- labels:
- app: "camel-k"
-rules:
-- apiGroups:
- - camel.apache.org
- resources:
- - "*"
- verbs:
- - "*"
-- apiGroups:
- - ""
- resources:
- - pods
- verbs:
- - create
- - delete
- - deletecollection
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - ""
- resources:
- - configmaps
- - secrets
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - ""
- resources:
- - events
- verbs:
- - get
- - list
- - watch
diff --git a/deploy/builder-role-openshift.yaml b/deploy/builder-role-openshift.yaml
deleted file mode 100644
index 7271d04..0000000
--- a/deploy/builder-role-openshift.yaml
+++ /dev/null
@@ -1,104 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-kind: Role
-apiVersion: rbac.authorization.k8s.io/v1beta1
-metadata:
- name: camel-k-builder
- labels:
- app: "camel-k"
-rules:
-- apiGroups:
- - camel.apache.org
- resources:
- - "*"
- verbs:
- - "*"
-- apiGroups:
- - ""
- resources:
- - pods
- verbs:
- - create
- - delete
- - deletecollection
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - ""
- resources:
- - configmaps
- - secrets
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - ""
- resources:
- - events
- verbs:
- - get
- - list
- - watch
-- apiGroups:
- - ""
- - "build.openshift.io"
- resources:
- - buildconfigs
- - buildconfigs/webhooks
- - builds
- verbs:
- - create
- - delete
- - deletecollection
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - ""
- - "image.openshift.io"
- resources:
- - imagestreamimages
- - imagestreammappings
- - imagestreams
- - imagestreams/secrets
- - imagestreamtags
- verbs:
- - create
- - delete
- - deletecollection
- - get
- - list
- - patch
- - update
- - watch
-- apiGroups:
- - ""
- - build.openshift.io
- attributeRestrictions: null
- resources:
- - buildconfigs/instantiate
- - buildconfigs/instantiatebinary
- - builds/clone
- verbs:
- - create
diff --git a/deploy/builder-service-account.yaml b/deploy/builder-service-account.yaml
deleted file mode 100644
index 9952a77..0000000
--- a/deploy/builder-service-account.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: camel-k-builder
- labels:
- app: "camel-k"
diff --git a/deploy/camel-catalog-1.3.0-SNAPSHOT-main.yaml b/deploy/camel-catalog-1.3.0-SNAPSHOT-main.yaml
deleted file mode 100644
index 6e10f19..0000000
--- a/deploy/camel-catalog-1.3.0-SNAPSHOT-main.yaml
+++ /dev/null
@@ -1,3135 +0,0 @@
-# ---------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ---------------------------------------------------------------------------
-
-apiVersion: camel.apache.org/v1
-kind: CamelCatalog
-metadata:
- name: camel-catalog-1.3.0-snapshot-main
- labels:
- app: camel-k
- camel.apache.org/catalog.version: 3.1.0
- camel.apache.org/catalog.loader.version: 3.1.0
- camel.apache.org/runtime.version: 1.3.0-SNAPSHOT
- camel.apache.org/runtime.provider: main
-spec:
- runtime:
- version: 1.3.0-SNAPSHOT
- provider: main
- applicationClass: org.apache.camel.k.main.Application
- metadata:
- camel.version: 3.1.0
- quarkus.version: 1.3.2.Final
- camel-quarkus.version: 1.0.0-M6
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-k-runtime-main
- capabilities:
- cron:
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-k-runtime-cron
- health:
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-k-runtime-health
- platform-http:
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-k-runtime-http
- rest:
- dependencies:
- - groupId: org.apache.camel
- artifactId: camel-rest
- - groupId: org.apache.camel.k
- artifactId: camel-k-runtime-http
- artifacts:
- camel-zipfile:
- groupId: org.apache.camel
- artifactId: camel-zipfile
- dataformats:
- - zipfile
- javaTypes:
- - org.apache.camel.dataformat.zipfile.ZipFileDataFormat
- camel-fop:
- groupId: org.apache.camel
- artifactId: camel-fop
- schemes:
- - id: fop
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.fop.FopComponent
- camel-azure:
- groupId: org.apache.camel
- artifactId: camel-azure
- schemes:
- - id: azure-blob
- http: false
- passive: false
- - id: azure-queue
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.azure.blob.BlobServiceComponent
- - org.apache.camel.component.azure.queue.QueueServiceComponent
- camel-seda:
- groupId: org.apache.camel
- artifactId: camel-seda
- schemes:
- - id: seda
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.seda.SedaComponent
- camel-mina:
- groupId: org.apache.camel
- artifactId: camel-mina
- schemes:
- - id: mina
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mina.MinaComponent
- camel-aws2-mq:
- groupId: org.apache.camel
- artifactId: camel-aws2-mq
- schemes:
- - id: aws2-mq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.mq.MQ2Component
- camel-printer:
- groupId: org.apache.camel
- artifactId: camel-printer
- schemes:
- - id: lpr
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.printer.PrinterComponent
- camel-wordpress:
- groupId: org.apache.camel
- artifactId: camel-wordpress
- schemes:
- - id: wordpress
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.wordpress.WordpressComponent
- camel-websocket:
- groupId: org.apache.camel
- artifactId: camel-websocket
- schemes:
- - id: websocket
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.websocket.WebsocketComponent
- camel-slack:
- groupId: org.apache.camel
- artifactId: camel-slack
- schemes:
- - id: slack
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.slack.SlackComponent
- camel-influxdb:
- groupId: org.apache.camel
- artifactId: camel-influxdb
- schemes:
- - id: influxdb
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.influxdb.InfluxDbComponent
- camel-lumberjack:
- groupId: org.apache.camel
- artifactId: camel-lumberjack
- schemes:
- - id: lumberjack
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.lumberjack.LumberjackComponent
- camel-stax:
- groupId: org.apache.camel
- artifactId: camel-stax
- schemes:
- - id: stax
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.stax.StAXComponent
- camel-sjms2:
- groupId: org.apache.camel
- artifactId: camel-sjms2
- schemes:
- - id: sjms2
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.sjms2.Sjms2Component
- camel-facebook:
- groupId: org.apache.camel
- artifactId: camel-facebook
- schemes:
- - id: facebook
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.facebook.FacebookComponent
- camel-docker:
- groupId: org.apache.camel
- artifactId: camel-docker
- schemes:
- - id: docker
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.docker.DockerComponent
- camel-apns:
- groupId: org.apache.camel
- artifactId: camel-apns
- schemes:
- - id: apns
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.apns.ApnsComponent
- camel-aws2-ses:
- groupId: org.apache.camel
- artifactId: camel-aws2-ses
- schemes:
- - id: aws2-ses
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.ses.Ses2Component
- camel-jaxb:
- groupId: org.apache.camel
- artifactId: camel-jaxb
- dataformats:
- - jaxb
- javaTypes:
- - org.apache.camel.converter.jaxb.JaxbDataFormat
- camel-quartz:
- groupId: org.apache.camel
- artifactId: camel-quartz
- schemes:
- - id: quartz
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.quartz.QuartzComponent
- camel-aws-swf:
- groupId: org.apache.camel
- artifactId: camel-aws-swf
- schemes:
- - id: aws-swf
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.swf.SWFComponent
- camel-ehcache:
- groupId: org.apache.camel
- artifactId: camel-ehcache
- schemes:
- - id: ehcache
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ehcache.EhcacheComponent
- camel-spring-ws:
- groupId: org.apache.camel
- artifactId: camel-spring-ws
- schemes:
- - id: spring-ws
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.spring.ws.SpringWebserviceComponent
- camel-nagios:
- groupId: org.apache.camel
- artifactId: camel-nagios
- schemes:
- - id: nagios
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.nagios.NagiosComponent
- camel-mongodb:
- groupId: org.apache.camel
- artifactId: camel-mongodb
- schemes:
- - id: mongodb
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mongodb.MongoDbComponent
- camel-aws2-iam:
- groupId: org.apache.camel
- artifactId: camel-aws2-iam
- schemes:
- - id: aws2-iam
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.iam.IAM2Component
- camel-aws-eks:
- groupId: org.apache.camel
- artifactId: camel-aws-eks
- schemes:
- - id: aws-eks
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.eks.EKSComponent
- camel-platform-http:
- groupId: org.apache.camel
- artifactId: camel-platform-http
- schemes:
- - id: platform-http
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.platform.http.PlatformHttpComponent
- camel-jetty:
- groupId: org.apache.camel
- artifactId: camel-jetty
- schemes:
- - id: jetty
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.jetty9.JettyHttpComponent9
- camel-lzf:
- groupId: org.apache.camel
- artifactId: camel-lzf
- dataformats:
- - lzf
- javaTypes:
- - org.apache.camel.dataformat.lzf.LZFDataFormat
- camel-aws2-translate:
- groupId: org.apache.camel
- artifactId: camel-aws2-translate
- schemes:
- - id: aws2-translate
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.translate.Translate2Component
- camel-vm:
- groupId: org.apache.camel
- artifactId: camel-vm
- schemes:
- - id: vm
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.vm.VmComponent
- camel-crypto:
- groupId: org.apache.camel
- artifactId: camel-crypto
- schemes:
- - id: crypto
- http: false
- passive: false
- dataformats:
- - crypto
- - pgp
- javaTypes:
- - org.apache.camel.component.crypto.DigitalSignatureComponent
- - org.apache.camel.converter.crypto.CryptoDataFormat
- - org.apache.camel.converter.crypto.PGPDataFormat
- camel-cometd:
- groupId: org.apache.camel
- artifactId: camel-cometd
- schemes:
- - id: cometd
- http: false
- passive: false
- - id: cometds
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.cometd.CometdComponent
- camel-bean-validator:
- groupId: org.apache.camel
- artifactId: camel-bean-validator
- schemes:
- - id: bean-validator
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.bean.validator.BeanValidatorComponent
- camel-http:
- groupId: org.apache.camel
- artifactId: camel-http
- schemes:
- - id: http
- http: false
- passive: false
- - id: https
- http: false
- passive: false
- dependencies:
- - groupId: org.apache.camel
- artifactId: camel-file
- javaTypes:
- - org.apache.camel.component.http.HttpComponent
- camel-tika:
- groupId: org.apache.camel
- artifactId: camel-tika
- schemes:
- - id: tika
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.tika.TikaComponent
- camel-caffeine:
- groupId: org.apache.camel
- artifactId: camel-caffeine
- schemes:
- - id: caffeine-cache
- http: false
- passive: false
- - id: caffeine-loadcache
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.caffeine.cache.CaffeineCacheComponent
- - org.apache.camel.component.caffeine.load.CaffeineLoadCacheComponent
- camel-vertx:
- groupId: org.apache.camel
- artifactId: camel-vertx
- schemes:
- - id: vertx
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.vertx.VertxComponent
- camel-jslt:
- groupId: org.apache.camel
- artifactId: camel-jslt
- schemes:
- - id: jslt
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jslt.JsltComponent
- camel-openstack:
- groupId: org.apache.camel
- artifactId: camel-openstack
- schemes:
- - id: openstack-cinder
- http: false
- passive: false
- - id: openstack-glance
- http: false
- passive: false
- - id: openstack-keystone
- http: false
- passive: false
- - id: openstack-neutron
- http: false
- passive: false
- - id: openstack-nova
- http: false
- passive: false
- - id: openstack-swift
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.openstack.cinder.CinderComponent
- - org.apache.camel.component.openstack.glance.GlanceComponent
- - org.apache.camel.component.openstack.keystone.KeystoneComponent
- - org.apache.camel.component.openstack.neutron.NeutronComponent
- - org.apache.camel.component.openstack.nova.NovaComponent
- - org.apache.camel.component.openstack.swift.SwiftComponent
- camel-google-calendar:
- groupId: org.apache.camel
- artifactId: camel-google-calendar
- schemes:
- - id: google-calendar
- http: false
- passive: false
- - id: google-calendar-stream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.calendar.GoogleCalendarComponent
- - org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent
- camel-browse:
- groupId: org.apache.camel
- artifactId: camel-browse
- schemes:
- - id: browse
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.browse.BrowseComponent
- camel-ldif:
- groupId: org.apache.camel
- artifactId: camel-ldif
- schemes:
- - id: ldif
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ldif.LdifComponent
- camel-google-sheets:
- groupId: org.apache.camel
- artifactId: camel-google-sheets
- schemes:
- - id: google-sheets
- http: false
- passive: false
- - id: google-sheets-stream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.sheets.GoogleSheetsComponent
- - org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamComponent
- camel-sap-netweaver:
- groupId: org.apache.camel
- artifactId: camel-sap-netweaver
- schemes:
- - id: sap-netweaver
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.sap.netweaver.NetWeaverComponent
- camel-ganglia:
- groupId: org.apache.camel
- artifactId: camel-ganglia
- schemes:
- - id: ganglia
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ganglia.GangliaComponent
- camel-schematron:
- groupId: org.apache.camel
- artifactId: camel-schematron
- schemes:
- - id: schematron
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.schematron.SchematronComponent
- camel-yammer:
- groupId: org.apache.camel
- artifactId: camel-yammer
- schemes:
- - id: yammer
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.yammer.YammerComponent
- camel-direct:
- groupId: org.apache.camel
- artifactId: camel-direct
- schemes:
- - id: direct
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.direct.DirectComponent
- camel-chunk:
- groupId: org.apache.camel
- artifactId: camel-chunk
- schemes:
- - id: chunk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.chunk.ChunkComponent
- camel-weka:
- groupId: org.apache.camel
- artifactId: camel-weka
- schemes:
- - id: weka
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.weka.WekaComponent
- camel-jacksonxml:
- groupId: org.apache.camel
- artifactId: camel-jacksonxml
- dataformats:
- - jacksonxml
- javaTypes:
- - org.apache.camel.component.jacksonxml.JacksonXMLDataFormat
- camel-spring-batch:
- groupId: org.apache.camel
- artifactId: camel-spring-batch
- schemes:
- - id: spring-batch
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.spring.batch.SpringBatchComponent
- camel-stub:
- groupId: org.apache.camel
- artifactId: camel-stub
- schemes:
- - id: stub
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.stub.StubComponent
- camel-drill:
- groupId: org.apache.camel
- artifactId: camel-drill
- schemes:
- - id: drill
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.drill.DrillComponent
- camel-zookeeper:
- groupId: org.apache.camel
- artifactId: camel-zookeeper
- schemes:
- - id: zookeeper
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.zookeeper.ZooKeeperComponent
- camel-aws-cw:
- groupId: org.apache.camel
- artifactId: camel-aws-cw
- schemes:
- - id: aws-cw
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.cw.CwComponent
- camel-xstream:
- groupId: org.apache.camel
- artifactId: camel-xstream
- dataformats:
- - json-xstream
- - xstream
- javaTypes:
- - org.apache.camel.dataformat.xstream.JsonDataFormat
- - org.apache.camel.dataformat.xstream.XStreamDataFormat
- camel-weather:
- groupId: org.apache.camel
- artifactId: camel-weather
- schemes:
- - id: weather
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.weather.WeatherComponent
- camel-fastjson:
- groupId: org.apache.camel
- artifactId: camel-fastjson
- dataformats:
- - json-fastjson
- javaTypes:
- - org.apache.camel.component.fastjson.FastjsonDataFormat
- camel-pdf:
- groupId: org.apache.camel
- artifactId: camel-pdf
- schemes:
- - id: pdf
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.pdf.PdfComponent
- camel-spring-integration:
- groupId: org.apache.camel
- artifactId: camel-spring-integration
- schemes:
- - id: spring-integration
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.spring.integration.SpringIntegrationComponent
- camel-paho:
- groupId: org.apache.camel
- artifactId: camel-paho
- schemes:
- - id: paho
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.paho.PahoComponent
- camel-netty:
- groupId: org.apache.camel
- artifactId: camel-netty
- schemes:
- - id: netty
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.netty.NettyComponent
- camel-mustache:
- groupId: org.apache.camel
- artifactId: camel-mustache
- schemes:
- - id: mustache
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mustache.MustacheComponent
- camel-sip:
- groupId: org.apache.camel
- artifactId: camel-sip
- schemes:
- - id: sip
- http: false
- passive: false
- - id: sips
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.sip.SipComponent
- camel-hbase:
- groupId: org.apache.camel
- artifactId: camel-hbase
- schemes:
- - id: hbase
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.hbase.HBaseComponent
- camel-jackson:
- groupId: org.apache.camel
- artifactId: camel-jackson
- dataformats:
- - json-jackson
- javaTypes:
- - org.apache.camel.component.jackson.JacksonDataFormat
- camel-kafka:
- groupId: org.apache.camel
- artifactId: camel-kafka
- schemes:
- - id: kafka
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.kafka.KafkaComponent
- camel-twitter:
- groupId: org.apache.camel
- artifactId: camel-twitter
- schemes:
- - id: twitter-directmessage
- http: false
- passive: false
- - id: twitter-search
- http: false
- passive: false
- - id: twitter-timeline
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.twitter.directmessage.TwitterDirectMessageComponent
- - org.apache.camel.component.twitter.search.TwitterSearchComponent
- - org.apache.camel.component.twitter.timeline.TwitterTimelineComponent
- camel-salesforce:
- groupId: org.apache.camel
- artifactId: camel-salesforce
- schemes:
- - id: salesforce
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.salesforce.SalesforceComponent
- camel-xj:
- groupId: org.apache.camel
- artifactId: camel-xj
- schemes:
- - id: xj
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.xj.XJComponent
- camel-aws2-eks:
- groupId: org.apache.camel
- artifactId: camel-aws2-eks
- schemes:
- - id: aws2-eks
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.eks.EKS2Component
- camel-servicenow:
- groupId: org.apache.camel
- artifactId: camel-servicenow
- schemes:
- - id: servicenow
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.servicenow.ServiceNowComponent
- camel-ical:
- groupId: org.apache.camel
- artifactId: camel-ical
- dataformats:
- - ical
- javaTypes:
- - org.apache.camel.component.ical.ICalDataFormat
- camel-corda:
- groupId: org.apache.camel
- artifactId: camel-corda
- schemes:
- - id: corda
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.corda.CordaComponent
- camel-grape:
- groupId: org.apache.camel
- artifactId: camel-grape
- schemes:
- - id: grape
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.grape.GrapeComponent
- camel-univocity-parsers:
- groupId: org.apache.camel
- artifactId: camel-univocity-parsers
- dataformats:
- - univocity-csv
- - univocity-fixed
- - univocity-tsv
- javaTypes:
- - org.apache.camel.dataformat.univocity.UniVocityCsvDataFormat
- - org.apache.camel.dataformat.univocity.UniVocityFixedWidthDataFormat
- - org.apache.camel.dataformat.univocity.UniVocityTsvDataFormat
- camel-hdfs:
- groupId: org.apache.camel
- artifactId: camel-hdfs
- schemes:
- - id: hdfs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.hdfs.HdfsComponent
- camel-jclouds:
- groupId: org.apache.camel
- artifactId: camel-jclouds
- schemes:
- - id: jclouds
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jclouds.JcloudsComponent
- camel-quickfix:
- groupId: org.apache.camel
- artifactId: camel-quickfix
- schemes:
- - id: quickfix
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.quickfixj.QuickfixjComponent
- camel-nsq:
- groupId: org.apache.camel
- artifactId: camel-nsq
- schemes:
- - id: nsq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.nsq.NsqComponent
- camel-hipchat:
- groupId: org.apache.camel
- artifactId: camel-hipchat
- schemes:
- - id: hipchat
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.hipchat.HipchatComponent
- camel-hazelcast:
- groupId: org.apache.camel
- artifactId: camel-hazelcast
- schemes:
- - id: hazelcast-atomicvalue
- http: false
- passive: false
- - id: hazelcast-instance
- http: false
- passive: false
- - id: hazelcast-list
- http: false
- passive: false
- - id: hazelcast-map
- http: false
- passive: false
- - id: hazelcast-multimap
- http: false
- passive: false
- - id: hazelcast-queue
- http: false
- passive: false
- - id: hazelcast-replicatedmap
- http: false
- passive: false
- - id: hazelcast-ringbuffer
- http: false
- passive: false
- - id: hazelcast-seda
- http: false
- passive: false
- - id: hazelcast-set
- http: false
- passive: false
- - id: hazelcast-topic
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.hazelcast.atomicnumber.HazelcastAtomicnumberComponent
- - org.apache.camel.component.hazelcast.instance.HazelcastInstanceComponent
- - org.apache.camel.component.hazelcast.list.HazelcastListComponent
- - org.apache.camel.component.hazelcast.map.HazelcastMapComponent
- - org.apache.camel.component.hazelcast.multimap.HazelcastMultimapComponent
- - org.apache.camel.component.hazelcast.queue.HazelcastQueueComponent
- - org.apache.camel.component.hazelcast.replicatedmap.HazelcastReplicatedmapComponent
- - org.apache.camel.component.hazelcast.ringbuffer.HazelcastRingbufferComponent
- - org.apache.camel.component.hazelcast.seda.HazelcastSedaComponent
- - org.apache.camel.component.hazelcast.set.HazelcastSetComponent
- - org.apache.camel.component.hazelcast.topic.HazelcastTopicComponent
- camel-barcode:
- groupId: org.apache.camel
- artifactId: camel-barcode
- dataformats:
- - barcode
- javaTypes:
- - org.apache.camel.dataformat.barcode.BarcodeDataFormat
- camel-aws-translate:
- groupId: org.apache.camel
- artifactId: camel-aws-translate
- schemes:
- - id: aws-translate
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.translate.TranslateComponent
- camel-atmos:
- groupId: org.apache.camel
- artifactId: camel-atmos
- schemes:
- - id: atmos
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.atmos.AtmosComponent
- camel-language:
- groupId: org.apache.camel
- artifactId: camel-language
- schemes:
- - id: language
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.language.LanguageComponent
- camel-infinispan:
- groupId: org.apache.camel
- artifactId: camel-infinispan
- schemes:
- - id: infinispan
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.infinispan.InfinispanComponent
- camel-aws2-ddb:
- groupId: org.apache.camel
- artifactId: camel-aws2-ddb
- schemes:
- - id: aws2-ddb
- http: false
- passive: false
- - id: aws2-ddbstream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.ddb.Ddb2Component
- - org.apache.camel.component.aws2.ddbstream.Ddb2StreamComponent
- camel-google-pubsub:
- groupId: org.apache.camel
- artifactId: camel-google-pubsub
- schemes:
- - id: google-pubsub
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.pubsub.GooglePubsubComponent
- camel-base64:
- groupId: org.apache.camel
- artifactId: camel-base64
- dataformats:
- - base64
- javaTypes:
- - org.apache.camel.dataformat.base64.Base64DataFormat
- camel-lucene:
- groupId: org.apache.camel
- artifactId: camel-lucene
- schemes:
- - id: lucene
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.lucene.LuceneComponent
- camel-bean:
- groupId: org.apache.camel
- artifactId: camel-bean
- schemes:
- - id: bean
- http: false
- passive: true
- - id: class
- http: false
- passive: true
- languages:
- - bean
- javaTypes:
- - org.apache.camel.component.bean.BeanComponent
- - org.apache.camel.component.beanclass.ClassComponent
- - org.apache.camel.language.bean.BeanLanguage
- camel-stream:
- groupId: org.apache.camel
- artifactId: camel-stream
- schemes:
- - id: stream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.stream.StreamComponent
- camel-solr:
- groupId: org.apache.camel
- artifactId: camel-solr
- schemes:
- - id: solr
- http: false
- passive: false
- - id: solrs
- http: false
- passive: false
- - id: solrCloud
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.solr.SolrComponent
- camel-log:
- groupId: org.apache.camel
- artifactId: camel-log
- schemes:
- - id: log
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.log.LogComponent
- camel-iec60870:
- groupId: org.apache.camel
- artifactId: camel-iec60870
- schemes:
- - id: iec60870-client
- http: false
- passive: false
- - id: iec60870-server
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.iec60870.client.ClientComponent
- - org.apache.camel.component.iec60870.server.ServerComponent
- camel-atmosphere-websocket:
- groupId: org.apache.camel
- artifactId: camel-atmosphere-websocket
- schemes:
- - id: atmosphere-websocket
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.atmosphere.websocket.WebsocketComponent
- camel-debezium-mongodb:
- groupId: org.apache.camel
- artifactId: camel-debezium-mongodb
- schemes:
- - id: debezium-mongodb
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.debezium.DebeziumMongodbComponent
- camel-spring-ldap:
- groupId: org.apache.camel
- artifactId: camel-spring-ldap
- schemes:
- - id: spring-ldap
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.springldap.SpringLdapComponent
- camel-dns:
- groupId: org.apache.camel
- artifactId: camel-dns
- schemes:
- - id: dns
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.dns.DnsComponent
- camel-aws2-sqs:
- groupId: org.apache.camel
- artifactId: camel-aws2-sqs
- schemes:
- - id: aws2-sqs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.sqs.Sqs2Component
- camel-reactive-streams:
- groupId: org.apache.camel
- artifactId: camel-reactive-streams
- schemes:
- - id: reactive-streams
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.reactive.streams.ReactiveStreamsComponent
- camel-graphql:
- groupId: org.apache.camel
- artifactId: camel-graphql
- schemes:
- - id: graphql
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.graphql.GraphqlComponent
- camel-coap:
- groupId: org.apache.camel
- artifactId: camel-coap
- schemes:
- - id: coap
- http: false
- passive: false
- - id: coaps
- http: false
- passive: false
- - id: coap+tcp
- http: false
- passive: false
- - id: coaps+tcp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.coap.CoAPComponent
- camel-dataset:
- groupId: org.apache.camel
- artifactId: camel-dataset
- schemes:
- - id: dataset
- http: false
- passive: true
- - id: dataset-test
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.dataset.DataSetComponent
- - org.apache.camel.component.dataset.DataSetTestComponent
- camel-elytron:
- groupId: org.apache.camel
- artifactId: camel-elytron
- schemes:
- - id: elytron
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.elytron.ElytronComponent
- camel-jsonapi:
- groupId: org.apache.camel
- artifactId: camel-jsonapi
- dataformats:
- - jsonApi
- javaTypes:
- - org.apache.camel.component.jsonapi.JsonApiDataFormat
- camel-zendesk:
- groupId: org.apache.camel
- artifactId: camel-zendesk
- schemes:
- - id: zendesk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.zendesk.ZendeskComponent
- camel-jdbc:
- groupId: org.apache.camel
- artifactId: camel-jdbc
- schemes:
- - id: jdbc
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jdbc.JdbcComponent
- camel-spark:
- groupId: org.apache.camel
- artifactId: camel-spark
- schemes:
- - id: spark
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.spark.SparkComponent
- camel-ahc:
- groupId: org.apache.camel
- artifactId: camel-ahc
- schemes:
- - id: ahc
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.ahc.AhcComponent
- camel-controlbus:
- groupId: org.apache.camel
- artifactId: camel-controlbus
- schemes:
- - id: controlbus
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.controlbus.ControlBusComponent
- camel-disruptor:
- groupId: org.apache.camel
- artifactId: camel-disruptor
- schemes:
- - id: disruptor
- http: false
- passive: false
- - id: disruptor-vm
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.disruptor.DisruptorComponent
- - org.apache.camel.component.disruptor.vm.DisruptorVmComponent
- camel-dozer:
- groupId: org.apache.camel
- artifactId: camel-dozer
- schemes:
- - id: dozer
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.dozer.DozerComponent
- camel-beanio:
- groupId: org.apache.camel
- artifactId: camel-beanio
- dataformats:
- - beanio
- javaTypes:
- - org.apache.camel.dataformat.beanio.BeanIODataFormat
- camel-bindy:
- groupId: org.apache.camel
- artifactId: camel-bindy
- dataformats:
- - bindy-csv
- - bindy-fixed
- - bindy-kvp
- javaTypes:
- - org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat
- - org.apache.camel.dataformat.bindy.fixed.BindyFixedLengthDataFormat
- - org.apache.camel.dataformat.bindy.kvp.BindyKeyValuePairDataFormat
- camel-guava-eventbus:
- groupId: org.apache.camel
- artifactId: camel-guava-eventbus
- schemes:
- - id: guava-eventbus
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.guava.eventbus.GuavaEventBusComponent
- camel-msv:
- groupId: org.apache.camel
- artifactId: camel-msv
- schemes:
- - id: msv
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.validator.msv.MsvComponent
- camel-jms:
- groupId: org.apache.camel
- artifactId: camel-jms
- schemes:
- - id: jms
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jms.JmsComponent
- camel-file-watch:
- groupId: org.apache.camel
- artifactId: camel-file-watch
- schemes:
- - id: file-watch
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.file.watch.FileWatchComponent
- camel-aws-sdb:
- groupId: org.apache.camel
- artifactId: camel-aws-sdb
- schemes:
- - id: aws-sdb
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.sdb.SdbComponent
- camel-file:
- groupId: org.apache.camel
- artifactId: camel-file
- schemes:
- - id: file
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.file.FileComponent
- camel-gora:
- groupId: org.apache.camel
- artifactId: camel-gora
- schemes:
- - id: gora
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.gora.GoraComponent
- camel-jmx:
- groupId: org.apache.camel
- artifactId: camel-jmx
- schemes:
- - id: jmx
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jmx.JMXComponent
- camel-timer:
- groupId: org.apache.camel
- artifactId: camel-timer
- schemes:
- - id: timer
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.timer.TimerComponent
- camel-jcache:
- groupId: org.apache.camel
- artifactId: camel-jcache
- schemes:
- - id: jcache
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jcache.JCacheComponent
- camel-freemarker:
- groupId: org.apache.camel
- artifactId: camel-freemarker
- schemes:
- - id: freemarker
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.freemarker.FreemarkerComponent
- camel-ironmq:
- groupId: org.apache.camel
- artifactId: camel-ironmq
- schemes:
- - id: ironmq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ironmq.IronMQComponent
- camel-fhir:
- groupId: org.apache.camel
- artifactId: camel-fhir
- schemes:
- - id: fhir
- http: false
- passive: false
- dataformats:
- - fhirJson
- - fhirXml
- javaTypes:
- - org.apache.camel.component.fhir.FhirComponent
- - org.apache.camel.component.fhir.FhirJsonDataFormat
- - org.apache.camel.component.fhir.FhirXmlDataFormat
- camel-saxon:
- groupId: org.apache.camel
- artifactId: camel-saxon
- schemes:
- - id: xquery
- http: false
- passive: false
- languages:
- - xquery
- javaTypes:
- - org.apache.camel.component.xquery.XQueryComponent
- - org.apache.camel.language.xquery.XQueryLanguage
- camel-rest-openapi:
- groupId: org.apache.camel
- artifactId: camel-rest-openapi
- schemes:
- - id: rest-openapi
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.rest.openapi.RestOpenApiComponent
- camel-jsonpath:
- groupId: org.apache.camel
- artifactId: camel-jsonpath
- languages:
- - jsonpath
- javaTypes:
- - org.apache.camel.jsonpath.JsonPathLanguage
- camel-spark-rest:
- groupId: org.apache.camel
- artifactId: camel-spark-rest
- schemes:
- - id: spark-rest
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.sparkrest.SparkComponent
- camel-jt400:
- groupId: org.apache.camel
- artifactId: camel-jt400
- schemes:
- - id: jt400
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jt400.Jt400Component
- camel-rabbitmq:
- groupId: org.apache.camel
- artifactId: camel-rabbitmq
- schemes:
- - id: rabbitmq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.rabbitmq.RabbitMQComponent
- camel-jbpm:
- groupId: org.apache.camel
- artifactId: camel-jbpm
- schemes:
- - id: jbpm
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jbpm.JBPMComponent
- camel-jing:
- groupId: org.apache.camel
- artifactId: camel-jing
- schemes:
- - id: jing
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.validator.jing.JingComponent
- camel-aws-iam:
- groupId: org.apache.camel
- artifactId: camel-aws-iam
- schemes:
- - id: aws-iam
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.iam.IAMComponent
- camel-snmp:
- groupId: org.apache.camel
- artifactId: camel-snmp
- schemes:
- - id: snmp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.snmp.SnmpComponent
- camel-web3j:
- groupId: org.apache.camel
- artifactId: camel-web3j
- schemes:
- - id: web3j
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.web3j.Web3jComponent
- camel-atom:
- groupId: org.apache.camel
- artifactId: camel-atom
- schemes:
- - id: atom
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.atom.AtomComponent
- camel-tagsoup:
- groupId: org.apache.camel
- artifactId: camel-tagsoup
- dataformats:
- - tidyMarkup
- javaTypes:
- - org.apache.camel.dataformat.tagsoup.TidyMarkupDataFormat
- camel-etcd:
- groupId: org.apache.camel
- artifactId: camel-etcd
- schemes:
- - id: etcd-keys
- http: false
- passive: false
- - id: etcd-stats
- http: false
- passive: false
- - id: etcd-watch
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.etcd.EtcdKeysComponent
- - org.apache.camel.component.etcd.EtcdStatsComponent
- - org.apache.camel.component.etcd.EtcdWatchComponent
- camel-ftp:
- groupId: org.apache.camel
- artifactId: camel-ftp
- schemes:
- - id: ftp
- http: false
- passive: false
- - id: ftps
- http: false
- passive: false
- - id: sftp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.file.remote.FtpComponent
- - org.apache.camel.component.file.remote.FtpsComponent
- - org.apache.camel.component.file.remote.SftpComponent
- camel-aws-ses:
- groupId: org.apache.camel
- artifactId: camel-aws-ses
- schemes:
- - id: aws-ses
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.ses.SesComponent
- camel-jgroups:
- groupId: org.apache.camel
- artifactId: camel-jgroups
- schemes:
- - id: jgroups
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jgroups.JGroupsComponent
- camel-master:
- groupId: org.apache.camel
- artifactId: camel-master
- schemes:
- - id: master
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.master.MasterComponent
- camel-eventadmin:
- groupId: org.apache.camel
- artifactId: camel-eventadmin
- schemes:
- - id: eventadmin
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.eventadmin.EventAdminComponent
- camel-optaplanner:
- groupId: org.apache.camel
- artifactId: camel-optaplanner
- schemes:
- - id: optaplanner
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.optaplanner.OptaPlannerComponent
- camel-amqp:
- groupId: org.apache.camel
- artifactId: camel-amqp
- schemes:
- - id: amqp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.amqp.AMQPComponent
- camel-aws2-sns:
- groupId: org.apache.camel
- artifactId: camel-aws2-sns
- schemes:
- - id: aws2-sns
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.sns.Sns2Component
- camel-github:
- groupId: org.apache.camel
- artifactId: camel-github
- schemes:
- - id: github
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.github.GitHubComponent
- camel-atomix:
- groupId: org.apache.camel
- artifactId: camel-atomix
- schemes:
- - id: atomix-map
- http: false
- passive: false
- - id: atomix-messaging
- http: false
- passive: false
- - id: atomix-multimap
- http: false
- passive: false
- - id: atomix-queue
- http: false
- passive: false
- - id: atomix-set
- http: false
- passive: false
- - id: atomix-value
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.atomix.client.map.AtomixMapComponent
- - org.apache.camel.component.atomix.client.messaging.AtomixMessagingComponent
- - org.apache.camel.component.atomix.client.multimap.AtomixMultiMapComponent
- - org.apache.camel.component.atomix.client.queue.AtomixQueueComponent
- - org.apache.camel.component.atomix.client.set.AtomixSetComponent
- - org.apache.camel.component.atomix.client.value.AtomixValueComponent
- camel-box:
- groupId: org.apache.camel
- artifactId: camel-box
- schemes:
- - id: box
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.box.BoxComponent
- camel-sql:
- groupId: org.apache.camel
- artifactId: camel-sql
- schemes:
- - id: sql
- http: false
- passive: false
- - id: sql-stored
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.sql.SqlComponent
- - org.apache.camel.component.sql.stored.SqlStoredComponent
- camel-flatpack:
- groupId: org.apache.camel
- artifactId: camel-flatpack
- schemes:
- - id: flatpack
- http: false
- passive: false
- dataformats:
- - flatpack
- javaTypes:
- - org.apache.camel.component.flatpack.FlatpackComponent
- - org.apache.camel.dataformat.flatpack.FlatpackDataFormat
- camel-git:
- groupId: org.apache.camel
- artifactId: camel-git
- schemes:
- - id: git
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.git.GitComponent
- camel-chatscript:
- groupId: org.apache.camel
- artifactId: camel-chatscript
- schemes:
- - id: chatscript
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.chatscript.ChatScriptComponent
- camel-telegram:
- groupId: org.apache.camel
- artifactId: camel-telegram
- schemes:
- - id: telegram
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.telegram.TelegramComponent
- camel-asn1:
- groupId: org.apache.camel
- artifactId: camel-asn1
- dataformats:
- - asn1
- javaTypes:
- - org.apache.camel.dataformat.asn1.ASN1DataFormat
- camel-nitrite:
- groupId: org.apache.camel
- artifactId: camel-nitrite
- schemes:
- - id: nitrite
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.nitrite.NitriteComponent
- camel-aws-sns:
- groupId: org.apache.camel
- artifactId: camel-aws-sns
- schemes:
- - id: aws-sns
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.sns.SnsComponent
- camel-avro:
- groupId: org.apache.camel
- artifactId: camel-avro
- schemes:
- - id: avro
- http: false
- passive: false
- dataformats:
- - avro
- javaTypes:
- - org.apache.camel.component.avro.AvroComponent
- - org.apache.camel.dataformat.avro.AvroDataFormat
- camel-mllp:
- groupId: org.apache.camel
- artifactId: camel-mllp
- schemes:
- - id: mllp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mllp.MllpComponent
- camel-pg-replication-slot:
- groupId: org.apache.camel
- artifactId: camel-pg-replication-slot
- schemes:
- - id: pg-replication-slot
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.pg.replication.slot.PgReplicationSlotComponent
- camel-elsql:
- groupId: org.apache.camel
- artifactId: camel-elsql
- schemes:
- - id: elsql
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.elsql.ElsqlComponent
- camel-aws-msk:
- groupId: org.apache.camel
- artifactId: camel-aws-msk
- schemes:
- - id: aws-msk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.msk.MSKComponent
- camel-stringtemplate:
- groupId: org.apache.camel
- artifactId: camel-stringtemplate
- schemes:
- - id: string-template
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.stringtemplate.StringTemplateComponent
- camel-debezium-mysql:
- groupId: org.apache.camel
- artifactId: camel-debezium-mysql
- schemes:
- - id: debezium-mysql
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.debezium.DebeziumMySqlComponent
- camel-servlet:
- groupId: org.apache.camel
- artifactId: camel-servlet
- schemes:
- - id: servlet
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.servlet.ServletComponent
- camel-spring-redis:
- groupId: org.apache.camel
- artifactId: camel-spring-redis
- schemes:
- - id: spring-redis
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.redis.RedisComponent
- camel-soroush:
- groupId: org.apache.camel
- artifactId: camel-soroush
- schemes:
- - id: soroush
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.soroushbot.component.SoroushBotComponent
- camel-jsch:
- groupId: org.apache.camel
- artifactId: camel-jsch
- schemes:
- - id: scp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.scp.ScpComponent
- camel-kubernetes:
- groupId: org.apache.camel
- artifactId: camel-kubernetes
- schemes:
- - id: kubernetes-config-maps
- http: false
- passive: false
- - id: kubernetes-deployments
- http: false
- passive: false
- - id: kubernetes-hpa
- http: false
- passive: false
- - id: kubernetes-job
- http: false
- passive: false
- - id: kubernetes-namespaces
- http: false
- passive: false
- - id: kubernetes-nodes
- http: false
- passive: false
- - id: kubernetes-persistent-volumes
- http: false
- passive: false
- - id: kubernetes-persistent-volumes-claims
- http: false
- passive: false
- - id: kubernetes-pods
- http: false
- passive: false
- - id: kubernetes-replication-controllers
- http: false
- passive: false
- - id: kubernetes-resources-quota
- http: false
- passive: false
- - id: kubernetes-secrets
- http: false
- passive: false
- - id: kubernetes-service-accounts
- http: false
- passive: false
- - id: kubernetes-services
- http: false
- passive: false
- - id: openshift-build-configs
- http: false
- passive: false
- - id: openshift-builds
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.kubernetes.config_maps.KubernetesConfigMapsComponent
- - org.apache.camel.component.kubernetes.deployments.KubernetesDeploymentsComponent
- - org.apache.camel.component.kubernetes.hpa.KubernetesHPAComponent
- - org.apache.camel.component.kubernetes.job.KubernetesJobComponent
- - org.apache.camel.component.kubernetes.namespaces.KubernetesNamespacesComponent
- - org.apache.camel.component.kubernetes.nodes.KubernetesNodesComponent
- - org.apache.camel.component.kubernetes.persistent_volumes.KubernetesPersistentVolumesComponent
- - org.apache.camel.component.kubernetes.persistent_volumes_claims.KubernetesPersistentVolumesClaimsComponent
- - org.apache.camel.component.kubernetes.pods.KubernetesPodsComponent
- - org.apache.camel.component.kubernetes.replication_controllers.KubernetesReplicationControllersComponent
- - org.apache.camel.component.kubernetes.resources_quota.KubernetesResourcesQuotaComponent
- - org.apache.camel.component.kubernetes.secrets.KubernetesSecretsComponent
- - org.apache.camel.component.kubernetes.service_accounts.KubernetesServiceAccountsComponent
- - org.apache.camel.component.kubernetes.services.KubernetesServicesComponent
- - org.apache.camel.component.openshift.build_configs.OpenshiftBuildConfigsComponent
- - org.apache.camel.component.openshift.builds.OpenshiftBuildsComponent
- camel-aws2-ec2:
- groupId: org.apache.camel
- artifactId: camel-aws2-ec2
- schemes:
- - id: aws2-ec2
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.ec2.AWS2EC2Component
- camel-digitalocean:
- groupId: org.apache.camel
- artifactId: camel-digitalocean
- schemes:
- - id: digitalocean
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.digitalocean.DigitalOceanComponent
- camel-aws2-kms:
- groupId: org.apache.camel
- artifactId: camel-aws2-kms
- schemes:
- - id: aws2-kms
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.kms.KMS2Component
- camel-google-bigquery:
- groupId: org.apache.camel
- artifactId: camel-google-bigquery
- schemes:
- - id: google-bigquery
- http: false
- passive: false
- - id: google-bigquery-sql
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.bigquery.GoogleBigQueryComponent
- - org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent
- camel-consul:
- groupId: org.apache.camel
- artifactId: camel-consul
- schemes:
- - id: consul
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.consul.ConsulComponent
- camel-nats:
- groupId: org.apache.camel
- artifactId: camel-nats
- schemes:
- - id: nats
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.nats.NatsComponent
- camel-debezium-postgres:
- groupId: org.apache.camel
- artifactId: camel-debezium-postgres
- schemes:
- - id: debezium-postgres
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.debezium.DebeziumPostgresComponent
- camel-hl7:
- groupId: org.apache.camel
- artifactId: camel-hl7
- languages:
- - hl7terser
- dataformats:
- - hl7
- javaTypes:
- - org.apache.camel.component.hl7.Hl7TerserLanguage
- - org.apache.camel.component.hl7.HL7DataFormat
- camel-aws-ecs:
- groupId: org.apache.camel
- artifactId: camel-aws-ecs
- schemes:
- - id: aws-ecs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.ecs.ECSComponent
- camel-zip-deflater:
- groupId: org.apache.camel
- artifactId: camel-zip-deflater
- dataformats:
- - gzipdeflater
- - zipdeflater
- javaTypes:
- - org.apache.camel.dataformat.deflater.GzipDeflaterDataFormat
- - org.apache.camel.dataformat.deflater.ZipDeflaterDataFormat
- camel-kudu:
- groupId: org.apache.camel
- artifactId: camel-kudu
- schemes:
- - id: kudu
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.kudu.KuduComponent
- camel-jgroups-raft:
- groupId: org.apache.camel
- artifactId: camel-jgroups-raft
- schemes:
- - id: jgroups-raft
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jgroups.raft.JGroupsRaftComponent
- camel-cmis:
- groupId: org.apache.camel
- artifactId: camel-cmis
- schemes:
- - id: cmis
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.cmis.CMISComponent
- camel-beanstalk:
- groupId: org.apache.camel
- artifactId: camel-beanstalk
- schemes:
- - id: beanstalk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.beanstalk.BeanstalkComponent
- camel-aws-mq:
- groupId: org.apache.camel
- artifactId: camel-aws-mq
- schemes:
- - id: aws-mq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.mq.MQComponent
- camel-mongodb-gridfs:
- groupId: org.apache.camel
- artifactId: camel-mongodb-gridfs
- schemes:
- - id: mongodb-gridfs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mongodb.gridfs.GridFsComponent
- camel-undertow:
- groupId: org.apache.camel
- artifactId: camel-undertow
- schemes:
- - id: undertow
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.undertow.UndertowComponent
- camel-robotframework:
- groupId: org.apache.camel
- artifactId: camel-robotframework
- schemes:
- - id: robotframework
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.robotframework.RobotFrameworkComponent
- camel-xpath:
- groupId: org.apache.camel
- artifactId: camel-xpath
- languages:
- - xpath
- javaTypes:
- - org.apache.camel.language.xpath.XPathLanguage
- camel-ssh:
- groupId: org.apache.camel
- artifactId: camel-ssh
- schemes:
- - id: ssh
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ssh.SshComponent
- camel-mock:
- groupId: org.apache.camel
- artifactId: camel-mock
- schemes:
- - id: mock
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.mock.MockComponent
- camel-websocket-jsr356:
- groupId: org.apache.camel
- artifactId: camel-websocket-jsr356
- schemes:
- - id: websocket-jsr356
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.websocket.jsr356.JSR356WebSocketComponent
- camel-twilio:
- groupId: org.apache.camel
- artifactId: camel-twilio
- schemes:
- - id: twilio
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.twilio.TwilioComponent
- camel-jolt:
- groupId: org.apache.camel
- artifactId: camel-jolt
- schemes:
- - id: jolt
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jolt.JoltComponent
- camel-soap:
- groupId: org.apache.camel
- artifactId: camel-soap
- dataformats:
- - soapjaxb
- javaTypes:
- - org.apache.camel.dataformat.soap.SoapJaxbDataFormat
- camel-thrift:
- groupId: org.apache.camel
- artifactId: camel-thrift
- schemes:
- - id: thrift
- http: false
- passive: false
- dataformats:
- - thrift
- javaTypes:
- - org.apache.camel.component.thrift.ThriftComponent
- - org.apache.camel.dataformat.thrift.ThriftDataFormat
- camel-crypto-cms:
- groupId: org.apache.camel
- artifactId: camel-crypto-cms
- schemes:
- - id: crypto-cms
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.crypto.cms.CryptoCmsComponent
- camel-xml-jaxp:
- groupId: org.apache.camel
- artifactId: camel-xml-jaxp
- languages:
- - xtokenize
- javaTypes:
- - org.apache.camel.language.xtokenizer.XMLTokenizeLanguage
- camel-ognl:
- groupId: org.apache.camel
- artifactId: camel-ognl
- languages:
- - ognl
- javaTypes:
- - org.apache.camel.language.ognl.OgnlLanguage
- camel-couchdb:
- groupId: org.apache.camel
- artifactId: camel-couchdb
- schemes:
- - id: couchdb
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.couchdb.CouchDbComponent
- camel-groovy:
- groupId: org.apache.camel
- artifactId: camel-groovy
- languages:
- - groovy
- javaTypes:
- - org.apache.camel.language.groovy.GroovyLanguage
- camel-saga:
- groupId: org.apache.camel
- artifactId: camel-saga
- schemes:
- - id: saga
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.saga.SagaComponent
- camel-elasticsearch-rest:
- groupId: org.apache.camel
- artifactId: camel-elasticsearch-rest
- schemes:
- - id: elasticsearch-rest
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.elasticsearch.ElasticsearchComponent
- camel-ldap:
- groupId: org.apache.camel
- artifactId: camel-ldap
- schemes:
- - id: ldap
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ldap.LdapComponent
- camel-csv:
- groupId: org.apache.camel
- artifactId: camel-csv
- dataformats:
- - csv
- javaTypes:
- - org.apache.camel.dataformat.csv.CsvDataFormat
- camel-geocoder:
- groupId: org.apache.camel
- artifactId: camel-geocoder
- schemes:
- - id: geocoder
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.geocoder.GeoCoderComponent
- camel-mybatis:
- groupId: org.apache.camel
- artifactId: camel-mybatis
- schemes:
- - id: mybatis
- http: false
- passive: false
- - id: mybatis-bean
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.mybatis.MyBatisComponent
- - org.apache.camel.component.mybatis.MyBatisBeanComponent
- camel-directvm:
- groupId: org.apache.camel
- artifactId: camel-directvm
- schemes:
- - id: direct-vm
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.directvm.DirectVmComponent
- camel-aws2-ecs:
- groupId: org.apache.camel
- artifactId: camel-aws2-ecs
- schemes:
- - id: aws2-ecs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.ecs.ECS2Component
- camel-xmpp:
- groupId: org.apache.camel
- artifactId: camel-xmpp
- schemes:
- - id: xmpp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.xmpp.XmppComponent
- camel-workday:
- groupId: org.apache.camel
- artifactId: camel-workday
- schemes:
- - id: workday
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.workday.WorkdayComponent
- camel-jira:
- groupId: org.apache.camel
- artifactId: camel-jira
- schemes:
- - id: jira
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jira.JiraComponent
- camel-asterisk:
- groupId: org.apache.camel
- artifactId: camel-asterisk
- schemes:
- - id: asterisk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.asterisk.AsteriskComponent
- camel-splunk:
- groupId: org.apache.camel
- artifactId: camel-splunk
- schemes:
- - id: splunk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.splunk.SplunkComponent
- camel-mail:
- groupId: org.apache.camel
- artifactId: camel-mail
- schemes:
- - id: imap
- http: false
- passive: false
- - id: imaps
- http: false
- passive: false
- - id: pop3
- http: false
- passive: false
- - id: pop3s
- http: false
- passive: false
- - id: smtp
- http: false
- passive: false
- - id: smtps
- http: false
- passive: false
- dataformats:
- - mime-multipart
- javaTypes:
- - org.apache.camel.component.mail.MailComponent
- - org.apache.camel.dataformat.mime.multipart.MimeMultipartDataFormat
- camel-metrics:
- groupId: org.apache.camel
- artifactId: camel-metrics
- schemes:
- - id: metrics
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.metrics.MetricsComponent
- camel-aws-sqs:
- groupId: org.apache.camel
- artifactId: camel-aws-sqs
- schemes:
- - id: aws-sqs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.sqs.SqsComponent
- camel-cm-sms:
- groupId: org.apache.camel
- artifactId: camel-cm-sms
- schemes:
- - id: cm-sms
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.cm.CMComponent
- camel-xslt:
- groupId: org.apache.camel
- artifactId: camel-xslt
- schemes:
- - id: xslt
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.xslt.XsltComponent
- camel-flink:
- groupId: org.apache.camel
- artifactId: camel-flink
- schemes:
- - id: flink
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.flink.FlinkComponent
- camel-braintree:
- groupId: org.apache.camel
- artifactId: camel-braintree
- schemes:
- - id: braintree
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.braintree.BraintreeComponent
- camel-aws2-msk:
- groupId: org.apache.camel
- artifactId: camel-aws2-msk
- schemes:
- - id: aws2-msk
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.msk.MSK2Component
- camel-base:
- groupId: org.apache.camel
- artifactId: camel-base
- languages:
- - constant
- - exchangeProperty
- - file
- - header
- - ref
- - simple
- - tokenize
- javaTypes:
- - org.apache.camel.language.constant.ConstantLanguage
- - org.apache.camel.language.property.ExchangePropertyLanguage
- - org.apache.camel.language.simple.FileLanguage
- - org.apache.camel.language.header.HeaderLanguage
- - org.apache.camel.language.ref.RefLanguage
- - org.apache.camel.language.simple.SimpleLanguage
- - org.apache.camel.language.tokenizer.TokenizeLanguage
- camel-jpa:
- groupId: org.apache.camel
- artifactId: camel-jpa
- schemes:
- - id: jpa
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jpa.JpaComponent
- camel-cassandraql:
- groupId: org.apache.camel
- artifactId: camel-cassandraql
- schemes:
- - id: cql
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.cassandra.CassandraComponent
- camel-couchbase:
- groupId: org.apache.camel
- artifactId: camel-couchbase
- schemes:
- - id: couchbase
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.couchbase.CouchbaseComponent
- camel-aws-ddb:
- groupId: org.apache.camel
- artifactId: camel-aws-ddb
- schemes:
- - id: aws-ddb
- http: false
- passive: false
- - id: aws-ddbstream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.ddb.DdbComponent
- - org.apache.camel.component.aws.ddbstream.DdbStreamComponent
- camel-syslog:
- groupId: org.apache.camel
- artifactId: camel-syslog
- dataformats:
- - syslog
- javaTypes:
- - org.apache.camel.component.syslog.SyslogDataFormat
- camel-pubnub:
- groupId: org.apache.camel
- artifactId: camel-pubnub
- schemes:
- - id: pubnub
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.pubnub.PubNubComponent
- camel-gson:
- groupId: org.apache.camel
- artifactId: camel-gson
- dataformats:
- - json-gson
- javaTypes:
- - org.apache.camel.component.gson.GsonDataFormat
- camel-json-validator:
- groupId: org.apache.camel
- artifactId: camel-json-validator
- schemes:
- - id: json-validator
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jsonvalidator.JsonValidatorComponent
- camel-rss:
- groupId: org.apache.camel
- artifactId: camel-rss
- schemes:
- - id: rss
- http: false
- passive: false
- dataformats:
- - rss
- javaTypes:
- - org.apache.camel.component.rss.RssComponent
- - org.apache.camel.dataformat.rss.RssDataFormat
- camel-dataformat:
- groupId: org.apache.camel
- artifactId: camel-dataformat
- schemes:
- - id: dataformat
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.dataformat.DataFormatComponent
- camel-xmlsecurity:
- groupId: org.apache.camel
- artifactId: camel-xmlsecurity
- schemes:
- - id: xmlsecurity-sign
- http: false
- passive: false
- - id: xmlsecurity-verify
- http: false
- passive: false
- dataformats:
- - secureXML
- javaTypes:
- - org.apache.camel.component.xmlsecurity.XmlSignatureComponent
- - org.apache.camel.component.xmlsecurity.XmlVerifierComponent
- - org.apache.camel.dataformat.xmlsecurity.XMLSecurityDataFormat
- camel-bonita:
- groupId: org.apache.camel
- artifactId: camel-bonita
- schemes:
- - id: bonita
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.bonita.BonitaComponent
- camel-rest:
- groupId: org.apache.camel
- artifactId: camel-rest
- schemes:
- - id: rest
- http: true
- passive: false
- - id: rest-api
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.rest.RestComponent
- - org.apache.camel.component.rest.RestApiComponent
- camel-service:
- groupId: org.apache.camel
- artifactId: camel-service
- schemes:
- - id: service
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.service.ServiceComponent
- camel-protobuf:
- groupId: org.apache.camel
- artifactId: camel-protobuf
- dataformats:
- - protobuf
- javaTypes:
- - org.apache.camel.dataformat.protobuf.ProtobufDataFormat
- camel-smpp:
- groupId: org.apache.camel
- artifactId: camel-smpp
- schemes:
- - id: smpp
- http: false
- passive: false
- - id: smpps
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.smpp.SmppComponent
- camel-velocity:
- groupId: org.apache.camel
- artifactId: camel-velocity
- schemes:
- - id: velocity
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.velocity.VelocityComponent
- camel-google-mail:
- groupId: org.apache.camel
- artifactId: camel-google-mail
- schemes:
- - id: google-mail
- http: false
- passive: false
- - id: google-mail-stream
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.mail.GoogleMailComponent
- - org.apache.camel.component.google.mail.stream.GoogleMailStreamComponent
- camel-as2:
- groupId: org.apache.camel
- artifactId: camel-as2
- schemes:
- - id: as2
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.as2.AS2Component
- camel-xchange:
- groupId: org.apache.camel
- artifactId: camel-xchange
- schemes:
- - id: xchange
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.xchange.XChangeComponent
- camel-paxlogging:
- groupId: org.apache.camel
- artifactId: camel-paxlogging
- schemes:
- - id: paxlogging
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.paxlogging.PaxLoggingComponent
- camel-tarfile:
- groupId: org.apache.camel
- artifactId: camel-tarfile
- dataformats:
- - tarfile
- javaTypes:
- - org.apache.camel.dataformat.tarfile.TarFileDataFormat
- camel-jooq:
- groupId: org.apache.camel
- artifactId: camel-jooq
- schemes:
- - id: jooq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jooq.JooqComponent
- camel-ahc-ws:
- groupId: org.apache.camel
- artifactId: camel-ahc-ws
- schemes:
- - id: ahc-ws
- http: true
- passive: false
- - id: ahc-wss
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ahc.ws.WsComponent
- camel-johnzon:
- groupId: org.apache.camel
- artifactId: camel-johnzon
- dataformats:
- - json-johnzon
- javaTypes:
- - org.apache.camel.component.johnzon.JohnzonDataFormat
- camel-ignite:
- groupId: org.apache.camel
- artifactId: camel-ignite
- schemes:
- - id: ignite-cache
- http: false
- passive: false
- - id: ignite-compute
- http: false
- passive: false
- - id: ignite-events
- http: false
- passive: false
- - id: ignite-idgen
- http: false
- passive: false
- - id: ignite-messaging
- http: false
- passive: false
- - id: ignite-queue
- http: false
- passive: false
- - id: ignite-set
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ignite.cache.IgniteCacheComponent
- - org.apache.camel.component.ignite.compute.IgniteComputeComponent
- - org.apache.camel.component.ignite.events.IgniteEventsComponent
- - org.apache.camel.component.ignite.idgen.IgniteIdGenComponent
- - org.apache.camel.component.ignite.messaging.IgniteMessagingComponent
- - org.apache.camel.component.ignite.queue.IgniteQueueComponent
- - org.apache.camel.component.ignite.set.IgniteSetComponent
- camel-xslt-saxon:
- groupId: org.apache.camel
- artifactId: camel-xslt-saxon
- schemes:
- - id: xslt-saxon
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.xslt.saxon.XsltSaxonComponent
- camel-pulsar:
- groupId: org.apache.camel
- artifactId: camel-pulsar
- schemes:
- - id: pulsar
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.pulsar.PulsarComponent
- camel-rest-swagger:
- groupId: org.apache.camel
- artifactId: camel-rest-swagger
- schemes:
- - id: rest-swagger
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.rest.swagger.RestSwaggerComponent
- camel-spring:
- groupId: org.apache.camel
- artifactId: camel-spring
- schemes:
- - id: spring-event
- http: false
- passive: false
- languages:
- - spel
- javaTypes:
- - org.apache.camel.component.event.EventComponent
- - org.apache.camel.language.spel.SpelLanguage
- camel-exec:
- groupId: org.apache.camel
- artifactId: camel-exec
- schemes:
- - id: exec
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.exec.ExecComponent
- camel-microprofile-metrics:
- groupId: org.apache.camel
- artifactId: camel-microprofile-metrics
- schemes:
- - id: microprofile-metrics
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.microprofile.metrics.MicroProfileMetricsComponent
- camel-aws-s3:
- groupId: org.apache.camel
- artifactId: camel-aws-s3
- schemes:
- - id: aws-s3
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.s3.S3Component
- camel-cron:
- groupId: org.apache.camel
- artifactId: camel-cron
- schemes:
- - id: cron
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.cron.CronComponent
- camel-zookeeper-master:
- groupId: org.apache.camel
- artifactId: camel-zookeeper-master
- schemes:
- - id: zookeeper-master
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.zookeepermaster.MasterComponent
- camel-grok:
- groupId: org.apache.camel
- artifactId: camel-grok
- dataformats:
- - grok
- javaTypes:
- - org.apache.camel.component.grok.GrokDataFormat
- camel-mvel:
- groupId: org.apache.camel
- artifactId: camel-mvel
- schemes:
- - id: mvel
- http: false
- passive: false
- languages:
- - mvel
- javaTypes:
- - org.apache.camel.component.mvel.MvelComponent
- - org.apache.camel.language.mvel.MvelLanguage
- camel-debezium-sqlserver:
- groupId: org.apache.camel
- artifactId: camel-debezium-sqlserver
- schemes:
- - id: debezium-sqlserver
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.debezium.DebeziumSqlserverComponent
- camel-cbor:
- groupId: org.apache.camel
- artifactId: camel-cbor
- dataformats:
- - cbor
- javaTypes:
- - org.apache.camel.component.cbor.CBORDataFormat
- camel-google-drive:
- groupId: org.apache.camel
- artifactId: camel-google-drive
- schemes:
- - id: google-drive
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.google.drive.GoogleDriveComponent
- camel-iota:
- groupId: org.apache.camel
- artifactId: camel-iota
- schemes:
- - id: iota
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.iota.IOTAComponent
- camel-cxf:
- groupId: org.apache.camel
- artifactId: camel-cxf
- schemes:
- - id: cxf
- http: true
- passive: false
- - id: cxfrs
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.cxf.CxfComponent
- - org.apache.camel.component.cxf.jaxrs.CxfRsComponent
- camel-ref:
- groupId: org.apache.camel
- artifactId: camel-ref
- schemes:
- - id: ref
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.ref.RefComponent
- camel-stomp:
- groupId: org.apache.camel
- artifactId: camel-stomp
- schemes:
- - id: stomp
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.stomp.StompComponent
- camel-snakeyaml:
- groupId: org.apache.camel
- artifactId: camel-snakeyaml
- dataformats:
- - yaml-snakeyaml
- javaTypes:
- - org.apache.camel.component.snakeyaml.SnakeYAMLDataFormat
- camel-olingo4:
- groupId: org.apache.camel
- artifactId: camel-olingo4
- schemes:
- - id: olingo4
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.olingo4.Olingo4Component
- camel-olingo2:
- groupId: org.apache.camel
- artifactId: camel-olingo2
- schemes:
- - id: olingo2
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.olingo2.Olingo2Component
- camel-milo:
- groupId: org.apache.camel
- artifactId: camel-milo
- schemes:
- - id: milo-client
- http: false
- passive: false
- - id: milo-server
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.milo.client.MiloClientComponent
- - org.apache.camel.component.milo.server.MiloServerComponent
- camel-aws2-cw:
- groupId: org.apache.camel
- artifactId: camel-aws2-cw
- schemes:
- - id: aws2-cw
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws2.cw.Cw2Component
- camel-grpc:
- groupId: org.apache.camel
- artifactId: camel-grpc
- schemes:
- - id: grpc
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.grpc.GrpcComponent
- camel-webhook:
- groupId: org.apache.camel
- artifactId: camel-webhook
- schemes:
- - id: webhook
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.webhook.WebhookComponent
- camel-pgevent:
- groupId: org.apache.camel
- artifactId: camel-pgevent
- schemes:
- - id: pgevent
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.pgevent.PgEventComponent
- camel-micrometer:
- groupId: org.apache.camel
- artifactId: camel-micrometer
- schemes:
- - id: micrometer
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.micrometer.MicrometerComponent
- camel-any23:
- groupId: org.apache.camel
- artifactId: camel-any23
- dataformats:
- - any23
- javaTypes:
- - org.apache.camel.dataformat.any23.Any23DataFormat
- camel-aws-lambda:
- groupId: org.apache.camel
- artifactId: camel-aws-lambda
- schemes:
- - id: aws-lambda
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.lambda.LambdaComponent
- camel-aws-kinesis:
- groupId: org.apache.camel
- artifactId: camel-aws-kinesis
- schemes:
- - id: aws-kinesis
- http: false
- passive: false
- - id: aws-kinesis-firehose
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.kinesis.KinesisComponent
- - org.apache.camel.component.aws.firehose.KinesisFirehoseComponent
- camel-netty-http:
- groupId: org.apache.camel
- artifactId: camel-netty-http
- schemes:
- - id: netty-http
- http: true
- passive: false
- javaTypes:
- - org.apache.camel.component.netty.http.NettyHttpComponent
- camel-ipfs:
- groupId: org.apache.camel
- artifactId: camel-ipfs
- schemes:
- - id: ipfs
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.ipfs.IPFSComponent
- camel-aws-kms:
- groupId: org.apache.camel
- artifactId: camel-aws-kms
- schemes:
- - id: aws-kms
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.kms.KMSComponent
- camel-aws-ec2:
- groupId: org.apache.camel
- artifactId: camel-aws-ec2
- schemes:
- - id: aws-ec2
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.aws.ec2.EC2Component
- camel-sjms:
- groupId: org.apache.camel
- artifactId: camel-sjms
- schemes:
- - id: sjms
- http: false
- passive: false
- - id: sjms-batch
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.sjms.SjmsComponent
- - org.apache.camel.component.sjms.batch.SjmsBatchComponent
- camel-irc:
- groupId: org.apache.camel
- artifactId: camel-irc
- schemes:
- - id: irc
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.irc.IrcComponent
- camel-jcr:
- groupId: org.apache.camel
- artifactId: camel-jcr
- schemes:
- - id: jcr
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.jcr.JcrComponent
- camel-dropbox:
- groupId: org.apache.camel
- artifactId: camel-dropbox
- schemes:
- - id: dropbox
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.dropbox.DropboxComponent
- camel-activemq:
- groupId: org.apache.camel
- artifactId: camel-activemq
- schemes:
- - id: activemq
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.activemq.ActiveMQComponent
- camel-scheduler:
- groupId: org.apache.camel
- artifactId: camel-scheduler
- schemes:
- - id: scheduler
- http: false
- passive: false
- javaTypes:
- - org.apache.camel.component.scheduler.SchedulerComponent
- camel-validator:
- groupId: org.apache.camel
- artifactId: camel-validator
- schemes:
- - id: validator
- http: false
- passive: true
- javaTypes:
- - org.apache.camel.component.validator.ValidatorComponent
- camel-k-loader-yaml:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-yaml
- camel-k-loader-groovy:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-groovy
- camel-k-loader-kotlin:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-kotlin
- camel-k-loader-js:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-js
- camel-k-loader-xml:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-xml
- camel-k-loader-java:
- groupId: org.apache.camel.k
- artifactId: camel-k-loader-java
- camel-k-runtime-main:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-main
- camel-k-runtime-health:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-health
- camel-k-runtime-http:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-http
- camel-k-runtime-webhook:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-webhook
- camel-k-runtime-cron:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-cron
- camel-k-runtime-knative:
- groupId: org.apache.camel.k
- artifactId: camel-k-runtime-knative
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-k-loader-yaml
- - groupId: org.apache.camel.k
- artifactId: camel-knative-api
- - groupId: org.apache.camel.k
- artifactId: camel-knative
- - groupId: org.apache.camel.k
- artifactId: camel-knative-http
- camel-knative:
- groupId: org.apache.camel.k
- artifactId: camel-knative
- schemes:
- - id: knative
- http: true
- passive: false
- dependencies:
- - groupId: org.apache.camel.k
- artifactId: camel-knative-api
- - groupId: org.apache.camel.k
- artifactId: camel-knative
- - groupId: org.apache.camel.k
- artifactId: camel-knative-http
- loaders:
- yaml:
- groupId: org.apache.camel.k
... 58185 lines suppressed ...