@calltelemetry/cli 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/k8s.d.ts.map +1 -1
- package/dist/commands/k8s.js +29 -0
- package/dist/commands/k8s.js.map +1 -1
- package/dist/lib/env-to-values.d.ts +34 -0
- package/dist/lib/env-to-values.d.ts.map +1 -0
- package/dist/lib/env-to-values.js +163 -0
- package/dist/lib/env-to-values.js.map +1 -0
- package/dist/lib/k8s/appliance-info.d.ts +78 -0
- package/dist/lib/k8s/appliance-info.d.ts.map +1 -0
- package/dist/lib/k8s/appliance-info.js +226 -0
- package/dist/lib/k8s/appliance-info.js.map +1 -0
- package/dist/lib/k8s/appliance-job-logger.d.ts +63 -0
- package/dist/lib/k8s/appliance-job-logger.d.ts.map +1 -0
- package/dist/lib/k8s/appliance-job-logger.js +228 -0
- package/dist/lib/k8s/appliance-job-logger.js.map +1 -0
- package/dist/lib/k8s/appliance-orchestrator.d.ts +101 -0
- package/dist/lib/k8s/appliance-orchestrator.d.ts.map +1 -0
- package/dist/lib/k8s/appliance-orchestrator.js +496 -0
- package/dist/lib/k8s/appliance-orchestrator.js.map +1 -0
- package/dist/lib/k8s/index.d.ts +8 -0
- package/dist/lib/k8s/index.d.ts.map +1 -0
- package/dist/lib/k8s/index.js +8 -0
- package/dist/lib/k8s/index.js.map +1 -0
- package/dist/lib/prefs.d.ts +25 -0
- package/dist/lib/prefs.d.ts.map +1 -1
- package/dist/lib/prefs.js +0 -0
- package/dist/lib/prefs.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent orchestration state for appliance Kubernetes jobs.
|
|
3
|
+
*
|
|
4
|
+
* `ct k8s sync|diff|apply` (and the future `ct update` k3s path) are
|
|
5
|
+
* multi-step operations. This module gives them a durable job record:
|
|
6
|
+
*
|
|
7
|
+
* - the job and every step are validated before they are written;
|
|
8
|
+
* - state is persisted after each transition, so a killed process leaves
|
|
9
|
+
* an auditable `running` record that the next invocation marks
|
|
10
|
+
* `interrupted`;
|
|
11
|
+
* - an interrupted job can be resumed without re-running steps that
|
|
12
|
+
* already succeeded;
|
|
13
|
+
* - every transition is mirrored into the append-only job log.
|
|
14
|
+
*
|
|
15
|
+
* Execution is injected. This module never runs helmfile or touches a live
|
|
16
|
+
* cluster by itself, which keeps validation and persistence testable.
|
|
17
|
+
*/
|
|
18
|
+
import { randomUUID } from 'node:crypto';
|
|
19
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
20
|
+
import { join } from 'node:path';
|
|
21
|
+
import { mkdirSafe, writeFileSafe } from '../fs.js';
|
|
22
|
+
import { appendJobLogEvent, createJobLogEvent, readJobLog, redactJobLogDetails, } from './appliance-job-logger.js';
|
|
23
|
+
export const APPLIANCE_JOB_SCHEMA_VERSION = 1;
|
|
24
|
+
export const DEFAULT_JOB_STALE_AFTER_MS = 30 * 60 * 1000;
|
|
25
|
+
export const APPLIANCE_JOB_KINDS = [
|
|
26
|
+
'install',
|
|
27
|
+
'update',
|
|
28
|
+
'validate',
|
|
29
|
+
'render',
|
|
30
|
+
'sync',
|
|
31
|
+
'diff',
|
|
32
|
+
'apply',
|
|
33
|
+
'backup',
|
|
34
|
+
'restore',
|
|
35
|
+
'scale',
|
|
36
|
+
'verify',
|
|
37
|
+
];
|
|
38
|
+
export const APPLIANCE_JOB_STATUSES = [
|
|
39
|
+
'queued',
|
|
40
|
+
'running',
|
|
41
|
+
'succeeded',
|
|
42
|
+
'failed',
|
|
43
|
+
'interrupted',
|
|
44
|
+
];
|
|
45
|
+
export const APPLIANCE_JOB_STEP_STATUSES = [
|
|
46
|
+
'pending',
|
|
47
|
+
'running',
|
|
48
|
+
'succeeded',
|
|
49
|
+
'failed',
|
|
50
|
+
'skipped',
|
|
51
|
+
];
|
|
52
|
+
export class ApplianceJobValidationError extends Error {
|
|
53
|
+
errors;
|
|
54
|
+
constructor(errors) {
|
|
55
|
+
super(`Invalid appliance job: ${errors.join('; ')}`);
|
|
56
|
+
this.name = 'ApplianceJobValidationError';
|
|
57
|
+
this.errors = errors;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const JOB_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
61
|
+
const STEP_NAME = /^[a-z][a-z0-9._-]{0,63}$/;
|
|
62
|
+
const METADATA_KEY = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/;
|
|
63
|
+
const MAX_STEPS = 50;
|
|
64
|
+
const MAX_ERROR_LENGTH = 4096;
|
|
65
|
+
function isIsoTimestamp(value) {
|
|
66
|
+
return typeof value === 'string' && Number.isFinite(Date.parse(value));
|
|
67
|
+
}
|
|
68
|
+
function hasControlCharacter(value) {
|
|
69
|
+
// eslint-disable-next-line no-control-regex
|
|
70
|
+
return /[\u0000-\u001f\u007f]/.test(value);
|
|
71
|
+
}
|
|
72
|
+
export function validateApplianceJob(job) {
|
|
73
|
+
const errors = [];
|
|
74
|
+
if (typeof job !== 'object' || job === null || Array.isArray(job)) {
|
|
75
|
+
return { valid: false, errors: ['job must be an object'] };
|
|
76
|
+
}
|
|
77
|
+
const value = job;
|
|
78
|
+
if (value.schemaVersion !== APPLIANCE_JOB_SCHEMA_VERSION) {
|
|
79
|
+
errors.push(`schemaVersion must be ${APPLIANCE_JOB_SCHEMA_VERSION}`);
|
|
80
|
+
}
|
|
81
|
+
if (typeof value.id !== 'string' || !JOB_ID.test(value.id)) {
|
|
82
|
+
errors.push('id must be a 1-128 character job identifier');
|
|
83
|
+
}
|
|
84
|
+
if (typeof value.kind !== 'string' ||
|
|
85
|
+
!APPLIANCE_JOB_KINDS.includes(value.kind)) {
|
|
86
|
+
errors.push(`kind must be one of ${APPLIANCE_JOB_KINDS.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
if (typeof value.status !== 'string' ||
|
|
89
|
+
!APPLIANCE_JOB_STATUSES.includes(value.status)) {
|
|
90
|
+
errors.push(`status must be one of ${APPLIANCE_JOB_STATUSES.join(', ')}`);
|
|
91
|
+
}
|
|
92
|
+
if (!isIsoTimestamp(value.createdAt))
|
|
93
|
+
errors.push('createdAt must be an ISO timestamp');
|
|
94
|
+
if (!isIsoTimestamp(value.updatedAt))
|
|
95
|
+
errors.push('updatedAt must be an ISO timestamp');
|
|
96
|
+
if (isIsoTimestamp(value.createdAt) && isIsoTimestamp(value.updatedAt)) {
|
|
97
|
+
if (Date.parse(value.updatedAt) < Date.parse(value.createdAt)) {
|
|
98
|
+
errors.push('updatedAt must not be earlier than createdAt');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (value.startedAt !== undefined && !isIsoTimestamp(value.startedAt)) {
|
|
102
|
+
errors.push('startedAt must be an ISO timestamp');
|
|
103
|
+
}
|
|
104
|
+
if (value.finishedAt !== undefined && !isIsoTimestamp(value.finishedAt)) {
|
|
105
|
+
errors.push('finishedAt must be an ISO timestamp');
|
|
106
|
+
}
|
|
107
|
+
if (isIsoTimestamp(value.startedAt) && isIsoTimestamp(value.finishedAt)) {
|
|
108
|
+
if (Date.parse(value.finishedAt) < Date.parse(value.startedAt)) {
|
|
109
|
+
errors.push('finishedAt must not be earlier than startedAt');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (value.status === 'queued') {
|
|
113
|
+
if (value.startedAt !== undefined)
|
|
114
|
+
errors.push('queued job must not have startedAt');
|
|
115
|
+
if (value.finishedAt !== undefined)
|
|
116
|
+
errors.push('queued job must not have finishedAt');
|
|
117
|
+
}
|
|
118
|
+
else if (value.status === 'running') {
|
|
119
|
+
if (value.startedAt === undefined)
|
|
120
|
+
errors.push('running job must have startedAt');
|
|
121
|
+
if (value.finishedAt !== undefined)
|
|
122
|
+
errors.push('running job must not have finishedAt');
|
|
123
|
+
}
|
|
124
|
+
else if (value.status === 'succeeded' || value.status === 'failed') {
|
|
125
|
+
if (value.startedAt === undefined)
|
|
126
|
+
errors.push(`${value.status} job must have startedAt`);
|
|
127
|
+
if (value.finishedAt === undefined)
|
|
128
|
+
errors.push(`${value.status} job must have finishedAt`);
|
|
129
|
+
}
|
|
130
|
+
else if (value.status === 'interrupted') {
|
|
131
|
+
if (value.finishedAt !== undefined)
|
|
132
|
+
errors.push('interrupted job must not have finishedAt');
|
|
133
|
+
}
|
|
134
|
+
if (value.error !== undefined) {
|
|
135
|
+
if (typeof value.error !== 'string' ||
|
|
136
|
+
value.error.length === 0 ||
|
|
137
|
+
value.error.length > MAX_ERROR_LENGTH ||
|
|
138
|
+
hasControlCharacter(value.error)) {
|
|
139
|
+
errors.push(`error must be a single line of 1-${MAX_ERROR_LENGTH} characters`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (value.metadata !== undefined) {
|
|
143
|
+
if (typeof value.metadata !== 'object' || value.metadata === null || Array.isArray(value.metadata)) {
|
|
144
|
+
errors.push('metadata must be an object');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
for (const [key, detail] of Object.entries(value.metadata)) {
|
|
148
|
+
if (!METADATA_KEY.test(key) || ['__proto__', 'constructor', 'prototype'].includes(key)) {
|
|
149
|
+
errors.push(`metadata.${key} is not a valid key`);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const scalar = typeof detail === 'string' || typeof detail === 'boolean' || Number.isFinite(detail);
|
|
153
|
+
if (!scalar)
|
|
154
|
+
errors.push(`metadata.${key} must be a string, number, or boolean`);
|
|
155
|
+
else if (typeof detail === 'string' && (detail.length > 1024 || hasControlCharacter(detail))) {
|
|
156
|
+
errors.push(`metadata.${key} must be a single line of at most 1024 characters`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (!Array.isArray(value.steps) || value.steps.length === 0) {
|
|
162
|
+
errors.push('steps must be a non-empty array');
|
|
163
|
+
}
|
|
164
|
+
else if (value.steps.length > MAX_STEPS) {
|
|
165
|
+
errors.push(`steps must contain at most ${MAX_STEPS} entries`);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const seen = new Set();
|
|
169
|
+
value.steps.forEach((step, index) => {
|
|
170
|
+
if (typeof step !== 'object' || step === null || Array.isArray(step)) {
|
|
171
|
+
errors.push(`steps[${index}] must be an object`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (typeof step.name !== 'string' || !STEP_NAME.test(step.name)) {
|
|
175
|
+
errors.push(`steps[${index}].name must be a lowercase step identifier`);
|
|
176
|
+
}
|
|
177
|
+
else if (seen.has(step.name)) {
|
|
178
|
+
errors.push(`steps[${index}].name duplicates ${step.name}`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
seen.add(step.name);
|
|
182
|
+
}
|
|
183
|
+
if (typeof step.status !== 'string' ||
|
|
184
|
+
!APPLIANCE_JOB_STEP_STATUSES.includes(step.status)) {
|
|
185
|
+
errors.push(`steps[${index}].status is invalid`);
|
|
186
|
+
}
|
|
187
|
+
if (step.startedAt !== undefined && !isIsoTimestamp(step.startedAt)) {
|
|
188
|
+
errors.push(`steps[${index}].startedAt must be an ISO timestamp`);
|
|
189
|
+
}
|
|
190
|
+
if (step.finishedAt !== undefined && !isIsoTimestamp(step.finishedAt)) {
|
|
191
|
+
errors.push(`steps[${index}].finishedAt must be an ISO timestamp`);
|
|
192
|
+
}
|
|
193
|
+
if (step.status === 'running' && step.startedAt === undefined) {
|
|
194
|
+
errors.push(`steps[${index}] running step must have startedAt`);
|
|
195
|
+
}
|
|
196
|
+
if ((step.status === 'succeeded' || step.status === 'failed' || step.status === 'skipped') &&
|
|
197
|
+
step.finishedAt === undefined) {
|
|
198
|
+
errors.push(`steps[${index}] ${step.status} step must have finishedAt`);
|
|
199
|
+
}
|
|
200
|
+
if (step.error !== undefined && (typeof step.error !== 'string' || step.error.length === 0)) {
|
|
201
|
+
errors.push(`steps[${index}].error must be a non-empty string`);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
if (value.status === 'succeeded') {
|
|
205
|
+
for (const step of value.steps) {
|
|
206
|
+
if (step.status !== 'succeeded' && step.status !== 'skipped') {
|
|
207
|
+
errors.push(`succeeded job has a ${step.status} step: ${step.name}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (value.status === 'failed') {
|
|
212
|
+
if (!value.steps.some(step => step.status === 'failed')) {
|
|
213
|
+
errors.push('failed job must have at least one failed step');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return { valid: errors.length === 0, errors };
|
|
218
|
+
}
|
|
219
|
+
export function assertValidApplianceJob(job) {
|
|
220
|
+
const result = validateApplianceJob(job);
|
|
221
|
+
if (!result.valid)
|
|
222
|
+
throw new ApplianceJobValidationError(result.errors);
|
|
223
|
+
}
|
|
224
|
+
/** Resolve the per-install job state directory. */
|
|
225
|
+
export function resolveJobStateDir(installDir) {
|
|
226
|
+
return join(installDir, 'k8s', 'jobs');
|
|
227
|
+
}
|
|
228
|
+
export function resolveJobRecordPath(jobDir, id) {
|
|
229
|
+
if (!JOB_ID.test(id)) {
|
|
230
|
+
throw new ApplianceJobValidationError(['id must be a 1-128 character job identifier']);
|
|
231
|
+
}
|
|
232
|
+
return join(jobDir, `${id}.json`);
|
|
233
|
+
}
|
|
234
|
+
/** Create a validated `queued` job record without writing it. */
|
|
235
|
+
export function createApplianceJob(input) {
|
|
236
|
+
if (!APPLIANCE_JOB_KINDS.includes(input.kind)) {
|
|
237
|
+
throw new ApplianceJobValidationError([`kind must be one of ${APPLIANCE_JOB_KINDS.join(', ')}`]);
|
|
238
|
+
}
|
|
239
|
+
if (!Array.isArray(input.steps) || input.steps.length === 0) {
|
|
240
|
+
throw new ApplianceJobValidationError(['steps must be a non-empty array']);
|
|
241
|
+
}
|
|
242
|
+
const now = input.now ?? new Date();
|
|
243
|
+
const timestamp = now.toISOString();
|
|
244
|
+
const job = {
|
|
245
|
+
schemaVersion: APPLIANCE_JOB_SCHEMA_VERSION,
|
|
246
|
+
id: input.id ?? randomUUID(),
|
|
247
|
+
kind: input.kind,
|
|
248
|
+
status: 'queued',
|
|
249
|
+
createdAt: timestamp,
|
|
250
|
+
updatedAt: timestamp,
|
|
251
|
+
steps: input.steps.map(name => ({ name, status: 'pending' })),
|
|
252
|
+
};
|
|
253
|
+
const metadata = redactJobLogDetails(input.metadata);
|
|
254
|
+
if (metadata)
|
|
255
|
+
job.metadata = metadata;
|
|
256
|
+
assertValidApplianceJob(job);
|
|
257
|
+
return job;
|
|
258
|
+
}
|
|
259
|
+
/** Persist a validated job record as mode-0600 JSON. */
|
|
260
|
+
export async function saveApplianceJob(job, jobDir) {
|
|
261
|
+
assertValidApplianceJob(job);
|
|
262
|
+
await mkdirSafe(jobDir);
|
|
263
|
+
const path = resolveJobRecordPath(jobDir, job.id);
|
|
264
|
+
await writeFileSafe(path, JSON.stringify(job, null, 2) + '\n', { mode: 0o600 });
|
|
265
|
+
}
|
|
266
|
+
/** Load one job record. Missing files return null; invalid files throw. */
|
|
267
|
+
export function loadApplianceJob(jobDir, id) {
|
|
268
|
+
const path = resolveJobRecordPath(jobDir, id);
|
|
269
|
+
if (!existsSync(path))
|
|
270
|
+
return null;
|
|
271
|
+
let parsed;
|
|
272
|
+
try {
|
|
273
|
+
parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
throw new ApplianceJobValidationError([`could not parse ${path}: ${err.message}`]);
|
|
277
|
+
}
|
|
278
|
+
assertValidApplianceJob(parsed);
|
|
279
|
+
return parsed;
|
|
280
|
+
}
|
|
281
|
+
/** List every valid job record, oldest first. */
|
|
282
|
+
export function listApplianceJobs(jobDir) {
|
|
283
|
+
if (!existsSync(jobDir))
|
|
284
|
+
return [];
|
|
285
|
+
const jobs = [];
|
|
286
|
+
for (const name of readdirSync(jobDir)) {
|
|
287
|
+
if (!name.endsWith('.json'))
|
|
288
|
+
continue;
|
|
289
|
+
const id = name.slice(0, -'.json'.length);
|
|
290
|
+
const job = loadApplianceJob(jobDir, id);
|
|
291
|
+
if (job)
|
|
292
|
+
jobs.push(job);
|
|
293
|
+
}
|
|
294
|
+
return jobs.sort((a, b) => {
|
|
295
|
+
const byCreated = a.createdAt.localeCompare(b.createdAt);
|
|
296
|
+
return byCreated !== 0 ? byCreated : a.id.localeCompare(b.id);
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
/** Return the currently running job, if any. */
|
|
300
|
+
export function findRunningApplianceJob(jobDir) {
|
|
301
|
+
return listApplianceJobs(jobDir).find(job => job.status === 'running') ?? null;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Mark jobs left `running` by a killed process as `interrupted`. A running
|
|
305
|
+
* step is rewound to `pending` so `resumeApplianceJob` can retry it.
|
|
306
|
+
*/
|
|
307
|
+
export async function recoverInterruptedApplianceJobs(jobDir, options = {}) {
|
|
308
|
+
const now = options.now ?? new Date();
|
|
309
|
+
const staleAfterMs = options.staleAfterMs ?? DEFAULT_JOB_STALE_AFTER_MS;
|
|
310
|
+
const recovered = [];
|
|
311
|
+
for (const job of listApplianceJobs(jobDir)) {
|
|
312
|
+
if (job.status !== 'running')
|
|
313
|
+
continue;
|
|
314
|
+
const reference = Date.parse(job.startedAt ?? job.updatedAt);
|
|
315
|
+
if (Number.isFinite(reference) && now.getTime() - reference < staleAfterMs)
|
|
316
|
+
continue;
|
|
317
|
+
const next = {
|
|
318
|
+
...job,
|
|
319
|
+
status: 'interrupted',
|
|
320
|
+
updatedAt: now.toISOString(),
|
|
321
|
+
error: 'process exited before the job finished',
|
|
322
|
+
steps: job.steps.map(step => step.status === 'running' ? { ...step, status: 'pending', startedAt: undefined } : step),
|
|
323
|
+
};
|
|
324
|
+
assertValidApplianceJob(next);
|
|
325
|
+
await saveApplianceJob(next, jobDir);
|
|
326
|
+
recovered.push(next);
|
|
327
|
+
}
|
|
328
|
+
return recovered;
|
|
329
|
+
}
|
|
330
|
+
class JobLogWriter {
|
|
331
|
+
jobId;
|
|
332
|
+
logPath;
|
|
333
|
+
seq;
|
|
334
|
+
constructor(jobId, logPath) {
|
|
335
|
+
this.jobId = jobId;
|
|
336
|
+
this.logPath = logPath;
|
|
337
|
+
// Resume the sequence after a restart instead of restarting at zero.
|
|
338
|
+
let next = 0;
|
|
339
|
+
if (logPath) {
|
|
340
|
+
try {
|
|
341
|
+
for (const event of readJobLog(logPath).events) {
|
|
342
|
+
if (event.jobId === jobId)
|
|
343
|
+
next = Math.max(next, event.seq + 1);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
next = 0;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
this.seq = next;
|
|
351
|
+
}
|
|
352
|
+
async write(phase, message, level = 'info', details, now) {
|
|
353
|
+
if (!this.logPath)
|
|
354
|
+
return null;
|
|
355
|
+
const event = createJobLogEvent({
|
|
356
|
+
jobId: this.jobId,
|
|
357
|
+
seq: this.seq++,
|
|
358
|
+
phase,
|
|
359
|
+
message,
|
|
360
|
+
level,
|
|
361
|
+
details,
|
|
362
|
+
now,
|
|
363
|
+
});
|
|
364
|
+
await appendJobLogEvent(this.logPath, event);
|
|
365
|
+
return event;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
async function executePendingSteps(initial, executor, hooks) {
|
|
369
|
+
const clock = hooks.now ?? (() => new Date());
|
|
370
|
+
const log = new JobLogWriter(initial.id, hooks.logPath);
|
|
371
|
+
let job = {
|
|
372
|
+
...initial,
|
|
373
|
+
status: 'running',
|
|
374
|
+
startedAt: initial.startedAt ?? clock().toISOString(),
|
|
375
|
+
updatedAt: clock().toISOString(),
|
|
376
|
+
error: undefined,
|
|
377
|
+
};
|
|
378
|
+
assertValidApplianceJob(job);
|
|
379
|
+
await saveApplianceJob(job, hooks.jobDir);
|
|
380
|
+
await log.write('job', `started ${job.kind}`, 'info', { kind: job.kind }, clock());
|
|
381
|
+
for (let index = 0; index < job.steps.length; index++) {
|
|
382
|
+
const step = job.steps[index];
|
|
383
|
+
if (step.status === 'succeeded' || step.status === 'skipped')
|
|
384
|
+
continue;
|
|
385
|
+
const startedAt = clock().toISOString();
|
|
386
|
+
job = {
|
|
387
|
+
...job,
|
|
388
|
+
updatedAt: startedAt,
|
|
389
|
+
steps: job.steps.map((candidate, candidateIndex) => candidateIndex === index
|
|
390
|
+
? { ...candidate, status: 'running', startedAt, finishedAt: undefined, error: undefined }
|
|
391
|
+
: candidate),
|
|
392
|
+
};
|
|
393
|
+
assertValidApplianceJob(job);
|
|
394
|
+
await saveApplianceJob(job, hooks.jobDir);
|
|
395
|
+
await log.write('step', `started ${step.name}`, 'info', { step: step.name }, clock());
|
|
396
|
+
try {
|
|
397
|
+
await executor({ job, step: job.steps[index], index });
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
const message = err?.message ? String(err.message).split('\n')[0] : 'step failed';
|
|
401
|
+
const finishedAt = clock().toISOString();
|
|
402
|
+
job = {
|
|
403
|
+
...job,
|
|
404
|
+
status: 'failed',
|
|
405
|
+
updatedAt: finishedAt,
|
|
406
|
+
finishedAt,
|
|
407
|
+
error: message.slice(0, MAX_ERROR_LENGTH),
|
|
408
|
+
steps: job.steps.map((candidate, candidateIndex) => candidateIndex === index
|
|
409
|
+
? {
|
|
410
|
+
...candidate,
|
|
411
|
+
status: 'failed',
|
|
412
|
+
finishedAt,
|
|
413
|
+
error: message.slice(0, MAX_ERROR_LENGTH),
|
|
414
|
+
}
|
|
415
|
+
: candidate),
|
|
416
|
+
};
|
|
417
|
+
assertValidApplianceJob(job);
|
|
418
|
+
await saveApplianceJob(job, hooks.jobDir);
|
|
419
|
+
await log.write('step', `failed ${step.name}: ${message}`, 'error', { step: step.name }, clock());
|
|
420
|
+
throw err;
|
|
421
|
+
}
|
|
422
|
+
const finishedAt = clock().toISOString();
|
|
423
|
+
job = {
|
|
424
|
+
...job,
|
|
425
|
+
updatedAt: finishedAt,
|
|
426
|
+
steps: job.steps.map((candidate, candidateIndex) => candidateIndex === index
|
|
427
|
+
? { ...candidate, status: 'succeeded', finishedAt }
|
|
428
|
+
: candidate),
|
|
429
|
+
};
|
|
430
|
+
assertValidApplianceJob(job);
|
|
431
|
+
await saveApplianceJob(job, hooks.jobDir);
|
|
432
|
+
await log.write('step', `completed ${step.name}`, 'info', { step: step.name }, clock());
|
|
433
|
+
}
|
|
434
|
+
const finishedAt = clock().toISOString();
|
|
435
|
+
job = {
|
|
436
|
+
...job,
|
|
437
|
+
status: 'succeeded',
|
|
438
|
+
updatedAt: finishedAt,
|
|
439
|
+
finishedAt,
|
|
440
|
+
};
|
|
441
|
+
assertValidApplianceJob(job);
|
|
442
|
+
await saveApplianceJob(job, hooks.jobDir);
|
|
443
|
+
await log.write('job', `completed ${job.kind}`, 'info', { kind: job.kind }, clock());
|
|
444
|
+
return job;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Create, persist, and execute a job step-by-step. The record is written
|
|
448
|
+
* before each step and after every transition. A thrown executor error
|
|
449
|
+
* leaves a persisted `failed` record and is rethrown to the caller.
|
|
450
|
+
*/
|
|
451
|
+
export async function runApplianceJob(options) {
|
|
452
|
+
const job = createApplianceJob({
|
|
453
|
+
kind: options.kind,
|
|
454
|
+
steps: options.steps,
|
|
455
|
+
id: options.id,
|
|
456
|
+
metadata: options.metadata,
|
|
457
|
+
now: options.now?.(),
|
|
458
|
+
});
|
|
459
|
+
await saveApplianceJob(job, options.jobDir);
|
|
460
|
+
return executePendingSteps(job, options.executor, options);
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Resume a queued, interrupted, or failed job. Completed/skipped steps are
|
|
464
|
+
* preserved; a step left `running` is retried; a failed step is reset to
|
|
465
|
+
* `pending`.
|
|
466
|
+
*/
|
|
467
|
+
export async function resumeApplianceJob(options) {
|
|
468
|
+
const existing = loadApplianceJob(options.jobDir, options.id);
|
|
469
|
+
if (!existing)
|
|
470
|
+
throw new Error(`job ${options.id} not found in ${options.jobDir}`);
|
|
471
|
+
if (existing.status === 'succeeded')
|
|
472
|
+
return existing;
|
|
473
|
+
if (existing.status === 'running') {
|
|
474
|
+
throw new ApplianceJobValidationError([`job ${existing.id} is already running`]);
|
|
475
|
+
}
|
|
476
|
+
const now = (options.now ?? (() => new Date()))().toISOString();
|
|
477
|
+
const steps = existing.steps.map(step => {
|
|
478
|
+
if (step.status === 'running' || step.status === 'failed') {
|
|
479
|
+
return { ...step, status: 'pending', startedAt: undefined, finishedAt: undefined, error: undefined };
|
|
480
|
+
}
|
|
481
|
+
return step;
|
|
482
|
+
});
|
|
483
|
+
const resumed = {
|
|
484
|
+
...existing,
|
|
485
|
+
status: 'queued',
|
|
486
|
+
startedAt: undefined,
|
|
487
|
+
finishedAt: undefined,
|
|
488
|
+
error: undefined,
|
|
489
|
+
updatedAt: now,
|
|
490
|
+
steps,
|
|
491
|
+
};
|
|
492
|
+
assertValidApplianceJob(resumed);
|
|
493
|
+
await saveApplianceJob(resumed, options.jobDir);
|
|
494
|
+
return executePendingSteps(resumed, options.executor, options);
|
|
495
|
+
}
|
|
496
|
+
//# sourceMappingURL=appliance-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appliance-orchestrator.js","sourceRoot":"","sources":["../../../src/lib/k8s/appliance-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kubernetes appliance orchestration: inventory, durable job log, and
|
|
3
|
+
* resumable job state.
|
|
4
|
+
*/
|
|
5
|
+
export * from './appliance-info.js';
|
|
6
|
+
export * from './appliance-job-logger.js';
|
|
7
|
+
export * from './appliance-orchestrator.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/k8s/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kubernetes appliance orchestration: inventory, durable job log, and
|
|
3
|
+
* resumable job state.
|
|
4
|
+
*/
|
|
5
|
+
export * from './appliance-info.js';
|
|
6
|
+
export * from './appliance-job-logger.js';
|
|
7
|
+
export * from './appliance-orchestrator.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/k8s/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC"}
|
package/dist/lib/prefs.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { HelmfileEnvironment } from './helmfile.js';
|
|
2
|
+
/**
|
|
3
|
+
* Helmfile environments the CLI can target. Kept in one place so prefs
|
|
4
|
+
* validation, the setup wizard, and env-to-values rendering cannot drift.
|
|
5
|
+
*/
|
|
6
|
+
export declare const K8S_ENVIRONMENTS: readonly HelmfileEnvironment[];
|
|
7
|
+
export declare const K8S_DEPLOYMENT_MODES: readonly ["docker-compose", "k3s"];
|
|
8
|
+
/** DNS-1123 label: lowercase alphanumeric or '-', 1-63 chars, no edge '-'. */
|
|
9
|
+
export declare const K8S_NAMESPACE_PATTERN: RegExp;
|
|
10
|
+
export declare function isK8sEnvironment(value: unknown): value is HelmfileEnvironment;
|
|
2
11
|
/**
|
|
3
12
|
* Update target pin (Phase 2 of multi-line concurrent shipping).
|
|
4
13
|
* - type "line" : value is an X.Y.Z line identifier (e.g. "0.8.6").
|
|
@@ -42,6 +51,18 @@ export interface Preferences {
|
|
|
42
51
|
*/
|
|
43
52
|
releaseBaseUrl?: string;
|
|
44
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Validate preferences without rewriting them. Returns human-readable
|
|
56
|
+
* errors; an empty array means the object can be persisted as-is.
|
|
57
|
+
*/
|
|
58
|
+
export declare function validatePreferences(prefs: Preferences): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Coerce a partial/on-disk preferences object into the current schema.
|
|
61
|
+
* Unknown keys are preserved for forward compatibility; invalid known
|
|
62
|
+
* fields fall back to their defaults with a warning so a single bad value
|
|
63
|
+
* cannot make the whole preferences file unusable.
|
|
64
|
+
*/
|
|
65
|
+
export declare function normalizePreferences(input: Partial<Preferences> | null | undefined): Preferences;
|
|
45
66
|
/**
|
|
46
67
|
* Load preferences from ~/.ct/preferences.json.
|
|
47
68
|
* Returns null if the file doesn't exist (first run).
|
|
@@ -56,6 +77,10 @@ export declare function savePrefs(prefs: Preferences): void;
|
|
|
56
77
|
* Get preferences, returning defaults if file doesn't exist.
|
|
57
78
|
*/
|
|
58
79
|
export declare function getPrefs(): Preferences;
|
|
80
|
+
/** Merge a validated patch into the persisted preferences. */
|
|
81
|
+
export declare function updatePrefs(patch: Partial<Preferences>): Preferences;
|
|
82
|
+
/** The validated Helmfile environment used by `ct k8s` commands. */
|
|
83
|
+
export declare function getK8sEnvironment(): HelmfileEnvironment;
|
|
59
84
|
/** Read the current update pin (or null if unpinned). Auto-migrates legacy. */
|
|
60
85
|
export declare function getPin(): UpdatePin | null;
|
|
61
86
|
/** Set / replace the update pin. Validates type + sanitises value. */
|
package/dist/lib/prefs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefs.d.ts","sourceRoot":"","sources":["../../src/lib/prefs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"prefs.d.ts","sourceRoot":"","sources":["../../src/lib/prefs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,mBAAmB,EAK1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,QAAyC,CAAC;AAE5E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAE7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,gBAAgB,GAAG,KAAK,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA6BD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE,CAsDhE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAsEhG;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,WAAW,GAAG,IAAI,CAU9C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAalD;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,WAAW,CAEtC;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAIpE;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,IAAI,mBAAmB,CAEvD;AA2CD,+EAA+E;AAC/E,wBAAgB,MAAM,IAAI,SAAS,GAAG,IAAI,CAIzC;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAgB3C;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,IAAI,OAAO,CAOlC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1F,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAOlE"}
|
package/dist/lib/prefs.js
CHANGED
|
Binary file
|
package/dist/lib/prefs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/lib/prefs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/lib/prefs.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED