This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 001dc5e  CAMEL-16847: upgrade fabric8's  Kubernetes client to the 
latest version (#5956)
001dc5e is described below

commit 001dc5ebf98385c4b2e5bba656493e567e349428
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Mon Aug 16 16:41:37 2021 +0200

    CAMEL-16847: upgrade fabric8's  Kubernetes client to the latest version 
(#5956)
---
 camel-dependencies/pom.xml                         |   4 +-
 components/camel-kubernetes/README.md              |   4 +-
 .../KubernetesCustomResourcesProducer.java         |  24 ++-
 .../deployments/KubernetesDeploymentsProducer.java |  10 +-
 .../kubernetes/job/KubernetesJobProducer.java      |   6 +-
 .../kubernetes/pods/KubernetesPodsProducer.java    |   6 +-
 .../KubernetesReplicationControllersProducer.java  |  12 +-
 .../integration/KubernetesPodsConsumerIT.java      |   5 +-
 .../KubernetesCustomResourcesProducerTest.java     | 168 +++++++++++----------
 .../src/test/resources/log4j2.properties           |   6 +
 .../component/kubernetes/producer/sample-cr.json   |  30 ++++
 parent/pom.xml                                     |   4 +-
 12 files changed, 163 insertions(+), 116 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 4373f66..371850e 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -362,8 +362,8 @@
     <jzlib-version>1.1.3</jzlib-version>
     <kafka-version>2.8.0</kafka-version>
     <kotlin-version>1.5.21</kotlin-version>
-    <kubernetes-client-version>5.4.1</kubernetes-client-version>
-    <kubernetes-model-version>5.4.1</kubernetes-model-version>
+    <kubernetes-client-version>5.6.0</kubernetes-client-version>
+    <kubernetes-model-version>5.6.0</kubernetes-model-version>
     <kudu-version>1.14.0</kudu-version>
     <lettuce-version>5.1.0.RELEASE</lettuce-version>
     <leveldb-api-version>0.12</leveldb-api-version>
diff --git a/components/camel-kubernetes/README.md 
b/components/camel-kubernetes/README.md
index 45c756f..bc14b34 100644
--- a/components/camel-kubernetes/README.md
+++ b/components/camel-kubernetes/README.md
@@ -4,12 +4,12 @@
 
 This component contains unit and integration tests. Some of them - like the 
consumer ones - require a Kubernetes environment. 
 
-It is possible to run the tests using Kind. To do so, follow these steps:
+It is possible to run the integration tests using Kind. To do so, follow these 
steps:
 
 1. Create a cluster:
 
 ```
-kind cluster create
+kind create cluster
 ```
 
 2. Get the auth token:
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesProducer.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesProducer.java
index 074199d..2cf60c0 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesProducer.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/customresources/KubernetesCustomResourcesProducer.java
@@ -92,8 +92,11 @@ public class KubernetesCustomResourcesProducer extends 
DefaultProducer {
     }
 
     protected void doList(Exchange exchange, String namespaceName) {
-        JsonObject customResourcesListJSON = new JsonObject(
-                
getEndpoint().getKubernetesClient().customResource(getCRDContext(exchange.getIn())).list(namespaceName));
+        CustomResourceDefinitionContext context = 
getCRDContext(exchange.getIn());
+
+        Map<String, Object> labels = 
getEndpoint().getKubernetesClient().customResource(context).list(namespaceName);
+
+        JsonObject customResourcesListJSON = new JsonObject(labels);
         if (LOG.isDebugEnabled()) {
             LOG.debug(customResourcesListJSON.toString());
         }
@@ -145,14 +148,15 @@ public class KubernetesCustomResourcesProducer extends 
DefaultProducer {
     protected void doDelete(Exchange exchange, String namespaceName) throws 
IOException {
         String customResourceName = 
exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE_NAME, 
String.class);
         if (ObjectHelper.isEmpty(customResourceName)) {
-            LOG.error("Delete a specific deployment require specify a 
deployment name");
-            throw new IllegalArgumentException("Delete a specific deployment 
require specify a deployment name");
+            LOG.error("Deleting a specific deployment require specify a 
deployment name");
+            throw new IllegalArgumentException("Deleting a specific deployment 
require specify a deployment name");
         }
 
         try {
             RawCustomResourceOperationsImpl raw
                     = 
getEndpoint().getKubernetesClient().customResource(getCRDContext(exchange.getIn()));
-            boolean deleted = raw.delete(namespaceName, customResourceName);
+            boolean deleted = 
raw.inNamespace(namespaceName).withName(customResourceName).delete();
+
             
exchange.getMessage().setHeader(KubernetesConstants.KUBERNETES_DELETE_RESULT, 
deleted);
         } catch (KubernetesClientException e) {
             if (e.getCode() == 404) {
@@ -167,9 +171,13 @@ public class KubernetesCustomResourcesProducer extends 
DefaultProducer {
         String customResourceInstance = 
exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE, 
String.class);
         JsonObject gitHubSourceJSON = new JsonObject();
         try {
-            gitHubSourceJSON = new JsonObject(
-                    
getEndpoint().getKubernetesClient().customResource(getCRDContext(exchange.getIn())).create(namespaceName,
-                            customResourceInstance));
+
+            Map<String, Object> customResource = 
getEndpoint().getKubernetesClient()
+                    .customResource(getCRDContext(exchange.getIn()))
+                    .inNamespace(namespaceName)
+                    .create(customResourceInstance);
+
+            gitHubSourceJSON = new JsonObject(customResource);
         } catch (KubernetesClientException e) {
             if (e.getCode() == 409) {
                 LOG.info("Custom resource instance already exists", e);
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsProducer.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsProducer.java
index 1de95c1..7a9a1da 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsProducer.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/deployments/KubernetesDeploymentsProducer.java
@@ -91,14 +91,12 @@ public class KubernetesDeploymentsProducer extends 
DefaultProducer {
     }
 
     protected void doListDeploymentsByLabels(Exchange exchange) {
-        DeploymentList deploymentList = null;
-        Map<String, String> labels = 
exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_DEPLOYMENTS_LABELS, 
Map.class);
+        Map<String, String> labels
+                = 
exchange.getIn().getHeader(KubernetesConstants.KUBERNETES_DEPLOYMENTS_LABELS, 
Map.class);
         MixedOperation<Deployment, DeploymentList, 
RollableScalableResource<Deployment>> deployments = getEndpoint()
                 .getKubernetesClient().apps().deployments();
-        for (Map.Entry<String, String> entry : labels.entrySet()) {
-            deployments.withLabel(entry.getKey(), entry.getValue());
-        }
-        deploymentList = deployments.list();
+
+        DeploymentList deploymentList = deployments.withLabels(labels).list();
 
         prepareOutboundMessage(exchange, deploymentList.getItems());
     }
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/job/KubernetesJobProducer.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/job/KubernetesJobProducer.java
index 7184ae8..ba3cc28 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/job/KubernetesJobProducer.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/job/KubernetesJobProducer.java
@@ -100,10 +100,8 @@ public class KubernetesJobProducer extends DefaultProducer 
{
         }
 
         MixedOperation<Job, JobList, ScalableResource<Job>> jobs = 
getEndpoint().getKubernetesClient().batch().v1().jobs();
-        for (Map.Entry<String, String> entry : labels.entrySet()) {
-            jobs.withLabel(entry.getKey(), entry.getValue());
-        }
-        JobList jobList = jobs.list();
+
+        JobList jobList = jobs.withLabels(labels).list();
 
         prepareOutboundMessage(exchange, jobList.getItems());
     }
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsProducer.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsProducer.java
index d83b9e2..2cf2cd0 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsProducer.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/pods/KubernetesPodsProducer.java
@@ -98,10 +98,8 @@ public class KubernetesPodsProducer extends DefaultProducer {
         }
 
         FilterWatchListMultiDeletable<Pod, PodList> pods = 
getEndpoint().getKubernetesClient().pods().inAnyNamespace();
-        for (Map.Entry<String, String> entry : labels.entrySet()) {
-            pods.withLabel(entry.getKey(), entry.getValue());
-        }
-        PodList podList = pods.list();
+
+        PodList podList = pods.withLabels(labels).list();
 
         prepareOutboundMessage(exchange, podList.getItems());
     }
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersProducer.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersProducer.java
index cf1d896..272cd8a 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersProducer.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/replication_controllers/KubernetesReplicationControllersProducer.java
@@ -107,18 +107,14 @@ public class KubernetesReplicationControllersProducer 
extends DefaultProducer {
             NonNamespaceOperation<ReplicationController, 
ReplicationControllerList, RollableScalableResource<ReplicationController>> 
replicationControllers
                     = getEndpoint()
                             
.getKubernetesClient().replicationControllers().inNamespace(namespaceName);
-            for (Map.Entry<String, String> entry : labels.entrySet()) {
-                replicationControllers.withLabel(entry.getKey(), 
entry.getValue());
-            }
-            rcList = replicationControllers.list();
+
+            rcList = replicationControllers.withLabels(labels).list();
         } else {
             FilterWatchListMultiDeletable<ReplicationController, 
ReplicationControllerList> replicationControllers
                     = getEndpoint()
                             
.getKubernetesClient().replicationControllers().inAnyNamespace();
-            for (Map.Entry<String, String> entry : labels.entrySet()) {
-                replicationControllers.withLabel(entry.getKey(), 
entry.getValue());
-            }
-            rcList = replicationControllers.list();
+
+            rcList = replicationControllers.withLabels(labels).list();
         }
 
         prepareOutboundMessage(exchange, rcList.getItems());
diff --git 
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
 
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
index b343881..41ea2ab 100644
--- 
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
+++ 
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/consumer/integration/KubernetesPodsConsumerIT.java
@@ -91,7 +91,7 @@ public class KubernetesPodsConsumerIT extends 
KubernetesTestSupport {
     public void createPod() throws Exception {
         mockResultEndpoint.expectedMessageCount(2);
         
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
 "ADDED",
-                "MODIFIED");
+                "ADDED", "ADDED");
         Exchange ex = template.request("direct:createPod", this::setupPod);
 
         assertNotNull(ex);
@@ -105,7 +105,8 @@ public class KubernetesPodsConsumerIT extends 
KubernetesTestSupport {
     @Order(2)
     public void deletePod() throws Exception {
         mockResultEndpoint.expectedMessageCount(1);
-        
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
 "ADDED");
+        
mockResultEndpoint.expectedHeaderValuesReceivedInAnyOrder(KubernetesConstants.KUBERNETES_EVENT_ACTION,
+                "ADDED", "ADDED", "ADDED");
         Exchange ex = template.request("direct:deletePod", exchange -> {
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"default");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, 
TEST_POD_NAME);
diff --git 
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesCustomResourcesProducerTest.java
 
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesCustomResourcesProducerTest.java
index f015222..a4aa43c 100644
--- 
a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesCustomResourcesProducerTest.java
+++ 
b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesCustomResourcesProducerTest.java
@@ -16,55 +16,43 @@
  */
 package org.apache.camel.component.kubernetes.producer;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext;
-import 
io.fabric8.kubernetes.client.dsl.base.CustomResourceDefinitionContext.Builder;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.KubernetesServer;
 import org.apache.camel.component.kubernetes.KubernetesConstants;
 import org.apache.camel.component.kubernetes.KubernetesTestSupport;
+import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 public class KubernetesCustomResourcesProducerTest extends 
KubernetesTestSupport {
+    private static String githubSourceString;
 
     @RegisterExtension
     public KubernetesServer server = new KubernetesServer();
 
-    private String gitHubSourceString = "{" +
-                                        "\"apiVersion\": 
\"sources.knative.dev/v1alpha1\"," +
-                                        "\"kind\": \"GitHubSource\"," +
-                                        "\"metadata\": {" +
-                                        "   \"name\": \"test\"}," +
-                                        "\"spec\": {" +
-                                        "   \"eventTypes\": [issues, 
repository]," +
-                                        "   \"ownerAndRepository\": 
\"akihikokuroda/sample\"," +
-                                        "   \"accessToken\": {" +
-                                        "       \"secretKeyRef\": {" +
-                                        "           \"name\": 
\"githubsecret\"," +
-                                        "           \"key\": 
\"accessToken\"}}," +
-                                        "   \"secretToken\": {" +
-                                        "       \"secretKeyRef\": {" +
-                                        "           \"name\": 
\"githubsecret\"," +
-                                        "           \"key\": 
\"secretToken\"}}}," +
-                                        "\"githubAPIURL\": 
\"https://api.github.com/\","; +
-                                        "\"sink\": {" +
-                                        "    \"ref\": {" +
-                                        "       \"apiVersion\": 
\"messaging.knative.dev/v1beta1\"," +
-                                        "       \"kind\": \"Channel\"," +
-                                        "       \"name\": \"github\"}}" +
-                                        "}";
-
     private CustomResourceDefinitionContext getCustomResourceContext() {
         return new CustomResourceDefinitionContext.Builder()
                 .withName("githubsources.sources.knative.dev")
@@ -75,24 +63,65 @@ public class KubernetesCustomResourcesProducerTest extends 
KubernetesTestSupport
                 .build();
     }
 
+    @BeforeAll
+    public static void readResource() throws IOException {
+        try (InputStream stream = 
KubernetesCustomResourcesProducerTest.class.getResourceAsStream("sample-cr.json"))
 {
+            githubSourceString = IOHelper.loadText(stream);
+        }
+    }
+
     @BindToRegistry("kubernetesClient")
     public KubernetesClient getClient() throws Exception {
         return server.getClient();
     }
 
-    @Test
-    public void listTest() throws Exception {
-        JsonObject instance = new 
JsonObject(getClient().customResource(getCustomResourceContext()).load(gitHubSourceString));
+    private JsonObject setupGithubSourceList() throws Exception {
+        JsonObject instance = new 
JsonObject(getClient().customResource(getCustomResourceContext()).load(githubSourceString));
         JsonObject gitHubSourceList = new JsonObject();
         JsonArray list = new JsonArray();
         list.add(instance);
         gitHubSourceList.put("items", list);
+        return gitHubSourceList;
+    }
+
+    @Test
+    @Order(1)
+    public void createTest() throws Exception {
+        JsonObject gitHubSourceList = setupGithubSourceList();
+
+        
server.expect().post().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources")
+                .andReturn(200, gitHubSourceList.toJson()).once();
+        
server.expect().delete().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources/samplecr")
+                .andReturn(200, gitHubSourceList.toJson()).once();
+
+        Exchange ex = template.request("direct:createCustomResource", exchange 
-> {
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE_NAME, 
"samplecr");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"testnamespace");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_VERSION, 
"v1alpha1");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE, 
githubSourceString);
+        });
+
+        assertFalse(ex.isFailed());
+        assertNull(ex.getException());
+
+        assertNotNull(ex.getMessage());
+        assertNotNull(ex.getMessage().getBody());
+    }
+
+    @Test
+    @Order(2)
+    public void listTest() throws Exception {
+        JsonObject gitHubSourceList = setupGithubSourceList();
 
-        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources")
+        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources")
                 .andReturn(200, gitHubSourceList.toJson()).once();
 
         Exchange ex = template.request("direct:listCustomResources", exchange 
-> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"testnamespace");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
@@ -100,25 +129,26 @@ public class KubernetesCustomResourcesProducerTest 
extends KubernetesTestSupport
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
         });
 
+        assertFalse(ex.isFailed());
+        assertNull(ex.getException());
+
         List<Map<String, Object>> result = ex.getMessage().getBody(List.class);
 
         assertEquals(1, result.size());
     }
 
     @Test
+    @Order(3)
     public void listByLabelsTest() throws Exception {
-        JsonObject instance = new 
JsonObject(getClient().customResource(getCustomResourceContext()).load(gitHubSourceString));
-        JsonObject gitHubSourceList = new JsonObject();
-        JsonArray list = new JsonArray();
-        list.add(instance);
-        gitHubSourceList.put("items", list);
+        JsonObject gitHubSourceList = setupGithubSourceList();
 
-        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources?labelSelector="
-                                       + 
toUrlEncoded("key1=value1,key2=value2"))
+        server.expect().get()
+                
.withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources?labelSelector="
+                          + toUrlEncoded("key1=value1,key2=value2"))
                 .andReturn(200, gitHubSourceList.toJson()).once();
 
         Exchange ex = template.request("direct:listCustomResourcesByLabels", 
exchange -> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"testnamespace");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
@@ -128,53 +158,29 @@ public class KubernetesCustomResourcesProducerTest 
extends KubernetesTestSupport
             labels.put("key1", "value1");
             labels.put("key2", "value2");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_LABELS, labels);
-
         });
 
+        assertFalse(ex.isFailed());
+        assertNull(ex.getException());
+
         List<Map<String, Object>> result = ex.getMessage().getBody(List.class);
 
         assertEquals(1, result.size());
     }
 
     @Test
