You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dlab.apache.org by of...@apache.org on 2020/06/10 09:52:42 UTC

[incubator-dlab] 03/07: Added audit endpoint

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

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

commit b4291eeb99b50c41a033dab56a50c7273aeaa551
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Tue Jun 9 12:08:42 2020 +0300

    Added audit endpoint
---
 .../dlab/backendapi/SelfServiceApplication.java    | 39 ++++++++++++++++++++--
 .../com/epam/dlab/backendapi/dao/AuditDAO.java     |  4 +--
 .../com/epam/dlab/backendapi/dao/AuditDAOImpl.java |  4 +--
 .../dlab/backendapi/domain/AuditActionEnum.java    |  3 +-
 .../dlab/backendapi/domain/AuditCreateDTO.java     | 10 +++---
 .../com/epam/dlab/backendapi/domain/AuditDTO.java  |  6 ++--
 .../backendapi/interceptor/AuditInterceptor.java   |  4 +--
 .../AuditResource.java}                            | 29 +++++++++++-----
 .../epam/dlab/backendapi/service/AuditService.java |  5 ++-
 .../backendapi/service/impl/AuditServiceImpl.java  | 16 ++++++++-
 10 files changed, 93 insertions(+), 27 deletions(-)

diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/SelfServiceApplication.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/SelfServiceApplication.java
index 6a12ea5..beaf917 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/SelfServiceApplication.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/SelfServiceApplication.java
@@ -27,8 +27,34 @@ import com.epam.dlab.backendapi.dropwizard.listeners.MongoStartupListener;
 import com.epam.dlab.backendapi.dropwizard.listeners.RestoreHandlerStartupListener;
 import com.epam.dlab.backendapi.healthcheck.MongoHealthCheck;
 import com.epam.dlab.backendapi.modules.ModuleFactory;
-import com.epam.dlab.backendapi.resources.*;
-import com.epam.dlab.backendapi.resources.callback.*;
+import com.epam.dlab.backendapi.resources.ApplicationSettingResource;
+import com.epam.dlab.backendapi.resources.AuditResource;
+import com.epam.dlab.backendapi.resources.BackupResource;
+import com.epam.dlab.backendapi.resources.EndpointResource;
+import com.epam.dlab.backendapi.resources.EnvironmentResource;
+import com.epam.dlab.backendapi.resources.ExploratoryResource;
+import com.epam.dlab.backendapi.resources.GitCredsResource;
+import com.epam.dlab.backendapi.resources.ImageExploratoryResource;
+import com.epam.dlab.backendapi.resources.InfrastructureInfoResource;
+import com.epam.dlab.backendapi.resources.InfrastructureTemplateResource;
+import com.epam.dlab.backendapi.resources.KeycloakResource;
+import com.epam.dlab.backendapi.resources.LibExploratoryResource;
+import com.epam.dlab.backendapi.resources.ProjectResource;
+import com.epam.dlab.backendapi.resources.SchedulerJobResource;
+import com.epam.dlab.backendapi.resources.SystemInfoResource;
+import com.epam.dlab.backendapi.resources.UserGroupResource;
+import com.epam.dlab.backendapi.resources.UserRoleResource;
+import com.epam.dlab.backendapi.resources.UserSettingsResource;
+import com.epam.dlab.backendapi.resources.callback.BackupCallback;
+import com.epam.dlab.backendapi.resources.callback.CheckInactivityCallback;
+import com.epam.dlab.backendapi.resources.callback.ComputationalCallback;
+import com.epam.dlab.backendapi.resources.callback.EnvironmentStatusCallback;
+import com.epam.dlab.backendapi.resources.callback.ExploratoryCallback;
+import com.epam.dlab.backendapi.resources.callback.GitCredsCallback;
+import com.epam.dlab.backendapi.resources.callback.ImageCallback;
+import com.epam.dlab.backendapi.resources.callback.LibraryCallback;
+import com.epam.dlab.backendapi.resources.callback.ProjectCallback;
+import com.epam.dlab.backendapi.resources.callback.ReuploadKeyCallback;
 import com.epam.dlab.backendapi.schedulers.internal.ManagedScheduler;
 import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.servlet.guacamole.GuacamoleServlet;
