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

ytykhun pushed a commit to branch DATALAB-2431
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git

commit c402fd428606ddaead510be84e70d781b0d40ff9
Author: Yurii Tykhun <[email protected]>
AuthorDate: Fri Jun 18 11:26:13 2021 +0300

    [DATALAB-2431] added new parameters for Apache Standalone cluster
---
 .../cluster-details/cluster-details.component.html | 118 +++++----
 ...utational-resource-create-dialog.component.html | 292 +++++++++++----------
 ...mputational-resource-create-dialog.component.ts |   2 -
 .../webapp/src/dictionary/gcp.dictionary.ts        |   3 +-
 4 files changed, 216 insertions(+), 199 deletions(-)

diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
index d8168b9..e353385 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.html
@@ -46,10 +46,10 @@
           <div class="col"><span>{{ resource.template_name }}</span></div>
         </div>
         <div class="row-wrap" *ngIf="resource.image === 
'docker.datalab-dataengine-service'">
-            <div class="col">
-                <p>Cluster version:</p>
-            </div>
-            <div class="col"><span>{{ 
resource[DICTIONARY[PROVIDER].cluster_version] }}</span></div>
+          <div class="col">
+              <p>Cluster version:</p>
+          </div>
+          <div class="col"><span>{{ 
resource[DICTIONARY[PROVIDER].cluster_version] }}</span></div>
         </div>
         <div class="row-wrap">
           <div class="col">
@@ -57,15 +57,14 @@
           </div>
           <div class="col" (mouseover)="isEllipsisActive($event)">
             <span>{{resource.computational_name}}</span>
-<!--            <div class="tooltip" [style.visibility]="tooltip ? 'visible': 
'hidden'">{{resource.computational_name}}-->
-<!--            </div>-->
+            <!-- <div class="tooltip" [style.visibility]="tooltip ? 'visible': 
'hidden'">{{resource.computational_name}}</div> -->
           </div>
         </div>
         <div class="row-wrap">
-            <div class="col"
-                 *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && 
resource.image === 'docker.datalab-dataengine-service'; else inst">
-                <p>Master instance number:</p>
-            </div>
+          <div class="col"
+              *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp'; else inst">
+            <p>Master instance number:</p>
+          </div>
           <ng-template #inst>
             <div class="col">
               <p>Total instance number:</p>
@@ -73,29 +72,29 @@
           </ng-template>
           <div class="col">
             <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'aws'">{{ 
resource.totalInstanceCount > 0 ? resource.totalInstanceCount : 
resource.dataengine_instance_count}}</span>
-            <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && 
resource.image === 'docker.datalab-dataengine' || 
DICTIONARY[PROVIDER].cloud_provider === 
'azure'">{{resource.dataengine_instance_count}}</span>
-            <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && 
resource.image === 'docker.datalab-dataengine-service'">1</span>
+            <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 
'azure'">{{resource.dataengine_instance_count}}</span>
+            <span *ngIf="DICTIONARY[PROVIDER].cloud_provider === 
'gcp'">1</span>
           </div>
         </div>
         <div class="row-wrap"
-               *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && 
resource.image === 'docker.datalab-dataengine-service'">
-              <div class="col">
-                  <p>Slave instance number:</p>
-              </div>
-              <div class="col"><span>{{ resource.totalInstanceCount - 
1}}</span></div>
+          *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp'">
+          <div class="col">
+            <p>Slave instance number:</p>
           </div>
+          <div class="col"><span>{{ resource.totalInstanceCount - 
1}}</span></div>
+        </div>
         <div class="row-wrap">
           <div class="col">
             <p>Master instance size:</p>
           </div>
           <div class="col"><span>{{ 
resource[DICTIONARY[PROVIDER][resource.image].master_node_shape] }}</span></div>
         </div>
-        <div class="row-wrap" *ngIf="resource.image === 
'docker.datalab-dataengine-service'">
-              <div class="col">
-                  <p>Slave instance size:</p>
-              </div>
-              <div class="col"><span>{{ 
resource[DICTIONARY[PROVIDER][resource.image].slave_node_shape] }}</span></div>
+        <div class="row-wrap">
+          <div class="col">
+            <p>Slave instance size:</p>
           </div>
