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/16 10:49:54 UTC

[incubator-dlab] branch audit updated: Added audit computational while managing notebook/project

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 72c6c7f  Added audit computational while managing notebook/project
72c6c7f is described below

commit 72c6c7ff36e03d1310363afbfaec69988dd806ad
Author: Oleh Fuks <ol...@gmail.com>
AuthorDate: Tue Jun 16 13:49:35 2020 +0300

    Added audit computational while managing notebook/project
---
 .../service/impl/ExploratoryServiceImpl.java       | 32 +++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

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 8e60635..449b461 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
@@ -26,14 +26,18 @@ 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.conf.SelfServiceApplicationConfiguration;
 import com.epam.dlab.backendapi.dao.ComputationalDAO;
 import com.epam.dlab.backendapi.dao.ExploratoryDAO;
 import com.epam.dlab.backendapi.dao.GitCredsDAO;
 import com.epam.dlab.backendapi.dao.ImageExploratoryDao;
+import com.epam.dlab.backendapi.domain.AuditActionEnum;
+import com.epam.dlab.backendapi.domain.AuditDTO;
 import com.epam.dlab.backendapi.domain.EndpointDTO;
 import com.epam.dlab.backendapi.domain.ProjectDTO;
 import com.epam.dlab.backendapi.domain.RequestId;
 import com.epam.dlab.backendapi.resources.dto.ExploratoryCreatePopUp;
+import com.epam.dlab.backendapi.service.AuditService;
 import com.epam.dlab.backendapi.service.EndpointService;
 import com.epam.dlab.backendapi.service.ExploratoryService;
 import com.epam.dlab.backendapi.service.ProjectService;
@@ -45,6 +49,7 @@ import com.epam.dlab.dto.StatusEnvBaseDTO;
 import com.epam.dlab.dto.UserInstanceDTO;
 import com.epam.dlab.dto.UserInstanceStatus;
 import com.epam.dlab.dto.aws.computational.ClusterConfig;
+import com.epam.dlab.dto.base.DataEngineType;
 import com.epam.dlab.dto.exploratory.ExploratoryActionDTO;
 import com.epam.dlab.dto.exploratory.ExploratoryGitCredsDTO;
 import com.epam.dlab.dto.exploratory.ExploratoryReconfigureSparkClusterActionDTO;
@@ -61,6 +66,7 @@ import com.google.inject.name.Named;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -74,6 +80,7 @@ import static com.epam.dlab.backendapi.domain.AuditActionEnum.TERMINATE_NOTEBOOK
 import static com.epam.dlab.backendapi.domain.AuditActionEnum.UPDATE_CLUSTER_CONFIG;
 import static com.epam.dlab.dto.UserInstanceStatus.CREATING;
 import static com.epam.dlab.dto.UserInstanceStatus.FAILED;
+import static com.epam.dlab.dto.UserInstanceStatus.RUNNING;
 import static com.epam.dlab.dto.UserInstanceStatus.STARTING;
 import static com.epam.dlab.dto.UserInstanceStatus.STOPPED;
 import static com.epam.dlab.dto.UserInstanceStatus.STOPPING;
@@ -98,11 +105,14 @@ public class ExploratoryServiceImpl implements ExploratoryService {
 	private final RequestId requestId;
 	private final TagService tagService;
 	private final EndpointService endpointService;
+	private final AuditService auditService;
+	private final SelfServiceApplicationConfiguration configuration;
 
 	@Inject
 	public ExploratoryServiceImpl(ProjectService projectService, ExploratoryDAO exploratoryDAO, ComputationalDAO computationalDAO, GitCredsDAO gitCredsDAO,
 								  ImageExploratoryDao imageExploratoryDao, @Named(ServiceConsts.PROVISIONING_SERVICE_NAME) RESTService provisioningService,
-								  RequestBuilder requestBuilder, RequestId requestId, TagService tagService, EndpointService endpointService) {
+								  RequestBuilder requestBuilder, RequestId requestId, TagService tagService, EndpointService endpointService, AuditService auditService,
+								  SelfServiceApplicationConfiguration configuration) {
 		this.projectService = projectService;
 		this.exploratoryDAO = exploratoryDAO;
 		this.computationalDAO = computationalDAO;
@@ -113,6 +123,8 @@ public class ExploratoryServiceImpl implements ExploratoryService {
 		this.requestId = requestId;
 		this.tagService = tagService;
 		this.endpointService = endpointService;
+		this.auditService = auditService;
+		this.configuration = configuration;
 	}
 
 	@BudgetLimited
@@ -291,14 +303,32 @@ public class ExploratoryServiceImpl implements ExploratoryService {
 		updateExploratoryStatus(user, project, exploratoryName, status);
 
 		if (status == STOPPING) {
+			if (configuration.isAuditEnabled()) {
+				saveAudit(project, exploratoryName, user, AuditActionEnum.STOP_COMPUTATIONAL);
+			}
 			updateComputationalStatuses(user, project, exploratoryName, STOPPING, TERMINATING, FAILED, TERMINATED, STOPPED);
 		} else if (status == TERMINATING) {
+			if (configuration.isAuditEnabled()) {
+				saveAudit(project, exploratoryName, user, AuditActionEnum.TERMINATE_COMPUTATIONAL);
+			}
 			updateComputationalStatuses(user, project, exploratoryName, TERMINATING, TERMINATING, TERMINATED, FAILED);
 		} else if (status == TERMINATED) {
 			updateComputationalStatuses(user, project, exploratoryName, TERMINATED, TERMINATED, TERMINATED, FAILED);
 		}
 	}
 
+	private void saveAudit(String project, String exploratoryName, String user, AuditActionEnum action) {
+		computationalDAO.getComputationalResourcesWhereStatusIn(user, project, Arrays.asList(DataEngineType.SPARK_STANDALONE, DataEngineType.CLOUD_SERVICE),
+				exploratoryName, RUNNING)
+				.forEach(comp -> auditService.save(AuditDTO.builder()
+						.user(user)
+						.resourceName(comp)
+						.project(project)
+						.action(action)
+						.build())
+				);
+	}
+
 	private ExploratoryActionDTO<?> getExploratoryActionDto(UserInfo userInfo, String resourceCreator, UserInstanceStatus status, UserInstanceDTO userInstance,
 															EndpointDTO endpointDTO) {
 		ExploratoryActionDTO<?> dto;


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