@@ -37,7 +63,13 @@ import com.epam.dlab.constants.ServiceConsts;
 import com.epam.dlab.migration.mongo.DlabMongoMigration;
 import com.epam.dlab.mongo.MongoServiceFactory;
 import com.epam.dlab.rest.client.RESTService;
-import com.epam.dlab.rest.mappers.*;
+import com.epam.dlab.rest.mappers.DlabValidationExceptionMapper;
+import com.epam.dlab.rest.mappers.JsonProcessingExceptionMapper;
+import com.epam.dlab.rest.mappers.ResourceConflictExceptionMapper;
+import com.epam.dlab.rest.mappers.ResourceNotFoundExceptionMapper;
+import com.epam.dlab.rest.mappers.ResourceQuoteReachedExceptionMapper;
+import com.epam.dlab.rest.mappers.RuntimeExceptionMapper;
+import com.epam.dlab.rest.mappers.ValidationExceptionMapper;
 import com.epam.dlab.util.ServiceUtils;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
@@ -160,6 +192,7 @@ public class SelfServiceApplication extends Application<SelfServiceApplicationCo
 		jersey.register(injector.getInstance(KeycloakResource.class));
 		jersey.register(injector.getInstance(EndpointResource.class));
 		jersey.register(injector.getInstance(ProjectResource.class));
+		jersey.register(injector.getInstance(AuditResource.class));
 		jersey.register(injector.getInstance(ProjectCallback.class));
 	}
 
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
index b9a7727..d757758 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
@@ -19,8 +19,8 @@
 
 package com.epam.dlab.backendapi.dao;
 
