This is an automated email from the ASF dual-hosted git repository. ytykhun pushed a commit to branch DATALAB-1939 in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit 66cc8e2fae88c9ea5a7683987f5fc0ddd4f1d34a Author: Yurii Tykhun <[email protected]> AuthorDate: Tue Jun 15 10:44:54 2021 +0300 [DATALAB-1939] showed all resources which will be terminated --- .../app/administration/project/project.component.ts | 20 +++++++++++--------- .../create-environment.component.html | 8 ++++---- .../create-environment.component.ts | 20 ++++++++++---------- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts index ba60451..2e28831 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts @@ -26,7 +26,7 @@ import { ProjectDataService } from './project-data.service'; import {HealthStatusService, ProjectService, UserResourceService} from '../../core/services'; import { NotificationDialogComponent } from '../../shared/modal-dialog/notification-dialog'; import { ProjectListComponent } from './project-list/project-list.component'; -import {ExploratoryModel} from '../../resources/resources-grid/resources-grid.model'; +import { EnvironmentsDataService } from '../management/management-data.service'; export interface Endpoint { name: string; @@ -67,7 +67,7 @@ export class ProjectComponent implements OnInit, OnDestroy { private projectService: ProjectService, private projectDataService: ProjectDataService, private healthStatusService: HealthStatusService, - private userResourceService: UserResourceService + private environmentsDataService: EnvironmentsDataService ) { } ngOnInit() { @@ -85,10 +85,9 @@ export class ProjectComponent implements OnInit, OnDestroy { } private getResources() { - this.userResourceService.getUserProvisionedResources() - .subscribe((result: any) => { - this.resources = ExploratoryModel.loadEnvironments(result); - }); + this.environmentsDataService.getEnvironmentDataDirect().subscribe((data: any) => { + this.resources = data; + }); } refreshGrid() { @@ -125,13 +124,16 @@ export class ProjectComponent implements OnInit, OnDestroy { private toggleStatusRequest(data, action, isOnlyOneEdge?) { if ( action === 'terminate') { - const projectsResources = this.resources.filter(resource => resource.project === data.project_name); - const activeProjectsResources = projectsResources.length ? projectsResources[0].exploratory + const projectsResources = this.resources + .filter(resource => resource.project === data.project_name && resource.resource_type !== "edge node"); + + const activeProjectsResources = projectsResources?.length ? projectsResources .filter(expl => expl.status !== 'terminated' && expl.status !== 'terminating' && expl.status !== 'failed') : []; + const termResources = data.endpoint.reduce((res, endp) => { res.push(...activeProjectsResources.filter(resource => resource.endpoint === endp)); return res; - }, []).map(resource => resource.name); + }, []).map(resource => resource.resource_name); if (termResources.length === 0 && !isOnlyOneEdge) { this.edgeNodeAction(data, action); diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html index b3f280c..56b12c9 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.html @@ -223,7 +223,7 @@ <span class="form-field-wrapper" [ngClass]="{ 'not-active': !createExploratoryForm.controls['shape'].value}"> <mat-form-field> <mat-label>Select GPU type</mat-label> - <mat-select formControlName="gpuType" disableOptionCentering [disabled]="!createExploratoryForm.controls['shape'].value" + <mat-select formControlName="gpu_type" disableOptionCentering [disabled]="!createExploratoryForm.controls['shape'].value" panelClass="create-resources-dialog" placeholder="GPU type"> <mat-option *ngFor="let list_item of gpuTypes" [value]="list_item" (click)="setCount('', list_item)"> {{ list_item}} @@ -245,12 +245,12 @@ [matTooltip]="'Please, select GPU type.'" matTooltipPosition="above" [matTooltipClass]="'full-size-tooltip'" - [matTooltipDisabled]="!!createExploratoryForm.controls['gpuType'].value" + [matTooltipDisabled]="!!createExploratoryForm.controls['gpu_type'].value" > - <span class="form-field-wrapper" [ngClass]="{ 'not-active': !createExploratoryForm.controls['gpuType'].value}"> + <span class="form-field-wrapper" [ngClass]="{ 'not-active': !createExploratoryForm.controls['gpu_type'].value}"> <mat-form-field> <mat-label>Select GPU count</mat-label> - <mat-select formControlName="gpuCount" disableOptionCentering [disabled]="!createExploratoryForm.controls['gpuType'].value" + <mat-select formControlName="gpu_count" disableOptionCentering [disabled]="!createExploratoryForm.controls['gpu_type'].value" panelClass="create-resources-dialog" placeholder="GPU count"> <mat-option *ngFor="let list_item of gpuCount" [value]="list_item"> {{ list_item }} diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts index 0acb47f..958261a 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/create-environment/create-environment.component.ts @@ -105,7 +105,7 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { } public setEndpoints(project) { - const controls = ['endpoint', 'version', 'shape', 'gpuType', 'gpuCount']; + const controls = ['endpoint', 'version', 'shape', 'gpu_type', 'gpu_count']; this.resetSelections(controls); this.endpoints = project.endpoints @@ -152,11 +152,11 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { public getShapes(template) { this.selectedImage = null; - const controls = ['notebook_image_name', 'shape', 'gpuType', 'gpuCount']; + const controls = ['notebook_image_name', 'shape', 'gpu_type', 'gpu_count']; controls.forEach(control => { this.createExploratoryForm.controls[control].setValue(null); - if (control === 'gpuType' || control === 'gpuCount') { + if (control === 'gpu_type' || control === 'gpu_count') { this.createExploratoryForm.controls[control].clearValidators(); this.createExploratoryForm.controls[control].updateValueAndValidity(); } @@ -208,7 +208,7 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { }; data.cluster_config = data.cluster_config ? JSON.parse(data.cluster_config) : null; - + this.userResourceService.createExploratoryEnvironment({ ...parameters, ...data }).subscribe((response: any) => { if (response.status === HTTP_STATUS_CODES.OK) this.dialogRef.close(); }, error => this.toastr.error(error.message || 'Exploratory creation failed!', 'Oops!')); @@ -236,7 +236,7 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { this.additionalParams.gpu = !this.additionalParams.gpu; this.createExploratoryForm.controls['gpu_enabled'].setValue(this.additionalParams.gpu); - const controls = ['gpuType', 'gpuCount']; + const controls = ['gpu_type', 'gpu_count']; if (!this.additionalParams.gpu) { controls.forEach(control => { this.createExploratoryForm.controls[control].setValue(null); @@ -256,7 +256,7 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { } public setInstanceSize() { - const controls = ['gpuType', 'gpuCount']; + const controls = ['gpu_type', 'gpu_count']; controls.forEach(control => { this.createExploratoryForm.controls[control].setValue(null); }); @@ -266,8 +266,8 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { if (gpuType && this.currentTemplate.image === 'docker.datalab-deeplearning') { this.additionalParams.gpu = true; this.createExploratoryForm.controls['gpu_enabled'].setValue(this.additionalParams.gpu); - this.createExploratoryForm.controls['gpuCount'].setValidators([Validators.required]); - this.createExploratoryForm.controls['gpuCount'].updateValueAndValidity(); + this.createExploratoryForm.controls['gpu_count'].setValidators([Validators.required]); + this.createExploratoryForm.controls['gpu_count'].updateValueAndValidity(); } // if (type === 'master') { const masterShape = this.createExploratoryForm.controls['shape'].value; @@ -293,8 +293,8 @@ export class ExploratoryEnvironmentCreateComponent implements OnInit { ]], cluster_config: ['', [this.validConfiguration.bind(this)]], custom_tag: ['', [Validators.pattern(PATTERNS.namePattern)]], - gpuType: [null], - gpuCount: [null], + gpu_type: [null], + gpu_count: [null], gpu_enabled: [false] }); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
