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/06/10 09:06:49 UTC

[incubator-dlab] branch DLAB-1758 updated (b26657b -> 1b3f07c)

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

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


    from b26657b  [DLAB-1758]: Added info dialogs, log url clicks, added styles
     add e688b73  Added audit support for projects
     add 28ed0cb  Added audit support for projects
     new e644c1a  Merge branch 'audit' of github.com:apache/incubator-dlab into DLAB-1758
     new 1b3f07c  [DLAB-1758]: Connect audit UI with backend

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 services/self-service/self-service.yml             |   4 +-
 .../annotation/{ProjectAdmin.java => Audit.java}   |   5 +-
 .../backendapi/annotation/{User.java => Info.java} |   2 +-
 .../annotation/{User.java => ResourceName.java}    |   2 +-
 .../conf/SelfServiceApplicationConfiguration.java  |   7 ++
 .../com/epam/dlab/backendapi/dao/AuditDAO.java}    |   8 +-
 .../dao/{UserGroupDao.java => AuditDAOImpl.java}   |  17 ++--
 .../java/com/epam/dlab/backendapi/dao/BaseDAO.java |   2 +
 .../dlab/backendapi/domain/AuditActionEnum.java    |   5 +-
 ...dpointResourcesDTO.java => AuditCreateDTO.java} |  14 +--
 ...hedulerConfigurationData.java => AuditDTO.java} |  11 +--
 .../backendapi/interceptor/AuditInterceptor.java   | 100 +++++++++++++++++++++
 .../backendapi/modules/CloudProviderModule.java    |  11 ++-
 .../epam/dlab/backendapi/modules/DevModule.java    |   6 ++
 .../dlab/backendapi/modules/ProductionModule.java  |   6 ++
 .../dlab/backendapi/resources/ProjectResource.java |   8 +-
 .../resources/dto/HealthStatusPageDTO.java         |   2 +
 .../dlab/backendapi/service/AuditService.java}     |   6 +-
 .../dlab/backendapi/service/ProjectService.java    |   5 +-
 .../backendapi/service/impl/AuditServiceImpl.java} |  21 +++--
 .../impl/InfrastructureInfoServiceImpl.java        |   1 +
 .../service/impl/ProjectServiceImpl.java           |  95 ++++++++++++++++----
 .../services/applicationServiceFacade.service.ts   |  16 ++++
 .../webapp/src/app/core/services/audit.service.ts  |  45 ++++++----
 .../src/app/reports/audit/audit.component.ts       |   7 +-
 .../cluster-details/cluster-details.component.ts   |   5 +-
 .../detail-dialog/detail-dialog.component.ts       |   3 +
 27 files changed, 330 insertions(+), 84 deletions(-)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/annotation/{ProjectAdmin.java => Audit.java} (90%)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/annotation/{User.java => Info.java} (97%)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/annotation/{User.java => ResourceName.java} (97%)
 copy services/{dlab-webapp-common/src/main/java/com/epam/dlab/rest/contracts/BackupAPI.java => self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java} (83%)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/dao/{UserGroupDao.java => AuditDAOImpl.java} (74%)
 copy integration-tests/src/main/java/com/epam/dlab/automation/docker/Labels.java => services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java (84%)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/domain/{EndpointResourcesDTO.java => AuditCreateDTO.java} (80%)
 copy services/self-service/src/main/java/com/epam/dlab/backendapi/domain/{SchedulerConfigurationData.java => AuditDTO.java} (82%)
 create mode 100644 services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java
 copy services/{provisioning-service/src/main/java/com/epam/dlab/backendapi/service/RestoreCallbackHandlerService.java => self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java} (87%)
 copy services/{dlab-webapp-common/src/main/java/com/epam/dlab/auth/SecurityUnauthorizedHandler.java => self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java} (62%)


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


[incubator-dlab] 01/02: Merge branch 'audit' of github.com:apache/incubator-dlab into DLAB-1758