-    public void createAndDeleteTest() throws Exception {
-        JsonObject instance = new 
JsonObject(getClient().customResource(getCustomResourceContext()).load(gitHubSourceString));
-        JsonObject gitHubSourceList = new JsonObject();
-        JsonArray list = new JsonArray();
-        list.add(instance);
-        gitHubSourceList.put("items", list);
+    @Order(4)
+    public void deleteTest() throws Exception {
+        JsonObject gitHubSourceList = setupGithubSourceList();
 
-        
server.expect().post().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources")
-                .andReturn(200, gitHubSourceList.toJson()).once();
-        
server.expect().delete().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources/createtest")
+        
server.expect().post().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources")
                 .andReturn(200, gitHubSourceList.toJson()).once();
-
-        Exchange ex = template.request("direct:createCustomResource", exchange 
-> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"createtest");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_VERSION, 
"v1alpha1");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE, 
gitHubSourceString);
-        });
-
-        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources")
+        
server.expect().delete().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources/samplecr")
                 .andReturn(200, gitHubSourceList.toJson()).once();
-        Exchange ex2 = template.request("direct:listCustomResources", exchange 
-> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_VERSION, 
"v1alpha1");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
-        });
-        List<Map<String, Object>> result = 
ex2.getMessage().getBody(List.class);
 
         Exchange ex3 = template.request("direct:deleteCustomResource", 
exchange -> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE_NAME, 
"createtest");
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_INSTANCE_NAME, 
"samplecr");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"testnamespace");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
@@ -182,10 +188,17 @@ public class KubernetesCustomResourcesProducerTest 
extends KubernetesTestSupport
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
         });
 
