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 2022/10/07 14:00:14 UTC
[camel] 03/04: CAMEL-17438: camel-kubernetes - Improve code coverage
This is an automated email from the ASF dual-hosted git repository.
nfilotto pushed a commit to branch CAMEL-17438/add-update-to-producers
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e669851d65e3d9ce72ff3d19f89b97ae2e49232a
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Fri Oct 7 11:46:20 2022 +0200
CAMEL-17438: camel-kubernetes - Improve code coverage
---
.../producer/KubernetesConfigMapsProducerTest.java | 24 +++++++++++++
.../KubernetesDeploymentsProducerTest.java | 28 +++++++++++++++
.../producer/KubernetesHPAProducerTest.java | 28 +++++++++++++++
.../producer/KubernetesJobProducerTest.java | 41 ++++++++++++++++++++++
.../producer/KubernetesNamespacesProducerTest.java | 20 +++++++++++
...ernetesPersistentVolumesClaimsProducerTest.java | 29 +++++++++++++++
.../producer/KubernetesPodsProducerTest.java | 26 ++++++++++++++
...bernetesReplicationControllersProducerTest.java | 28 +++++++++++++++
.../KubernetesResourcesQuotaProducerTest.java | 29 +++++++++++++++
.../producer/KubernetesSecretsProducerTest.java | 17 +++++++++
.../KubernetesServiceAccountsProducerTest.java | 22 ++++++++++--
.../producer/KubernetesServicesProducerTest.java | 27 ++++++++++++++
.../OpenshiftDeploymentConfigsProducerTest.java | 28 +++++++++++++++
13 files changed, 345 insertions(+), 2 deletions(-)
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
index a13cd12bfba..2327dae6dd3 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesConfigMapsProducerTest.java
@@ -109,6 +109,28 @@ public class KubernetesConfigMapsProducerTest extends KubernetesTestSupport {
assertEquals("cm1", result.getMetadata().getName());
}
+ @Test
+ void createConfigMap() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ Map<String, String> data = Map.of("my.data.key", "my.data.value");
+ ConfigMap cm1 = new ConfigMapBuilder().withNewMetadata().withName("cm1").withNamespace("test").withLabels(labels).and()
+ .withData(data).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/configmaps").andReturn(200, cm1).once();
+
+ Exchange ex = template.request("direct:createConfigMap", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAPS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_NAME, "cm1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_CONFIGMAP_DATA, data);
+ });
+
+ ConfigMap result = ex.getMessage().getBody(ConfigMap.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("cm1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ }
+
@Test
void deleteConfigMap() {
ConfigMap cm1 = new ConfigMapBuilder().withNewMetadata().withName("cm1").withNamespace("test").and().build();
@@ -135,6 +157,8 @@ public class KubernetesConfigMapsProducerTest extends KubernetesTestSupport {
.to("kubernetes-config-maps:///?kubernetesClient=#kubernetesClient&operation=listConfigMapsByLabels");
from("direct:getConfigMap")
.to("kubernetes-config-maps:///?kubernetesClient=#kubernetesClient&operation=getConfigMap");
+ from("direct:createConfigMap")
+ .to("kubernetes-config-maps:///?kubernetesClient=#kubernetesClient&operation=createConfigMap");
from("direct:deleteConfigMap")
.to("kubernetes-config-maps:///?kubernetesClient=#kubernetesClient&operation=deleteConfigMap");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesDeploymentsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesDeploymentsProducerTest.java
index 9275fc15540..b6ba664ad6b 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesDeploymentsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesDeploymentsProducerTest.java
@@ -23,6 +23,8 @@ import java.util.Map;
import io.fabric8.kubernetes.api.model.apps.Deployment;
import io.fabric8.kubernetes.api.model.apps.DeploymentBuilder;
import io.fabric8.kubernetes.api.model.apps.DeploymentListBuilder;
+import io.fabric8.kubernetes.api.model.apps.DeploymentSpec;
+import io.fabric8.kubernetes.api.model.apps.DeploymentSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -76,6 +78,30 @@ public class KubernetesDeploymentsProducerTest extends KubernetesTestSupport {
assertEquals(3, result.size());
}
+ @Test
+ void createDeployment() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ DeploymentSpec spec = new DeploymentSpecBuilder().withReplicas(13).build();
+ Deployment de1
+ = new DeploymentBuilder().withNewMetadata().withName("de1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/apis/apps/v1/namespaces/test/deployments").andReturn(200, de1).once();
+
+ Exchange ex = template.request("direct:createDeployment", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENTS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENT_NAME, "de1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENT_SPEC, spec);
+ });
+
+ Deployment result = ex.getMessage().getBody(Deployment.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("de1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(13, result.getSpec().getReplicas());
+ }
+
@Test
void deleteDeployment() {
Deployment de1 = new DeploymentBuilder().withNewMetadata().withNamespace("test").withName("de1")
@@ -134,6 +160,8 @@ public class KubernetesDeploymentsProducerTest extends KubernetesTestSupport {
.toF("kubernetes-deployments:///?kubernetesClient=#kubernetesClient&operation=listDeploymentsByLabels");
from("direct:deleteDeployment")
.toF("kubernetes-deployments:///?kubernetesClient=#kubernetesClient&operation=deleteDeployment");
+ from("direct:createDeployment")
+ .toF("kubernetes-deployments:///?kubernetesClient=#kubernetesClient&operation=createDeployment");
from("direct:scaleDeployment")
.toF("kubernetes-deployments:///?kubernetesClient=#kubernetesClient&operation=scaleDeployment");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesHPAProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesHPAProducerTest.java
index 95e08e2aa84..ad381a809c8 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesHPAProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesHPAProducerTest.java
@@ -24,6 +24,8 @@ import io.fabric8.kubernetes.api.model.PodListBuilder;
import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscaler;
import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscalerBuilder;
import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscalerListBuilder;
+import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscalerSpec;
+import io.fabric8.kubernetes.api.model.autoscaling.v1.HorizontalPodAutoscalerSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -99,6 +101,31 @@ public class KubernetesHPAProducerTest extends KubernetesTestSupport {
assertEquals("hpa1", result.getMetadata().getName());
}
+ @Test
+ void createHPATest() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ HorizontalPodAutoscalerSpec spec = new HorizontalPodAutoscalerSpecBuilder().withMinReplicas(13).build();
+ HorizontalPodAutoscaler hpa1 = new HorizontalPodAutoscalerBuilder().withNewMetadata().withName("hpa1")
+ .withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/apis/autoscaling/v1/namespaces/test/horizontalpodautoscalers").andReturn(200, hpa1)
+ .once();
+
+ Exchange ex = template.request("direct:createHPA", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_HPA_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_HPA_NAME, "hpa1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_HPA_SPEC, spec);
+ });
+
+ HorizontalPodAutoscaler result = ex.getMessage().getBody(HorizontalPodAutoscaler.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("hpa1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(13, result.getSpec().getMinReplicas());
+ }
+
@Test
void deleteHPATest() {
HorizontalPodAutoscaler hpa1
@@ -125,6 +152,7 @@ public class KubernetesHPAProducerTest extends KubernetesTestSupport {
from("direct:listByLabels")
.to("kubernetes-hpa:///?kubernetesClient=#kubernetesClient&operation=listHPAByLabels");
from("direct:getHPA").to("kubernetes-hpa:///?kubernetesClient=#kubernetesClient&operation=getHPA");
+ from("direct:createHPA").to("kubernetes-hpa:///?kubernetesClient=#kubernetesClient&operation=createHPA");
from("direct:deleteHPA").to("kubernetes-hpa:///?kubernetesClient=#kubernetesClient&operation=deleteHPA");
}
};
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesJobProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesJobProducerTest.java
index 57e560bc64a..3e0b0ab134d 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesJobProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesJobProducerTest.java
@@ -23,6 +23,8 @@ import java.util.Map;
import io.fabric8.kubernetes.api.model.batch.v1.Job;
import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder;
import io.fabric8.kubernetes.api.model.batch.v1.JobListBuilder;
+import io.fabric8.kubernetes.api.model.batch.v1.JobSpec;
+import io.fabric8.kubernetes.api.model.batch.v1.JobSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -89,6 +91,43 @@ public class KubernetesJobProducerTest extends KubernetesTestSupport {
assertNotNull(result);
}
+ @Test
+ void createJobTest() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ JobSpec spec = new JobSpecBuilder().withBackoffLimit(13).build();
+ Job j1 = new JobBuilder().withNewMetadata().withName("j1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/apis/batch/v1/namespaces/test/jobs").andReturn(200, j1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_NAME, "j1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_SPEC, spec);
+ });
+
+ Job result = ex.getMessage().getBody(Job.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("j1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(13, result.getSpec().getBackoffLimit());
+ }
+
+ @Test
+ void deleteJobTest() {
+ Job j1 = new JobBuilder().withNewMetadata().withName("j1").withNamespace("test").and().build();
+ server.expect().delete().withPath("/apis/batch/v1/namespaces/test/jobs/j1").andReturn(200, j1)
+ .once();
+
+ Exchange ex = template.request("direct:delete", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_JOB_NAME, "j1");
+ });
+
+ assertNotNull(ex.getMessage());
+ }
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@@ -99,6 +138,8 @@ public class KubernetesJobProducerTest extends KubernetesTestSupport {
from("direct:list").to("kubernetes-job:foo?operation=listJob");
from("direct:listByLabels").to("kubernetes-job:foo?operation=listJobByLabels");
from("direct:get").to("kubernetes-job:foo?operation=getJob");
+ from("direct:create").to("kubernetes-job:foo?operation=createJob");
+ from("direct:delete").to("kubernetes-job:foo?operation=deleteJob");
}
};
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesNamespacesProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesNamespacesProducerTest.java
index f2571e0aa0b..247e3c7f8eb 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesNamespacesProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesNamespacesProducerTest.java
@@ -17,6 +17,7 @@
package org.apache.camel.component.kubernetes.producer;
import java.util.List;
+import java.util.Map;
import io.fabric8.kubernetes.api.model.Namespace;
import io.fabric8.kubernetes.api.model.NamespaceBuilder;
@@ -71,6 +72,23 @@ public class KubernetesNamespacesProducerTest extends KubernetesTestSupport {
}
+ @Test
+ void createNamespace() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ Namespace ns1 = new NamespaceBuilder().withNewMetadata().withName("ns1").withLabels(labels).endMetadata().build();
+ server.expect().post().withPath("/api/v1/namespaces").andReturn(200, ns1).once();
+
+ Exchange ex = template.request("direct:createNamespace", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_LABELS, labels);
+ });
+
+ Namespace result = ex.getMessage().getBody(Namespace.class);
+
+ assertEquals("ns1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ }
+
@Test
void deleteNamespace() {
Namespace ns1 = new NamespaceBuilder().withNewMetadata().withName("ns1").endMetadata().build();
@@ -91,6 +109,8 @@ public class KubernetesNamespacesProducerTest extends KubernetesTestSupport {
public void configure() {
from("direct:list").to("kubernetes-namespaces:///?kubernetesClient=#kubernetesClient&operation=listNamespaces");
from("direct:getNs").to("kubernetes-namespaces:///?kubernetesClient=#kubernetesClient&operation=getNamespace");
+ from("direct:createNamespace")
+ .to("kubernetes-namespaces:///?kubernetesClient=#kubernetesClient&operation=createNamespace");
from("direct:deleteNamespace")
.to("kubernetes-namespaces:///?kubernetesClient=#kubernetesClient&operation=deleteNamespace");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPersistentVolumesClaimsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPersistentVolumesClaimsProducerTest.java
index 88cfbb28e30..00ded9191b3 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPersistentVolumesClaimsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPersistentVolumesClaimsProducerTest.java
@@ -21,8 +21,11 @@ import java.util.List;
import java.util.Map;
import io.fabric8.kubernetes.api.model.ObjectMeta;
+import io.fabric8.kubernetes.api.model.PersistentVolumeClaim;
import io.fabric8.kubernetes.api.model.PersistentVolumeClaimBuilder;
import io.fabric8.kubernetes.api.model.PersistentVolumeClaimListBuilder;
+import io.fabric8.kubernetes.api.model.PersistentVolumeClaimSpec;
+import io.fabric8.kubernetes.api.model.PersistentVolumeClaimSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -79,6 +82,30 @@ public class KubernetesPersistentVolumesClaimsProducerTest extends KubernetesTes
assertEquals(3, result.size());
}
+ @Test
+ void createPersistentVolumeClaim() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ PersistentVolumeClaimSpec spec = new PersistentVolumeClaimSpecBuilder().withVolumeName("SomeVolumeName").build();
+ PersistentVolumeClaim vc1 = new PersistentVolumeClaimBuilder().withNewMetadata().withName("vc1").withNamespace("test")
+ .withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/persistentvolumeclaims").andReturn(200, vc1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PERSISTENT_VOLUMES_CLAIMS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PERSISTENT_VOLUME_CLAIM_NAME, "vc1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PERSISTENT_VOLUME_CLAIM_SPEC, spec);
+ });
+
+ PersistentVolumeClaim result = ex.getMessage().getBody(PersistentVolumeClaim.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("vc1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals("SomeVolumeName", result.getSpec().getVolumeName());
+ }
+
@Test
void deletePersistentVolumeClaim() {
ObjectMeta meta = new ObjectMeta();
@@ -104,6 +131,8 @@ public class KubernetesPersistentVolumesClaimsProducerTest extends KubernetesTes
"kubernetes-persistent-volumes-claims:///?kubernetesClient=#kubernetesClient&operation=listPersistentVolumesClaims");
from("direct:listByLabels").to(
"kubernetes-persistent-volumes-claims:///?kubernetesClient=#kubernetesClient&operation=listPersistentVolumesClaimsByLabels");
+ from("direct:create").to(
+ "kubernetes-persistent-volumes-claims:///?kubernetesClient=#kubernetesClient&operation=createPersistentVolumeClaim");
from("direct:delete").to(
"kubernetes-persistent-volumes-claims:///?kubernetesClient=#kubernetesClient&operation=deletePersistentVolumeClaim");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPodsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPodsProducerTest.java
index 5f437db56c6..2533aaf7aa6 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPodsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesPodsProducerTest.java
@@ -23,6 +23,8 @@ import java.util.Map;
import io.fabric8.kubernetes.api.model.Pod;
import io.fabric8.kubernetes.api.model.PodBuilder;
import io.fabric8.kubernetes.api.model.PodListBuilder;
+import io.fabric8.kubernetes.api.model.PodSpec;
+import io.fabric8.kubernetes.api.model.PodSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -97,6 +99,29 @@ public class KubernetesPodsProducerTest extends KubernetesTestSupport {
assertEquals("pod1", result.getMetadata().getName());
}
+ @Test
+ void createPod() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ PodSpec spec = new PodSpecBuilder().withHostname("SomeHostname").build();
+ Pod pod1 = new PodBuilder().withNewMetadata().withName("pod1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/pods").andReturn(200, pod1).once();
+
+ Exchange ex = template.request("direct:createPod", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_PODS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_NAME, "pod1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_POD_SPEC, spec);
+ });
+
+ Pod result = ex.getMessage().getBody(Pod.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("pod1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals("SomeHostname", result.getSpec().getHostname());
+ }
+
@Test
void deletePod() {
Pod pod1 = new PodBuilder().withNewMetadata().withName("pod1").withNamespace("test").and().build();
@@ -121,6 +146,7 @@ public class KubernetesPodsProducerTest extends KubernetesTestSupport {
from("direct:listByLabels")
.to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=listPodsByLabels");
from("direct:getPod").to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=getPod");
+ from("direct:createPod").to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=createPod");
from("direct:deletePod").to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=deletePod");
}
};
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesReplicationControllersProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesReplicationControllersProducerTest.java
index c3c1499dd8d..0061fcaf449 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesReplicationControllersProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesReplicationControllersProducerTest.java
@@ -24,6 +24,8 @@ import java.util.concurrent.TimeUnit;
import io.fabric8.kubernetes.api.model.ReplicationController;
import io.fabric8.kubernetes.api.model.ReplicationControllerBuilder;
import io.fabric8.kubernetes.api.model.ReplicationControllerListBuilder;
+import io.fabric8.kubernetes.api.model.ReplicationControllerSpec;
+import io.fabric8.kubernetes.api.model.ReplicationControllerSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -96,6 +98,30 @@ public class KubernetesReplicationControllersProducerTest extends KubernetesTest
assertNotNull(result);
}
+ @Test
+ void createReplicationController() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ ReplicationControllerSpec spec = new ReplicationControllerSpecBuilder().withReplicas(13).build();
+ ReplicationController rc1 = new ReplicationControllerBuilder().withNewMetadata().withName("rc1").withNamespace("test")
+ .withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/replicationcontrollers").andReturn(200, rc1).once();
+
+ Exchange ex = template.request("direct:createReplicationController", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_REPLICATION_CONTROLLERS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_REPLICATION_CONTROLLER_NAME, "rc1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_REPLICATION_CONTROLLER_SPEC, spec);
+ });
+
+ ReplicationController result = ex.getMessage().getBody(ReplicationController.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("rc1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(13, result.getSpec().getReplicas());
+ }
+
@Test
void deleteReplicationController() {
server.expect().withPath("/api/v1/namespaces/test/replicationcontrollers/repl1")
@@ -156,6 +182,8 @@ public class KubernetesReplicationControllersProducerTest extends KubernetesTest
"kubernetes-replication-controllers:///?kubernetesClient=#kubernetesClient&operation=getReplicationController");
from("direct:scaleReplicationController").to(
"kubernetes-replication-controllers:///?kubernetesClient=#kubernetesClient&operation=scaleReplicationController");
+ from("direct:createReplicationController").to(
+ "kubernetes-replication-controllers:///?kubernetesClient=#kubernetesClient&operation=createReplicationController");
from("direct:deleteReplicationController").to(
"kubernetes-replication-controllers:///?kubernetesClient=#kubernetesClient&operation=deleteReplicationController");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesResourcesQuotaProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesResourcesQuotaProducerTest.java
index 4b799d1a03f..4a0514169db 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesResourcesQuotaProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesResourcesQuotaProducerTest.java
@@ -17,10 +17,13 @@
package org.apache.camel.component.kubernetes.producer;
import java.util.List;
+import java.util.Map;
import io.fabric8.kubernetes.api.model.ResourceQuota;
import io.fabric8.kubernetes.api.model.ResourceQuotaBuilder;
import io.fabric8.kubernetes.api.model.ResourceQuotaListBuilder;
+import io.fabric8.kubernetes.api.model.ResourceQuotaSpec;
+import io.fabric8.kubernetes.api.model.ResourceQuotaSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -56,6 +59,30 @@ public class KubernetesResourcesQuotaProducerTest extends KubernetesTestSupport
assertEquals(3, result.size());
}
+ @Test
+ void createResourceQuota() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ ResourceQuotaSpec spec = new ResourceQuotaSpecBuilder().withScopes("SomeScope").build();
+ ResourceQuota rq1
+ = new ResourceQuotaBuilder().withNewMetadata().withName("rq1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/resourcequotas").andReturn(200, rq1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_RESOURCES_QUOTA_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_RESOURCES_QUOTA_NAME, "rq1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_RESOURCE_QUOTA_SPEC, spec);
+ });
+
+ ResourceQuota result = ex.getMessage().getBody(ResourceQuota.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("rq1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(List.of("SomeScope"), result.getSpec().getScopes());
+ }
+
@Test
void deleteResourceQuota() {
ResourceQuota rq1 = new ResourceQuotaBuilder().withNewMetadata().withName("rq1").withNamespace("test").and().build();
@@ -78,6 +105,8 @@ public class KubernetesResourcesQuotaProducerTest extends KubernetesTestSupport
public void configure() {
from("direct:list")
.to("kubernetes-resources-quota:///?kubernetesClient=#kubernetesClient&operation=listResourcesQuota");
+ from("direct:create")
+ .to("kubernetes-resources-quota:///?kubernetesClient=#kubernetesClient&operation=createResourceQuota");
from("direct:delete")
.to("kubernetes-resources-quota:///?kubernetesClient=#kubernetesClient&operation=deleteResourceQuota");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesSecretsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesSecretsProducerTest.java
index 44ad238d66d..f83c45cd87d 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesSecretsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesSecretsProducerTest.java
@@ -91,6 +91,22 @@ public class KubernetesSecretsProducerTest extends KubernetesTestSupport {
assertNotNull(result);
}
+ @Test
+ void createSecret() {
+ Secret sc1 = new SecretBuilder().withNewMetadata().withName("sc1").withNamespace("test").and().build();
+ server.expect().post().withPath("/api/v1/namespaces/test/secrets").andReturn(200, sc1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SECRET, sc1);
+ });
+
+ Secret result = ex.getMessage().getBody(Secret.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("sc1", result.getMetadata().getName());
+ }
+
@Test
void deleteSecret() {
Secret sc1 = new SecretBuilder().withNewMetadata().withName("sc1").withNamespace("test").and().build();
@@ -115,6 +131,7 @@ public class KubernetesSecretsProducerTest extends KubernetesTestSupport {
from("direct:listByLabels")
.to("kubernetes-secrets:///?kubernetesClient=#kubernetesClient&operation=listSecretsByLabels");
from("direct:get").to("kubernetes-secrets:///?kubernetesClient=#kubernetesClient&operation=getSecret");
+ from("direct:create").to("kubernetes-secrets:///?kubernetesClient=#kubernetesClient&operation=createSecret");
from("direct:delete").to("kubernetes-secrets:///?kubernetesClient=#kubernetesClient&operation=deleteSecret");
}
};
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
index 7a70d47ed31..833a72cfca5 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServiceAccountsProducerTest.java
@@ -77,11 +77,27 @@ public class KubernetesServiceAccountsProducerTest extends KubernetesTestSupport
assertEquals(3, result.size());
}
+ @Test
+ void createServiceAccount() {
+ ServiceAccount sa1 = new ServiceAccountBuilder().withNewMetadata().withName("sa1").withNamespace("test").and().build();
+ server.expect().post().withPath("/api/v1/namespaces/test/serviceaccounts").andReturn(200, sa1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT, sa1);
+ });
+
+ ServiceAccount result = ex.getMessage().getBody(ServiceAccount.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("sa1", result.getMetadata().getName());
+ }
+
@Test
void deleteServiceAccount() {
- ServiceAccount pod1 = new ServiceAccountBuilder().withNewMetadata().withName("sa1").withNamespace("test").and().build();
+ ServiceAccount sa1 = new ServiceAccountBuilder().withNewMetadata().withName("sa1").withNamespace("test").and().build();
- server.expect().withPath("/api/v1/namespaces/test/serviceaccounts/sa1").andReturn(200, pod1).once();
+ server.expect().withPath("/api/v1/namespaces/test/serviceaccounts/sa1").andReturn(200, sa1).once();
Exchange ex = template.request("direct:delete", exchange -> {
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_ACCOUNT_NAME, "sa1");
@@ -101,6 +117,8 @@ public class KubernetesServiceAccountsProducerTest extends KubernetesTestSupport
.to("kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=listServiceAccounts");
from("direct:listByLabels").to(
"kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=listServiceAccountsByLabels");
+ from("direct:create").to(
+ "kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=createServiceAccount");
from("direct:delete").to(
"kubernetes-service-accounts:///?kubernetesClient=#kubernetesClient&operation=deleteServiceAccount");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServicesProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServicesProducerTest.java
index 15b59aa0782..9c981ccb341 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServicesProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/producer/KubernetesServicesProducerTest.java
@@ -24,6 +24,8 @@ import io.fabric8.kubernetes.api.model.PodListBuilder;
import io.fabric8.kubernetes.api.model.Service;
import io.fabric8.kubernetes.api.model.ServiceBuilder;
import io.fabric8.kubernetes.api.model.ServiceListBuilder;
+import io.fabric8.kubernetes.api.model.ServiceSpec;
+import io.fabric8.kubernetes.api.model.ServiceSpecBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
@@ -90,6 +92,29 @@ public class KubernetesServicesProducerTest extends KubernetesTestSupport {
assertNotNull(result);
}
+ @Test
+ void createService() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ ServiceSpec spec = new ServiceSpecBuilder().withClusterIP("SomeClusterIp").build();
+ Service se1 = new ServiceBuilder().withNewMetadata().withName("se1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/api/v1/namespaces/test/services").andReturn(200, se1).once();
+
+ Exchange ex = template.request("direct:createService", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_NAME, "se1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_SERVICE_SPEC, spec);
+ });
+
+ Service result = ex.getMessage().getBody(Service.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("se1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals("SomeClusterIp", result.getSpec().getClusterIP());
+ }
+
@Test
void deleteService() {
Service se1 = new ServiceBuilder().withNewMetadata().withName("se1").withNamespace("test").and().build();
@@ -116,6 +141,8 @@ public class KubernetesServicesProducerTest extends KubernetesTestSupport {
.to("kubernetes-services:///?kubernetesClient=#kubernetesClient&operation=listServicesByLabels");
from("direct:getServices")
.to("kubernetes-services:///?kubernetesClient=#kubernetesClient&operation=getService");
+ from("direct:createService")
+ .to("kubernetes-services:///?kubernetesClient=#kubernetesClient&operation=createService");
from("direct:deleteService")
.to("kubernetes-services:///?kubernetesClient=#kubernetesClient&operation=deleteService");
}
diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/openshift/producer/OpenshiftDeploymentConfigsProducerTest.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/openshift/producer/OpenshiftDeploymentConfigsProducerTest.java
index 393b6b075a2..1c39736a182 100644
--- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/openshift/producer/OpenshiftDeploymentConfigsProducerTest.java
+++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/openshift/producer/OpenshiftDeploymentConfigsProducerTest.java
@@ -26,6 +26,8 @@ import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
import io.fabric8.openshift.api.model.DeploymentConfig;
import io.fabric8.openshift.api.model.DeploymentConfigBuilder;
import io.fabric8.openshift.api.model.DeploymentConfigListBuilder;
+import io.fabric8.openshift.api.model.DeploymentConfigSpec;
+import io.fabric8.openshift.api.model.DeploymentConfigSpecBuilder;
import org.apache.camel.BindToRegistry;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
@@ -76,6 +78,30 @@ public class OpenshiftDeploymentConfigsProducerTest extends KubernetesTestSuppor
assertEquals(3, result.size());
}
+ @Test
+ void createDeploymentConfig() {
+ Map<String, String> labels = Map.of("my.label.key", "my.label.value");
+ DeploymentConfigSpec spec = new DeploymentConfigSpecBuilder().withReplicas(13).build();
+ DeploymentConfig de1
+ = new DeploymentConfigBuilder().withNewMetadata().withName("de1").withNamespace("test").withLabels(labels).and()
+ .withSpec(spec).build();
+ server.expect().post().withPath("/apis/apps.openshift.io/v1/namespaces/test/deploymentconfigs").andReturn(200, de1).once();
+
+ Exchange ex = template.request("direct:create", exchange -> {
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_NAMESPACE_NAME, "test");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENTS_LABELS, labels);
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENT_NAME, "de1");
+ exchange.getIn().setHeader(KubernetesConstants.KUBERNETES_DEPLOYMENT_CONFIG_SPEC, spec);
+ });
+
+ DeploymentConfig result = ex.getMessage().getBody(DeploymentConfig.class);
+
+ assertEquals("test", result.getMetadata().getNamespace());
+ assertEquals("de1", result.getMetadata().getName());
+ assertEquals(labels, result.getMetadata().getLabels());
+ assertEquals(13, result.getSpec().getReplicas());
+ }
+
@Test
void deleteDeploymentConfig() {
DeploymentConfig de1 = new DeploymentConfigBuilder().withNewMetadata().withNamespace("test").withName("dc1")
@@ -134,6 +160,8 @@ public class OpenshiftDeploymentConfigsProducerTest extends KubernetesTestSuppor
.toF("openshift-deploymentconfigs:///?kubernetesClient=#kubernetesClient&operation=listDeploymentConfigs");
from("direct:listByLabels")
.toF("openshift-deploymentconfigs:///?kubernetesClient=#kubernetesClient&operation=listDeploymentConfigsByLabels");
+ from("direct:create")
+ .toF("openshift-deploymentconfigs:///?kubernetesClient=#kubernetesClient&operation=createDeploymentConfig");
from("direct:delete")
.toF("openshift-deploymentconfigs:///?kubernetesClient=#kubernetesClient&operation=deleteDeploymentConfig");
from("direct:scale")