This is an automated email from the ASF dual-hosted git repository.

kaihsun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new fb21e79  SUBMARINE-844. allow notebook operation could work on 
assigned namespace
fb21e79 is described below

commit fb21e797bbe8e501484a21fb5c9847d05dd03d1e
Author: brandonlin <[email protected]>
AuthorDate: Mon Jun 14 10:09:50 2021 +0800

    SUBMARINE-844. allow notebook operation could work on assigned namespace
    
    **What is this PR for?**
    Currently the namespace which we use to execute notebook operation is 
passed from the frontend, which is hardcore which "default" 
value.(https://github.com/apache/submarine/blob/master/submarine-workbench/workbench-web/src/app/pages/workbench/notebook/notebook-home/notebook-form/notebook-form.component.ts#L184)
    Per discussion with kevin85421, we would like to make some change here to 
align the similar behavior in 
TFBoard(https://github.com/apache/submarine/blob/master/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java#L270-L273)
 which is assgend by operator.
    
    **What type of PR is it?**
     Improvement
    **Todos**
     how to pass the assigned namespace via script or helm.
    **What is the Jira issue?**
     https://issues.apache.org/jira/browse/SUBMARINE-844
    **How should this be tested?**
    create a notebook from UI, then check that is the notebook is created in 
the same namespace withe other modules insted of "default".
    
    **Screenshots**
    
    <img width="1399" alt="截圖 2021-06-11 下午5 21 14" 
src="https://user-images.githubusercontent.com/5687317/121697297-7f87a780-caff-11eb-9a74-6798fbe9ce82.png";>
    <img width="1443" alt="截圖 2021-06-12 下午6 09 05" 
src="https://user-images.githubusercontent.com/5687317/121772727-df3a8d00-cba9-11eb-9db1-493e2924ed89.png";>
    
    **Questions:**
    Do the license files need updating? No
    Are there breaking changes for older versions? No
    Does this need new documentation? No
    
    Author: brandonlin <[email protected]>
    
    Signed-off-by: Kai-Hsun Chen <[email protected]>
    
    Closes #602 from FatalLin/SUBMARINE-844 and squashes the following commits:
    
    185637c9 [brandonlin] align code style
    a3cb3fb8 [brandonlin] fix
    f3dc0334 [brandonlin] align tf borad, use the operator set env namespace as 
working namespace
    e12fea31 [brandonlin] remove debug command
    d9804754 [brandonlin] fix typo and change method to getProperty
    0fe231fa [brandonlin] allow notebook operation could work on assigned 
namespace which ix extracted from environment variable
---
 .../server/submitter/k8s/K8sSubmitter.java         | 35 +++++++++++++++++-----
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
index b139087..446535b 100644
--- 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
+++ 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/K8sSubmitter.java
@@ -355,18 +355,25 @@ public class K8sSubmitter implements Submitter {
     final String host = NotebookUtils.HOST_PATH;
     final String storage = NotebookUtils.STORAGE;
     final String pvcName = NotebookUtils.PVC_PREFIX + name;
+    String namespace = "default";
+    
+    if (System.getenv(ENV_NAMESPACE) != null) {
+      namespace = System.getenv(ENV_NAMESPACE);
+    }
+    
     try {
       // create notebook custom resource
       NotebookCR notebookCR = NotebookSpecParser.parseNotebook(spec);
       Map<String, String> labels = new HashMap<>();
       labels.put(NotebookCR.NOTEBOOK_OWNER_SELECTOR_KET, 
spec.getMeta().getOwnerId());
       notebookCR.getMetadata().setLabels(labels);
-
+      notebookCR.getMetadata().setNamespace(namespace);
+      
       // create persistent volume
       createPersistentVolume(pvName, host, storage);
 
       // create persistent volume claim
-      createPersistentVolumeClaim(pvcName, spec.getMeta().getNamespace(), 
pvName, storage);
+      createPersistentVolumeClaim(pvcName, namespace, pvName, storage);
 
       // bind persistent volume claim
       V1PersistentVolumeClaimVolumeSource pvcSource = new 
V1PersistentVolumeClaimVolumeSource()
@@ -374,7 +381,7 @@ public class K8sSubmitter implements Submitter {
       
notebookCR.getSpec().getTemplate().getSpec().getVolumes().get(0).persistentVolumeClaim(pvcSource);
 
       Object object = api.createNamespacedCustomObject(notebookCR.getGroup(), 
notebookCR.getVersion(),
-              notebookCR.getMetadata().getNamespace(), notebookCR.getPlural(), 
notebookCR, "true");
+              namespace, notebookCR.getPlural(), notebookCR, "true");
       notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_CREATE);
 
       // create Traefik custom resource
@@ -394,10 +401,18 @@ public class K8sSubmitter implements Submitter {
   @Override
   public Notebook findNotebook(NotebookSpec spec) throws 
SubmarineRuntimeException {
     Notebook notebook;
+    String namespace = "default";
+    
+    if (System.getenv(ENV_NAMESPACE) != null) {
+      namespace = System.getenv(ENV_NAMESPACE);
+    }
+    
     try {
+           
+        
       NotebookCR notebookCR = NotebookSpecParser.parseNotebook(spec);
       Object object = api.getNamespacedCustomObject(notebookCR.getGroup(), 
notebookCR.getVersion(),
-              notebookCR.getMetadata().getNamespace(),
+              namespace,
               notebookCR.getPlural(), notebookCR.getMetadata().getName());
       notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_GET);
     } catch (ApiException e) {
@@ -412,16 +427,22 @@ public class K8sSubmitter implements Submitter {
     final String name = spec.getMeta().getName();
     final String pvName = NotebookUtils.PV_PREFIX + name;
     final String pvcName = NotebookUtils.PVC_PREFIX + name;
+    String namespace = "default";
+    
+    if (System.getenv(ENV_NAMESPACE) != null) {
+      namespace = System.getenv(ENV_NAMESPACE);
+    }
+    
     try {
       NotebookCR notebookCR = NotebookSpecParser.parseNotebook(spec);
       Object object = api.deleteNamespacedCustomObject(notebookCR.getGroup(), 
notebookCR.getVersion(),
-              notebookCR.getMetadata().getNamespace(), notebookCR.getPlural(),
+              namespace, notebookCR.getPlural(),
               notebookCR.getMetadata().getName(),
               new 
V1DeleteOptionsBuilder().withApiVersion(notebookCR.getApiVersion()).build(),
               null, null, null);
       notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_DELETE);
-      deleteIngressRoute(notebookCR.getMetadata().getNamespace(), 
notebookCR.getMetadata().getName());
-      deletePersistentVolumeClaim(pvcName, spec.getMeta().getNamespace());
+      deleteIngressRoute(namespace, notebookCR.getMetadata().getName());
+      deletePersistentVolumeClaim(pvcName, namespace);
       deletePersistentVolume(pvName);
     } catch (ApiException e) {
       throw new SubmarineRuntimeException(e.getCode(), e.getMessage());

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to