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


The following commit(s) were added to refs/heads/audit by this push:
     new 40e9e5f  added 'project' field to audit
40e9e5f is described below

commit 40e9e5f5a8b703bb69122cdd03e134b547cb6a78
Author: Oleh Fuks <olegfuk...@gmail.com>
AuthorDate: Wed Jun 10 18:18:32 2020 +0300

    added 'project' field to audit
---
 .../main/java/com/epam/dlab/backendapi/domain/AuditDTO.java  |  1 +
 .../epam/dlab/backendapi/interceptor/AuditInterceptor.java   | 12 ++++++++++++
 .../com/epam/dlab/backendapi/resources/ProjectResource.java  |  5 +++--
 .../backendapi/service/impl/ComputationalServiceImpl.java    |  6 +++---
 .../dlab/backendapi/service/impl/ExploratoryServiceImpl.java |  6 +++---
 .../dlab/backendapi/service/impl/ProjectServiceImpl.java     |  6 +++---
 6 files changed, 25 insertions(+), 11 deletions(-)

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 5af65cd..f01237c 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
@@ -32,6 +32,7 @@ import java.util.List;
 public class AuditDTO {
     private final String user;
     private final AuditActionEnum action;
+    private final String project;
     private final String resourceName;
     private final List<String> info;
     private Date timestamp;
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 7e1011b..e4def6c 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
@@ -22,6 +22,7 @@ package com.epam.dlab.backendapi.interceptor;
 import com.epam.dlab.auth.UserInfo;
 import com.epam.dlab.backendapi.annotation.Audit;
 import com.epam.dlab.backendapi.annotation.Info;
+import com.epam.dlab.backendapi.annotation.Project;
 import com.epam.dlab.backendapi.annotation.ResourceName;
 import com.epam.dlab.backendapi.annotation.User;
 import com.epam.dlab.backendapi.domain.AuditActionEnum;
@@ -32,6 +33,7 @@ import com.google.inject.Inject;
 import lombok.extern.slf4j.Slf4j;
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.lang3.StringUtils;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
@@ -52,12 +54,14 @@ public class AuditInterceptor implements MethodInterceptor {
         final Parameter[] parameters = mi.getMethod().getParameters();
         final String user = getUserInfo(mi, parameters);
         final AuditActionEnum action = getAuditActionEnum(method);
+        final String project = getProject(mi, parameters);
         final String resourceName = getResourceName(mi, parameters);
         final List<String> infoMap = getInfo(mi, parameters);
 
         AuditDTO auditCreateDTO = AuditDTO.builder()
                 .user(user)
                 .action(action)
+                .project(project)
                 .resourceName(resourceName)
                 .info(infoMap)
                 .build();
@@ -82,6 +86,14 @@ public class AuditInterceptor implements MethodInterceptor {
                 .orElseThrow(() -> new DlabException("'Audit' annotation 
wanted!"));
     }
 
+    private String getProject(MethodInvocation mi, Parameter[] parameters) {
+        return IntStream.range(0, parameters.length)
+                .filter(i -> 
Objects.nonNull(parameters[i].getAnnotation(Project.class)))
+                .mapToObj(i -> (String) mi.getArguments()[i])
+                .findAny()
+                .orElse(StringUtils.EMPTY);
+    }
+
     private String getResourceName(MethodInvocation mi, Parameter[] 
parameters) {
         return IntStream.range(0, parameters.length)
                 .filter(i -> 
Objects.nonNull(parameters[i].getAnnotation(ResourceName.class)))
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
index 6d93e89..1e61405 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java
@@ -73,10 +73,11 @@ public class ProjectResource {
        @RolesAllowed("/api/project/create")
        public Response createProject(@Parameter(hidden = true) @Auth UserInfo 
userInfo,
                                                                  @Valid 
CreateProjectDTO projectDTO) {
-               projectService.create(userInfo, new 
ProjectDTO(projectDTO.getName(), projectDTO.getGroups(),
+               ProjectDTO project = new ProjectDTO(projectDTO.getName(), 
projectDTO.getGroups(),
                                projectDTO.getKey(), projectDTO.getTag(), null,
                                projectDTO.getEndpoints().stream().map(e -> new 
ProjectEndpointDTO(e, UserInstanceStatus.CREATING,
-                                               
null)).collect(Collectors.toList()), projectDTO.isSharedImageEnabled()), 
projectDTO.getName());
+                                               
null)).collect(Collectors.toList()), projectDTO.isSharedImageEnabled());
+               projectService.create(userInfo, project, projectDTO.getName());
                final URI uri = 
uriInfo.getRequestUriBuilder().path(projectDTO.getName()).build();
                return Response
                                .ok()
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
index 0206a1e..2895cbd 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java
@@ -189,7 +189,7 @@ public class ComputationalServiceImpl implements 
ComputationalService {
 
        @Audit(action = TERMINATE_COMPUTATIONAL)
        @Override
-       public void terminateComputational(@User UserInfo userInfo, String 
resourceCreator, String project, String exploratoryName, @ResourceName String 
computationalName,
+       public void terminateComputational(@User UserInfo userInfo, String 
resourceCreator, @Project String project, String exploratoryName, @ResourceName 
String computationalName,
                                                                           
@Info List<String> auditInfo) {
                try {
                        updateComputationalStatus(resourceCreator, project, 
exploratoryName, computationalName, TERMINATING);
@@ -257,7 +257,7 @@ public class ComputationalServiceImpl implements 
ComputationalService {
 
        @Audit(action = STOP_COMPUTATIONAL)
        @Override
-       public void stopSparkCluster(@User UserInfo userInfo, String 
resourceCreator, String project, String expName, @ResourceName String compName, 
@Info List<String> auditInfo) {
+       public void stopSparkCluster(@User UserInfo userInfo, String 
resourceCreator, @Project String project, String expName, @ResourceName String 
compName, @Info List<String> auditInfo) {
                final UserInstanceDTO userInstance = 
exploratoryDAO.fetchExploratoryFields(resourceCreator, project, expName, true);
                final UserInstanceStatus requiredStatus = 
UserInstanceStatus.RUNNING;
                if (computationalWithStatusResourceExist(compName, 
userInstance, requiredStatus)) {
@@ -297,7 +297,7 @@ public class ComputationalServiceImpl implements 
ComputationalService {
 
        @Audit(action = UPDATE_DATA_ENGINE_CONFIG)
        @Override
-       public void updateSparkClusterConfig(@User UserInfo userInfo, String 
project, String exploratoryName, @ResourceName String computationalName, 
List<ClusterConfig> config) {
+       public void updateSparkClusterConfig(@User UserInfo userInfo, @Project 
String project, String exploratoryName, @ResourceName String computationalName, 
List<ClusterConfig> config) {
                final String userName = userInfo.getName();
                final String token = userInfo.getAccessToken();
                final UserInstanceDTO userInstanceDTO = exploratoryDAO
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
index 088bc26..cb44f72 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java
@@ -124,13 +124,13 @@ public class ExploratoryServiceImpl implements 
ExploratoryService {
 
        @Audit(action = STOP_NOTEBOOK)
        @Override
-       public String stop(@User UserInfo userInfo, String resourceCreator, 
String project, @ResourceName String exploratoryName, @Info List<String> 
auditInfo) {
+       public String stop(@User UserInfo userInfo, String resourceCreator, 
@Project String project, @ResourceName String exploratoryName, @Info 
List<String> auditInfo) {
                return action(userInfo, resourceCreator, project, 
exploratoryName, EXPLORATORY_STOP, STOPPING);
        }
 
        @Audit(action = TERMINATE_NOTEBOOK)
        @Override
-       public String terminate(@User UserInfo userInfo, String 
resourceCreator, String project, @ResourceName String exploratoryName, @Info 
List<String> auditInfo) {
+       public String terminate(@User UserInfo userInfo, String 
resourceCreator, @Project String project, @ResourceName String exploratoryName, 
@Info List<String> auditInfo) {
                return action(userInfo, resourceCreator, project, 
exploratoryName, EXPLORATORY_TERMINATE, TERMINATING);
        }
 
@@ -174,7 +174,7 @@ public class ExploratoryServiceImpl implements 
ExploratoryService {
 
        @Audit(action = UPDATE_CLUSTER_CONFIG)
        @Override
-       public void updateClusterConfig(@User UserInfo userInfo, String 
project, @ResourceName String exploratoryName, List<ClusterConfig> config) {
+       public void updateClusterConfig(@User UserInfo userInfo, @Project 
String project, @ResourceName String exploratoryName, List<ClusterConfig> 
config) {
                final String userName = userInfo.getName();
                final String token = userInfo.getAccessToken();
                final UserInstanceDTO userInstanceDTO = 
exploratoryDAO.fetchRunningExploratoryFields(userName, project, 
exploratoryName);
diff --git 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
index 3ed8fc9..52a14fa 100644
--- 
a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
+++ 
b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java
@@ -118,7 +118,7 @@ public class ProjectServiceImpl implements ProjectService {
        @BudgetLimited
        @Audit(action = CREATE_PROJECT)
        @Override
-       public void create(@User UserInfo user, ProjectDTO projectDTO, 
@ResourceName String resourceName) {
+       public void create(@User UserInfo user, ProjectDTO projectDTO, @Project 
@ResourceName String resourceName) {
                if (!projectDAO.get(projectDTO.getName()).isPresent()) {
                        projectDAO.create(projectDTO);
                        createProjectOnCloud(user, projectDTO);
@@ -207,7 +207,7 @@ public class ProjectServiceImpl implements ProjectService {
        }
 
        @Audit(action = UPDATE_PROJECT)
-       public void updateProject(@User UserInfo userInfo, @ResourceName String 
projectName, UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> 
newEndpoints,
+       public void updateProject(@User UserInfo userInfo, @Project 
@ResourceName String projectName, UpdateProjectDTO projectDTO, ProjectDTO 
project, Set<String> newEndpoints,
                                                          @Info List<String> 
projectAudit) {
                final List<ProjectEndpointDTO> endpointsToBeCreated = 
newEndpoints
                                .stream()
@@ -231,7 +231,7 @@ public class ProjectServiceImpl implements ProjectService {
        }
 
        @Audit(action = UPDATE_PROJECT)
-       public void updateBudget(@User UserInfo userInfo, @ResourceName String 
name, Integer budget, @Info List<String> updateBudgetAudit) {
+       public void updateBudget(@User UserInfo userInfo, @Project 
@ResourceName String name, Integer budget, @Info List<String> 
updateBudgetAudit) {
                projectDAO.updateBudget(name, budget);
        }
 


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

Reply via email to