Posted by dg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e644c1aeed7fdd931e105e75b25ea322045d7450
Merge: b26657b 28ed0cb
Author: Dmytro_Gnatyshyn <di...@ukr.net>
AuthorDate: Wed Jun 10 09:45:44 2020 +0300

    Merge branch 'audit' of github.com:apache/incubator-dlab into DLAB-1758

 services/self-service/self-service.yml             |   4 +-
 .../com/epam/dlab/backendapi/annotation/Audit.java |  33 +++++++
 .../com/epam/dlab/backendapi/annotation/Info.java  |  30 +++++++
 .../dlab/backendapi/annotation/ResourceName.java   |  30 +++++++
 .../conf/SelfServiceApplicationConfiguration.java  |   7 ++
 .../com/epam/dlab/backendapi/dao/AuditDAO.java     |  26 ++++++
 .../com/epam/dlab/backendapi/dao/AuditDAOImpl.java |  31 +++++++
 .../java/com/epam/dlab/backendapi/dao/BaseDAO.java |   2 +
 .../dlab/backendapi/domain/AuditActionEnum.java    |  24 +++++
 .../AuditCreateDTO.java}                           |  42 ++-------
 .../com/epam/dlab/backendapi/domain/AuditDTO.java  |  32 +++++++
 .../backendapi/interceptor/AuditInterceptor.java   | 100 +++++++++++++++++++++
 .../backendapi/modules/CloudProviderModule.java    |  11 ++-
 .../epam/dlab/backendapi/modules/DevModule.java    |   6 ++
 .../dlab/backendapi/modules/ProductionModule.java  |   6 ++
 .../dlab/backendapi/resources/ProjectResource.java |   8 +-
 .../resources/dto/HealthStatusPageDTO.java         |   2 +
 .../epam/dlab/backendapi/service/AuditService.java |  26 ++++++
 .../dlab/backendapi/service/ProjectService.java    |   5 +-
 .../backendapi/service/impl/AuditServiceImpl.java  |  39 ++++++++
 .../impl/InfrastructureInfoServiceImpl.java        |   1 +
 .../service/impl/ProjectServiceImpl.java           |  95 ++++++++++++++++----
 22 files changed, 498 insertions(+), 62 deletions(-)



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


[incubator-dlab] 02/02: [DLAB-1758]: Connect audit UI with backend

Posted by dg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1b3f07c18a9322d6d788255ef595183869bff6d0
Author: Dmytro_Gnatyshyn <di...@ukr.net>
AuthorDate: Wed Jun 10 12:06:19 2020 +0300

    [DLAB-1758]: Connect audit UI with backend
---
 .../services/applicationServiceFacade.service.ts   | 16 ++++++++
 .../webapp/src/app/core/services/audit.service.ts  | 45 ++++++++++++++--------
 .../src/app/reports/audit/audit.component.ts       |  7 +++-
 .../cluster-details/cluster-details.component.ts   |  5 ++-
 .../detail-dialog/detail-dialog.component.ts       |  3 ++
 5 files changed, 58 insertions(+), 18 deletions(-)

diff --git a/services/self-service/src/main/resources/webapp/src/app/core/services/applicationServiceFacade.service.ts b/services/self-service/src/main/resources/webapp/src/app/core/services/applicationServiceFacade.service.ts
index a207f97..7f125b3 100644
--- a/services/self-service/src/main/resources/webapp/src/app/core/services/applicationServiceFacade.service.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/core/services/applicationServiceFacade.service.ts
@@ -77,6 +77,7 @@ export class ApplicationServiceFacade {
   private static readonly PROJECT = 'project';
   private static readonly ENDPOINT = 'endpoint';
   private static readonly ENDPOINT_CONNECTION = 'endpoint_connection';
+  private static readonly AUDIT = 'audit';
 
   private requestRegistry: Dictionary<string>;
 
@@ -627,6 +628,18 @@ export class ApplicationServiceFacade {
       null);
   }
 
