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/08/07 15:03:50 UTC

[incubator-dlab] branch develop updated: [DLAB-1935] Audit adjustments (#842)

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 <pp...@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-unsubscribe@dlab.apache.org
For additional commands, e-mail: commits-help@dlab.apache.org