You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by dg...@apache.org on 2020/07/08 14:48:38 UTC

[incubator-dlab] 01/01: [DLAB-1925] Change total instance number for EMR, fixed billing on resource

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

dgnatyshyn pushed a commit to branch DLAB-1925
in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git

commit 20a3f412b30f23b326cbb5d0619a77122bcfbd09
Author: Dmytro_Gnatyshyn <di...@ukr.net>
AuthorDate: Wed Jul 8 17:48:14 2020 +0300

    [DLAB-1925] Change total instance number for EMR, fixed billing on resource
---
 .../app/administration/project/project-data.service.ts   | 13 +++++++++----
 .../project/project-list/project-list.component.html     |  4 ++--
 .../cluster-details/cluster-details.component.html       |  5 ++++-
 .../resources-grid/resources-grid.component.html         |  2 +-
 .../src/app/resources/scheduler/scheduler.component.html | 16 ++++++++--------
 .../src/app/resources/scheduler/scheduler.component.ts   |  9 +++++----
 .../notification-dialog/notification-dialog.component.ts |  2 +-
 7 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts
index 014c89b..a461686 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-data.service.ts
@@ -47,11 +47,16 @@ export class ProjectDataService {
             if (response && this.endpointsList.length) {
               response.forEach(project => project.endpoints.forEach(endpoint => {
                 const filtredEndpoints =  this.endpointsList.filter(v => v.name === endpoint.name);
-                if (filtredEndpoints.length) {
-                  endpoint.endpointStatus = this.endpointsList.filter(v => v.name === endpoint.name)[0].status;
-                } else {
-                  endpoint.endpointStatus = 'N/A';
+                const idx = this.endpointsList.findIndex(v => v.name === endpoint.name);
+                // console.log('IDX ', idx);
+                // if (filtredEndpoints.length) {
+                if (idx >= 0) {
+                  endpoint.endpointStatus = this.endpointsList[idx].status;
                 }
+
+                // } else {
+                //   endpoint.endpointStatus = 'N/A';
+                // }
               }));
             }
           return of(response);
diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
index 04f525b..ef03098 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html
@@ -51,12 +51,12 @@
           </div>
           <div class="resource-status">
             <span [ngClass]="{'active' : endpoint.endpointStatus === 'ACTIVE', 'failed': endpoint.endpointStatus === 'INACTIVE'}">
-              {{ endpoint.endpointStatus | titlecase }}
+              {{ (endpoint.endpointStatus | titlecase) || 'N/A'}}
             </span>
           </div>
 
           <span class="status resource-status"
-            ngClass="{{endpoint.status.toLowerCase() || ''}}">{{ endpoint.status.toLowerCase() }}</span>
+            [ngClass]="endpoint?.status.toLowerCase() || ''">{{ endpoint?.status.toLowerCase() }}</span>
         </div>
       </ng-template>
     </td>
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 58ec39f..25f41d9 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
@@ -71,7 +71,10 @@
               <p>Total instance number:</p>
             </div>
           </ng-template>
-          <div class="col"><span>{{ resource[DICTIONARY[PROVIDER][resource.image].total_instance_number] || 1}}</span></div>
+          <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'">1</span>
+          </div>
         </div>
         <div class="row-wrap"
           *ngIf="DICTIONARY[PROVIDER].cloud_provider === 'gcp' && resource.image === 'docker.dlab-dataengine-service'">
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
index 2f9088c..0edb5e7 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.html
@@ -137,7 +137,7 @@
             </computational-resources-list>
           </td>
           <td *ngIf="healthStatus?.billingEnabled" class="cost-col">
-            <span class="total_cost">{{ element.cost || 'N/A' }} {{ element.currency_code || '' }}</span>
+            <span class="total_cost">{{ element.billing.report_lines.length ? element.cost : 'N/A' }} {{ element.currency_code || '' }}</span>
             <span (click)="element.billing && printCostDetails(element)" class="currency_details"
               [ngClass]="{ 'not-allowed' : !element.billing.report_lines.length }">
               <i class="material-icons">help_outline</i>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html
index 304c511..c49628e 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.html
@@ -64,7 +64,7 @@
               <mat-form-field>
                 <input matInput [matDatepicker]="startDate" placeholder="Choose start date" formControlName="startDate">
                 <mat-datepicker-toggle
-                  [ngClass]="{'not-allowed' : destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule }"
+
                   matSuffix [for]="startDate"></mat-datepicker-toggle>
                 <mat-datepicker #startDate></mat-datepicker>
               </mat-form-field>
@@ -72,9 +72,9 @@
             <div class="col-3">
               <mat-form-field>
                 <input matInput [matDatepicker]="finishDate" placeholder="Choose finish date"
-                  formControlName="finishDate" [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule">
-                <mat-datepicker-toggle matSuffix [for]="finishDate" [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"></mat-datepicker-toggle>
-                <mat-datepicker #finishDate [disabled]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule"></mat-datepicker>
+                  formControlName="finishDate">
+                <mat-datepicker-toggle matSuffix [for]="finishDate" [ngClass]="{'not-allowed' : destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule }"></mat-datepicker-toggle>
+                <mat-datepicker #finishDate ></mat-datepicker>
               </mat-form-field>
             </div>
             <div class="col-3" *ngIf="destination.type === 'СOMPUTATIONAL'; else timezone">
@@ -103,11 +103,11 @@
             <div class="control-group col-3 time-range">
               <dlab-time-picker [(pickTime)]="startTime" [label]="'Choose start time'"
                 [disable]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule">
+                {{destination.type}}
               </dlab-time-picker>
             </div>
             <div class="control-group col-3 time-range">
-<!--              <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule">-->
-              <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="true">
+              <dlab-time-picker [(pickTime)]="endTime" [label]="'Choose finish time'" [disable]="destination.type === 'СOMPUTATIONAL' && inherit ||!enableSchedule">
               </dlab-time-picker>
             </div>
             <div class="control-group col-3 time-range" *ngIf="destination.type === 'СOMPUTATIONAL'">
@@ -141,7 +141,7 @@
               <label>Start date:</label>
               <mat-button-toggle *ngFor="let day of weekdays; let i = index" value="{{ day }}"
                 (change)="onDaySelect($event, day, 'start')"
-                [disabled]="(destination.type === 'СOMPUTATIONAL' && inherit) || !enableSchedule"
+                [disabled]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule"
                 [checked]="selectedStartWeekDays[day.toLowerCase()]">{{ day[0] }}
               </mat-button-toggle>
             </div>
@@ -149,7 +149,7 @@
               <label>Stop date:</label>
               <mat-button-toggle *ngFor="let day of weekdays; let i = index" value="{{ day }}"
                 (change)="onDaySelect($event, day, 'stop')"
-                [disabled]="(destination.type === 'СOMPUTATIONAL' && inherit) || !enableSchedule"
+                [disabled]="destination.type === 'СOMPUTATIONAL' && inherit || !enableSchedule"
                 [checked]="selectedStopWeekDays[day.toLowerCase()]">{{ day[0] }}
               </mat-button-toggle>
             </div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts
index 0df2a59..c923677 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/scheduler/scheduler.component.ts
@@ -88,7 +88,6 @@ export class SchedulerComponent implements OnInit {
 
   public open(notebook, type, resource?): void {
     this.notebook = notebook;
-    console.log(this.notebook)
     this.zones = _moment.tz.names()
       .map(item => [_moment.tz(item).format('Z'), item])
       .sort()
@@ -141,8 +140,10 @@ export class SchedulerComponent implements OnInit {
     if (this.destination.type === 'СOMPUTATIONAL' && this.inherit) {
       this.getExploratorySchedule(this.notebook.project, this.notebook.name);
       this.schedulerForm.get('startDate').disable();
+      this.schedulerForm.get('finishDate').disable();
     } else {
       this.schedulerForm.get('startDate').enable();
+      this.schedulerForm.get('finishDate').enable();
     }
   }
 
@@ -156,7 +157,7 @@ export class SchedulerComponent implements OnInit {
       ? this.schedulerForm.get('startDate').enable()
       : this.schedulerForm.get('startDate').disable();
 
-    this.enableSchedule ? this.schedulerForm.get('finishDate').enable() : this.schedulerForm.get('finishDate').disable();
+    this.enableSchedule && this.destination.type !== 'СOMPUTATIONAL' ? this.schedulerForm.get('finishDate').enable() : this.schedulerForm.get('finishDate').disable();
     this.enableSchedule ? this.schedulerForm.get('terminateDate').enable() : this.schedulerForm.get('terminateDate').disable();
 
     if (this.enableSchedule && $event.source) this.enableIdleTimeView = false;
@@ -256,7 +257,6 @@ export class SchedulerComponent implements OnInit {
   }
 
   private setScheduleByInactivity() {
-    console.log(this.notebook)
     const data = { sync_start_required: this.parentInherit, check_inactivity_required: this.enableIdleTime, max_inactivity: this.schedulerForm.controls.inactivityTime.value };
     (this.destination.type === 'СOMPUTATIONAL')
       ? this.setInactivity(this.notebook.project, this.notebook.name, data, this.destination.computational_name)
@@ -266,7 +266,7 @@ export class SchedulerComponent implements OnInit {
   private formInit(start?: string, end?: string, terminate?: string) {
     this.schedulerForm = this.formBuilder.group({
       startDate: { disabled: this.inherit, value: start ? _moment(start).format() : null },
-      finishDate: { disabled: false, value: end ? _moment(end).format() : null },
+      finishDate: { disabled: this.inherit, value: end ? _moment(end).format() : null },
       terminateDate: { disabled: false, value: terminate ? _moment(terminate).format() : null },
       inactivityTime: [this.inactivityLimits.min,
       [Validators.compose([Validators.pattern(this.integerRegex), this.validInactivityRange.bind(this)])]]
@@ -284,6 +284,7 @@ export class SchedulerComponent implements OnInit {
           this.startTime = params.start_time ? SchedulerCalculations.convertTimeFormat(params.start_time) : null;
           this.endTime = params.end_time ? SchedulerCalculations.convertTimeFormat(params.end_time) : null;
           this.formInit(params.begin_date, params.finish_date, params.terminate_datetime);
+          console.log();
           this.schedulerForm.controls.inactivityTime.setValue(params.max_inactivity || this.inactivityLimits.min);
           this.enableIdleTime = params.check_inactivity_required;
           this.considerInactivity = params.consider_inactivity || false;
diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
index 1f9794c..7ccfbf5 100644
--- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
@@ -40,7 +40,7 @@ import {Endpoint} from '../../../administration/project/project.component';
               <div *ngIf="data.type === 'list'" class="info">
                   <div *ngIf="data.template.notebook.length > 0">
                       Following notebook server<span *ngIf="data.template.notebook.length>1">s</span>
-                    <span *ngFor="let item of data.template.notebook">&nbsp;
+                    <span *ngFor="let item of data.template.notebook">
                         <span class="strong info">{{ item.exploratory_name}}</span> on project <span
                         class="strong info">{{ item.project }}</span>
                         <span *ngIf="data.template.notebook.length > 1"> , </span>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org