+  public getAuditList(): Observable<any> {
+    return this.buildRequest(HTTPMethod.GET,
+      this.requestRegistry.Item(ApplicationServiceFacade.AUDIT),
+      null);
+  }
+
+  public postActionToAudit(data): Observable<any> {
+    return this.buildRequest(HTTPMethod.POST,
+      this.requestRegistry.Item(ApplicationServiceFacade.AUDIT),
+      data);
+  }
+
   private setupRegistry(): void {
     this.requestRegistry = new Dictionary<string>();
 
@@ -709,6 +722,9 @@ export class ApplicationServiceFacade {
     this.requestRegistry.Add(ApplicationServiceFacade.PROJECT, '/api/project');
     this.requestRegistry.Add(ApplicationServiceFacade.ENDPOINT, '/api/endpoint');
     this.requestRegistry.Add(ApplicationServiceFacade.ENDPOINT_CONNECTION, '/api/endpoint/url/');
+
+    // audit
+    this.requestRegistry.Add(ApplicationServiceFacade.AUDIT, '/api/audit');
   }
 
   private buildRequest(method: HTTPMethod, url_path: string, body: any, opt?) {
diff --git a/services/self-service/src/main/resources/webapp/src/app/core/services/audit.service.ts b/services/self-service/src/main/resources/webapp/src/app/core/services/audit.service.ts
index f699632..70d1f17 100644
--- a/services/self-service/src/main/resources/webapp/src/app/core/services/audit.service.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/core/services/audit.service.ts
@@ -1,5 +1,7 @@
 import { Injectable } from '@angular/core';
 import {ApplicationServiceFacade} from './applicationServiceFacade.service';
+import {catchError, map} from 'rxjs/operators';
+import {ErrorUtils} from '../util';
 
 @Injectable({
   providedIn: 'root'
@@ -9,21 +11,34 @@ export class AuditService {
   }
 
   public getAuditData() {
-    return [
-      {user: 'Dlab-test-user1', action: 'Deleted users from group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
-      {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user2', action: 'Created notebook ', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Deleted user to group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
-      {user: 'Dlab-test-user1', action: 'Stopped notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Started notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Deleted Users from group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
-      {user: 'Dlab-test-user3', action: 'Created EMR', project: 'ProjectA', resource: 'Rstudio:Emr1', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Created notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
-      {user: 'Dlab-test-user1', action: 'Deleted user to group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
-      {user: 'Dlab-test-user2', action: 'Terminated notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
-      ];
+    return this.applicationServiceFacade
+      .getAuditList()
+      .pipe(
+        map(response => response),
+        catchError(ErrorUtils.handleServiceError));
   }
 
+  public sendDataToAudit(data) {
+    return this.applicationServiceFacade
+      .postActionToAudit(data)
+      .pipe(
+        map(response => response),
+        catchError(ErrorUtils.handleServiceError));
+  }
+    // return [
+    //   {user: 'Dlab-test-user1', action: 'Deleted users from group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
+    //   {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Created project', project: 'ProjectA', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user2', action: 'Created notebook ', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Deleted user to group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
+    //   {user: 'Dlab-test-user1', action: 'Stopped notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Started notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Deleted Users from group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
+    //   {user: 'Dlab-test-user3', action: 'Created EMR', project: 'ProjectA', resource: 'Rstudio:Emr1', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Created notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
+    //   {user: 'Dlab-test-user1', action: 'Deleted user to group', project: '', date: new Date().toLocaleString(), info: {name: 'admin', objects: ['user1', 'user2', 'user3', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1', 'Dlab-test-user1']}},
+    //   {user: 'Dlab-test-user2', action: 'Terminated notebook', project: 'ProjectA', resource: 'Rstudio', date: new Date().toLocaleString()},
+    //   ];
+
 }
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.component.ts b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.component.ts
index 4bdd0ee..fba41b2 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit.component.ts
@@ -84,8 +84,11 @@ export class AuditComponent implements OnInit, OnDestroy {
   }
 
   public buildAuditReport() {
-    this.auditData = this.auditService.getAuditData();
-    this.auditGrid.refreshAudit(this.auditData);
+    this.auditData = this.auditService.getAuditData().subscribe(auditData => {
+      console.log(auditData);
+      // this.auditGrid.refreshAudit(auditData);
+    });
+
 
   }
 
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
index 20bb53a..415cfaa 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
@@ -26,6 +26,7 @@ import { DateUtils, CheckUtils } from '../../../core/util';
 import { DataengineConfigurationService } from '../../../core/services';
 import { DICTIONARY } from '../../../../dictionary/global.dictionary';
 import { CLUSTER_CONFIGURATION } from '../computational-resource-create-dialog/cluster-configuration-templates';
+import {AuditService} from '../../../core/services/audit.service';
 
 @Component({
   selector: 'dlab-cluster-details',
@@ -52,7 +53,8 @@ export class DetailComputationalResourcesComponent implements OnInit {
     public toastr: ToastrService,
     public dialogRef: MatDialogRef<DetailComputationalResourcesComponent>,
     private dataengineConfigurationService: DataengineConfigurationService,
-    private _fb: FormBuilder
+    private _fb: FormBuilder,
+    private auditService: AuditService
   ) { }
 
   ngOnInit() {
@@ -117,6 +119,7 @@ export class DetailComputationalResourcesComponent implements OnInit {
   }
 
   private logAction(name: any, description: string) {
+    this.auditService.sendDataToAudit({resource_name: name, info: ['User opened link' + description]}).subscribe();
     console.log(`${name}: ${description}`);
   }
 }
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
index f30189c..b2788f5 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
@@ -28,6 +28,7 @@ import { DataengineConfigurationService } from '../../../core/services';
 import { CLUSTER_CONFIGURATION } from '../../computational/computational-resource-create-dialog/cluster-configuration-templates';
 import {BucketBrowserComponent} from '../../bucket-browser/bucket-browser.component';
 import {CopyPathUtils} from '../../../core/util/copyPathUtils';
+import {AuditService} from '../../../core/services/audit.service';
 
 @Component({
   selector: 'detail-dialog',
@@ -60,6 +61,7 @@ export class DetailDialogComponent implements OnInit {
     public dialogRef: MatDialogRef<DetailDialogComponent>,
     private dialog: MatDialog,
     public toastr: ToastrService,
+    public auditService: AuditService
   ) {
 
   }
@@ -159,6 +161,7 @@ export class DetailDialogComponent implements OnInit {
   }
 
   private logAction(name: any, description: string) {
+    this.auditService.sendDataToAudit({resource_name: name, info: ['User opened link' + description]}).subscribe();
     console.log(`${name}: ${description}`);
   }
 }


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