+          <div class="col"><span>{{ 
resource[DICTIONARY[PROVIDER][resource.image].slave_node_shape] }}</span></div>
+        </div>
         <ng-template [ngIf]="resource?.enabledGPU">
           <div class="row-wrap">
             <div class="col">
@@ -152,42 +151,53 @@
             </p>
           </div>
         </div>
-          <div class="checkbox-group" *ngIf="resource.image === 
'docker.datalab-dataengine'
-          && resource.status === 'running'
-          && environment.image !== 'docker.datalab-zeppelin'
-          && environment.image !== 'docker.datalab-superset'
-          && environment.image !== 'docker.datalab-jupyterlab'">
-              <label>
-                  <input #configurationNode type="checkbox" 
(change)="selectConfiguration()"/> Cluster configurations
-              </label>
-              <div class="checkbox-group">
-                  <form [formGroup]="configurationForm" novalidate>
-                      <div class="config-details"
-                           [ngClass]="{ show: 
configuration?.nativeElement['checked'] || false }">
-                <textarea formControlName="configuration_parameters" 
placeholder="Cluster configuration template, JSON"
-                          data-gramm_editor="false"></textarea>
-                          <span class="danger_color"
-                                
*ngIf="!configurationForm.controls.configuration_parameters.valid && 
configurationForm.controls['configuration_parameters'].dirty">Configuration
-                  parameters is not in a valid format</span>
-                      </div>
-                  </form>
-              </div>
+          <div class="checkbox-group" 
+            *ngIf="resource.image === 'docker.datalab-dataengine'
+                && resource.status === 'running'
+                && environment.image !== 'docker.datalab-zeppelin'
+                && environment.image !== 'docker.datalab-superset'
+                && environment.image !== 'docker.datalab-jupyterlab'"
+          >
+            <label>
+              <input #configurationNode type="checkbox" 
(change)="selectConfiguration()"/> Cluster configurations
+            </label>
+            <div class="checkbox-group">
+              <form [formGroup]="configurationForm" novalidate>
+                <div class="config-details"
+                    [ngClass]="{ show: configuration?.nativeElement['checked'] 
|| false }">
+                  <textarea 
+                    formControlName="configuration_parameters" 
+                    placeholder="Cluster configuration template, JSON"
+                    data-gramm_editor="false">
+                  </textarea>
+                  <span class="danger_color"
+                    
*ngIf="!configurationForm.controls.configuration_parameters.valid 
+                        && 
configurationForm.controls['configuration_parameters'].dirty">
+                        Configuration parameters is not in a valid format
+                  </span>
+                </div>
+              </form>
+            </div>
           </div>
           <div *ngIf="environment.image === 'docker.datalab-zeppelin' && 
resource.status === 'running'">
-              <small>Spark default configuration for Apache Zeppelin can not 
be changed from DataLab UI. Currently it
-                  can be
-                  done directly through Apache Zeppelin interpreter menu.
-                  For more details please refer for Apache Zeppelin <a
-                          
href="https://zeppelin.apache.org/docs/0.9.0/usage/interpreter/overview.html"; 
target="_blank">official
-                      documentation</a>.
-              </small>
+            <small>Spark default configuration for Apache Zeppelin can not be 
changed from DataLab UI. 
+              Currently it can be done directly through Apache Zeppelin 
interpreter menu.
+                For more details please refer for Apache Zeppelin 
+                <a 
href="https://zeppelin.apache.org/docs/0.9.0/usage/interpreter/overview.html"; 
target="_blank">official
+                    documentation</a>.
+            </small>
           </div>
           <div class="text-center m-top-30" 
