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

kuanhsun 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 e4eeb44  SUBMARINE-1212. fine tune crud operation flow of notebook to 
align experiment flow
e4eeb44 is described below

commit e4eeb446b52acf18a9028d8dd16aa50ca9c47156
Author: FatalLin <[email protected]>
AuthorDate: Wed Mar 16 22:29:34 2022 +0800

    SUBMARINE-1212. fine tune crud operation flow of notebook to align 
experiment flow
    
    ### What is this PR for?
    After we completed the refactoring of experiment operation flow, we would 
like to align the same pattern on notebook flow; In that case, both the 
experiment and notebook flow has the same flow. Besides, we also could collect 
all the status change logic into agent.
    
    ### What type of PR is it?
    Improvement
    
    ### Todos
    N/A
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/SUBMARINE-1212
    ### How should this be tested?
    should passed all existed tests.
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Do the license files need updating?No
    * Are there breaking changes for older versions? No
    * Does this need new documentation? No
    
    Author: FatalLin <[email protected]>
    
    Signed-off-by: kuanhsun <[email protected]>
    
    Closes #897 from FatalLin/SUBMARINE-1212 and squashes the following commits:
    
    ce633445 [FatalLin] rollback deleting logic
    179dfa36 [FatalLin] modify nameing policy
    3a7899f4 [FatalLin] fine tune crud operation flow of notebook
---
 .../submarine/server/notebook/NotebookManager.java | 20 +---------
 .../server/k8s/agent/handler/NotebookHandler.java  |  7 ++--
 .../server/submitter/k8s/K8sSubmitter.java         | 26 ++----------
 .../server/submitter/k8s/model/AgentPod.java       |  9 +++--
 .../submitter/k8s/parser/NotebookSpecParser.java   | 46 ----------------------
 5 files changed, 14 insertions(+), 94 deletions(-)

diff --git 
a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
 
