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 <[email protected]> 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")