*ngIf="configuration?.nativeElement['checked'] || false">
-              <button mat-raised-button type="button" 
(click)="dialogRef.close()" class="butt action">Cancel</button>
-              <button mat-raised-button type="submit" 
[disabled]="!configurationForm.valid"
-                      class="butt butt-success action"
-                      [ngClass]="{'not-allowed': !configurationForm.valid}"
-            
(click)="editClusterConfiguration(configurationForm.value)">Update</button>
+            <button mat-raised-button type="button" 
+                    (click)="dialogRef.close()" 
+                    class="butt action">Cancel
+            </button>
+            <button mat-raised-button type="submit" 
+                    [disabled]="!configurationForm.valid"
+                    class="butt butt-success action"
+                    [ngClass]="{'not-allowed': !configurationForm.valid}"
+                    
(click)="editClusterConfiguration(configurationForm.value)">Update
+            </button>
         </div>
       </div>
 
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
index 510a336..aa8d00b 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.html
@@ -26,73 +26,71 @@
     <div class="content-box mat-reset">
       <form [formGroup]="resourceForm" *ngIf="clusterTypes.length && 
resourceForm; else placeholder">
 
-        <div class="form-wrapper" [ngClass]="{ }">
-            <div class="col">
-                <div class="control-group" *ngIf="PROVIDER !== 'azure'" 
[hidden]="clusterTypes.length === 1">
-                    <label class="label">Select cluster type</label>
-                    <div class="control selector-wrapper">
-                        <mat-form-field>
-                            <!--                  <mat-label>Select cluster 
type</mat-label>-->
-                            <mat-select formControlName="template_name" 
-                                        disableOptionCentering
-                                        panelClass="scrolling"
-                                        placeholder="Select cluster type">
-                                <mat-option *ngFor="let type of clusterTypes" 
[value]="type.template_name"
-                                            (click)="selectImage(type)">{{ 
type.template_name }}
-                                </mat-option>
-                    <mat-option *ngIf="!clusterTypes.length" 
class="multiple-select ml-10" disabled>Clusters types list
-                      is empty</mat-option>
-                  </mat-select>
-                  <button class="caret">
-                    <i class="material-icons">keyboard_arrow_down</i>
-                  </button>
-                </mat-form-field>
+        <div class="form-wrapper">
+          <div class="col">
+              <div class="control-group" *ngIf="PROVIDER !== 'azure'" 
[hidden]="clusterTypes.length === 1">
+                  <label class="label">Select cluster type</label>
+                  <div class="control selector-wrapper">
+                    <mat-form-field>
+                      <mat-select formControlName="template_name" 
+                                  disableOptionCentering
+                                  panelClass="scrolling"
+                                  placeholder="Select cluster type">
+                        <mat-option *ngFor="let type of clusterTypes" 
[value]="type.template_name"
+                                    (click)="selectImage(type)">{{ 
type.template_name }}
+                        </mat-option>
+                        <mat-option *ngIf="!clusterTypes.length" 
class="multiple-select ml-10" disabled>Clusters types list
+                          is empty</mat-option>
+                      </mat-select>
+                      <button class="caret">
+                        <i class="material-icons">keyboard_arrow_down</i>
+                      </button>
+                    </mat-form-field>
+                  </div>
               </div>
-            </div>
 
-            
-
-            <div class="control-group alias-name" *ngIf="selectedImage?.image">
-              <label class="label">Cluster alias</label>
-              <div class="control">
-                <input
-                  
[class.danger_field]="!resourceForm?.controls['cluster_alias_name'].valid
-                        && resourceForm?.controls['cluster_alias_name'].dirty 
&& resourceForm?.controls['cluster_alias_name'].hasError('duplication')"
-                  type="text" class="form-control" placeholder="Enter cluster 
alias"
-                  formControlName="cluster_alias_name" />
-                <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('user-duplication')">You
 have cluster with this name in current project.</span>
-                <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('other-user-duplication')">Other
 user has cluster with this name in current project.</span>
-                <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('maxlength') &&
-                
!resourceForm?.controls['cluster_alias_name'].hasError('pattern')"
-                >
-                  Cluster name cannot be longer than {{maxClusterNameLength}} 
characters.
-                </span>
-                <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('pattern')">
-                  Cluster name can only contain letters, numbers, hyphens and 
'_' but can not end with special
-                  characters.
-                </span>
+              <div class="control-group alias-name" 
*ngIf="selectedImage?.image">
+                <label class="label">Cluster alias</label>
+                <div class="control">
+                  <input
+                    
[class.danger_field]="!resourceForm?.controls['cluster_alias_name'].valid
+                          && 
resourceForm?.controls['cluster_alias_name'].dirty 
+                          && 
resourceForm?.controls['cluster_alias_name'].hasError('duplication')"
+                    type="text" class="form-control" placeholder="Enter 
cluster alias"
+                    formControlName="cluster_alias_name" />
+                  <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('user-duplication')">You
 have cluster with this name in current project.</span>
