From cf243070c4ab6ea5ffc940750f669888eb697ceb Mon Sep 17 00:00:00 2001 From: Gytis Trikleris Date: Mon, 4 Jun 2018 19:44:47 +0200 Subject: [PATCH] KubernetesHelper#removeConfigMapEntry --- .../kubernetes/leader/KubernetesHelper.java | 16 ++++++++++-- .../leader/KubernetesHelperTest.java | 25 +++++++++++++++++-- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/spring-cloud-kubernetes-leader/src/main/java/org/springframework/cloud/kubernetes/leader/KubernetesHelper.java b/spring-cloud-kubernetes-leader/src/main/java/org/springframework/cloud/kubernetes/leader/KubernetesHelper.java index ec5f71ea..2a485e69 100644 --- a/spring-cloud-kubernetes-leader/src/main/java/org/springframework/cloud/kubernetes/leader/KubernetesHelper.java +++ b/spring-cloud-kubernetes-leader/src/main/java/org/springframework/cloud/kubernetes/leader/KubernetesHelper.java @@ -79,15 +79,27 @@ public class KubernetesHelper { .create(newConfigMap); } - public void updateConfigMap(ConfigMap configMap, Map newData) { + public void updateConfigMapEntry(ConfigMap configMap, Map newData) { ConfigMap newConfigMap = new ConfigMapBuilder(configMap) .addToData(newData) .build(); + updateConfigMap(configMap, newConfigMap); + } + + public void removeConfigMapEntry(ConfigMap configMap, String key) { + ConfigMap newConfigMap = new ConfigMapBuilder(configMap) + .removeFromData(key) + .build(); + + updateConfigMap(configMap, newConfigMap); + } + + private void updateConfigMap(ConfigMap oldConfigMap, ConfigMap newConfigMap) { kubernetesClient.configMaps() .inNamespace(leaderProperties.getNamespace(kubernetesClient.getNamespace())) .withName(leaderProperties.getConfigMapName()) - .lockResourceVersion(configMap.getMetadata().getResourceVersion()) + .lockResourceVersion(oldConfigMap.getMetadata().getResourceVersion()) .replace(newConfigMap); } diff --git a/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/KubernetesHelperTest.java b/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/KubernetesHelperTest.java index 84678955..04789163 100644 --- a/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/KubernetesHelperTest.java +++ b/spring-cloud-kubernetes-leader/src/test/java/org/springframework/cloud/kubernetes/leader/KubernetesHelperTest.java @@ -143,7 +143,7 @@ public class KubernetesHelperTest { } @Test - public void shouldUpdateConfigMap() { + public void shouldUpdateConfigMapEntry() { given(mockConfigMap.getMetadata()).willReturn(mockObjectMeta); given(mockObjectMeta.getResourceVersion()).willReturn("test-version"); @@ -153,7 +153,7 @@ public class KubernetesHelperTest { given(configMapResource.lockResourceVersion("test-version")).willReturn(configMapReplaceable); Map data = Collections.singletonMap("test-key", "test-value"); - kubernetesHelper.updateConfigMap(mockConfigMap, data); + kubernetesHelper.updateConfigMapEntry(mockConfigMap, data); ArgumentCaptor configMapCaptor = ArgumentCaptor.forClass(ConfigMap.class); verify(configMapReplaceable).replace(configMapCaptor.capture()); @@ -162,4 +162,25 @@ public class KubernetesHelperTest { assertThat(configMap.getData()).containsEntry("test-key", "test-value"); } + @Test + public void shouldRemoveConfigMapEntry() { + Map data = Collections.singletonMap("test-key", "test-value"); + given(mockConfigMap.getData()).willReturn(data); + given(mockConfigMap.getMetadata()).willReturn(mockObjectMeta); + given(mockObjectMeta.getResourceVersion()).willReturn("test-version"); + + given(mockKubernetesClient.configMaps()).willReturn(configMapMixedOperation); + given(configMapMixedOperation.inNamespace(NAMESPACE)).willReturn(configMapNonNamespaceOperation); + given(configMapNonNamespaceOperation.withName(NAME)).willReturn(configMapResource); + given(configMapResource.lockResourceVersion("test-version")).willReturn(configMapReplaceable); + + kubernetesHelper.removeConfigMapEntry(mockConfigMap, "test-key"); + + ArgumentCaptor configMapCaptor = ArgumentCaptor.forClass(ConfigMap.class); + verify(configMapReplaceable).replace(configMapCaptor.capture()); + + ConfigMap configMap = configMapCaptor.getValue(); + assertThat(configMap.getData()).doesNotContainKeys("test-key"); + } + }