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