[DLAB-1919] Second part of changes
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
index 6ae8cbf..1106fdb 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
@@ -24,6 +24,7 @@
import com.epam.dlab.exceptions.DlabException;
import com.mongodb.client.model.Facet;
import com.mongodb.client.model.Filters;
+import com.mongodb.client.model.Sorts;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
@@ -50,6 +51,7 @@
import static com.mongodb.client.model.Aggregates.limit;
import static com.mongodb.client.model.Aggregates.match;
import static com.mongodb.client.model.Aggregates.skip;
+import static com.mongodb.client.model.Aggregates.sort;
import static com.mongodb.client.model.Filters.gte;
import static com.mongodb.client.model.Filters.in;
import static com.mongodb.client.model.Filters.lte;
@@ -85,6 +87,7 @@
}
countPipeline.add(count());
valuesPipeline.addAll(Arrays.asList(skip(pageSize * (pageNumber - 1)), limit(pageSize)));
+ valuesPipeline.add(sortCriteria());
List<Bson> userFilter = Collections.singletonList(group(getGroupingFields(USER)));
List<Bson> projectFilter = Collections.singletonList(group(getGroupingFields(PROJECT)));
@@ -116,6 +119,10 @@
return searchCriteria;
}
+ private Bson sortCriteria() {
+ return sort(Sorts.descending(TIMESTAMP_FIELD));
+ }
+
private AuditPaginationDTO toAuditPaginationDTO(Document document) {
List<Document> countDocuments = (List<Document>) document.get(TOTAL_COUNT_FACET);
final int count = countDocuments.isEmpty() ? 0 : countDocuments.get(0).getInteger(COUNT_FIELD);
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 cd5eb7b..ee3823f 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, 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, 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 dce8f06..6976114 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,6 +20,5 @@
package com.epam.dlab.backendapi.domain;
public enum AuditResourceTypeEnum {
- PROJECT, EDGE_NODE, NOTEBOOK, NOTEBOOK_SCHEDULER, COMPUTE, COMPUTATIONAL_LIBS, COMPUTATIONAL_SCHEDULER,
- BUCKET, ENDPOINT, NOTEBOOK_LIBS, GROUP, IMAGE, GIT_ACCOUNT, LOG_IN
+ PROJECT, EDGE_NODE, NOTEBOOK, COMPUTE, COMPUTATIONAL_LIBS, BUCKET, ENDPOINT, NOTEBOOK_LIBS, GROUP, IMAGE, GIT_ACCOUNT, LOG_IN, WEB_TERMINAL
}
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 39f7ec0..e89eda3 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
@@ -183,13 +183,16 @@
@Override
public void updateProjectExploratoryStatuses(UserInfo userInfo, String project, String endpoint, UserInstanceStatus status) {
exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, endpoint, TERMINATED, FAILED)
- .forEach(ui -> updateExploratoryStatus(userInfo, project, ui.getExploratoryName(), status, ui.getUser()));
+ .forEach(ui -> updateExploratoryComputeStatuses(userInfo, project, ui.getExploratoryName(), status, ui.getUser()));
}
@Override
public void updateProjectExploratoryStatuses(String project, String endpoint, UserInstanceStatus status) {
exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, endpoint, TERMINATED, FAILED)
- .forEach(ui -> updateExploratoryStatus(project, ui.getExploratoryName(), status, ui.getUser()));
+ .forEach(ui -> {
+ updateExploratoryStatus(ui.getUser(), project, ui.getExploratoryName(), status);
+ updateComputationalStatuses(ui.getUser(), project, ui.getExploratoryName(), TERMINATED, TERMINATED, TERMINATED, FAILED);
+ });
}
@Audit(action = RECONFIGURE, type = NOTEBOOK)
@@ -287,7 +290,7 @@
*/
private String action(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String action, UserInstanceStatus status) {
try {
- updateExploratoryStatus(project, exploratoryName, status, resourceCreator);
+ updateExploratoryComputeStatuses(userInfo.getName(), project, exploratoryName, status, resourceCreator);
UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(resourceCreator, project, exploratoryName);
EndpointDTO endpointDTO = endpointService.get(userInstance.getEndpoint());
@@ -308,40 +311,39 @@
}
@Audit(action = TERMINATE, type = NOTEBOOK)
- public void updateExploratoryStatus(@User UserInfo userInfo, @Project String project, @ResourceName String exploratoryName, UserInstanceStatus status, String user) {
- updateExploratoryStatus(user, project, exploratoryName, status);
- updateComputationalStatuses(project, exploratoryName, status, user);
+ public void updateExploratoryComputeStatuses(@User UserInfo userInfo, @Project String project, @ResourceName String exploratoryName, UserInstanceStatus status, String resourceCreator) {
+ updateExploratoryStatus(resourceCreator, project, exploratoryName, status);
+ updateComputationalStatuses(userInfo.getName(), resourceCreator, project, exploratoryName, status);
}
- private void updateExploratoryStatus(String project, String exploratoryName, UserInstanceStatus status, String user) {
- updateExploratoryStatus(user, project, exploratoryName, status);
- updateComputationalStatuses(project, exploratoryName, status, user);
+ private void updateExploratoryComputeStatuses(String user, String project, String exploratoryName, UserInstanceStatus status, String resourceCreator) {
+ updateExploratoryStatus(resourceCreator, project, exploratoryName, status);
+ updateComputationalStatuses(user, resourceCreator, project, exploratoryName, status);
}
- private void updateComputationalStatuses(String project, String exploratoryName, UserInstanceStatus status, String user) {
+ private void updateComputationalStatuses(String user, String resourceCreator, String project, String exploratoryName, UserInstanceStatus status) {
if (status == STOPPING) {
if (configuration.isAuditEnabled()) {
- saveAudit(project, exploratoryName, user, STOP);
+ saveAudit(user, resourceCreator, project, exploratoryName, STOP, RUNNING);
}
- updateComputationalStatuses(user, project, exploratoryName, STOPPING, TERMINATING, FAILED, TERMINATED, STOPPED);
+ updateComputationalStatuses(resourceCreator, project, exploratoryName, STOPPING, TERMINATING, FAILED, TERMINATED, STOPPED);
} else if (status == TERMINATING) {
if (configuration.isAuditEnabled()) {
- saveAudit(project, exploratoryName, user, TERMINATE);
+ saveAudit(user, resourceCreator, project, exploratoryName, TERMINATE, RUNNING, STOPPED);
}
- updateComputationalStatuses(user, project, exploratoryName, TERMINATING, TERMINATING, TERMINATED, FAILED);
- } else if (status == TERMINATED) {
- updateComputationalStatuses(user, project, exploratoryName, TERMINATED, TERMINATED, TERMINATED, FAILED);
+ updateComputationalStatuses(resourceCreator, project, exploratoryName, TERMINATING, TERMINATING, TERMINATED, FAILED);
}
}
- private void saveAudit(String project, String exploratoryName, String user, AuditActionEnum action) {
- saveAuditForComputational(project, exploratoryName, user, action, DataEngineType.SPARK_STANDALONE);
- saveAuditForComputational(project, exploratoryName, user, TERMINATE, DataEngineType.CLOUD_SERVICE);
+ private void saveAudit(String user, String resourceCreator, String project, String exploratoryName, AuditActionEnum action, UserInstanceStatus... sparkStatuses) {
+ saveAuditForComputational(user, resourceCreator, project, exploratoryName, action, DataEngineType.SPARK_STANDALONE, sparkStatuses);
+ saveAuditForComputational(user, resourceCreator, project, exploratoryName, TERMINATE, DataEngineType.CLOUD_SERVICE, RUNNING, STOPPED);
}
- private void saveAuditForComputational(String project, String exploratoryName, String user, AuditActionEnum action, DataEngineType cloudService) {
- computationalDAO.getComputationalResourcesWhereStatusIn(user, project, Collections.singletonList(cloudService),
- exploratoryName, RUNNING)
+ private void saveAuditForComputational(String user, String resourceCreator, String project, String exploratoryName, AuditActionEnum action, DataEngineType cloudService,
+ UserInstanceStatus... computationalStatuses) {
+ computationalDAO.getComputationalResourcesWhereStatusIn(resourceCreator, project, Collections.singletonList(cloudService),
+ exploratoryName, computationalStatuses)
.forEach(comp -> auditService.save(
AuditDTO.builder()
.user(user)
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java
index 5b80c42..4b64e0b 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java
@@ -63,9 +63,9 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static com.epam.dlab.backendapi.domain.AuditActionEnum.CREATE;
-import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.COMPUTATIONAL_SCHEDULER;
-import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.NOTEBOOK_SCHEDULER;
+import static com.epam.dlab.backendapi.domain.AuditActionEnum.SET_UP_SCHEDULER;
+import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.COMPUTE;
+import static com.epam.dlab.backendapi.domain.AuditResourceTypeEnum.NOTEBOOK;
import static com.epam.dlab.constants.ServiceConsts.PROVISIONING_SERVICE_NAME;
import static com.epam.dlab.dto.UserInstanceStatus.CONFIGURING;
import static com.epam.dlab.dto.UserInstanceStatus.CREATING;
@@ -83,7 +83,7 @@
@Singleton
public class SchedulerJobServiceImpl implements SchedulerJobService {
private static final String SCHEDULER_NOT_FOUND_MSG = "Scheduler job data not found for user %s with exploratory %s";
- private static final String AUDIT_MESSAGE = "Scheduled action";
+ private static final String AUDIT_MESSAGE = "Scheduled action, requested for notebook %s";
private static final long ALLOWED_INACTIVITY_MINUTES = 1L;
@Inject
@@ -129,8 +129,8 @@
exploratoryName) + " with computational resource " + computationalName));
}
- @Audit(action = CREATE, type = NOTEBOOK_SCHEDULER)
- @Override
+ @Audit(action = SET_UP_SCHEDULER, type = NOTEBOOK)
+ @Override
public void updateExploratorySchedulerData(@User UserInfo user, @Project String project, @ResourceName String exploratoryName, SchedulerJobDTO dto) {
validateExploratoryStatus(user.getName(), project, exploratoryName);
populateDefaultSchedulerValues(dto);
@@ -145,8 +145,8 @@
}
}
- @Audit(action = CREATE, type = COMPUTATIONAL_SCHEDULER)
- @Override
+ @Audit(action = SET_UP_SCHEDULER, type = COMPUTE)
+ @Override
public void updateComputationalSchedulerData(@User UserInfo user, @Project String project, String exploratoryName, @ResourceName String computationalName, SchedulerJobDTO dto) {
validateExploratoryStatus(user.getName(), project, exploratoryName);
validateComputationalStatus(user.getName(), project, exploratoryName, computationalName);
@@ -225,8 +225,8 @@
final String expName = job.getExploratoryName();
final String compName = job.getComputationalName();
final String user = job.getUser();
- log.debug("Stopping exploratory {} computational {} for user {} by scheduler", expName, compName, user);
- computationalService.stopSparkCluster(securityService.getServiceAccountInfo(user), user, project, expName, compName, AUDIT_MESSAGE);
+ log.debug("Stopping exploratory {} computational {} for user {} by scheduler", expName, compName, user);
+ computationalService.stopSparkCluster(securityService.getServiceAccountInfo(user), user, project, expName, compName, String.format(AUDIT_MESSAGE, expName));
}
private void terminateComputational(SchedulerJobData job) {
@@ -234,16 +234,16 @@
final String expName = job.getExploratoryName();
final String compName = job.getComputationalName();
final UserInfo userInfo = securityService.getServiceAccountInfo(user);
- log.debug("Terminating exploratory {} computational {} for user {} by scheduler", expName, compName, user);
- computationalService.terminateComputational(userInfo, user, job.getProject(), expName, compName, AUDIT_MESSAGE);
+ log.debug("Terminating exploratory {} computational {} for user {} by scheduler", expName, compName, user);
+ computationalService.terminateComputational(userInfo, user, job.getProject(), expName, compName, String.format(AUDIT_MESSAGE, expName));
}
private void stopExploratory(SchedulerJobData job) {
final String expName = job.getExploratoryName();
final String user = job.getUser();
final String project = job.getProject();
- log.debug("Stopping exploratory {} for user {} by scheduler", expName, user);
- exploratoryService.stop(securityService.getServiceAccountInfo(user), user, project, expName, AUDIT_MESSAGE);
+ log.debug("Stopping exploratory {} for user {} by scheduler", expName, user);
+ exploratoryService.stop(securityService.getServiceAccountInfo(user), user, project, expName, String.format(AUDIT_MESSAGE, expName));
}
private List<SchedulerJobData> getExploratorySchedulersForTerminating(OffsetDateTime now) {
@@ -264,8 +264,8 @@
final String user = schedulerJobData.getUser();
final String exploratoryName = schedulerJobData.getExploratoryName();
final String project = schedulerJobData.getProject();
- log.debug("Starting exploratory {} for user {} by scheduler", exploratoryName, user);
- exploratoryService.start(securityService.getServiceAccountInfo(user), exploratoryName, project, AUDIT_MESSAGE);
+ log.debug("Starting exploratory {} for user {} by scheduler", exploratoryName, user);
+ exploratoryService.start(securityService.getServiceAccountInfo(user), exploratoryName, project, String.format(AUDIT_MESSAGE, exploratoryName));
if (schedulerJobData.getJobDTO().isSyncStartRequired()) {
log.trace("Starting computational for exploratory {} for user {} by scheduler", exploratoryName, user);
final DataEngineType sparkCluster = DataEngineType.SPARK_STANDALONE;
@@ -283,13 +283,13 @@
final String user = job.getUser();
final String project = job.getProject();
final String expName = job.getExploratoryName();
- log.debug("Terminating exploratory {} for user {} by scheduler", expName, user);
- exploratoryService.terminate(securityService.getUserInfoOffline(user), user, project, expName, AUDIT_MESSAGE);
+ log.debug("Terminating exploratory {} for user {} by scheduler", expName, user);
+ exploratoryService.terminate(securityService.getUserInfoOffline(user), user, project, expName, String.format(AUDIT_MESSAGE, expName));
}
private void startSpark(String user, String expName, String compName, String project) {
- log.debug("Starting exploratory {} computational {} for user {} by scheduler", expName, compName, user);
- computationalService.startSparkCluster(securityService.getServiceAccountInfo(user), expName, compName, project, AUDIT_MESSAGE);
+ log.debug("Starting exploratory {} computational {} for user {} by scheduler", expName, compName, user);
+ computationalService.startSparkCluster(securityService.getServiceAccountInfo(user), expName, compName, project, String.format(AUDIT_MESSAGE, expName));
}
private boolean shouldClusterBeStarted(DataEngineType sparkCluster, UserComputationalResource compResource) {
diff --git a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
index 8c71bdd..c710b3f 100644
--- a/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/reports/audit/audit-grid/audit-grid.component.ts
@@ -221,16 +221,17 @@
</mat-list>
<ng-template #message>
<div class="message-wrapper">
- <p *ngIf="data.element.type !== 'COMPUTATIONAL'; else computation">
- <span *ngIf="data.element.info === 'Scheduled action.';else notScheduledNotebook">{{data.element.action | titlecase}} by scheduler.</span>
+ <p *ngIf="data.element.type !== 'COMPUTE'; else computation">
+ <span *ngIf="data.element.info.indexOf('Scheduled') !== -1;else notScheduledNotebook">{{data.element.action | titlecase}} by scheduler.</span>
+
<ng-template #notScheduledNotebook>
<span>{{data.element.info}}.</span>
</ng-template>
</p>
<ng-template #computation>
- <p *ngIf="data.element.info.indexOf('Scheduled') !== -1;else notScheduled"> {{data.element.action | titlecase}} by scheduler, requested for notebook <span class="strong">{{data.element.info.split(' ')[data.element.info.split(' ').length - 1] }}</span></p>
+ <p *ngIf="data.element.info.indexOf('Scheduled') !== -1;else notScheduled"> {{data.element.action | titlecase}} by scheduler, requested for notebook <span class="strong">{{data.element.info.split(' ')[data.element.info.split(' ').length - 1] }}.</span></p>
<ng-template #notScheduled>
- <p> {{data.element.action | titlecase}} computational resource <span class="strong">{{data.element.resourceName}}</span>, requested for notebook <span class="strong">{{data.element.info.split(' ')[data.element.info.split(' ').length - 1] }}</span></p>
+ <p> {{data.element.action | titlecase}} computational resource <span class="strong">{{data.element.resourceName}}</span>, requested for notebook <span class="strong">{{data.element.info.split(' ')[data.element.info.split(' ').length - 1] }}.</span></p>
</ng-template>
</ng-template>
</div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
index b026fb4..b6d32aa 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/computational/cluster-details/cluster-details.component.ts
@@ -119,6 +119,6 @@
}
private logAction(name: any, description: string) {
- this.auditService.sendDataToAudit({resource_name: name, info: `Follow ${description} link`}).subscribe();
+ this.auditService.sendDataToAudit({resource_name: name, info: `Follow ${description} link`, type: 'COMPUTE'}).subscribe();
}
}
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
index 0c9d4ad..89a4e29 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/detail-dialog/detail-dialog.component.ts
@@ -161,6 +161,6 @@
}
private logAction(name: any, description: string) {
- this.auditService.sendDataToAudit({resource_name: name, info: `Follow ${description} link`}).subscribe();
+ this.auditService.sendDataToAudit({resource_name: name, info: `Follow ${description} link`, type: 'NOTEBOOK'}).subscribe();
}
}
diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
index 657b47f..43688cf 100644
--- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/notification-dialog/notification-dialog.component.ts
@@ -39,8 +39,8 @@
</div>
<div *ngIf="data.type === 'list'" class="info">
<div *ngIf="data.template.notebook.length > 0">
- Following notebook server<span *ngIf="data.template.notebook.length>1">s </span>
- <span *ngFor="let item of data.template.notebook">
+ Following notebook server<span *ngIf="data.template.notebook.length>1">s</span>
+ <span *ngFor="let item of data.template.notebook">
<span class="strong">{{ item.exploratory_name }}</span>
<span *ngIf="data.template.notebook.length > 1">, </span>
</span> will be stopped and all computational resources will be stopped/terminated
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
index 04b4c01..a4412af 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java
@@ -399,18 +399,18 @@
anyString(), any(UserInstanceStatus.class), any(UserInstanceStatus.class), anyVararg());
exploratoryService.updateProjectExploratoryStatuses(userInfo, "project",
- "endpoint", UserInstanceStatus.TERMINATED);
- statusEnvBaseDTO = getStatusEnvBaseDTOWithStatus("terminated");
+ "endpoint", UserInstanceStatus.TERMINATING);
+ statusEnvBaseDTO = getStatusEnvBaseDTOWithStatus("terminating");
verify(exploratoryDAO).fetchProjectExploratoriesWhereStatusNotIn("project", "endpoint",
UserInstanceStatus.TERMINATED, UserInstanceStatus.FAILED);
verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self"));
verify(computationalDAO).updateComputationalStatusesForExploratory(USER, PROJECT,
- EXPLORATORY_NAME, UserInstanceStatus.TERMINATED, UserInstanceStatus.TERMINATED,
+ EXPLORATORY_NAME, UserInstanceStatus.TERMINATING, UserInstanceStatus.TERMINATING,
UserInstanceStatus.TERMINATED, UserInstanceStatus.FAILED);
verifyNoMoreInteractions(exploratoryDAO, computationalDAO);
- }
+ }
@Test
public void getUserInstance() {
diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java
index c66ba83..2721a51 100644
--- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java
+++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java
@@ -80,7 +80,7 @@
@RunWith(MockitoJUnitRunner.class)
public class SchedulerJobServiceImplTest {
- private static final String AUDIT_MESSAGE = "Scheduled action";
+ private static final String AUDIT_MESSAGE = "Scheduled action, requested for notebook %s";
private final String USER = "test";
private final String EXPLORATORY_NAME = "explName";
private final String COMPUTATIONAL_NAME = "compName";
@@ -416,10 +416,10 @@
verify(securityService).getServiceAccountInfo(USER);
verify(schedulerJobDAO)
- .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, STOPPED);
- verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME),
- eq(COMPUTATIONAL_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
+ .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, STOPPED);
+ verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME),
+ eq(COMPUTATIONAL_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
}
@Test
@@ -516,11 +516,11 @@
schedulerJobService.stopComputationalByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO)
- .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, RUNNING);
- verify(computationalService).stopSparkCluster(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT),
- eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
+ verify(schedulerJobDAO)
+ .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, RUNNING);
+ verify(computationalService).stopSparkCluster(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT),
+ eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
}
@Test
@@ -615,10 +615,10 @@
schedulerJobService.stopExploratoryByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO).getExploratorySchedulerWithStatusAndClusterLastActivityLessThan(eq(RUNNING),
- any(Date.class));
- verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService);
+ verify(schedulerJobDAO).getExploratorySchedulerWithStatusAndClusterLastActivityLessThan(eq(RUNNING),
+ any(Date.class));
+ verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService);
}
@Test
@@ -710,11 +710,11 @@
schedulerJobService.startExploratoryByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
- verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService);
- verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(schedulerJobDAO, exploratoryService);
+ verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
+ verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService);
+ verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(schedulerJobDAO, exploratoryService);
verifyZeroInteractions(computationalService, computationalDAO);
}
@@ -736,13 +736,13 @@
schedulerJobService.startExploratoryByScheduler();
verify(securityService, times(2)).getServiceAccountInfo(USER);
- verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
- verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
- verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME),
- eq(PROJECT), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalService,
- computationalDAO);
+ verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
+ verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
+ verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME),
+ eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalService,
+ computationalDAO);
}
@Test
@@ -763,9 +763,9 @@
schedulerJobService.startExploratoryByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
- verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
+ verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
+ verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO);
verifyZeroInteractions(computationalService);
}
@@ -788,9 +788,9 @@
schedulerJobService.startExploratoryByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
- verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE));
- verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
+ verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED);
+ verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED);
verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO);
verifyZeroInteractions(computationalService);
}
@@ -880,11 +880,11 @@
schedulerJobService.terminateComputationalByScheduler();
verify(securityService).getServiceAccountInfo(USER);
- verify(schedulerJobDAO)
- .getComputationalSchedulerDataWithOneOfStatus(RUNNING, STOPPED, RUNNING);
- verify(computationalService).terminateComputational(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME),
- eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
+ verify(schedulerJobDAO)
+ .getComputationalSchedulerDataWithOneOfStatus(RUNNING, STOPPED, RUNNING);
+ verify(computationalService).terminateComputational(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME),
+ eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService);
}
@Test
@@ -974,9 +974,9 @@
schedulerJobService.terminateExploratoryByScheduler();
verify(securityService).getUserInfoOffline(USER);
- verify(schedulerJobDAO).getExploratorySchedulerDataWithOneOfStatus(RUNNING, STOPPED);
- verify(exploratoryService).terminate(refEq(getUserInfo()), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(AUDIT_MESSAGE));
- verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService, exploratoryService);
+ verify(schedulerJobDAO).getExploratorySchedulerDataWithOneOfStatus(RUNNING, STOPPED);
+ verify(exploratoryService).terminate(refEq(getUserInfo()), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)));
+ verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService, exploratoryService);
}
@Test