-        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/test/githubsources")
-                .andReturn(200, "").once();
+        assertNotNull(ex3.getMessage());
+        
assertTrue(ex3.getMessage().getHeader(KubernetesConstants.KUBERNETES_DELETE_RESULT,
 Boolean.class));
+    }
+
+    @Test
+    @Order(5)
+    public void testListNotFound() {
+        
server.expect().get().withPath("/apis/sources.knative.dev/v1alpha1/namespaces/testnamespace/githubsources")
+                .andReturn(404, "").once();
         Exchange ex4 = template.request("direct:listCustomResources", exchange 
-> {
-            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"test");
+            
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, 
"testnamespace");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_NAME, 
"githubsources.sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_GROUP, 
"sources.knative.dev");
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_SCOPE, 
"Namespaced");
@@ -193,9 +206,8 @@ public class KubernetesCustomResourcesProducerTest extends 
KubernetesTestSupport
             
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CRD_PLURAL, 
"githubsources");
         });
 
-        List<Map<String, Object>> result1 = 
ex4.getMessage().getBody(List.class);
-
-        assertEquals(0, result1.size());
+        assertNotNull(ex4.getMessage());
+        assertNull(ex4.getMessage().getBody());
     }
 
     @Override
diff --git a/components/camel-kubernetes/src/test/resources/log4j2.properties 
b/components/camel-kubernetes/src/test/resources/log4j2.properties
index f0bdf54..4bf541d 100644
--- a/components/camel-kubernetes/src/test/resources/log4j2.properties
+++ b/components/camel-kubernetes/src/test/resources/log4j2.properties
@@ -28,3 +28,9 @@ logger.kubernetes.name = org.apache.camel.component.kubernetes
 logger.kubernetes.level = DEBUG
 rootLogger.level = INFO
 rootLogger.appenderRef.file.ref = file