+                  <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('other-user-duplication')">Other
 user has cluster with this name in current project.</span>
+                  <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('maxlength') &&
+                  
!resourceForm?.controls['cluster_alias_name'].hasError('pattern')"
+                  >
+                    Cluster name cannot be longer than 
{{maxClusterNameLength}} characters.
+                  </span>
+                  <span class="error" 
*ngIf="resourceForm?.controls['cluster_alias_name'].hasError('pattern')">
+                    Cluster name can only contain letters, numbers, hyphens 
and '_' but can not end with special
+                    characters.
+                  </span>
+                </div>
               </div>
-            </div>
 
-            <div class="control-group" *ngIf="selectedImage?.image">
-              <label class="label">Master instance size</label>
-              <div class="control selector-wrapper">
-                <mat-form-field>
-                  <mat-label>Select instance size</mat-label>
-                  <mat-select panelClass="scrolling" 
formControlName="shape_master" disableOptionCentering>
-                    <mat-optgroup *ngFor="let item of 
(selectedImage.computation_resources_shapes | keys)"
-                      [label]="item.key | underscoreless">
-                      <mat-option *ngFor="let list_item of item.value" 
[value]="list_item.Type" (click)="clearGpuType('master')">
-                        <strong class="highlight icon-label">{{ list_item.Size 
}}</strong> {{ list_item.Type }}
-                      </mat-option>
-                    </mat-optgroup>
-                  </mat-select>
-                  <button class="caret">
-                    <i class="material-icons">keyboard_arrow_down</i>
-                  </button>
-                </mat-form-field>
+              <div class="control-group" *ngIf="selectedImage?.image">
+                <label class="label">Master instance size</label>
+                <div class="control selector-wrapper">
+                  <mat-form-field>
+                    <mat-label>Select instance size</mat-label>
+                    <mat-select panelClass="scrolling" 
formControlName="shape_master" disableOptionCentering>
+                      <mat-optgroup *ngFor="let item of 
(selectedImage.computation_resources_shapes | keys)"
+                        [label]="item.key | underscoreless">
+                        <mat-option *ngFor="let list_item of item.value" 
[value]="list_item.Type" (click)="clearGpuType('master')">
+                          <strong class="highlight icon-label">{{ 
list_item.Size }}</strong> {{ list_item.Type }}
+                        </mat-option>
+                      </mat-optgroup>
+                    </mat-select>
+                    <button class="caret">
+                      <i class="material-icons">keyboard_arrow_down</i>
+                    </button>
+                  </mat-form-field>
+                </div>
               </div>
-            </div>
           </div>
 
           <div class="col">
@@ -126,27 +124,26 @@
               </div>
             </div>
 
