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