fix: pin native AgentRun jobs to NC01

This commit is contained in:
pikastech
2026-07-20 08:19:50 +02:00
parent 7b4ceb6111
commit 9f7ecd51ef
2 changed files with 17 additions and 0 deletions
+2
View File
@@ -48,6 +48,8 @@ nativeDevelopment:
image: 127.0.0.1:5000/agentrun/agentrun-mgr-env@sha256:929c350b07b48aac8450ff52e5ca575686016cf85192af435700e8efb85b0e7b
serviceAccount: agentrun-nc01-v02-runner
jobNamePrefix: agentrun-nc01-v02-l1-runner
nodeSelector:
unidesk.ai/node-id: NC01
apiKeySecretRef:
name: agentrun-v02-api-key
key: HWLAB_API_KEY
@@ -35,6 +35,7 @@ interface AgentRunNativeManagerSpec {
image: string;
serviceAccount: string;
jobNamePrefix: string;
nodeSelector: Record<string, string>;
apiKeySecretRef: { name: string; key: string };
idleTimeoutMs: number;
backendRetry: { maxAttempts: number; initialBackoffMs: number; maxBackoffMs: number };
@@ -176,6 +177,7 @@ function nativeEnvironment(spec: AgentRunNativeManagerSpec): NodeJS.ProcessEnv {
AGENTRUN_RUNNER_IMAGE: spec.runner.image,
AGENTRUN_RUNNER_SERVICE_ACCOUNT: spec.runner.serviceAccount,
AGENTRUN_RUNNER_JOB_NAME_PREFIX: spec.runner.jobNamePrefix,
AGENTRUN_RUNNER_NODE_SELECTOR_JSON: JSON.stringify(spec.runner.nodeSelector),
AGENTRUN_RUNNER_API_KEY_SECRET_NAME: spec.runner.apiKeySecretRef.name,
AGENTRUN_RUNNER_API_KEY_SECRET_KEY: spec.runner.apiKeySecretRef.key,
AGENTRUN_RUNNER_IDLE_TIMEOUT_MS: String(spec.runner.idleTimeoutMs),
@@ -276,6 +278,7 @@ function readNativeManagerSpec(): AgentRunNativeManagerSpec {
image: stringField(runner, "image", `${CONFIG_PATH}.nativeDevelopment.manager.runner`),
serviceAccount: stringField(runner, "serviceAccount", `${CONFIG_PATH}.nativeDevelopment.manager.runner`),
jobNamePrefix: stringField(runner, "jobNamePrefix", `${CONFIG_PATH}.nativeDevelopment.manager.runner`),
nodeSelector: stringRecordField(runner, "nodeSelector", `${CONFIG_PATH}.nativeDevelopment.manager.runner`),
apiKeySecretRef: {
name: stringField(runnerSecret, "name", `${CONFIG_PATH}.nativeDevelopment.manager.runner.apiKeySecretRef`),
key: stringField(runnerSecret, "key", `${CONFIG_PATH}.nativeDevelopment.manager.runner.apiKeySecretRef`),
@@ -315,6 +318,18 @@ function positiveIntegerFields<T extends string>(record: Record<string, unknown>
return Object.fromEntries(fields.map((field) => [field, positiveInteger(record, field, path)])) as Record<T, number>;
}
function stringRecordField(record: Record<string, unknown>, key: string, path: string): Record<string, string> {
const value = recordField(record, key, path);
const entries = Object.entries(value);
if (entries.length === 0) throw new Error(`${path}.${key} must not be empty`);
return Object.fromEntries(entries.map(([entryKey, entryValue]) => {
if (entryKey.trim().length === 0 || typeof entryValue !== "string" || entryValue.trim().length === 0) {
throw new Error(`${path}.${key} entries must use non-empty string keys and values`);
}
return [entryKey, entryValue.trim()];
}));
}
function positiveInteger(record: Record<string, unknown>, key: string, path: string): number {
const value = integerField(record, key, path);
if (value < 1) throw new Error(`${path}.${key} must be positive`);