jiwq commented on a change in pull request #481:
URL: https://github.com/apache/submarine/pull/481#discussion_r548973097



##########
File path: 
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
##########
@@ -132,9 +134,32 @@ private static V1PodTemplateSpec 
parseTemplateSpec(NotebookSpec notebookSpec) {
       container.setResources(resources);
     }
 
+    // Volume Mount
+    List<V1VolumeMount> mounts = new ArrayList<>();
+    V1VolumeMount mount = new V1VolumeMount();
+    mount.setMountPath("/home/jovyan/workspace");

Review comment:
       Use the static variable named `DEFAULT_MOUNT_PATH` is better.

##########
File path: 
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
##########
@@ -385,6 +414,112 @@ private IngressRouteSpec parseIngressRouteSpec(String 
namespace, String name) {
     return spec;
   }
 
+  private void createPersistentVolume(String name) {
+    V1PersistentVolume pv = new V1PersistentVolume();
+    V1PersistentVolumeSpec pv_spec = new V1PersistentVolumeSpec();
+    V1ObjectMeta pv_metadata = new V1ObjectMeta();
+    List<String> accessMode = new ArrayList<>();
+    Map<String, Quantity> capacity = new HashMap<>();
+    V1LocalVolumeSource local = new V1LocalVolumeSource();
+    V1VolumeNodeAffinity affinity = new V1VolumeNodeAffinity();
+    V1NodeSelector required = new V1NodeSelector();
+    List<V1NodeSelectorTerm> terms = new ArrayList<>();
+    V1NodeSelectorTerm term = new V1NodeSelectorTerm();
+    List<V1NodeSelectorRequirement> expressions = new ArrayList<>();
+    List<String> value = new ArrayList<>();
+    value.add("linux");
+    V1NodeSelectorRequirement expression = new V1NodeSelectorRequirement()
+            .key("kubernetes.io/os")
+            .operator("In")
+            .values(value);
+
+    accessMode.add("ReadWriteOnce");
+    capacity.put("storage", new Quantity("10Gi"));

Review comment:
       The quantity should passed from `NotebookSpec` rather than hard code.

##########
File path: 
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
##########
@@ -132,9 +134,32 @@ private static V1PodTemplateSpec 
parseTemplateSpec(NotebookSpec notebookSpec) {
       container.setResources(resources);
     }
 
+    // Volume Mount
+    List<V1VolumeMount> mounts = new ArrayList<>();
+    V1VolumeMount mount = new V1VolumeMount();
+    mount.setMountPath("/home/jovyan/workspace");
+    mount.setName("workspace-" + notebookSpec.getMeta().getName());
+    mounts.add(mount);
+    container.setVolumeMounts(mounts);
+
     containers.add(container);
     podSpec.setContainers(containers);
 
+    // Set Volumes

Review comment:
       Should gave more comments about the logical for init the volume.

##########
File path: 
submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
##########
@@ -254,6 +267,19 @@ public Notebook createNotebook(NotebookSpec spec) throws 
SubmarineRuntimeExcepti
       Map<String, String> labels = new HashMap<>();
       labels.put(NotebookCR.NOTEBOOK_OWNER_SELECTOR_KET, 
spec.getMeta().getOwnerId());
       notebookCR.getMetadata().setLabels(labels);
+
+      // create persistent volume
+      createPersistentVolume(notebookCR.getMetadata().getName());
+
+      // create persistent volume claim
+      createPersistentVolumeClaim(notebookCR.getMetadata().getNamespace(),
+              notebookCR.getMetadata().getName());
+
+      // bind persistent volume claim
+      V1PersistentVolumeClaimVolumeSource pvc_source = new 
V1PersistentVolumeClaimVolumeSource()
+              .claimName(notebookCR.getMetadata().getName() + "-claim");

Review comment:
       Should generate the claim name use the same method, so that avoid future 
mistakes.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to