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/01 11:37:28 UTC

[incubator-dlab] branch develop updated: [DLAB-1883]: Disabled access to bucket if endpoint is stopped or terminated (#804)

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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 0282232  [DLAB-1883]: Disabled access to bucket if endpoint is stopped or terminated (#804)
0282232 is described below

commit 0282232dd2df250f3f696fc0f41cddcec2765eca
Author: Dmytro Gnatyshyn <42...@users.noreply.github.com>
AuthorDate: Wed Jul 1 14:37:21 2020 +0300

    [DLAB-1883]: Disabled access to bucket if endpoint is stopped or terminated (#804)
---
 .../project-list/project-list.component.html       |  2 +-
 .../project-list/project-list.component.scss       |  6 +-
 .../audit/audit-grid/audit-grid.component.scss     |  2 +-
 .../resources-grid/resources-grid.component.ts     | 95 ++++++++++++++--------
 4 files changed, 65 insertions(+), 40 deletions(-)

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 d8f697f..04f525b 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
@@ -36,7 +36,7 @@
     <th mat-header-cell *matHeaderCellDef class="endpoints">
       <span class="label-endpoint"> Endpoint </span>
       <span class="label-endpoint-status"> Endpoint status </span>
-      <span class="label-status"> Edge node status </span>
+      <span class="label-status">Edge node status </span>
     </th>
     <td mat-cell *matCellDef="let element" class="source endpoints">
       <div *ngIf="!element.endpoints?.length; else list">
diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.scss b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.scss
index efe9ba3..b985d94 100644
--- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.scss
@@ -34,11 +34,7 @@ table {
     padding: 15px 0;
 
     .resource-wrap {
-      .resource-name {
-        width: 30%;
-        padding-left: 0;
-      }
-      resource-name, resource-status{
+      .resource-name, .resource-status {
         width: 30%;
         padding-left: 0;
       }
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.scss b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.scss
index d2f4f9a..67abbaf 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.scss
@@ -277,6 +277,6 @@
 }
 
 .audit-user{
-  padding-left: 14px;
+  padding-left: 19px;
 }
 
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
index 164b539..c67f019 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources-grid/resources-grid.component.ts
@@ -16,15 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-/* tslint:disable:no-empty */
 
+import {Project} from '../../administration/project/project.component';
 import {Component, Input, OnInit} from '@angular/core';
 import { animate, state, style, transition, trigger } from '@angular/animations';
 import { ToastrService } from 'ngx-toastr';
 import { MatDialog } from '@angular/material/dialog';
-
 import {ProjectService, UserResourceService} from '../../core/services';
-
 import { ExploratoryModel, Exploratory } from './resources-grid.model';
 import { FilterConfigurationModel } from './filter-configuration.model';
 import { GeneralEnvironmentStatus } from '../../administration/management/management.model';
@@ -37,15 +35,40 @@ import { ComputationalResourceCreateDialogComponent } from '../computational/com
 import { CostDetailsDialogComponent } from '../exploratory/cost-details-dialog';
 import { ConfirmationDialogComponent } from '../../shared/modal-dialog/confirmation-dialog';
 import { SchedulerComponent } from '../scheduler';
-
 import { DICTIONARY } from '../../../dictionary/global.dictionary';
 import {ProgressBarService} from '../../core/services/progress-bar.service';
 import {ComputationModel} from '../computational/computational-resource.model';
 import {NotebookModel} from '../exploratory/notebook.model';
 
+export interface SharedEndpoint {
+  edge_node_ip: string;
+  shared_bucket_name?: string | null;
+  shared_container_name?: string | null;
+  status: string;
+  user_own_bucket_name?: string | null;
+  user_container_name?: string | null;
+  user_own_bicket_name?: string | null;
+}
 
+export interface ProjectEndpoint {
+  account: string;
+  cloudProvider: string;
+  endpoint_tag: string;
+  name: string;
+  status: string;
+  url: string;
+}
 
+export interface BucketList {
+  name: string;
+  children: Bucket[];
+  length?: number;
+}
 
+export interface Bucket {
+  name: string;
+  endpoint: string;
+}
 
 @Component({
   selector: 'resources-grid',
@@ -89,7 +112,7 @@ export class ResourcesGridComponent implements OnInit {
 
   public displayedColumns: string[] = this.filteringColumns.map(item => item.name);
   public displayedFilterColumns: string[] = this.filteringColumns.map(item => item.filter_class);
-  public bucketsList;
+  public bucketsList: BucketList;
   public activeProjectsList: any;
 
 
@@ -108,7 +131,7 @@ export class ResourcesGridComponent implements OnInit {
   }
 
   public getUserProjects() {
-    this.projectService.getUserProjectsList(true).subscribe((projects: any) => {
+    this.projectService.getUserProjectsList(true).subscribe((projects: Project[]) => {
       this.activeProjectsList = projects;
     });
   }
@@ -130,11 +153,11 @@ export class ResourcesGridComponent implements OnInit {
     this.collapseFilterRow = !this.collapseFilterRow;
   }
 
-  public onUpdate($event) {
+  public onUpdate($event): void {
     this.filterForm[$event.type] = $event.model;
   }
 
-  public selectActiveProject(project = '') {
+  public selectActiveProject(project = ''): void {
     this.filterForm.project = project;
     this.applyFilter_btnClick(this.filterForm);
   }
@@ -154,7 +177,7 @@ export class ResourcesGridComponent implements OnInit {
    }
 
 
-  public isResourcesInProgress(notebook) {
+  public isResourcesInProgress(notebook): boolean {
     const env = this.getResourceByName(notebook.name, notebook.project);
 
     if (env && env.resources.length) {
@@ -192,7 +215,7 @@ export class ResourcesGridComponent implements OnInit {
       .afterClosed().subscribe(() => this.buildGrid());
   }
 
-  public exploratoryAction(data, action: string) {
+  public exploratoryAction(data, action: string): void {
     const resource = this.getResourceByName(data.name, data.project);
 
     if (action === 'deploy') {
@@ -224,6 +247,34 @@ export class ResourcesGridComponent implements OnInit {
     }
   }
 
+  public getBuckets(): void {
+    const bucketsList = [];
+    this.environments.forEach(project => {
+      if (project.endpoints && project.endpoints.length !== 0) {
+        project.endpoints.forEach((endpoint: ProjectEndpoint) => {
+          if (endpoint.status === 'ACTIVE') {
+            const currEndpoint: SharedEndpoint = project.projectEndpoints[endpoint.name];
+            const edgeItem: BucketList = {name: `${project.project} (${endpoint.name})`, children: []};
+            const projectBucket: string = currEndpoint.user_own_bicket_name
+              || currEndpoint.user_own_bucket_name
+              || currEndpoint.user_container_name;
+            const sharedBucket: string = currEndpoint.shared_bucket_name || currEndpoint.shared_container_name;
+            if (projectBucket && currEndpoint.status !== 'terminated'
+              && currEndpoint.status !== 'terminating' && currEndpoint.status !== 'failed') {
+              edgeItem.children.push({name: projectBucket, endpoint: endpoint.name});
+            }
+            if (sharedBucket) {
+              edgeItem.children.push({name: sharedBucket, endpoint: endpoint.name});
+            }
+            bucketsList.push(edgeItem);
+          }
+        });
+      }
+    });
+
+    this.bucketsList = SortUtils.flatDeep(bucketsList, 1).filter(v => v.children.length);
+  }
+
 
   // PRIVATE
   private getResourceByName(notebook_name: string, project_name: string) {
@@ -254,7 +305,7 @@ export class ResourcesGridComponent implements OnInit {
     this.filterConfiguration = new FilterConfigurationModel('', statuses, shapes, resources, '', '');
   }
 
-  private applyFilter_btnClick(config: FilterConfigurationModel) {
+  public applyFilter_btnClick(config: FilterConfigurationModel): void {
 
     let filteredData = this.getEnvironmentsListCopy();
 
@@ -342,28 +393,6 @@ export class ResourcesGridComponent implements OnInit {
       if (filterConfig[index].length) this.activeFiltering = true;
   }
 
-  public getBuckets() {
-    const bucketsList = this.environments.map(project => {
-      return Object.keys(project.projectEndpoints).map(key => {
-        if (project.endpoints.length === 0) {
-          return;
-        }
-        const currEndpoint = project.projectEndpoints[key];
-        const edgeItem = {name: `${project.project} (${key})`, children: []};
-        const projectBucket = currEndpoint.user_own_bicket_name || currEndpoint.user_own_bucket_name || currEndpoint.user_container_name;
-        const sharedBucket = currEndpoint.shared_bucket_name || currEndpoint.shared_container_name;
-        if (projectBucket && currEndpoint.status !== 'terminated' && currEndpoint.status !== 'terminating' && currEndpoint.status !== 'failed') {
-          edgeItem.children.push({name: projectBucket, endpoint: key});
-        }
-        if (sharedBucket) {
-          edgeItem.children.push({name: sharedBucket, endpoint: key});
-        }
-        return edgeItem;
-      }).filter(v => v);
-    });
-    this.bucketsList = SortUtils.flatDeep(bucketsList, 1).filter(v => v.children.length);
-  }
-
   private getUserPreferences(): void {
     this.userResourceService.getUserPreferences()
       .subscribe((result: FilterConfigurationModel) => {


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