Commit f929c6ed authored by Cage, Gregory's avatar Cage, Gregory
Browse files

Add job console output endpoint and update job schema

parent c63538d9
Loading
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
    <div>
        <JobDetailsProvider auto-refresh :job-id="job_id" @update:result="updateJob"/>
        <JobConsoleOutputProvider
            auto-refresh="True"
            auto-refresh
            :job-id="job_id"
            :stdout_position="stdout_position"
            :stdout_length="stdout_length"
@@ -166,7 +166,7 @@ export default {
                    this.stderr_position += output.stderr.length;
                }
            }
        }
        },
    },
};
</script>
+6 −0
Original line number Diff line number Diff line
@@ -207,6 +207,12 @@ class JobOutput(Model):
    value: EncodedDataItemSourceId = Field(default=Required, title="Dataset", description="The associated dataset.")


class JobConsoleOutput(Model):
    state: str = Field(None, title="Job State", description="The current job's state")
    stdout: Optional[str] = Field(None, title="STDOUT", description="Job STDOUT text")
    stderr: Optional[str] = Field(None, title="STDERR", description="Job STDERR text")


class JobParameter(Model):
    text: str = Field(
        default=Required,
+31 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ from galaxy.schema.fields import DecodedDatabaseIdField
from galaxy.schema.jobs import (
    DeleteJobPayload,
    EncodedJobDetails,
    JobConsoleOutput,
    JobDestinationParams,
    JobDisplayParametersSummary,
    JobErrorSummary,
@@ -360,6 +361,36 @@ class FastAPIJobs:
            output_associations.append(JobOutputAssociation(name=association.name, dataset=association.dataset))
        return output_associations

    @router.get(
        "/api/jobs/{job_id}/console_output",
        name="get_console_output",
        summary="Returns STDOUT and STDERR from job.",
    )
    def console_output(
            self,
            job_id: Annotated[DecodedDatabaseIdField, JobIdPathParam],
            stdout_position: int,
            stdout_length: int,
            stderr_position: int,
            stderr_length: int,
            trans: ProvidesUserContext = DependsOnTrans,
    ) -> JobConsoleOutput:
        """
        Get the stdout and/or stderr of a job. The position parameters are the index
        of where to start reading stdout/stderr. The length parameterscontrol how much
        stdout/stderr is read.
        """
        job = self.service.get_job(trans, job_id)
        output = self.service.job_manager.get_job_console_output(
            trans,
            job,
            int(stdout_position),
            int(stdout_length),
            int(stderr_position),
            int(stderr_length),
        )
        return JobConsoleOutput(state=output["state"], stdout=output["stdout"], stderr=output["stderr"])

    @router.get(
        "/api/jobs/{job_id}/parameters_display",
        name="resolve_parameters_display",