Revamp Job flow
This commit is contained in:
parent
945afdfbbe
commit
4a0a4b29a5
86 changed files with 592 additions and 608 deletions
63
src/job-core/OneshotCore.jsx
Normal file
63
src/job-core/OneshotCore.jsx
Normal file
|
@ -0,0 +1,63 @@
|
|||
import { useContext } from "react";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import JobContext from "@qltr/jobctx";
|
||||
import Initiator from "@qltr/initiator";
|
||||
import { jobStatus, socketUrl } from "./job-config.js";
|
||||
|
||||
export function useOneshotCore() {
|
||||
const { state, jobUpdate, jobCreate, jobDelete } = useContext(JobContext);
|
||||
|
||||
function oneshotCancel(jobId) {
|
||||
const job = state.jobs.find((j) => j.jobId === jobId);
|
||||
|
||||
if (job.initiator.sk) job.initiator.sk.close();
|
||||
job.status = jobStatus.CANCELED;
|
||||
jobUpdate({ ...job }, jobId);
|
||||
}
|
||||
|
||||
function oneshotDestroy(jobId) {
|
||||
const job = state.jobs.find((j) => j.jobId === jobId);
|
||||
const { status } = job;
|
||||
const isTriggered = !!job.initiator.sk;
|
||||
const isCompleted = status === jobStatus.OK || status === jobStatus.ERROR;
|
||||
const isCanceled = status === jobStatus.CANCELED;
|
||||
if (isTriggered && !isCompleted && !isCanceled) job.initiator.sk.close();
|
||||
jobDelete(jobId);
|
||||
}
|
||||
|
||||
function oneshotStart(builderCache) {
|
||||
const { testNames, isTriage } = builderCache;
|
||||
const initiator = new Initiator(socketUrl);
|
||||
const jobId = uuidv4();
|
||||
const job = {
|
||||
name: jobId,
|
||||
status: jobStatus.PENDING,
|
||||
jobId,
|
||||
isPipeline: false,
|
||||
builderCache,
|
||||
initiator,
|
||||
};
|
||||
const request = { testNames, type: "single", isTriage };
|
||||
|
||||
jobCreate(job);
|
||||
|
||||
const onLog = (d) => {
|
||||
const job = state.jobs.find((j) => j.jobId === jobId);
|
||||
job.log.push(d);
|
||||
job.status = jobStatus.ACTIVE;
|
||||
jobUpdate({ ...job }, jobId);
|
||||
};
|
||||
|
||||
const onClose = (c) => {
|
||||
const job = state.jobs.find((j) => j.jobId === jobId);
|
||||
job.exitcode = c;
|
||||
job.status = c === 0 ? jobStatus.OK : jobStatus.ERROR;
|
||||
jobUpdate({ ...job }, jobId);
|
||||
};
|
||||
|
||||
const started = initiator.newJob(request, onLog, onClose, () => {});
|
||||
started.then(() => jobUpdate({ status: jobStatus.ACTIVE }, jobId));
|
||||
return jobId;
|
||||
}
|
||||
return { oneshotStart, oneshotCancel, oneshotDestroy };
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue