public static SingularityPendingRequestParent minimalFromRequestWithState(SingularityRequestWithState requestWithState, SingularityPendingRequest pendingRequest) { return new SingularityPendingRequestParent(requestWithState.getRequest(), requestWithState.getState(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), pendingRequest, Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent(), Optional.absent()); }
public SingularityPendingRequestParent scheduleImmediately(SingularityUser user, String requestId, SingularityRunNowRequest runNowRequest, boolean minimalReturn) { final Optional<SingularityRunNowRequest> maybeRunNowRequest = Optional.fromNullable(runNowRequest); SingularityRequestWithState requestWithState = fetchRequestWithState(requestId, user); authorizationHelper.checkForAuthorization(requestWithState.getRequest(), user, SingularityAuthorizationScope.WRITE); checkConflict(requestWithState.getState() != RequestState.PAUSED, "Request %s is paused. Unable to run now (it must be manually unpaused first)", requestWithState.getRequest().getId()); final SingularityPendingRequest pendingRequest = validator.checkRunNowRequest( getAndCheckDeployId(requestId), user.getEmail(), requestWithState.getRequest(), maybeRunNowRequest, taskManager.getActiveTaskIdsForRequest(requestId), taskManager.getPendingTaskIdsForRequest(requestId)); SingularityCreateResult result = requestManager.addToPendingQueue(pendingRequest); checkConflict(result != SingularityCreateResult.EXISTED, "%s is already pending, please try again soon", requestId); if (minimalReturn) { return SingularityPendingRequestParent.minimalFromRequestWithState(requestWithState, pendingRequest); } else { return SingularityPendingRequestParent.fromSingularityRequestParent(fillEntireRequest(requestWithState), pendingRequest); } }
@Test public void testRunId() { initScheduledRequest(); initFirstDeploy(); String runId = "my-run-id"; SingularityPendingRequestParent parent = requestResource.scheduleImmediately(singularityUser, requestId, new SingularityRunNowRequestBuilder().setRunId(runId).build()); Assert.assertEquals(runId, parent.getPendingRequest().getRunId().get()); resourceOffers(); Assert.assertEquals(runId, taskManager.getActiveTasks().get(0).getTaskRequest().getPendingTask().getRunId().get()); SingularityTaskId taskId = taskManager.getActiveTaskIds().get(0); statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FINISHED); configuration.setTaskPersistAfterStartupBufferMillis(0); taskMetadataConfiguration.setTaskPersistAfterFinishBufferMillis(0); taskHistoryPersister.runActionOnPoll(); Assert.assertEquals(runId, historyManager.getTaskHistory(taskId.getId()).get().getTask().getTaskRequest().getPendingTask().getRunId().get()); Assert.assertEquals(runId, getTaskHistoryForRequest(requestId, 0, 10).get(0).getRunId().get()); parent = requestResource.scheduleImmediately(singularityUser, requestId, ((SingularityRunNowRequest) null)); Assert.assertTrue(parent.getPendingRequest().getRunId().isPresent()); }
public SingularityPendingRequestParent scheduleImmediately(SingularityUser user, String requestId, SingularityRunNowRequest runNowRequest, boolean minimalReturn) { final Optional<SingularityRunNowRequest> maybeRunNowRequest = Optional.fromNullable(runNowRequest); SingularityRequestWithState requestWithState = fetchRequestWithState(requestId, user); authorizationHelper.checkForAuthorization(requestWithState.getRequest(), user, SingularityAuthorizationScope.WRITE); checkConflict(requestWithState.getState() != RequestState.PAUSED, "Request %s is paused. Unable to run now (it must be manually unpaused first)", requestWithState.getRequest().getId()); final SingularityPendingRequest pendingRequest = validator.checkRunNowRequest( getAndCheckDeployId(requestId), user.getEmail(), requestWithState.getRequest(), maybeRunNowRequest, taskManager.getActiveTaskIdsForRequest(requestId), taskManager.getPendingTaskIdsForRequest(requestId)); SingularityCreateResult result = requestManager.addToPendingQueue(pendingRequest); checkConflict(result != SingularityCreateResult.EXISTED, "%s is already pending, please try again soon", requestId); if (minimalReturn) { return SingularityPendingRequestParent.minimalFromRequestWithState(requestWithState, pendingRequest); } else { return SingularityPendingRequestParent.fromSingularityRequestParent(fillEntireRequest(requestWithState), pendingRequest); } }
@Test public void testRunId() { initScheduledRequest(); initFirstDeploy(); String runId = "my-run-id"; SingularityPendingRequestParent parent = requestResource.scheduleImmediately(singularityUser, requestId, new SingularityRunNowRequestBuilder().setRunId(runId).build()); Assert.assertEquals(runId, parent.getPendingRequest().getRunId().get()); resourceOffers(); Assert.assertEquals(runId, taskManager.getActiveTasks().get(0).getTaskRequest().getPendingTask().getRunId().get()); SingularityTaskId taskId = taskManager.getActiveTaskIds().get(0); statusUpdate(taskManager.getTask(taskId).get(), TaskState.TASK_FINISHED); configuration.setTaskPersistAfterStartupBufferMillis(0); taskMetadataConfiguration.setTaskPersistAfterFinishBufferMillis(0); taskHistoryPersister.runActionOnPoll(); Assert.assertEquals(runId, historyManager.getTaskHistory(taskId.getId()).get().getTask().getTaskRequest().getPendingTask().getRunId().get()); Assert.assertEquals(runId, getTaskHistoryForRequest(requestId, 0, 10).get(0).getRunId().get()); parent = requestResource.scheduleImmediately(singularityUser, requestId, ((SingularityRunNowRequest) null)); Assert.assertTrue(parent.getPendingRequest().getRunId().isPresent()); }
public static SingularityPendingRequestParent fromSingularityRequestParent(SingularityRequestParent singularityRequestParent, SingularityPendingRequest pendingRequest) { return new SingularityPendingRequestParent(singularityRequestParent.getRequest(), singularityRequestParent.getState(), singularityRequestParent.getRequestDeployState(), singularityRequestParent.getActiveDeploy(), singularityRequestParent.getPendingDeploy(), singularityRequestParent.getPendingDeployState(), pendingRequest, singularityRequestParent.getExpiringBounce(), singularityRequestParent.getExpiringPause(), singularityRequestParent.getExpiringScale(), singularityRequestParent.getExpiringSkipHealthchecks(), singularityRequestParent.getTaskIds(), singularityRequestParent.getLastHistory(), singularityRequestParent.getMostRecentTask()); }