This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 9936b30b81 Add test for Kubernetes component with autowiring disabled
9936b30b81 is described below
commit 9936b30b81a194851943ecd9926a112198854b77
Author: James Netherton <[email protected]>
AuthorDate: Mon Feb 17 13:33:25 2025 +0000
Add test for Kubernetes component with autowiring disabled
---
.../kubernetes/it/KubernetesPodsResource.java | 30 +++++++++++-
.../component/kubernetes/it/KubernetesRoutes.java | 3 ++
.../kubernetes/it/KubernetesPodsTest.java | 54 ++++++++++++++++++++++
3 files changed, 85 insertions(+), 2 deletions(-)
diff --git
a/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsResource.java
b/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsResource.java
index d407d705e5..54f8f86995 100644
---
a/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsResource.java
+++
b/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsResource.java
@@ -24,6 +24,7 @@ import java.util.Map;
import io.fabric8.kubernetes.api.model.Pod;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
@@ -32,12 +33,15 @@ import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.apache.camel.ConsumerTemplate;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.kubernetes.KubernetesConstants;
import org.apache.camel.component.kubernetes.KubernetesOperations;
+import org.apache.camel.component.kubernetes.pods.KubernetesPodsComponent;
+import org.eclipse.microprofile.config.ConfigProvider;
@Path("/kubernetes/pods")
@ApplicationScoped
@@ -70,17 +74,32 @@ public class KubernetesPodsResource {
public Response createPod(
@PathParam("namespace") String namespace,
@PathParam("podName") String podName,
+ @QueryParam("isAutowiredClient") boolean isAutowiredClient,
Pod pod) throws Exception {
+ String directEndpointUri = "direct:start";
Map<String, Object> headers = new HashMap<>();
- headers.put("componentName", "kubernetes-pods");
+ if (isAutowiredClient) {
+ headers.put("componentName", "kubernetes-pods");
+ } else {
+ directEndpointUri += "NoAutoWired";
+ String masterUrl = ConfigProvider.getConfig()
+ .getOptionalValue("kubernetes.master", String.class)
+ .orElseGet(() -> ConfigProvider.getConfig()
+
.getOptionalValue("quarkus.kubernetes-client.api-server-url", String.class)
+ .orElse(null));
+
+ headers.put("componentName", "kubernetes-pods-no-autowire");
+ headers.put("masterUrl", masterUrl);
+ }
+
headers.put(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, namespace);
headers.put(KubernetesConstants.KUBERNETES_POD_NAME, podName);
headers.put(KubernetesConstants.KUBERNETES_POD_SPEC, pod.getSpec());
headers.put(KubernetesConstants.KUBERNETES_PODS_LABELS, Map.of("app",
podName));
headers.put(KubernetesConstants.KUBERNETES_OPERATION,
KubernetesOperations.CREATE_POD_OPERATION);
- Pod createdPod =
producerTemplate.requestBodyAndHeaders("direct:start", null, headers,
Pod.class);
+ Pod createdPod =
producerTemplate.requestBodyAndHeaders(directEndpointUri, null, headers,
Pod.class);
return Response
.created(new URI("https://camel.apache.org/"))
.entity(createdPod)
@@ -157,4 +176,11 @@ public class KubernetesPodsResource {
Pod pod = consumerTemplate.receiveBody("seda:podEvents", 10000,
Pod.class);
return Response.ok().entity(pod).build();
}
+
+ @Named("kubernetes-pods-no-autowire")
+ KubernetesPodsComponent kubernetesPodsComponent() {
+ KubernetesPodsComponent component = new KubernetesPodsComponent();
+ component.setAutowiredEnabled(false);
+ return component;
+ }
}
diff --git
a/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesRoutes.java
b/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesRoutes.java
index 8c7c8f0f7a..9c98bc0f76 100644
---
a/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesRoutes.java
+++
b/integration-tests/kubernetes/src/main/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesRoutes.java
@@ -32,6 +32,9 @@ public class KubernetesRoutes extends RouteBuilder {
from("direct:start")
.toD("${header.componentName}:local");
+ from("direct:startNoAutoWired")
+ .toD("kubernetes-pods-no-autowire:${header.masterUrl}");
+
from("kubernetes-config-maps:local?resourceName=camel-configmap-watched")
.id("configmap-listener")
.autoStartup(false)
diff --git
a/integration-tests/kubernetes/src/test/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsTest.java
b/integration-tests/kubernetes/src/test/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsTest.java
index 8152ced6c2..9bd59e2d7a 100644
---
a/integration-tests/kubernetes/src/test/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsTest.java
+++
b/integration-tests/kubernetes/src/test/java/org/apache/camel/quarkus/component/kubernetes/it/KubernetesPodsTest.java
@@ -155,6 +155,60 @@ class KubernetesPodsTest {
}
}
+ @Test
+ void createPodWithKubernetesClientAutowiringDisabled() throws Exception {
+ try (CamelKubernetesNamespace namespace = new
CamelKubernetesNamespace()) {
+ namespace.awaitCreation();
+
+ Container container = new Container();
+ container.setImage("busybox:latest");
+ container.setName("camel-pod-no-autowire");
+ container.setCommand(List.of("/bin/sh", "-c", "while true; do echo
'Hello, World!'; sleep 5; done"));
+
+ Map<String, String> labels = Map.of("app",
"camel-pod-no-autowire");
+ Pod pod = new PodBuilder()
+ .withNewMetadata()
+ .withName("camel-pod-no-autowire")
+ .withNamespace(namespace.getNamespace())
+ .withLabels(labels)
+ .endMetadata()
+ .withNewSpec()
+ .withContainers(container)
+ .endSpec()
+ .build();
+
+ // Create with the non-autowired k8s client component
+ RestAssured.given()
+ .queryParam("isAutowiredClient", "false")
+ .contentType(ContentType.JSON)
+ .body(pod)
+ .when()
+ .post("/kubernetes/pods/" + namespace.getNamespace() +
"/camel-pod-no-autowire")
+ .then()
+ .statusCode(201)
+ .body("metadata.name", is("camel-pod-no-autowire"),
+ "metadata.namespace", is(namespace.getNamespace()),
+ "metadata.resourceVersion", notNullValue());
+
+ // Read
+ RestAssured.given()
+ .when()
+ .get("/kubernetes/pods/" + namespace.getNamespace() +
"/camel-pod-no-autowire")
+ .then()
+ .statusCode(200)
+ .body("metadata.name", is("camel-pod-no-autowire"),
+ "metadata.namespace", is(namespace.getNamespace()),
+ "metadata.resourceVersion", notNullValue());
+
+ // Delete
+ RestAssured.given()
+ .when()
+ .delete("/kubernetes/pods/" + namespace.getNamespace() +
"/camel-pod-no-autowire")
+ .then()
+ .statusCode(204);
+ }
+ }
+
@Test
void podEvents() throws Exception {
try (CamelKubernetesNamespace namespace = new
CamelKubernetesNamespace()) {