You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by yt...@apache.org on 2021/06/18 08:27:03 UTC
[incubator-datalab] 01/01: [DATALAB-2431] added new parameters for
Apache Standalone cluster
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 <ty...@gmail.com>
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: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org