You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by li...@apache.org on 2020/09/30 09:45:45 UTC

[submarine] branch master updated: SUBMARINE-635. [WEB] Add sync code to experiment UI

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

liuxun 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 bd7578c  SUBMARINE-635. [WEB] Add sync code to experiment UI
bd7578c is described below

commit bd7578cc28f8280f9170938d4469fcc965e24a89
Author: kobe860219 <ko...@gmail.com>
AuthorDate: Mon Sep 28 16:34:46 2020 +0800

    SUBMARINE-635. [WEB] Add sync code to experiment UI
    
    ### What is this PR for?
    Before pod starting, need to clone git-repo to /code/current.
    And disable some routerlink to WIP page.
    
    ### What type of PR is it?
    [Feature]
    
    ### Todos
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/SUBMARINE-635
    
    ### How should this be tested?
    https://travis-ci.org/github/kobe860219/submarine/builds/730755150
    
    ### Screenshots (if appropriate)
    ![螢幕錄製 2020-09-28 下午1](https://user-images.githubusercontent.com/48027290/94395240-d330ab80-0191-11eb-874a-82c0bc6febaf.gif)
    
    ![120136838_966648427146981_8787822419064498915_n](https://user-images.githubusercontent.com/48027290/94423735-abeed400-01bb-11eb-9839-7fd8909c5a4e.png)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: kobe860219 <ko...@gmail.com>
    
    Closes #414 from kobe860219/SUBMARINE-635 and squashes the following commits:
    
    b336097 [kobe860219] SUBMARINE-635. [WEB] Add sync code to experiment UI
    94e1207 [kobe860219] SUBMARINE-635. [WEB] Add sync code to experiment UI
    189f531 [kobe860219] SUBMARINE-635. [WEB] Add sync code to experiment UI
    10d2a64 [kobe860219] SUBMARINE-635. [WEB] Add sync code to experiment UI
    31ec7f0 [kobe860219] SUBMARINE-635. [WEB] Add sync code to experiment UI
---
 .../apache/submarine/integration/experimentIT.java   |  1 +
 .../src/app/interfaces/experiment-spec.ts            |  6 ++++++
 .../workbench/environment/environment.component.html |  3 ++-
 .../experiment-customized-form.component.html        | 20 ++++++++++++++++++++
 .../experiment-customized-form.component.scss        |  2 +-
 .../experiment-customized-form.component.ts          | 16 +++++++++++++---
 .../workbench/experiment/experiment.component.html   |  3 ++-
 .../app/pages/workbench/manager/manager.component.ts | 12 ++++++------
 .../pages/workbench/notebook/notebook.component.html |  3 ++-
 9 files changed, 53 insertions(+), 13 deletions(-)

diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
index 8051ea6..ef2057b 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
@@ -72,6 +72,7 @@ public class experimentIT extends AbstractSubmarineIT {
                     " --learning_rate=0.01 --batch_size=150",
             "apache/submarine:tf-mnist-with-summaries-1.0",
             "ENV_1", "ENV1");
+    pollingWait(By.xpath("//input[@id='git-repo']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("https://github.com/apache/submarine.git");
     Assert.assertTrue(experimentPage.getGoButton().isEnabled());
     experimentPage.goButtonClick();
 
diff --git a/submarine-workbench/workbench-web-ng/src/app/interfaces/experiment-spec.ts b/submarine-workbench/workbench-web-ng/src/app/interfaces/experiment-spec.ts
index 64524bb..fb9eedb 100644
--- a/submarine-workbench/workbench-web-ng/src/app/interfaces/experiment-spec.ts
+++ b/submarine-workbench/workbench-web-ng/src/app/interfaces/experiment-spec.ts
@@ -44,8 +44,14 @@ export interface Specs {
   };
 }
 
+export interface Code {
+  syncMode: string;
+  url: string;
+}
+
 export interface ExperimentSpec {
   meta: ExperimentMeta;
   environment: EnvironmentSpec;
   spec: Specs;
+  code: Code;
 }
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html
index b61942c..aa8a84d 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html
@@ -22,7 +22,8 @@
     <div id="environmentOuter">
       <nz-breadcrumb>
         <nz-breadcrumb-item>
-          <a [routerLink]="['/', 'workbench', 'home']">Home</a>
+          <!--<a [routerLink]="['/', 'workbench', 'home']">Home</a>-->
+          <a>Home</a>
         </nz-breadcrumb-item>
         <nz-breadcrumb-item>
           <a [routerLink]="['/', 'workbench', 'environment']">environment</a>
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.html
index 5d85b7a..6f9ffe4 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.html
@@ -99,6 +99,24 @@
             <nz-option *ngFor="let namespace of nameSpaceList" [nzValue]="namespace" [nzLabel]="namespace"></nz-option>
           </nz-select>
         </div>
+        <div *ngIf="ADVANCED" class="single-field-group">
+          <label for="git-repo">
+            Git repository
+          </label>
+          <nz-input-group [nzSuffix]="suffixTemplateInfo">
+            <input
+              nz-input
+              type="text"
+              name="git-repo"
+              id="git-repo"
+              placeholder="https://github.com/apache/submarine.git"
+              formControlName="gitRepo"
+            />
+          </nz-input-group>
+          <ng-template #suffixTemplateInfo>
+            <i nz-icon nz-tooltip nzTitle="Copy git repo to /code/current in container." nzType="info-circle"></i>
+          </ng-template>
+        </div>
         <div *ngIf="ADVANCED">
           <ul formArrayName="envs" class="list-container">
             <ng-container *ngFor="let env of envs.controls; index as i">
@@ -130,6 +148,7 @@
           <button nz-button id="env-btn" style="display: block; margin: auto;" nzType="primary" (click)="onCreateEnv()">
             Add new environment variable
           </button>
+          <br />
         </div>
       </div>
       <div *ngSwitchCase="1" id="secondStep">
@@ -262,6 +281,7 @@
               {{ item.value.resources }}
             </nz-descriptions-item>
           </div>
+          <nz-descriptions-item nzTitle="Git repository">{{ finialExperimentSpec.code.url }}</nz-descriptions-item>
         </nz-descriptions>
       </div>
     </div>
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.scss b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.scss
index a158387..01fd3f4 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.scss
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.scss
@@ -112,7 +112,7 @@ textarea.ng-invalid.ng-touched {
        margin-right: 1.5rem;
     }
  }
- & input, nz-select, textarea {
+ & input, nz-select, nz-input-group, textarea {
     flex: 0 0 48%;
  }
 }
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.ts b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.ts
index ac322f7..048cedd 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.ts
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment-customized-form/experiment-customized-form.component.ts
@@ -19,7 +19,7 @@
 
 import { Component, Input, OnDestroy, OnInit } from '@angular/core';
 import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
-import { EnvironmentSpec, ExperimentMeta, ExperimentSpec, Specs } from '@submarine/interfaces/experiment-spec';
+import { EnvironmentSpec, ExperimentMeta, ExperimentSpec, Specs, Code } from '@submarine/interfaces/experiment-spec';
 import { ExperimentFormService } from '@submarine/services/experiment.form.service';
 import { ExperimentService } from '@submarine/services/experiment.service';
 import { ExperimentValidatorService } from '@submarine/services/experiment.validator.service';
@@ -88,7 +88,8 @@ export class ExperimentCustomizedFormComponent implements OnInit, OnDestroy {
       cmd: new FormControl('', [Validators.required]),
       image: new FormControl(this.defaultImage, [Validators.required]),
       envs: new FormArray([], [this.experimentValidatorService.nameValidatorFactory('key')]),
-      specs: new FormArray([], [this.experimentValidatorService.nameValidatorFactory('name')])
+      specs: new FormArray([], [this.experimentValidatorService.nameValidatorFactory('name')]),
+      gitRepo: new FormControl(null, [])
     });
 
     // Bind the component method for callback
@@ -164,6 +165,9 @@ export class ExperimentCustomizedFormComponent implements OnInit, OnDestroy {
   get specs() {
     return this.experiment.get('specs') as FormArray;
   }
+  get gitRepo() {
+    return this.experiment.get('gitRepo');
+  }
 
   /**
    * Reset properties in parent component when the form is about to closed
@@ -340,10 +344,16 @@ export class ExperimentCustomizedFormComponent implements OnInit, OnDestroy {
       image: this.image.value
     };
 
+    const code: Code = {
+      syncMode: 'git',
+      url: this.gitRepo.value
+    };
+
     const newExperimentSpec: ExperimentSpec = {
       meta: meta,
       environment: environment,
-      spec: specs
+      spec: specs,
+      code: code
     };
 
     return newExperimentSpec;
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
index 21b11a4..4436cef 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
@@ -22,7 +22,8 @@
     <div id="experimentOuter">
       <nz-breadcrumb>
         <nz-breadcrumb-item>
-          <a [routerLink]="['/', 'workbench', 'home']">Home</a>
+          <!--<a [routerLink]="['/', 'workbench', 'home']">Home</a>-->
+          <a>Home</a>
         </nz-breadcrumb-item>
         <nz-breadcrumb-item>
           <a [routerLink]="['/', 'workbench', 'experiment']" (click)="isInfo = false">experiment</a>
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/manager/manager.component.ts b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/manager/manager.component.ts
index 6612041..935b192 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/manager/manager.component.ts
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/manager/manager.component.ts
@@ -41,8 +41,8 @@ export class ManagerComponent implements OnInit {
       description: 'You can check the user, delete the user, lock and unlock the user, etc.',
       breadCrumb: [
         {
-          title: 'Home',
-          routerLink: '/workbench/home'
+          title: 'Home'
+          //routerLink: '/workbench/home'
         },
         {
           title: 'manager'
@@ -57,8 +57,8 @@ export class ManagerComponent implements OnInit {
       description: 'System Dict Manager',
       breadCrumb: [
         {
-          title: 'Home',
-          routerLink: '/workbench/home'
+          title: 'Home'
+          //routerLink: '/workbench/home'
         },
         {
           title: 'manager'
@@ -73,8 +73,8 @@ export class ManagerComponent implements OnInit {
       description: 'System Department Manager',
       breadCrumb: [
         {
-          title: 'Home',
-          routerLink: '/workbench/home'
+          title: 'Home'
+          //routerLink: '/workbench/home'
         },
         {
           title: 'manager'
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/notebook/notebook.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/notebook/notebook.component.html
index 906ae47..a7ffdd1 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/notebook/notebook.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/notebook/notebook.component.html
@@ -22,7 +22,8 @@
     <div id="notebookOuter">
       <nz-breadcrumb>
         <nz-breadcrumb-item>
-          <a [routerLink]="['/', 'workbench', 'home']">Home</a>
+          <!--<a [routerLink]="['/', 'workbench', 'home']">Home</a>-->
+          <a>Home</a>
         </nz-breadcrumb-item>
         <nz-breadcrumb-item>
           <a [routerLink]="['/', 'workbench', 'notebook']">Notebook</a>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org