R/submit-job.R

Defines functions .submit_job

Documented in .submit_job

#' submit job
#' @param srvr rsq server url
#' @param user user submitting job
#' @param context job context
#' @param rscript_path path to rscript
#' @param work_dir directory to start R from
#' @param r_path path to R executable
#' @param renv list of environment variables
#' @param .no_submit return json that would be submitted but don't make request
#' @export
.submit_job <- function(srvr,
                        user,
                        context,
                        rscript_path,
                        work_dir = NULL,
                        r_path = NULL,
                        renv = NULL,
                        .no_submit = FALSE
) {
  r_details <- unbox_details(collect_r_details())
  if (!is.null(work_dir)) {
    r_details$work_dir <- work_dir
  }
  if (!is.null(r_path)) {
    r_details$r_path <- r_path
  }
  if (!is.null(renv)) {
    r_details$renv <- renv
  }
  submission_values <- list(
      "id"= jsonlite::unbox(0),
      "status"= jsonlite::unbox("QUEUED"),
      "user"= jsonlite::unbox(user),
      "context"= jsonlite::unbox(context),
      "rscript"= list(
        "r_path"= jsonlite::unbox(r_details$r_path),
        "work_dir"= jsonlite::unbox(r_details$work_dir),
        "rscript_path"= jsonlite::unbox(rscript_path),
        "renv"= r_details$renv
      )
  )
  submission_json <- jsonlite::toJSON(submission_values, auto_unbox = T)
  if (.no_submit) {
    return(submission_json)
  }
  httr::POST(srvr, body = submission_json, encode = "json")
}
metrumresearchgroup/rrsq documentation built on Aug. 20, 2021, 3:20 p.m.