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>