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/03 14:58:06 UTC

[incubator-heron] 03/04: [K8s] generating volume with PVC in Volume Factory.

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 b4d7cd3a70e56b3791ea488e56cc4b5a3bf1821e
Author: Saad Ur Rahman <sa...@apache.org>
AuthorDate: Tue May 3 10:57:11 2022 -0400

    [K8s] generating volume with PVC in Volume Factory.
---
 .../org/apache/heron/scheduler/kubernetes/Volumes.java   | 15 +++++++++++++++
 .../apache/heron/scheduler/kubernetes/VolumesTests.java  | 16 ++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/Volumes.java b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/Volumes.java
index d9e641f78cc..4dcba8fdccb 100644
--- a/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/Volumes.java
+++ b/heron/schedulers/src/java/org/apache/heron/scheduler/kubernetes/Volumes.java
@@ -142,6 +142,21 @@ final class Volumes {
     return claim;
   }
 
+  /**
+   * Generates a <code>Volume</code> with a <code>Persistent Volume Claim</code> inserted.
+   * @param claimName Name of the <code>Persistent Volume Claim</code>.
+   * @param volumeName Name of the <code>Volume</code> to place the <code>Persistent Volume Claim</code> in.
+   * @return Fully configured <code>Volume</code> with <code>Persistent Volume Claim</code> in it.
+   */
+  V1Volume createPersistentVolumeClaim(String claimName, String volumeName) {
+    return new V1VolumeBuilder()
+        .withName(volumeName)
+        .withNewPersistentVolumeClaim()
+          .withClaimName(claimName)
+        .endPersistentVolumeClaim()
+        .build();
+  }
+
   interface IVolumeFactory {
     V1Volume create(String volumeName, Map<KubernetesConstants.VolumeConfigKeys, String> configs);
   }
diff --git a/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/VolumesTests.java b/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/VolumesTests.java
index 1cd7889741b..c457012e342 100644
--- a/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/VolumesTests.java
+++ b/heron/schedulers/tests/java/org/apache/heron/scheduler/kubernetes/VolumesTests.java
@@ -340,4 +340,20 @@ public class VolumesTests {
         .createPersistentVolumeClaim(volumeNameStatic, labels, volStaticConfig);
     Assert.assertEquals("Volume static PVC", claimStatic, actualPVCStatic);
   }
+
+  @Test
+  public void testVolumeWithPersistentVolumeClaim() {
+    final String claimName = "claim-name";
+    final String volumeName = "volume-name";
+    final V1Volume expected = new V1VolumeBuilder()
+        .withName(volumeName)
+          .withNewPersistentVolumeClaim()
+        .withClaimName(claimName)
+        .endPersistentVolumeClaim()
+        .build();
+
+    final V1Volume actual = Volumes.get().createPersistentVolumeClaim(claimName, volumeName);
+
+    Assert.assertEquals("Volume with Persistent Volume Claim configured", expected, actual);
+  }
 }