This is an automated email from the ASF dual-hosted git repository. ofuks pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/develop by this push: new 0565a1f [DLAB-1935] Audit adjustments (#842) 0565a1f is described below commit 0565a1f33d51a6463a5bf31c3d2f72e3173361e8 Author: Pavel Papou <ppapo...@gmail.com> AuthorDate: Fri Aug 7 11:03:37 2020 -0400 [DLAB-1935] Audit adjustments (#842) [DLAB-1935] Audit adjustments --- .../com/epam/dlab/rest/contracts/ComputationalAPI.java | 1 + .../com/epam/dlab/backendapi/domain/AuditActionEnum.java | 2 +- .../epam/dlab/backendapi/domain/AuditResourceTypeEnum.java | 2 +- .../com/epam/dlab/backendapi/resources/BucketResource.java | 2 +- .../backendapi/resources/aws/ComputationalResourceAws.java | 3 ++- .../resources/azure/ComputationalResourceAzure.java | 5 +++-- .../backendapi/resources/gcp/ComputationalResourceGcp.java | 3 ++- .../epam/dlab/backendapi/service/ComputationalService.java | 2 +- .../backendapi/service/impl/ComputationalServiceImpl.java | 2 +- .../dlab/backendapi/service/impl/LibraryServiceImpl.java | 11 ++++++----- .../dlab/backendapi/service/impl/ProjectServiceImpl.java | 14 +++++++++----- .../service/impl/ComputationalServiceImplTest.java | 11 ++++++----- 12 files changed, 34 insertions(+), 24 deletions(-) diff --git a/services/dlab-webapp-common/src/main/java/com/epam/dlab/rest/contracts/ComputationalAPI.java b/services/dlab-webapp-common/src/main/java/com/epam/dlab/rest/contracts/ComputationalAPI.java index 79d0279..251298f 100644 --- a/services/dlab-webapp-common/src/main/java/com/epam/dlab/rest/contracts/ComputationalAPI.java +++ b/services/dlab-webapp-common/src/main/java/com/epam/dlab/rest/contracts/ComputationalAPI.java @@ -21,6 +21,7 @@ package com.epam.dlab.rest.contracts; public interface ComputationalAPI { String AUDIT_MESSAGE = "Notebook name %s"; + String AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE = "Reconfigure compute <%s>, requested for notebook <%s>"; String LIBRARY = "library/"; String COMPUTATIONAL = "computational"; String COMPUTATIONAL_CREATE = COMPUTATIONAL + "/create"; 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 ee3823f..c1f3c18 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 @@ -20,5 +20,5 @@ package com.epam.dlab.backendapi.domain; public enum AuditActionEnum { - CREATE, SET_UP_SCHEDULER, START, STOP, TERMINATE, RECONFIGURE, UPDATE, CONNECT, DISCONNECT, UPLOAD, DOWNLOAD, DELETE, INSTALL, FOLLOW_LINK, LOG_IN + CREATE, SET_UP_SCHEDULER, START, STOP, TERMINATE, RECONFIGURE, UPDATE, CONNECT, DISCONNECT, UPLOAD, DOWNLOAD, DELETE, INSTALL_LIBS, FOLLOW_LINK, LOG_IN } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditResourceTypeEnum.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditResourceTypeEnum.java index 6976114..e5425d2 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditResourceTypeEnum.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditResourceTypeEnum.java @@ -20,5 +20,5 @@ package com.epam.dlab.backendapi.domain; public enum AuditResourceTypeEnum { - PROJECT, EDGE_NODE, NOTEBOOK, COMPUTE, COMPUTATIONAL_LIBS, BUCKET, ENDPOINT, NOTEBOOK_LIBS, GROUP, IMAGE, GIT_ACCOUNT, LOG_IN, WEB_TERMINAL + PROJECT, EDGE_NODE, NOTEBOOK, COMPUTE, BUCKET, ENDPOINT, GROUP, IMAGE, GIT_ACCOUNT, LOG_IN, WEB_TERMINAL } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/BucketResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/BucketResource.java index 2ba5a8d..bbd1b02 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/BucketResource.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/BucketResource.java @@ -53,7 +53,7 @@ import java.nio.file.Paths; @Slf4j public class BucketResource { private static final String AUDIT_UPLOAD_FOLDER_MESSAGE = "Folder: %s"; - private static final String AUDIT_MESSAGE = "File(s): %s"; + private static final String AUDIT_MESSAGE = "File: %s"; private static final String OBJECT_FORM_FIELD = "object"; private static final String BUCKET_FORM_FIELD = "bucket"; private static final String ENDPOINT_FORM_FIELD = "endpoint"; diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java index 72cffcc..dc964fc 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java @@ -203,7 +203,8 @@ public class ComputationalResourceAws implements ComputationalAPI { @PathParam("exploratoryName") String exploratoryName, @PathParam("computationalName") String computationalName, @Valid @NotNull List<ClusterConfig> config) { - computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config); + computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config, + String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, computationalName, exploratoryName)); return Response.ok().build(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java index 89dd91c..2240028 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java @@ -45,7 +45,7 @@ import javax.ws.rs.core.Response; import java.util.List; import static com.epam.dlab.rest.contracts.ComputationalAPI.AUDIT_MESSAGE; - +import static com.epam.dlab.rest.contracts.ComputationalAPI.AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE; /** * Provides the REST API for the computational resource on Azure. */ @@ -160,7 +160,8 @@ public class ComputationalResourceAzure { @PathParam("computationalName") String computationalName, @Valid @NotNull List<ClusterConfig> config) { - computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config); + computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config, + String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, computationalName, exploratoryName)); return Response.ok().build(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java index 4a01055..f73d25b 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java @@ -210,7 +210,8 @@ public class ComputationalResourceGcp implements ComputationalAPI { @PathParam("computationalName") String computationalName, @Valid @NotNull List<ClusterConfig> config) { - computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config); + computationalService.updateSparkClusterConfig(userInfo, projectName, exploratoryName, computationalName, config, + String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, computationalName, exploratoryName)); return Response.ok().build(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java index 77722dd..e284da2 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java @@ -65,7 +65,7 @@ public interface ComputationalService { void startSparkCluster(UserInfo userInfo, String exploratoryName, String computationalName, String project, String auditInfo); void updateSparkClusterConfig(UserInfo userInfo, String project, String exploratoryName, String computationalName, - List<ClusterConfig> config); + List<ClusterConfig> config, String auditInfo); Optional<UserComputationalResource> getComputationalResource(String user, String project, String exploratoryName, String computationalName); 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 0a87667..28bd09c 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 @@ -297,7 +297,7 @@ public class ComputationalServiceImpl implements ComputationalService { @Audit(action = RECONFIGURE, type = COMPUTE) @Override - public void updateSparkClusterConfig(@User UserInfo userInfo, @Project 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, @Info String auditInfo) { 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/LibraryServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImpl.java index 7c70d97..9b53e47 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImpl.java @@ -67,9 +67,6 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import static com.epam.dlab.backendapi.domain.AuditActionEnum.INSTALL; -import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.COMPUTATIONAL_LIBS; -import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.NOTEBOOK_LIBS; import static com.epam.dlab.backendapi.domain.NotebookTemplate.DEEP_LEARNING; import static com.epam.dlab.backendapi.domain.NotebookTemplate.JUPYTER; import static com.epam.dlab.backendapi.domain.NotebookTemplate.JUPYTER_LAB; @@ -83,6 +80,10 @@ import static com.epam.dlab.dto.LibraryGroups.GROUP_OTHERS; import static com.epam.dlab.dto.LibraryGroups.GROUP_PIP2; import static com.epam.dlab.dto.LibraryGroups.GROUP_PIP3; import static com.epam.dlab.dto.LibraryGroups.GROUP_R_PKG; +import static com.epam.dlab.backendapi.domain.AuditActionEnum.INSTALL_LIBS; +import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.NOTEBOOK; +import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.COMPUTE; + @Slf4j @Singleton @@ -148,7 +149,7 @@ public class LibraryServiceImpl implements LibraryService { return libInfoRecords; } - @Audit(action = INSTALL, type = COMPUTATIONAL_LIBS) + @Audit(action = INSTALL_LIBS, type = COMPUTE) @Override public String installComputationalLibs(@User UserInfo ui, @Project String project, String expName, @ResourceName String compName, List<LibInstallDTO> libs, @Info String auditInfo) { final UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(ui.getName(), project, expName, compName); @@ -161,7 +162,7 @@ public class LibraryServiceImpl implements LibraryService { return uuid; } - @Audit(action = INSTALL, type = NOTEBOOK_LIBS) + @Audit(action = INSTALL_LIBS, type = NOTEBOOK) @Override public String installExploratoryLibs(@User UserInfo ui, @Project String project, @ResourceName String expName, List<LibInstallDTO> libs, @Info String auditInfo) { final UserInstanceDTO userInstance = exploratoryDAO.fetchRunningExploratoryFields(ui.getName(), project, expName); 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 7ee90ba..ebcfeb3 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 @@ -81,9 +81,9 @@ public class ProjectServiceImpl implements ProjectService { private static final String TERMINATE_ACTION = "terminate"; private static final String AUDIT_ADD_ENDPOINT = "Added endpoint(s) %s"; - private static final String AUDIT_ADD_GROUP = "Added group(s) %s"; + private static final String AUDIT_ADD_GROUP = "Added group(s) %s "; private static final String AUDIT_REMOVE_GROUP = "Removed group(s) %s"; - private static final String AUDIT_UPDATE_BUDGET = "Update quota %d->%d"; + private static final String AUDIT_UPDATE_BUDGET = "Update quota %d->%d. Is monthly period: %b"; private static final String AUDIT_ADD_EDGE_NODE = "Create edge node for endpoint %s, requested in project %s"; private final ProjectDAO projectDAO; @@ -319,7 +319,7 @@ public class ProjectServiceImpl implements ProjectService { } private String updateProjectAudit(UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> newEndpoints) { - if (configuration.isAuditEnabled()) { + if (!configuration.isAuditEnabled()) { return null; } StringBuilder audit = new StringBuilder(); @@ -344,10 +344,14 @@ public class ProjectServiceImpl implements ProjectService { if (!configuration.isAuditEnabled()) { return null; } - Integer value = Optional.ofNullable(get(p.getName()).getBudget()) + ProjectDTO projectDTO = get(p.getName()); + Integer value = Optional.ofNullable(projectDTO.getBudget()) .map(BudgetDTO::getValue) .orElse(null); - return String.format(AUDIT_UPDATE_BUDGET, value, p.getBudget().getValue()); + Boolean monthlyBudget = Optional.ofNullable(projectDTO.getBudget()) + .map(BudgetDTO::isMonthlyBudget) + .orElse(null); + return String.format(AUDIT_UPDATE_BUDGET, value, p.getBudget().getValue(), monthlyBudget); } private List<ProjectEndpointDTO> getProjectEndpointDTOS(List<String> endpoints, @Project String name) { diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java index 1b9babc..bf4887e 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java @@ -71,6 +71,7 @@ import static com.epam.dlab.dto.UserInstanceStatus.CREATING; import static com.epam.dlab.dto.UserInstanceStatus.RUNNING; import static com.epam.dlab.dto.UserInstanceStatus.STOPPED; import static com.epam.dlab.rest.contracts.ComputationalAPI.AUDIT_MESSAGE; +import static com.epam.dlab.rest.contracts.ComputationalAPI.AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -103,6 +104,7 @@ public class ComputationalServiceImplTest { private final String EXPLORATORY_NAME = "expName"; private final String PROJECT = "project"; private final String COMP_NAME = "compName"; + private final String NOTE_BOOK_NAME = "notebookName"; private final String UUID = "1234-56789765-4321"; private final LocalDateTime LAST_ACTIVITY = LocalDateTime.now().minusMinutes(MAX_INACTIVITY); @@ -619,7 +621,7 @@ public class ComputationalServiceImplTest { when(provisioningService.post(anyString(), anyString(), any(ComputationalClusterConfigDTO.class), any())) .thenReturn("someUuid"); computationalService.updateSparkClusterConfig(getUserInfo(), PROJECT, EXPLORATORY_NAME, - COMP_NAME, config); + COMP_NAME, config, String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, COMP_NAME, NOTE_BOOK_NAME)); verify(exploratoryDAO).fetchExploratoryFields(USER, PROJECT, EXPLORATORY_NAME, true); verify(requestBuilder).newClusterConfigUpdate(refEq(getUserInfo()), refEq(userInstanceDto), @@ -647,10 +649,9 @@ public class ComputationalServiceImplTest { when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString(), anyBoolean())).thenReturn(userInstanceDto); try { computationalService.updateSparkClusterConfig(getUserInfo(), PROJECT, EXPLORATORY_NAME, - COMP_NAME, config); + COMP_NAME, config, String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, COMP_NAME, NOTE_BOOK_NAME)); } catch (ResourceNotFoundException e) { - assertEquals("Running computational resource with name compName for exploratory expName not found", - e.getMessage()); + assertEquals("Running computational resource with name compName for exploratory expName not found", e.getMessage()); } verify(exploratoryDAO).fetchExploratoryFields(USER, PROJECT, EXPLORATORY_NAME, true); @@ -667,7 +668,7 @@ public class ComputationalServiceImplTest { when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString(), anyBoolean())).thenReturn(userInstanceDto); try { computationalService.updateSparkClusterConfig(getUserInfo(), PROJECT, EXPLORATORY_NAME, - COMP_NAME + "X", config); + COMP_NAME + "X", config, String.format(AUDIT_COMPUTATIONAL_RECONFIGURE_MESSAGE, COMP_NAME, NOTE_BOOK_NAME)); } catch (ResourceNotFoundException e) { assertEquals("Running computational resource with name compNameX for exploratory expName not found", e.getMessage()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org