Files
pikasTech-agentrun/src/selftest/fixtures/fake-kubectl-runner-startup.mjs
T
2026-07-20 08:08:52 +02:00

68 lines
2.0 KiB
JavaScript
Executable File

#!/usr/bin/env node
import { readFileSync } from "node:fs";
const fixturePath = process.env.AGENTRUN_SELFTEST_STARTUP_FIXTURE_PATH;
if (!fixturePath) {
process.stderr.write("AGENTRUN_SELFTEST_STARTUP_FIXTURE_PATH is required\n");
process.exit(2);
}
const fixture = JSON.parse(readFileSync(fixturePath, "utf8"));
const args = process.argv.slice(2);
const resource = args[1];
if (args[0] !== "get") {
process.stderr.write(`unsupported command: ${args.join(" ")}\n`);
process.exit(2);
}
if (resource === "job") {
const failed = fixture.mode === "failed";
const succeeded = fixture.mode === "succeeded";
process.stdout.write(JSON.stringify({
kind: "Job",
metadata: {
name: args[2],
namespace: fixture.namespace,
uid: "job-startup-selftest",
creationTimestamp: fixture.createdAt,
},
status: failed
? { failed: 1, startTime: fixture.createdAt, conditions: [{ type: "Failed", status: "True", reason: "BackoffLimitExceeded" }] }
: succeeded
? { succeeded: 1, startTime: fixture.createdAt, conditions: [{ type: "Complete", status: "True" }] }
: { active: 1, startTime: fixture.createdAt },
}));
process.exit(0);
}
if (resource === "pods") {
const running = fixture.mode === "running";
const failed = fixture.mode === "failed";
const succeeded = fixture.mode === "succeeded";
const waiting = running ? undefined : {
reason: fixture.reason,
message: fixture.message,
};
process.stdout.write(JSON.stringify({
items: [{
kind: "Pod",
metadata: {
name: "runner-startup-selftest-pod",
namespace: fixture.namespace,
creationTimestamp: fixture.createdAt,
},
status: {
phase: running ? "Running" : failed ? "Failed" : succeeded ? "Succeeded" : "Pending",
containerStatuses: [{
name: "runner",
state: running ? { running: { startedAt: fixture.createdAt } } : { waiting },
}],
},
}],
}));
process.exit(0);
}
process.stderr.write(`unsupported resource: ${resource}\n`);
process.exit(2);