b/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
index 8dfd104..dcdfbdf 100644
--- 
a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
+++ 
b/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
@@ -120,13 +120,7 @@ public class NotebookManager {
     List<Notebook> notebookList = new ArrayList<>();
     for (Notebook notebook : notebookService.selectAll()) {
       if (namespace == null || namespace.length() == 0 ){
-        if 
(notebook.getStatus().equals(Notebook.Status.STATUS_CREATING.getValue())) {
-          Notebook patchNotebook = submitter.findNotebook(notebook.getSpec());
-          notebook.rebuild(patchNotebook);
-          notebookList.add(notebook);
-        } else {
-          notebookList.add(notebook);
-        }
+        notebookList.add(notebook);
       }
     }
     return notebookList;
@@ -142,17 +136,7 @@ public class NotebookManager {
     List<Notebook> serviceNotebooks = notebookService.selectAll();
     List<Notebook> notebookList = new ArrayList<>();
     for (Notebook nb : serviceNotebooks) {
-      try {
-        if (nb.getStatus().equals(Notebook.Status.STATUS_CREATING.getValue())) 
{
-          Notebook patchNotebook = submitter.findNotebook(nb.getSpec());
-          nb.rebuild(patchNotebook);
-          notebookList.add(nb);
-        } else {
-          notebookList.add(nb);
-        }
-      } catch (SubmarineRuntimeException e) {
-        LOG.error("Error when get notebook resource, skip this row!", e);
-      }
+      notebookList.add(nb);
     }
     return notebookList;
   }
diff --git 
a/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/handler/NotebookHandler.java
 
b/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/handler/NotebookHandler.java
index fa4fb51..1931a6b 100644
--- 
a/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/handler/NotebookHandler.java
+++ 
b/submarine-server/server-submitter/submarine-k8s-agent/src/main/java/org/apache/submarine/server/k8s/agent/handler/NotebookHandler.java
@@ -83,11 +83,11 @@ public class NotebookHandler extends CustomResourceHandler {
       ListOptions listOptions = new ListOptions();
       String podLabelSelector = String.format("%s=%s", NotebookCR.NOTEBOOK_ID, 
this.resourceId);
       listOptions.setLabelSelector(podLabelSelector);
+      
+      
       V1PodList podList = podClient.list(namespace, 
listOptions).throwsApiException().getObject();
-
       this.uid = podList.getItems().get(podList.getItems().size() - 
1).getMetadata().getUid();
-
-
+      
       listOptions = new ListOptions();
       String fieldSelector = String.format("involvedObject.uid=%s", this.uid);
 
@@ -140,7 +140,6 @@ public class NotebookHandler extends CustomResourceHandler {
               notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_GET);
               
notebook.setStatus(Notebook.Status.STATUS_TERMINATING.getValue());
               restClient.callStatusUpdate(CustomResourceType.Notebook, 
this.resourceId, notebook);
-
               LOG.info("Receive terminating event, exit progress");
               return;
             default:
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 6dbbc3c..5e961fc 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
@@ -482,7 +482,8 @@ public class K8sSubmitter implements Submitter {
       LOG.error("K8s submitter: parse response object failed by " + 
e.getMessage(), e);
       throw new SubmarineRuntimeException(500, "K8s Submitter parse upstream 
response failed.");
     }
-
+    AgentPod agentPod = new AgentPod(namespace, spec.getMeta().getName(),
+            CustomResourceType.Notebook, notebookId);
     // create persistent volume claim
     try {
       // workspace
@@ -517,6 +518,7 @@ public class K8sSubmitter implements Submitter {
     try {
       Object object = 
notebookCRClient.create(notebookCR).throwsApiException().getObject();
       notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_CREATE);
+      V1Pod agentPodResult = 
podClient.create(agentPod).throwsApiException().getObject();
     } catch (JsonSyntaxException e) {
       LOG.error("K8s submitter: parse response object failed by " + 
e.getMessage(), e);
       if (needOverwrite) rollbackCreationConfigMap(namespace, configmap);
@@ -555,28 +557,6 @@ public class K8sSubmitter implements Submitter {
       Object object = notebookCRClient.get(namespace, 
notebookCR.getMetadata().getName())
               .throwsApiException().getObject();
       notebook = NotebookUtils.parseObject(object, 
NotebookUtils.ParseOpt.PARSE_OPT_GET);
-      if 
(notebook.getStatus().equals(Notebook.Status.STATUS_WAITING.toString())) {
-        LOG.info(String.format("notebook status: waiting; check the pods in 
namespace:[%s] to "
-            + "ensure is the waiting caused by image pulling", namespace));
-        String podLabelSelector = String.format("%s=%s", 
NotebookCR.NOTEBOOK_ID,
-            spec.getMeta().getLabels().get(NotebookCR.NOTEBOOK_ID).toString());
-        ListOptions listOptions = new ListOptions();
-        listOptions.setLabelSelector(podLabelSelector);
-        final V1PodList podList = podClient.list(getServerNamespace(), 
listOptions)
-                .throwsApiException().getObject();
-        String podName = podList.getItems().get(0).getMetadata().getName();
-
-        String fieldSelector = String.format("involvedObject.name=%s", 
podName);
-        listOptions = new ListOptions();
-        listOptions.setFieldSelector(fieldSelector);
-        CoreV1EventList events = eventClient.list(namespace, 
listOptions).throwsApiException().getObject();
-        CoreV1Event latestEvent = 
events.getItems().get(events.getItems().size() - 1);
-
-        if (latestEvent.getReason().equalsIgnoreCase("Pulling")) {
-          notebook.setStatus(Notebook.Status.STATUS_PULLING.getValue());
-          notebook.setReason(latestEvent.getReason());
-        }
-      }
     } catch (ApiException e) {
       // SUBMARINE-1124
       // The exception that obtaining CRD resources is not necessarily because 
the CRD is deleted,
diff --git 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java
 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java
index 2a7efd8..e38fe91 100644
--- 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java
+++ 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/model/AgentPod.java
@@ -41,9 +41,7 @@ public class AgentPod extends V1Pod{
     super();
     V1ObjectMeta meta = new V1ObjectMeta();
 
-    meta.setName(
-            String.format("%s-%s-%s-%s", type.toString().toLowerCase(), name,
-                    resourceId.toLowerCase(), CONTAINER_NAME));
+    meta.setName(getNormalizePodName(type, name, resourceId));
     meta.setNamespace(namespace);
     this.setMetadata(meta);
 
@@ -92,4 +90,9 @@ public class AgentPod extends V1Pod{
     spec.setRestartPolicy("OnFailure");
     this.setSpec(spec);
   }
+  
+  private String getNormalizePodName(CustomResourceType type, String name, 
String resourceId) {
+    return String.format("%s-%s-%s-%s", 
resourceId.toString().toLowerCase().replace('_', '-'), 
+            type.toString().toLowerCase(), name, CONTAINER_NAME);
+  }
 }
diff --git 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
index ff9c750..3bcd09e 100644
--- 
a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
+++ 
b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
@@ -34,7 +34,6 @@ import 
io.kubernetes.client.openapi.models.V1PersistentVolumeClaimVolumeSource;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.submarine.commons.utils.SubmarineConfVars;
 import org.apache.submarine.commons.utils.SubmarineConfiguration;
-import org.apache.submarine.server.api.common.CustomResourceType;
 import org.apache.submarine.server.api.environment.Environment;
 import org.apache.submarine.server.api.spec.EnvironmentSpec;
 import org.apache.submarine.server.api.spec.KernelSpec;
@@ -68,7 +67,6 @@ public class NotebookSpecParser {
     NotebookCR notebookCR = new NotebookCR();
     notebookCR.setMetadata(parseMetadata(spec));
     notebookCR.setSpec(parseNotebookCRSpec(spec));
-    appendSidecar(notebookCR, notebookId, namespace);
     return notebookCR;
   }
 
@@ -283,48 +281,4 @@ public class NotebookSpecParser {
             + "activation.\"; fi");
     return condaVersionValidationCommand.toString();
   }
-
-  private static void appendSidecar(NotebookCR notebookCR, String notebookId, 
String namespace) {
-    NotebookCRSpec notebookCRSpec = notebookCR.getSpec();
-    List<V1Container> containers = 
notebookCRSpec.getTemplate().getSpec().getContainers();
-    V1Container agentContainer = new V1Container();
-    agentContainer.setName("agent");
-    agentContainer.setImage("apache/submarine:agent-0.7.0");
-
-    List<V1EnvVar> envVarList = new ArrayList<>();
-    V1EnvVar crTypeVar = new V1EnvVar();
-    crTypeVar.setName("CUSTOM_RESOURCE_TYPE");
-    crTypeVar.setValue(CustomResourceType.Notebook.toString());
-
-    V1EnvVar crNameVar = new V1EnvVar();
-    crNameVar.setName("CUSTOM_RESOURCE_NAME");
-    crNameVar.setValue(notebookCR.getMetadata().getName());
-
-    V1EnvVar namespaceVar = new V1EnvVar();
-    namespaceVar.setName("NAMESPACE");
-    namespaceVar.setValue(namespace);
-
-    V1EnvVar serverHostVar = new V1EnvVar();
-    serverHostVar.setName("SERVER_HOST");
-    serverHostVar.setValue(conf.getServerServiceName());
-
-    V1EnvVar serverPortVar = new V1EnvVar();
-    serverPortVar.setName("SERVER_PORT");
-    serverPortVar.setValue(String.valueOf(conf.getServerPort()));
-
-    V1EnvVar customResourceIdVar = new V1EnvVar();
-    customResourceIdVar.setName("CUSTOM_RESOURCE_ID");
-    customResourceIdVar.setValue(notebookId);
-
-    envVarList.add(crTypeVar);
-    envVarList.add(crNameVar);
-    envVarList.add(namespaceVar);
-    envVarList.add(serverHostVar);
-    envVarList.add(serverPortVar);
-    envVarList.add(customResourceIdVar);
-
-    agentContainer.env(envVarList);
-
-    containers.add(agentContainer);
-  }
 }

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

Reply via email to