You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@heron.apache.org by sa...@apache.org on 2022/05/02 17:28:52 UTC
[incubator-heron] 02/02: [K8s] switched to using Volume Factory for Volume Mount generation.
This is an automated email from the ASF dual-hosted git repository.
saadurrahman pushed a commit to branch saadurrahman/3821-Remove-Deprecated-Volumes-K8s-dev
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git
commit 44d859e70a95830029b347d9afe061c30e16bd69
Author: Saad Ur Rahman <sa...@apache.org>
AuthorDate: Mon May 2 13:28:40 2022 -0400
[K8s] switched to using Volume Factory for Volume Mount generation.
---
.../heron/scheduler/kubernetes/V1Controller.java | 41 +--------
.../scheduler/kubernetes/V1ControllerTest.java | 97 ----------------------
2 files changed, 4 insertions(+), 134 deletions(-)
diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
index a065790df5d..7812ed6aae9 100644
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
+++ b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/V1Controller.java
@@ -80,7 +80,6 @@ import io.kubernetes.client.openapi.models.V1Toleration;
import io.kubernetes.client.openapi.models.V1Volume;
import io.kubernetes.client.openapi.models.V1VolumeBuilder;
import io.kubernetes.client.openapi.models.V1VolumeMount;
-import io.kubernetes.client.openapi.models.V1VolumeMountBuilder;
import io.kubernetes.client.util.PatchUtils;
import io.kubernetes.client.util.Yaml;
import okhttp3.Response;
@@ -1160,38 +1159,6 @@ public class V1Controller extends KubernetesController {
return listOfPVCs;
}
- /**
- * Generates the <code>Volume Mounts</code> to be placed in the <code>Executor</code>
- * and <code>Manager</code> from options on the CLI.
- * @param volumeName Name of the <code>Volume</code>.
- * @param configs Mapping of <code>Volume</code> option <code>key-value</code> configuration pairs.
- * @return A configured <code>V1VolumeMount</code>.
- */
- @VisibleForTesting
- protected V1VolumeMount createVolumeMountsCLI(final String volumeName,
- final Map<KubernetesConstants.VolumeConfigKeys, String> configs) {
- final V1VolumeMount volumeMount = new V1VolumeMountBuilder()
- .withName(volumeName)
- .build();
- for (Map.Entry<KubernetesConstants.VolumeConfigKeys, String> config : configs.entrySet()) {
- switch (config.getKey()) {
- case path:
- volumeMount.mountPath(config.getValue());
- break;
- case subPath:
- volumeMount.subPath(config.getValue());
- break;
- case readOnly:
- volumeMount.readOnly(Boolean.parseBoolean(config.getValue()));
- break;
- default:
- break;
- }
- }
-
- return volumeMount;
- }
-
/**
* Generates the <code>Volume</code>s and <code>Volume Mounts</code> for <code>Persistent Volume Claims</code>s
* to be placed in the <code>Executor</code> and <code>Manager</code> from options on the CLI.
@@ -1220,7 +1187,7 @@ public class V1Controller extends KubernetesController {
.build()
);
}
- volumeMounts.add(createVolumeMountsCLI(volumeName, configs.getValue()));
+ volumeMounts.add(Volumes.get().createMount(volumeName, configs.getValue()));
}
}
@@ -1241,7 +1208,7 @@ public class V1Controller extends KubernetesController {
final V1Volume volume = Volumes.get()
.createVolume(Volumes.VolumeType.EmptyDir, volumeName, configs.getValue());
volumes.add(volume);
- volumeMounts.add(createVolumeMountsCLI(volumeName, configs.getValue()));
+ volumeMounts.add(Volumes.get().createMount(volumeName, configs.getValue()));
}
}
@@ -1262,7 +1229,7 @@ public class V1Controller extends KubernetesController {
final V1Volume volume = Volumes.get()
.createVolume(Volumes.VolumeType.HostPath, volumeName, configs.getValue());
volumes.add(volume);
- volumeMounts.add(createVolumeMountsCLI(volumeName, configs.getValue()));
+ volumeMounts.add(Volumes.get().createMount(volumeName, configs.getValue()));
}
}
@@ -1283,7 +1250,7 @@ public class V1Controller extends KubernetesController {
final V1Volume volume = Volumes.get()
.createVolume(Volumes.VolumeType.NetworkFileSystem, volumeName, configs.getValue());
volumes.add(volume);
- volumeMounts.add(createVolumeMountsCLI(volumeName, configs.getValue()));
+ volumeMounts.add(Volumes.get().createMount(volumeName, configs.getValue()));
}
}
diff --git a/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/V1ControllerTest.java b/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/V1ControllerTest.java
index e9fd8673153..3e667d81fd6 100644
--- a/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/V1ControllerTest.java
+++ b/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/V1ControllerTest.java
@@ -1151,103 +1151,6 @@ public class V1ControllerTest {
}
}
- @Test
- public void testCreateVolumeMountsCLI() {
- final String volumeNamePVC = "volume-name-pvc";
- final String volumeNameHostPath = "volume-name-host-path";
- final String volumeNameEmptyDir = "volume-name-empty-dir";
- final String volumeNameNFS = "volume-name-nfs";
- final String value = "inserted-value";
-
- // Test case container.
- // Input: [0] volume name, [1] volume options
- // Output: The expected <V1VolumeMount>.
- final List<TestTuple<Pair<String, Map<VolumeConfigKeys, String>>, V1VolumeMount>> testCases =
- new LinkedList<>();
-
- // PVC.
- final Map<VolumeConfigKeys, String> configPVC = ImmutableMap.<VolumeConfigKeys, String>builder()
- .put(VolumeConfigKeys.claimName, value)
- .put(VolumeConfigKeys.storageClassName, value)
- .put(VolumeConfigKeys.sizeLimit, value)
- .put(VolumeConfigKeys.accessModes, value)
- .put(VolumeConfigKeys.volumeMode, value)
- .put(VolumeConfigKeys.path, value)
- .put(VolumeConfigKeys.subPath, value)
- .put(VolumeConfigKeys.readOnly, "true")
- .build();
- final V1VolumeMount volumeMountPVC = new V1VolumeMountBuilder()
- .withName(volumeNamePVC)
- .withMountPath(value)
- .withSubPath(value)
- .withReadOnly(true)
- .build();
- testCases.add(new TestTuple<>("PVC volume mount",
- new Pair<>(volumeNamePVC, configPVC), volumeMountPVC));
-
- // Host Path.
- final Map<VolumeConfigKeys, String> configHostPath =
- ImmutableMap.<VolumeConfigKeys, String>builder()
- .put(VolumeConfigKeys.type, "DirectoryOrCreate")
- .put(VolumeConfigKeys.pathOnHost, value)
- .put(VolumeConfigKeys.path, value)
- .put(VolumeConfigKeys.subPath, value)
- .put(VolumeConfigKeys.readOnly, "true")
- .build();
- final V1VolumeMount volumeMountHostPath = new V1VolumeMountBuilder()
- .withName(volumeNameHostPath)
- .withMountPath(value)
- .withSubPath(value)
- .withReadOnly(true)
- .build();
- testCases.add(new TestTuple<>("Host Path volume mount",
- new Pair<>(volumeNameHostPath, configHostPath), volumeMountHostPath));
-
- // Empty Dir.
- final Map<VolumeConfigKeys, String> configEmptyDir =
- ImmutableMap.<VolumeConfigKeys, String>builder()
- .put(VolumeConfigKeys.sizeLimit, value)
- .put(VolumeConfigKeys.medium, "Memory")
- .put(VolumeConfigKeys.path, value)
- .put(VolumeConfigKeys.subPath, value)
- .put(VolumeConfigKeys.readOnly, "true")
- .build();
- final V1VolumeMount volumeMountEmptyDir = new V1VolumeMountBuilder()
- .withName(volumeNameEmptyDir)
- .withMountPath(value)
- .withSubPath(value)
- .withReadOnly(true)
- .build();
- testCases.add(new TestTuple<>("Empty Dir volume mount",
- new Pair<>(volumeNameEmptyDir, configEmptyDir), volumeMountEmptyDir));
-
- // NFS.
- final Map<VolumeConfigKeys, String> configNFS = ImmutableMap.<VolumeConfigKeys, String>builder()
- .put(VolumeConfigKeys.server, "nfs.server.address")
- .put(VolumeConfigKeys.readOnly, "true")
- .put(VolumeConfigKeys.pathOnNFS, value)
- .put(VolumeConfigKeys.path, value)
- .put(VolumeConfigKeys.subPath, value)
- .build();
- final V1VolumeMount volumeMountNFS = new V1VolumeMountBuilder()
- .withName(volumeNameNFS)
- .withMountPath(value)
- .withSubPath(value)
- .withReadOnly(true)
- .build();
- testCases.add(new TestTuple<>("NFS volume mount",
- new Pair<>(volumeNameNFS, configNFS), volumeMountNFS));
-
- // Test loop.
- for (TestTuple<Pair<String, Map<VolumeConfigKeys, String>>, V1VolumeMount> testCase
- : testCases) {
- V1VolumeMount actual = v1ControllerPodTemplate.createVolumeMountsCLI(
- testCase.input.first, testCase.input.second);
- Assert.assertEquals(testCase.description, testCase.expected, actual);
- }
-
- }
-
@Test
public void testCreateVolumeAndMountsEmptyDirCLI() {
final String volumeName = "volume-name-empty-dir";