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()) {

Reply via email to