-              <div class="control-group" *ngIf="selectedImage?.image"
-                   >
-                  <label class="label">Slave instance size</label>
-                  <div class="control selector-wrapper">
-                      <mat-form-field>
-                          <mat-label>Select instance size</mat-label>
-                          <mat-select panelClass="scrolling" 
formControlName="shape_slave" disableOptionCentering>
-                              <mat-optgroup *ngFor="let item of 
(selectedImage.computation_resources_shapes | keys)"
-                                            [label]="item.key | 
underscoreless">
-                                  <mat-option *ngFor="let list_item of 
item.value" [value]="list_item.Type" (click)="clearGpuType('slave')">
-                                      <strong class="highlight icon-label">{{ 
list_item.Size }}</strong> {{
-                                      list_item.Type }}
-                                  </mat-option>
-                    </mat-optgroup>
-                  </mat-select>
-                  <button class="caret">
-                    <i class="material-icons">keyboard_arrow_down</i>
-                  </button>
-                </mat-form-field>
+              <div class="control-group" *ngIf="selectedImage?.image">
+                <label class="label">Slave instance size</label>
+                <div class="control selector-wrapper">
+                  <mat-form-field>
+                    <mat-label>Select instance size</mat-label>
+                      <mat-select panelClass="scrolling" 
formControlName="shape_slave" disableOptionCentering>
+                        <mat-optgroup *ngFor="let item of 
(selectedImage.computation_resources_shapes | keys)"
+                                        [label]="item.key | underscoreless">
+                          <mat-option *ngFor="let list_item of item.value" 
[value]="list_item.Type" (click)="clearGpuType('slave')">
+                              <strong class="highlight icon-label">{{ 
list_item.Size }}</strong> {{
+                              list_item.Type }}
+                          </mat-option>
+                        </mat-optgroup>
+                      </mat-select>
+                      <button class="caret">
+                        <i class="material-icons">keyboard_arrow_down</i>
+                      </button>
+                  </mat-form-field>
+                </div>
               </div>
-            </div>
 
           </div>
         </div>
@@ -266,24 +263,23 @@
                   </mat-form-field>
                 </div>
               </div>
-
             </div>
           </div>
         </div>
-          <div class="preemptible checkbox-group control-group"
-               *ngIf="PROVIDER === 'gcp' && selectedImage?.image === 
'docker.datalab-dataengine-service'">
-            <div class="d-flex cursor-pointer label" 
(click)="addAdditionalParams('preemptible')">
-              <div class="empty-checkbox ml-10" [ngClass]="{'checked': 
isSelected.preemptible}" 
(click)="selectPreemptibleNodes(isSelected.preemptible)">
-                <span class="checked-checkbox" 
*ngIf="isSelected.preemptible"></span>
-              </div>
-              <span class="pl-5">Preemptible node</span>
+        <div class="preemptible checkbox-group control-group"
+              *ngIf="PROVIDER === 'gcp' && selectedImage?.image === 
'docker.datalab-dataengine-service'">
+          <div class="d-flex cursor-pointer label" 
(click)="addAdditionalParams('preemptible')">
+            <div class="empty-checkbox ml-10" [ngClass]="{'checked': 
isSelected.preemptible}" 
(click)="selectPreemptibleNodes(isSelected.preemptible)">
+              <span class="checked-checkbox" 
*ngIf="isSelected.preemptible"></span>
             </div>
-              <div *ngIf="isSelected.preemptible" class="preemptible-details 
control"
-                   [ngClass]="{ show: isSelected.preemptible}">
-                  <input type="text" class="form-control" 
formControlName="preemptible_instance_number"
-                         (keypress)="CheckUtils.isNumberKey($event)"
-                         (keydown.arrowup)="preemptibleCounter($event, 
'increment')"
-                         (keydown.arrowdown)="preemptibleCounter($event, 
'decrement')"/>
+            <span class="pl-5">Preemptible node</span>
+          </div>
+          <div *ngIf="isSelected.preemptible" class="preemptible-details 
control"
+                [ngClass]="{ show: isSelected.preemptible}">
+            <input type="text" class="form-control" 
formControlName="preemptible_instance_number"
+                    (keypress)="CheckUtils.isNumberKey($event)"
+                    (keydown.arrowup)="preemptibleCounter($event, 'increment')"
+                    (keydown.arrowdown)="preemptibleCounter($event, 
'decrement')"/>
             <span class="error error-bottom" 
*ngIf="!resourceForm?.controls.preemptible_instance_number.valid">
               <span *ngIf="minPreemptibleInstanceNumber !== 
maxPreemptibleInstanceNumber; else equal">
                 Only integer values greater than or equal to {{ 
minPreemptibleInstanceNumber }} and less than
@@ -292,8 +288,7 @@
               <ng-template #equal>Please manage total machines 
count.</ng-template>
             </span>
           </div>
-          </div>
-
+        </div>
 
         <div class="checkbox-group control-group m-top-15" *ngIf="PROVIDER === 
'aws'" [hidden]="!selectedImage.templates.length">
           <div class="d-flex cursor-pointer label" 
