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

Reply via email to