public Route constructRoutes()

in mantis-control-plane/mantis-control-plane-server/src/main/java/io/mantisrx/master/api/akka/route/v1/JobsRoute.java [99:199]


    public Route constructRoutes() {
        return concat(
                pathPrefix(JOBS_API_PREFIX, () -> concat(
                        // api/v1/jobs
                        pathEndOrSingleSlash(() -> concat(
                                // GET - list jobs
                                get(this::getJobsRoute),

                                // POST - submit a job
                                post(this::postJobsRoute)
                        )),

                        // api/v1/jobs/{jobId}
                        path(
                                PathMatchers.segment(),
                                (jobId) -> pathEndOrSingleSlash(() -> concat(

                                        // GET - retrieve job detail by job ID
                                        get(() -> getJobInstanceRoute(jobId)),

                                        // DELETE - permanently kill a job.
                                        delete(() -> deleteJobInstanceRoute(jobId)),

                                        // reject post
                                        post(() -> complete(StatusCodes.METHOD_NOT_ALLOWED))
                                ))
                        ),

                        path(PathMatchers.segment().slash("archivedWorkers"),
                             (jobId) -> pathEndOrSingleSlash(() -> concat(
                                     get(()-> getArchivedWorkers(jobId))
                             ))
                        ),

                        // api/v1/jobs/actions/quickSubmit
                        path(
                                PathMatchers.segment("actions").slash("quickSubmit"),
                                () -> pathEndOrSingleSlash(
                                        () ->
                                                // POST - quick submit a job
                                                post(this::postJobInstanceQuickSubmitRoute)
                                )
                        ),

                        // api/v1/jobs/actions/postJobStatus
                        path(
                                PathMatchers.segment("actions").slash("postJobStatus"),
                                () -> pathEndOrSingleSlash(
                                        () ->
                                                // POST Job Status
                                                post(this::postJobStatusRoute)
                                )
                        ),

                        // api/v1/jobs/{jobId}/actions/scaleStage
                        path(
                                PathMatchers.segment().slash("actions").slash("scaleStage"),
                                (jobId) -> pathEndOrSingleSlash(
                                        // POST - scale stage
                                        () -> post(() -> postJobInstanceScaleStageRoute(jobId))
                                )
                        ),

                        // api/v1/jobs/{jobId}/actions/resubmitWorker
                        path(
                                PathMatchers.segment().slash("actions").slash("resubmitWorker"),
                                (jobId) -> pathEndOrSingleSlash(
                                        () ->
                                                // POST - resubmit worker
                                                post(() -> postJobInstanceResubmitWorkerRoute(jobId))
                                )
                        ))
                ),
                pathPrefix(CLUSTER_JOBS_API_PREFIX, (cluster) -> concat(

                        // api/v1/jobClusters/{clusterName}/jobs
                        pathEndOrSingleSlash(() -> concat(

                                // GET - list jobs
                                get(() -> getJobsRoute(Optional.of(cluster))),

                                // POST - submit a job
                                post(() -> postJobsRoute(Optional.of(cluster))))
                        ),

                        // api/v1/jobClusters/{clusterName}/jobs/{jobId}
                        path(
                                PathMatchers.segment(),
                                (jobId) -> pathEndOrSingleSlash(() -> concat(

                                        // GET - retrieve job detail by cluster & job ID
                                        get(() -> getJobInstanceRoute(Optional.of(cluster), jobId)),

                                        // reject post
                                        post(() -> complete(StatusCodes.METHOD_NOT_ALLOWED))

                                )))
                           )
                )
        );
    }