public Listing deleteJob()

in src/main/java/com/epam/grid/engine/provider/job/slurm/SlurmJobProvider.java [160:193]


    public Listing<DeletedJobInfo> deleteJob(final DeleteJobFilter deleteJobFilter) {
        final Map<Long, String> jobOwners = getJobOwners(deleteJobFilter);
        if (jobOwners.isEmpty()) {
            throw new GridEngineException(HttpStatus.NOT_FOUND,
                    String.format("No jobs found from the specified %s to remove!", deleteJobFilter));
        }

        final CommandResult result = simpleCmdExecutor.execute(makeScancelCommand(deleteJobFilter));
        if (result.getExitCode() != 0) {
            CommandsUtils.throwExecutionDetails(result, HttpStatus.NOT_FOUND);
        }

        final Set<String> errorDeletingJobs = result.getStdErr().stream()
                .filter((s) -> s.startsWith(KILL_JOB_ERROR_PREFIX))
                .map((s) -> s.substring(ERROR_JOB_ID_POSITION, s.indexOf(TextConstants.COLON, ERROR_JOB_ID_POSITION)))
                .collect(Collectors.toSet());

        final List<Long> deletedJobIds = result.getStdErr().stream()
                .filter((s) -> s.startsWith(START_TERMINATING_JOB_PREFIX))
                .map((s) -> s.substring(JOB_ID_START_POSITION))
                .filter((id) -> !errorDeletingJobs.contains(id))
                .map(Long::valueOf)
                .collect(Collectors.toList());

        if (deletedJobIds.isEmpty()) {
            CommandsUtils.throwExecutionDetails(result, HttpStatus.NOT_FOUND);
        }
        if (deletedJobIds.size() < jobOwners.size()) {
            log.warn(JOBS_DELETING_EXECUTION_RESULT + result);
        }
        return new Listing<>(deletedJobIds.stream()
                .map(id -> new DeletedJobInfo(id, jobOwners.get(id)))
                .collect(Collectors.toList()));
    }