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")


Reply via email to