(click)="addAdditionalParams('spotInstances')">
@@ -314,55 +309,68 @@
             rises above your bid price, the Spot instance is reclaimed by AWS 
so that it can be given to another
             customer. Make sure to backup your data on periodic basis.</span>
         </div>
-          <div class="checkbox-group control-group"
-               [hidden]="PROVIDER === 'gcp' && selectedImage?.image === 
'docker.datalab-dataengine-service'"
-               *ngIf="notebook_instance?.image !== 'docker.datalab-zeppelin'">
-              <div class="d-flex cursor-pointer label" 
(click)="addAdditionalParams('configuration')">
-                <div class="empty-checkbox ml-10" [ngClass]="{'checked': 
isSelected.configuration}">
-                  <span class="checked-checkbox" 
*ngIf="isSelected.configuration"></span>
-                </div>
-                <span class="pl-5">Cluster configurations</span>
-              </div>
-              <div class="config-link" *ngIf="(isSelected.configuration)
-            && selectedImage?.image === 'docker.datalab-dataengine-service'
-            && PROVIDER === 'aws'">
-                  To view example JSON of configurations refer for <a
-                      
href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html";
-                      target="_blank">AWS
-                  official documentation</a>
-              </div>
+        <div class="checkbox-group control-group"
+              [hidden]="PROVIDER === 'gcp' && selectedImage?.image === 
'docker.datalab-dataengine-service'"
+              *ngIf="notebook_instance?.image !== 'docker.datalab-zeppelin'">
+          <div class="d-flex cursor-pointer label" 
(click)="addAdditionalParams('configuration')">
+            <div class="empty-checkbox ml-10" [ngClass]="{'checked': 
isSelected.configuration}">
+              <span class="checked-checkbox" 
*ngIf="isSelected.configuration"></span>
+            </div>
+            <span class="pl-5">Cluster configurations</span>
           </div>
-          <div class="checkbox-group ml-10">
-              <div class="config-details" [ngClass]="{ show: 
isSelected.configuration }">
-            <textarea formControlName="configuration_parameters" 
placeholder="Cluster configuration template, JSON"
-                      data-gramm_editor="false"></textarea>
-                  <span class="error"
-                        
*ngIf="!resourceForm?.controls.configuration_parameters.valid && 
resourceForm?.controls['configuration_parameters'].dirty">Configuration
-              parameters is not in a valid format.</span>
-              </div>
+          <div class="config-link" 
+              *ngIf="(isSelected.configuration) 
+                && selectedImage?.image === 'docker.datalab-dataengine-service'
+                && PROVIDER === 'aws'"
+          >
+            To view example JSON of configurations refer for <a
+                
href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html";
+                target="_blank">AWS
+            official documentation</a>
           </div>
-          <div *ngIf="notebook_instance?.image === 'docker.datalab-zeppelin'" 
class="ml-10">
-              <small>Spark default configuration for Apache Zeppelin can not 
be changed from DataLab UI. Currently it
-                  can be
-                  done directly through Apache Zeppelin interpreter menu.
-                  For more details please refer for Apache Zeppelin <a
-                          
href="https://zeppelin.apache.org/docs/0.9.0/usage/interpreter/overview.html"; 
target="_blank">official
-                      documentation</a>.
-              </small>
+        </div>
+        <div class="checkbox-group ml-10">
+          <div class="config-details" [ngClass]="{ show: 
isSelected.configuration }">
+            <textarea formControlName="configuration_parameters" 
+                      placeholder="Cluster configuration template, JSON"
+                      data-gramm_editor="false">
+            </textarea>
+            <span class="error"
+                  
*ngIf="!resourceForm?.controls.configuration_parameters.valid 
+                  && resourceForm?.controls['configuration_parameters'].dirty">
+                  Configuration parameters is not in a valid format.
+            </span>
           </div>
