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 <olegfuk...@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-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org