+
+
+logger.k8s-client.name = io.fabric8
+logger.k8s-client.level = DEBUG
+logger.k8s-client.additivity = false
+logger.k8s-client.appenderRef.file.ref = file
diff --git 
a/components/camel-kubernetes/src/test/resources/org/apache/camel/component/kubernetes/producer/sample-cr.json
 
b/components/camel-kubernetes/src/test/resources/org/apache/camel/component/kubernetes/producer/sample-cr.json
new file mode 100644
index 0000000..7b1f182
--- /dev/null
+++ 
b/components/camel-kubernetes/src/test/resources/org/apache/camel/component/kubernetes/producer/sample-cr.json
@@ -0,0 +1,30 @@
+{
+  "apiVersion": "sources.knative.dev/v1alpha1",
+  "kind": "GitHubSource",
+  "metadata": {
+    "name": "samplecr"
+  },
+  "spec": {
+    "ownerAndRepository": "akihikokuroda/sample",
+    "accessToken": {
+      "secretKeyRef": {
+        "name": "githubsecret",
+        "key": "accessToken"
+      }
+    },
+    "secretToken": {
+      "secretKeyRef": {
+        "name": "githubsecret",
+        "key": "secretToken"
+      }
+    }
+  },
+  "githubAPIURL": "https://api.github.com/";,
+  "sink": {
+    "ref": {
+      "apiVersion": "messaging.knative.dev/v1beta1",
+      "kind": "Channel",
+      "name": "github"
+    }
+  }
+}
diff --git a/parent/pom.xml b/parent/pom.xml
index 2a5a02c..156fb84 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -344,8 +344,8 @@
         <jzlib-version>1.1.3</jzlib-version>
         <kafka-version>2.8.0</kafka-version>
         <kotlin-version>1.5.21</kotlin-version>
-        <kubernetes-client-version>5.4.1</kubernetes-client-version>
-        <kubernetes-model-version>5.4.1</kubernetes-model-version>
+        <kubernetes-client-version>5.6.0</kubernetes-client-version>
+        <kubernetes-model-version>5.6.0</kubernetes-model-version>
         <kudu-version>1.14.0</kudu-version>
         <leveldbjni-version>1.8</leveldbjni-version>
         <leveldb-api-version>0.12</leveldb-api-version>

Reply via email to