-          <div class="text-center m-top-30">
-              <button mat-raised-button type="button" 
(click)="dialogRef.close()" class="butt action">Cancel</button>
-              <button mat-raised-button type="button" 
[disabled]="!resourceForm?.valid ||
-              (!resourceForm.value.shape_slave) ||
-              (selectedImage?.image === 'docker.datalab-dataengine-service' && 
!resourceForm.value.version)"
-                      
(click)="createComputationalResource(resourceForm.value)" class="butt 
butt-success action"
-                      [ngClass]="{'not-allowed': !resourceForm?.valid ||
-              (selectedImage?.image === 'docker.datalab-dataengine-service' && 
!resourceForm.value.shape_slave) ||
-              (selectedImage?.image === 'docker.datalab-dataengine-service' && 
!resourceForm.value.version) }">Create
-              </button>
+        </div>
+        <div *ngIf="notebook_instance?.image === 'docker.datalab-zeppelin'" 
class="ml-10">
+          <small>Spark default configuration for Apache Zeppelin can not be 
changed from DataLab UI. Currently it
+              can be
+              done directly through Apache Zeppelin interpreter menu.
+              For more details please refer for Apache Zeppelin <a
+                      
href="https://zeppelin.apache.org/docs/0.9.0/usage/interpreter/overview.html"; 
target="_blank">official
+                  documentation</a>.
+          </small>
+        </div>
+        <div class="text-center m-top-30">
+          <button mat-raised-button 
+                  type="button" 
+                  (click)="dialogRef.close()" 
+                  class="butt action">Cancel
+          </button>
+          <button mat-raised-button 
+                  type="button" 
+                  [disabled]="!resourceForm?.valid 
+                    || (!resourceForm.value.shape_slave) 
+                    || (selectedImage?.image === 
'docker.datalab-dataengine-service' && !resourceForm.value.version)"
+                  (click)="createComputationalResource(resourceForm.value)" 
+                  class="butt butt-success action"
+                  [ngClass]="{'not-allowed': !resourceForm?.valid 
+                    || (selectedImage?.image === 
'docker.datalab-dataengine-service' && !resourceForm.value.shape_slave) 
+                    || (selectedImage?.image === 
'docker.datalab-dataengine-service' && !resourceForm.value.version) }">
+                  Create
+          </button>
         </div>
       </form>
-
     </div>
     <ng-template #placeholder>
       <div *ngIf="!loading && !clusterTypes?.length" class="info message">
diff --git 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
index 70b24e2..76852a9 100644
--- 
a/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/app/resources/computational/computational-resource-create-dialog/computational-resource-create-dialog.component.ts
@@ -88,7 +88,6 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
 
   public selectImage($event) {
     this.selectedImage = $event;
-    this.selectedImage.computationGPU = ['tesla1', 'tesla2', 'tesla3'];
     this.filterShapes();
     this.getComputationalResourceLimits();
 
@@ -267,7 +266,6 @@ export class ComputationalResourceCreateDialogComponent 
implements OnInit {
         this.clusterTypes.forEach((cluster, index) => 
this.clusterTypes[index].computation_resources_shapes =
           SortUtils.shapesSort(cluster.computation_resources_shapes));
         this.selectedImage = this.clusterTypes[0];
-        this.selectedImage.computationGPU = ['tesla1', 'tesla2', 'tesla3'];
         if (this.selectedImage) {
           this._ref.detectChanges();
           this.filterShapes();
diff --git 
a/services/self-service/src/main/resources/webapp/src/dictionary/gcp.dictionary.ts
 
b/services/self-service/src/main/resources/webapp/src/dictionary/gcp.dictionary.ts
index 179fc45..9cf117b 100644
--- 
a/services/self-service/src/main/resources/webapp/src/dictionary/gcp.dictionary.ts
+++ 
b/services/self-service/src/main/resources/webapp/src/dictionary/gcp.dictionary.ts
@@ -72,7 +72,8 @@ export const NAMING_CONVENTION_GCP = {
         'total_instance_number_max': 'max_spark_instance_count',
         'data_engine_master_instance_size': 'Machine type',
         'master_instance_number': 'Master machine number',
-        'master_node_shape': 'dataengine_instance_shape',
+        'master_node_shape': 'master_node_shape',
+        'slave_node_shape': 'slave_node_shape',
         'total_instance_number': 'dataengine_instance_count',
     },
 };

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

Reply via email to