-import com.epam.dlab.backendapi.domain.AuditCreateDTO;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 
 public interface AuditDAO {
-    void save(AuditCreateDTO audit);
+    void save(AuditDTO audit);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
index 2de30aa..987d947 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
@@ -19,13 +19,13 @@
 
 package com.epam.dlab.backendapi.dao;
 
-import com.epam.dlab.backendapi.domain.AuditCreateDTO;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 
 public class AuditDAOImpl extends BaseDAO implements AuditDAO {
     private final static String AUDIT_COLLECTION = "audit";
 
     @Override
-    public void save(AuditCreateDTO audit) {
+    public void save(AuditDTO audit) {
         insertOne(AUDIT_COLLECTION, audit);
     }
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java
index 431e0c7..eb49aa1 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java
@@ -21,5 +21,6 @@ package com.epam.dlab.backendapi.domain;
 
 public enum AuditActionEnum {
     CREATE_PROJECT, START_PROJECT, STOP_PROJECT, TERMINATE_PROJECT, UPDATE_PROJECT,
-    CREATE_NOTEBOOK, START_NOTEBOOK, STOP_NOTEBOOK, TERMINATE_NOTEBOOK, UPDATE_CLUSTER_CONFIG
+    CREATE_NOTEBOOK, START_NOTEBOOK, STOP_NOTEBOOK, TERMINATE_NOTEBOOK, UPDATE_CLUSTER_CONFIG,
+    FOLLOW_NOTEBOOK_LINK
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java
index de40808..b99b909 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java
@@ -19,17 +19,19 @@
 
 package com.epam.dlab.backendapi.domain;
 
-import lombok.Builder;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
+import org.hibernate.validator.constraints.NotBlank;
 
 import java.util.List;
 
 
 @Data
-@Builder
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class AuditCreateDTO {
-    private final String user;
-    private final AuditActionEnum action;
+    @NotBlank(message = "field cannot be empty")
+    @JsonProperty("resource_name")
     private final String resourceName;
     private final List<String> info;
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java
index 2a337e5..6eb6acf 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java
@@ -19,14 +19,16 @@
 
 package com.epam.dlab.backendapi.domain;
 
+import lombok.Builder;
 import lombok.Data;
 
-import java.util.Date;
+import java.util.List;
 
 @Data
+@Builder
 public class AuditDTO {
     private final String user;
     private final AuditActionEnum action;
     private final String resourceName;
-    private final Date date;
+    private final List<String> info;
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java
index 713e587..7e1011b 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java
@@ -25,7 +25,7 @@ import com.epam.dlab.backendapi.annotation.Info;
 import com.epam.dlab.backendapi.annotation.ResourceName;
 import com.epam.dlab.backendapi.annotation.User;
 import com.epam.dlab.backendapi.domain.AuditActionEnum;
-import com.epam.dlab.backendapi.domain.AuditCreateDTO;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 import com.epam.dlab.backendapi.service.AuditService;
 import com.epam.dlab.exceptions.DlabException;
 import com.google.inject.Inject;
@@ -55,7 +55,7 @@ public class AuditInterceptor implements MethodInterceptor {
         final String resourceName = getResourceName(mi, parameters);
         final List<String> infoMap = getInfo(mi, parameters);
 
-        AuditCreateDTO auditCreateDTO = AuditCreateDTO.builder()
+        AuditDTO auditCreateDTO = AuditDTO.builder()
                 .user(user)
                 .action(action)
                 .resourceName(resourceName)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
similarity index 57%
copy from services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
copy to services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
index d73460b..f6a2004 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
@@ -17,23 +17,34 @@
  * under the License.
  */
 
-package com.epam.dlab.backendapi.service.impl;
+package com.epam.dlab.backendapi.resources;
 
-import com.epam.dlab.backendapi.dao.AuditDAO;
+import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.domain.AuditCreateDTO;
 import com.epam.dlab.backendapi.service.AuditService;
 import com.google.inject.Inject;
+import io.dropwizard.auth.Auth;
 
-public class AuditServiceImpl implements AuditService {
-    private final AuditDAO auditDAO;
+import javax.validation.Valid;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Path("/audit")
+public class AuditResource {
+    private final AuditService auditService;
 
     @Inject
-    public AuditServiceImpl(AuditDAO auditDAO) {
-        this.auditDAO = auditDAO;
+    public AuditResource(AuditService auditService) {
+        this.auditService = auditService;
     }
 
-    @Override
-    public void save(AuditCreateDTO audit) {
-        auditDAO.save(audit);
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    public Response createEndpoint(@Auth UserInfo userInfo, @Valid AuditCreateDTO auditCreateDTO) {
+        auditService.save(userInfo.getName(), auditCreateDTO);
+        return Response.ok().build();
     }
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
index b7f4fce..785c59b 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
@@ -20,7 +20,10 @@
 package com.epam.dlab.backendapi.service;
 
 import com.epam.dlab.backendapi.domain.AuditCreateDTO;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 
 public interface AuditService {
-    void save(AuditCreateDTO audit);
+    void save(AuditDTO audit);
+
+    void save(String user, AuditCreateDTO audit);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
index d73460b..d35e00f 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
@@ -20,7 +20,9 @@
 package com.epam.dlab.backendapi.service.impl;
 
 import com.epam.dlab.backendapi.dao.AuditDAO;
+import com.epam.dlab.backendapi.domain.AuditActionEnum;
 import com.epam.dlab.backendapi.domain.AuditCreateDTO;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 import com.epam.dlab.backendapi.service.AuditService;
 import com.google.inject.Inject;
 
@@ -33,7 +35,19 @@ public class AuditServiceImpl implements AuditService {
     }
 
     @Override
-    public void save(AuditCreateDTO audit) {
+    public void save(AuditDTO audit) {
         auditDAO.save(audit);
     }
+
+    @Override
+    public void save(String user, AuditCreateDTO audit) {
+        AuditDTO auditDTO = AuditDTO.builder()
+                .user(user)
+                .resourceName(audit.getResourceName())
+                .action(AuditActionEnum.FOLLOW_NOTEBOOK_LINK)
+                .info(audit.getInfo())
+                .build();
+
+        auditDAO.save(auditDTO);
+    }
 }


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