@fnndsc/stratus 0.2.1 → 0.4.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/chris/values-openshift.yaml +59 -0
- package/dist/backend.d.ts +9 -3
- package/dist/backend.js +32 -8
- package/dist/backend.js.map +1 -1
- package/dist/cloud/builder.d.ts +16 -1
- package/dist/cloud/builder.js +1 -1
- package/dist/cloud/builder.js.map +1 -1
- package/dist/cloud/fake/builder.d.ts +13 -1
- package/dist/cloud/fake/builder.js +26 -9
- package/dist/cloud/fake/builder.js.map +1 -1
- package/dist/cloud/fake/driver.d.ts +1 -1
- package/dist/cloud/fake/driver.js +9 -9
- package/dist/cloud/fake/driver.js.map +1 -1
- package/dist/cloud/oci/api.js +15 -15
- package/dist/cloud/oci/api.js.map +1 -1
- package/dist/cloud/oci/buildApi.d.ts +11 -0
- package/dist/cloud/oci/buildApi.js +40 -9
- package/dist/cloud/oci/buildApi.js.map +1 -1
- package/dist/cloud/oci/builder.d.ts +42 -1
- package/dist/cloud/oci/builder.js +100 -16
- package/dist/cloud/oci/builder.js.map +1 -1
- package/dist/cloud/oci/driver.d.ts +1 -1
- package/dist/cloud/oci/driver.js +21 -21
- package/dist/cloud/oci/driver.js.map +1 -1
- package/dist/cloud/oci/errors.d.ts +13 -0
- package/dist/cloud/oci/errors.js +16 -0
- package/dist/cloud/oci/errors.js.map +1 -0
- package/dist/cloud/oci/resourceApi.js +22 -22
- package/dist/cloud/oci/resourceApi.js.map +1 -1
- package/dist/cloud/oci/resourceMap.d.ts +3 -3
- package/dist/cloud/oci/resourceMap.js +3 -3
- package/dist/cloud/oci/resourceMap.js.map +1 -1
- package/dist/cloud/oci/rmApi.js +7 -7
- package/dist/cloud/oci/rmApi.js.map +1 -1
- package/dist/cloud/oci/stackVars.d.ts +5 -3
- package/dist/cloud/oci/stackVars.js +3 -3
- package/dist/cloud/oci/stackVars.js.map +1 -1
- package/dist/cluster/chris.d.ts +156 -0
- package/dist/cluster/chris.js +493 -0
- package/dist/cluster/chris.js.map +1 -0
- package/dist/cluster/fakeKube.d.ts +6 -0
- package/dist/cluster/fakeKube.js +21 -0
- package/dist/cluster/fakeKube.js.map +1 -1
- package/dist/cluster/kubeHttp.d.ts +7 -0
- package/dist/cluster/kubeHttp.js +26 -1
- package/dist/cluster/kubeHttp.js.map +1 -1
- package/dist/commands/build.d.ts +33 -0
- package/dist/commands/build.js +123 -22
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/capacity.d.ts +1 -1
- package/dist/commands/capacity.js +2 -2
- package/dist/commands/capacity.js.map +1 -1
- package/dist/commands/domain.js +13 -12
- package/dist/commands/domain.js.map +1 -1
- package/dist/commands/protect.d.ts +10 -0
- package/dist/commands/protect.js +37 -0
- package/dist/commands/protect.js.map +1 -0
- package/dist/commands/size.d.ts +10 -0
- package/dist/commands/size.js +84 -0
- package/dist/commands/size.js.map +1 -0
- package/dist/commands/teardown.js +2 -0
- package/dist/commands/teardown.js.map +1 -1
- package/dist/commands/verify.js +4 -10
- package/dist/commands/verify.js.map +1 -1
- package/dist/domain/adopt.d.ts +11 -1
- package/dist/domain/adopt.js +28 -2
- package/dist/domain/adopt.js.map +1 -1
- package/dist/domain/expect.d.ts +32 -0
- package/dist/domain/expect.js +53 -0
- package/dist/domain/expect.js.map +1 -0
- package/dist/domain/manifests.d.ts +17 -0
- package/dist/domain/manifests.js +36 -0
- package/dist/domain/manifests.js.map +1 -0
- package/dist/domain/readout.d.ts +64 -0
- package/dist/domain/readout.js +188 -0
- package/dist/domain/readout.js.map +1 -0
- package/dist/domain/sizing.d.ts +1 -1
- package/dist/domain/sizing.js +3 -3
- package/dist/domain/sizing.js.map +1 -1
- package/dist/domain/spec.d.ts +1 -1
- package/dist/domain/spec.js +1 -1
- package/dist/domain/spec.js.map +1 -1
- package/dist/domain/state.d.ts +6 -2
- package/dist/domain/state.js +11 -11
- package/dist/domain/state.js.map +1 -1
- package/dist/domain/steps.d.ts +18 -20
- package/dist/domain/steps.js +122 -11
- package/dist/domain/steps.js.map +1 -1
- package/dist/domain/verify.d.ts +39 -0
- package/dist/domain/verify.js +64 -17
- package/dist/domain/verify.js.map +1 -1
- package/dist/domain/view.d.ts +4 -2
- package/dist/domain/view.js +7 -4
- package/dist/domain/view.js.map +1 -1
- package/dist/domains/harborOci.d.ts +1 -1
- package/dist/domains/harborOci.js +1 -1
- package/dist/domains/harborOci.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/installer/account.d.ts +16 -0
- package/dist/installer/account.js +33 -0
- package/dist/installer/account.js.map +1 -0
- package/dist/names.d.ts +1 -1
- package/dist/names.js +2 -2
- package/dist/names.js.map +1 -1
- package/dist/prompt.d.ts +1 -1
- package/dist/prompt.js +2 -2
- package/dist/prompt.js.map +1 -1
- package/dist/stratus.js +5 -2
- package/dist/stratus.js.map +1 -1
- package/dist/vfs/domains.d.ts +3 -0
- package/dist/vfs/domains.js +12 -4
- package/dist/vfs/domains.js.map +1 -1
- package/dist/vfs/resources.d.ts +4 -4
- package/dist/vfs/resources.js +14 -14
- package/dist/vfs/resources.js.map +1 -1
- package/dist/vfs/tenancy.d.ts +3 -3
- package/dist/vfs/tenancy.js +10 -10
- package/dist/vfs/tenancy.js.map +1 -1
- package/manifests/tenant.mise +27 -0
- package/package.json +8 -6
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `domain protect <name> on|off`: whether a domain may be torn down.
|
|
3
|
+
*
|
|
4
|
+
* A domain is born protected (docs/stratus.adoc, D14). Lifting it is a line
|
|
5
|
+
* of its own, so tearing a tenant down takes two deliberate acts: this, and
|
|
6
|
+
* teardown's name typed back. It changes only the domain's state on this
|
|
7
|
+
* host, never the cloud, so it needs no tier. Bare, it says how the domain
|
|
8
|
+
* stands.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import { envelope_error, envelope_ok } from '@fnndsc/menu';
|
|
14
|
+
/**
|
|
15
|
+
* `domain protect <name> [on|off]`.
|
|
16
|
+
*
|
|
17
|
+
* @param context - The session.
|
|
18
|
+
* @param args - The words after `protect`.
|
|
19
|
+
* @returns The envelope.
|
|
20
|
+
*/
|
|
21
|
+
export async function domainProtect_run(context, args) {
|
|
22
|
+
const [name, setting, ...extra] = args;
|
|
23
|
+
if (name === undefined || extra.length > 0 || (setting !== undefined && setting !== 'on' && setting !== 'off')) {
|
|
24
|
+
return envelope_error('', undefined, 'domain protect: usage: domain protect <name> [on|off]\n');
|
|
25
|
+
}
|
|
26
|
+
const record = context.store.record_read(name);
|
|
27
|
+
if (record === null)
|
|
28
|
+
return envelope_error('', undefined, `domain protect: ${name}: no such domain kept here\n`);
|
|
29
|
+
if (setting === undefined) {
|
|
30
|
+
return envelope_ok(`${name}: ${record.protected !== false ? 'protected (teardown refused)' : 'not protected (teardown asks for its name)'}\n`);
|
|
31
|
+
}
|
|
32
|
+
context.store.record_update(name, (current) => { current.protected = setting === 'on'; });
|
|
33
|
+
return envelope_ok(setting === 'on'
|
|
34
|
+
? `${name}: protected; teardown is refused\n`
|
|
35
|
+
: `${chalk.yellow(name)}: no longer protected; domain teardown ${name} will ask for its name\n`);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=protect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protect.js","sourceRoot":"","sources":["../../src/commands/protect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAwB,MAAM,cAAc,CAAC;AAIjF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA4B,EAAE,IAA2B;IAC/F,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;QAC/G,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,yDAAyD,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,MAAM,GAAwB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,mBAAmB,IAAI,8BAA8B,CAAC,CAAC;IACjH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,GAAG,IAAI,KAAK,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,4CAA4C,IAAI,CAAC,CAAC;IACjJ,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,OAAqB,EAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,OAAO,WAAW,CAAC,OAAO,KAAK,IAAI;QACjC,CAAC,CAAC,GAAG,IAAI,oCAAoC;QAC7C,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,IAAI,0BAA0B,CAAC,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type CommandEnvelope } from '@fnndsc/menu';
|
|
2
|
+
import { type BuildCommandContext } from './build.js';
|
|
3
|
+
/**
|
|
4
|
+
* `domain size [--family <family>]`.
|
|
5
|
+
*
|
|
6
|
+
* @param context - The session.
|
|
7
|
+
* @param args - The words after `size`.
|
|
8
|
+
* @returns The envelope.
|
|
9
|
+
*/
|
|
10
|
+
export declare function domainSize_run(context: BuildCommandContext, args: ReadonlyArray<string>): Promise<CommandEnvelope>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file `domain size [--family <family>]`: what a new domain is sized
|
|
3
|
+
* against in the session's region, read and never written (docs/stratus.adoc,
|
|
4
|
+
* D13, SIZE): each availability domain's free cores and memory for the
|
|
5
|
+
* family, the family's flexible shape and price, what storage and load
|
|
6
|
+
* balancing cost, the spec a new domain starts from, and the DNS zones its
|
|
7
|
+
* names may live under (the tenancy's only one is the default).
|
|
8
|
+
*
|
|
9
|
+
* The answer carries the `stratus.domain.size` model, so a surface redraws
|
|
10
|
+
* fit and cost as its levers move without a line per move; what it shows is
|
|
11
|
+
* presentation, and `domain new` checks again when the spec is committed.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import { envelope_error, envelope_ok, STRATUS_DOMAIN_SIZE_MODEL_KIND } from '@fnndsc/menu';
|
|
17
|
+
import { capacityRows_read } from './capacity.js';
|
|
18
|
+
import { familyShape_find } from '../domain/sizing.js';
|
|
19
|
+
import { SPEC_DEFAULT } from '../domain/spec.js';
|
|
20
|
+
import { baseDomain_default, dnsZones_read, options_read, spec_line } from './build.js';
|
|
21
|
+
/**
|
|
22
|
+
* What a limit leaves free in a zone, by a word in its name (`core`, `memory`).
|
|
23
|
+
*
|
|
24
|
+
* @param rows - The family's limits.
|
|
25
|
+
* @param zone - The zone.
|
|
26
|
+
* @param word - The word.
|
|
27
|
+
* @returns What is free, or null when the cloud does not say.
|
|
28
|
+
*/
|
|
29
|
+
function free_find(rows, zone, word) {
|
|
30
|
+
return rows.find((row) => row.zone === zone && row.limit.includes(word))?.available ?? null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `domain size [--family <family>]`.
|
|
34
|
+
*
|
|
35
|
+
* @param context - The session.
|
|
36
|
+
* @param args - The words after `size`.
|
|
37
|
+
* @returns The envelope.
|
|
38
|
+
*/
|
|
39
|
+
export async function domainSize_run(context, args) {
|
|
40
|
+
const read = options_read(args, ['--family']);
|
|
41
|
+
if ('error' in read)
|
|
42
|
+
return envelope_error('', undefined, `domain size: ${read.error} (--family)\n`);
|
|
43
|
+
if (read.rest.length > 0)
|
|
44
|
+
return envelope_error('', undefined, 'domain size: usage: domain size [--family <family>]\n');
|
|
45
|
+
const region = context.region();
|
|
46
|
+
if (region === null)
|
|
47
|
+
return envelope_error('', undefined, 'domain size: not connected\n');
|
|
48
|
+
const family = read.options.get('--family') ?? SPEC_DEFAULT.family;
|
|
49
|
+
const shapes = await context.driver.shapes_list(region);
|
|
50
|
+
const shape = familyShape_find(shapes, family);
|
|
51
|
+
if (shape === undefined)
|
|
52
|
+
return envelope_error('', undefined, `domain size: ${family}: no such family in ${region} (${[...new Set(shapes.map((each) => each.family))].sort().join(', ')})\n`);
|
|
53
|
+
const [zones, prices, services, rows, dnsZones] = await Promise.all([
|
|
54
|
+
context.driver.zones_list(region),
|
|
55
|
+
context.driver.prices_list(),
|
|
56
|
+
context.driver.servicePrices_get(),
|
|
57
|
+
capacityRows_read(context.driver, region, [family]),
|
|
58
|
+
dnsZones_read(context, region),
|
|
59
|
+
]);
|
|
60
|
+
const price = prices.find((entry) => entry.shape === shape.name);
|
|
61
|
+
const model = {
|
|
62
|
+
region,
|
|
63
|
+
family: shape.family,
|
|
64
|
+
families: [...new Set(shapes.filter((each) => each.flexible).map((each) => each.family))].sort(),
|
|
65
|
+
vcpuPerCore: shape.vcpuPerCore,
|
|
66
|
+
cores: shape.flexible ? { ...shape.cores } : null,
|
|
67
|
+
memoryGib: shape.flexible ? { ...shape.memoryGib } : null,
|
|
68
|
+
zones: zones.map((zone) => ({ zone: zone.name, coresFree: free_find(rows, zone.name, 'core'), memoryFree: free_find(rows, zone.name, 'memory') })),
|
|
69
|
+
price: price === undefined ? null : { vcpuHour: price.vcpuHour, gibHour: price.gibHour, currency: price.currency },
|
|
70
|
+
services: services === null ? null : { volumeGibMonth: services.volumeGibMonth, vpuGibMonth: services.vpuGibMonth, balancerHour: services.balancerHour, balancerMbpsHour: services.balancerMbpsHour },
|
|
71
|
+
start: { ...SPEC_DEFAULT, family: shape.family },
|
|
72
|
+
baseDomain: baseDomain_default(context, dnsZones),
|
|
73
|
+
dnsZones,
|
|
74
|
+
};
|
|
75
|
+
const free = (value) => value === null ? '?' : String(value);
|
|
76
|
+
const lines = [
|
|
77
|
+
`${chalk.bold(shape.family)} ${shape.name} in ${region}${price === undefined ? chalk.gray(' not in the price list') : ` ${price.currency} ${price.vcpuHour} a vCPU-hour, ${price.gibHour} a GiB-hour`}`,
|
|
78
|
+
...model.zones.map((zone) => ` ${zone.zone.padEnd(24)} ${free(zone.coresFree)} cores, ${free(zone.memoryFree)} GiB free`),
|
|
79
|
+
chalk.gray(`starts from: ${spec_line(model.start)}`),
|
|
80
|
+
model.baseDomain !== null ? chalk.gray(`names under: ${model.baseDomain}`) : chalk.yellow(`names under: none chosen; domain new --base-domain names one (${dnsZones.join(', ') || 'the tenancy holds no DNS zone'})`),
|
|
81
|
+
];
|
|
82
|
+
return envelope_ok(`${lines.join('\n')}\n`, { kind: STRATUS_DOMAIN_SIZE_MODEL_KIND, data: model });
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../src/commands/size.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,8 @@ export async function domainTeardown_run(context, args) {
|
|
|
32
32
|
return envelope_error('', undefined, `domain teardown: ${name}: Operation not permitted: adopted, not built here\n`);
|
|
33
33
|
if (record.gone !== undefined)
|
|
34
34
|
return envelope_ok(`${name}: already torn down (${record.gone.slice(0, 16)})\n`);
|
|
35
|
+
if (record.protected !== false)
|
|
36
|
+
return envelope_error('', undefined, `domain teardown: ${name}: Operation not permitted: protected (domain protect ${name} off lifts it, as its own line)\n`);
|
|
35
37
|
const builder = context.builder;
|
|
36
38
|
if (builder === null || builder.teardown_run === undefined)
|
|
37
39
|
return envelope_error('', undefined, 'domain teardown: this cloud cannot tear a domain down yet\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/commands/teardown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/commands/teardown.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/verify.js
CHANGED
|
@@ -14,7 +14,7 @@ import { commandCancellation_enable, commandCancellation_signalGet, surface_get
|
|
|
14
14
|
import { kubeconfig_read } from '../cluster/kube.js';
|
|
15
15
|
import { httpsStatus_get, kubeApi_make } from '../cluster/kubeHttp.js';
|
|
16
16
|
import { familyShape_find } from '../domain/sizing.js';
|
|
17
|
-
import { verify_run } from '../domain/verify.js';
|
|
17
|
+
import { verify_run, verifyChecks_keep } from '../domain/verify.js';
|
|
18
18
|
/** The resolver `verify` asks, as `harbor-oci` did: one outside the tenancy. */
|
|
19
19
|
export const PUBLIC_RESOLVER = '8.8.8.8';
|
|
20
20
|
/**
|
|
@@ -84,15 +84,9 @@ export async function domainVerify_run(context, reach, args) {
|
|
|
84
84
|
pollMs: reach.pollMs,
|
|
85
85
|
...(commandCancellation_signalGet() !== undefined ? { signal: commandCancellation_signalGet() } : {}),
|
|
86
86
|
});
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const failed = ran.length - passed;
|
|
90
|
-
const skipped = checks.length - ran.length;
|
|
91
|
-
const summary = `${passed} of ${checks.length} pass${failed > 0 ? `, ${failed} fail` : ''}${skipped > 0 ? `, ${skipped} not run (needs the tasks tier)` : ''}`;
|
|
92
|
-
context.store.record_update(name, (current) => {
|
|
93
|
-
current.steps['verify'] = { state: failed > 0 ? 'failed' : 'done', ended: new Date().toISOString(), note: summary };
|
|
94
|
-
});
|
|
87
|
+
const summary = verifyChecks_keep(context.store, name, checks);
|
|
88
|
+
const failed = checks.some((check) => check.ok === false);
|
|
95
89
|
const text = [`${chalk.bold(name)} ${name}.${record.baseDomain}`, ...checks.map(check_line), `verify: ${summary}`].join('\n');
|
|
96
|
-
return failed
|
|
90
|
+
return failed ? { ...envelope_error(`${text}\n`), renderedErr: '' } : envelope_ok(`${text}\n`);
|
|
97
91
|
}
|
|
98
92
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAwB,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAoB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/adopt.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { JobRun } from '@fnndsc/brasa/core';
|
|
|
2
2
|
import { type HarborDomain } from '../domains/harborOci.js';
|
|
3
3
|
import type { CloudBuilder } from '../cloud/builder.js';
|
|
4
4
|
import { type DomainSpec } from './spec.js';
|
|
5
|
-
import type { DomainRecord, DomainStore } from './state.js';
|
|
5
|
+
import type { DomainRecord, DomainStore, StepRecord } from './state.js';
|
|
6
6
|
/** What adoption reads from a checkout. */
|
|
7
7
|
export interface CheckoutRead {
|
|
8
8
|
readonly domain: HarborDomain;
|
|
@@ -35,6 +35,16 @@ export declare function variables_stringify(tfvars: Readonly<Record<string, unkn
|
|
|
35
35
|
* @param now - The clock.
|
|
36
36
|
* @returns What it read, or why it cannot be adopted.
|
|
37
37
|
*/
|
|
38
|
+
/**
|
|
39
|
+
* The ChRIS steps a checkout already did, from what `harbor-oci` left in its
|
|
40
|
+
* state: it keeps no record of them, but the test user's password is made by
|
|
41
|
+
* its seed (which needs the deploy), and its smoke journey's log ends with
|
|
42
|
+
* the verdict. Its `postinstall` was a placeholder, and OCI needs none.
|
|
43
|
+
*
|
|
44
|
+
* @param root - The checkout.
|
|
45
|
+
* @returns The steps it shows done.
|
|
46
|
+
*/
|
|
47
|
+
export declare function chrisSteps_read(root: string): Record<string, StepRecord>;
|
|
38
48
|
export declare function checkout_read(name: string, root: string, now: Date): CheckoutRead | {
|
|
39
49
|
error: string;
|
|
40
50
|
};
|
package/dist/domain/adopt.js
CHANGED
|
@@ -19,7 +19,9 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
19
19
|
import { join } from 'node:path';
|
|
20
20
|
import { envFile_parse, harborDomain_read } from '../domains/harborOci.js';
|
|
21
21
|
import { specYaml_parse, SPEC_DEFAULT } from './spec.js';
|
|
22
|
-
import {
|
|
22
|
+
import { smokeVerdict_words } from '../cluster/chris.js';
|
|
23
|
+
import { MACHINE_STEPS } from './steps.js';
|
|
24
|
+
import { ADOPTED_COMPARTMENT } from './view.js';
|
|
23
25
|
/** The secrets a domain keeps from its checkout. */
|
|
24
26
|
const KEPT_SECRETS = ['kubeconfig', 'kubeadmin-password'];
|
|
25
27
|
/**
|
|
@@ -42,6 +44,28 @@ export function variables_stringify(tfvars) {
|
|
|
42
44
|
* @param now - The clock.
|
|
43
45
|
* @returns What it read, or why it cannot be adopted.
|
|
44
46
|
*/
|
|
47
|
+
/**
|
|
48
|
+
* The ChRIS steps a checkout already did, from what `harbor-oci` left in its
|
|
49
|
+
* state: it keeps no record of them, but the test user's password is made by
|
|
50
|
+
* its seed (which needs the deploy), and its smoke journey's log ends with
|
|
51
|
+
* the verdict. Its `postinstall` was a placeholder, and OCI needs none.
|
|
52
|
+
*
|
|
53
|
+
* @param root - The checkout.
|
|
54
|
+
* @returns The steps it shows done.
|
|
55
|
+
*/
|
|
56
|
+
export function chrisSteps_read(root) {
|
|
57
|
+
const steps = { postinstall: { state: 'done', note: 'nothing to do after the install on this cloud' } };
|
|
58
|
+
if (!existsSync(join(root, 'state', 'auth', 'chris-test-user-password')))
|
|
59
|
+
return steps;
|
|
60
|
+
steps['chris-deploy'] = { state: 'done', note: 'done before adoption (harbor-oci: ChRIS seeded, so deployed)' };
|
|
61
|
+
steps['chris-seed'] = { state: 'done', note: 'done before adoption (harbor-oci: the test user\'s password is kept)' };
|
|
62
|
+
const smokeLog = join(root, 'state', 'smoke.log');
|
|
63
|
+
const last = existsSync(smokeLog) ? readFileSync(smokeLog, 'utf-8').trim().split('\n').pop() ?? '' : '';
|
|
64
|
+
const words = smokeVerdict_words(last);
|
|
65
|
+
if (words.startsWith('pass'))
|
|
66
|
+
steps['smoke'] = { state: 'done', note: `done before adoption (harbor-oci: ${words})` };
|
|
67
|
+
return steps;
|
|
68
|
+
}
|
|
45
69
|
export function checkout_read(name, root, now) {
|
|
46
70
|
if (!existsSync(join(root, 'config.env')))
|
|
47
71
|
return { error: `${root}: not a harbor-oci checkout (no config.env)` };
|
|
@@ -74,9 +98,11 @@ export function checkout_read(name, root, now) {
|
|
|
74
98
|
const steps = {};
|
|
75
99
|
for (const step of domain.steps) {
|
|
76
100
|
// The cluster runs, so every step through run happened, whatever the host kept to show it.
|
|
77
|
-
if (
|
|
101
|
+
if (MACHINE_STEPS.includes(step.name))
|
|
78
102
|
steps[step.name] = { state: 'done', note: `done before adoption (harbor-oci: ${step.state}, ${step.evidence})` };
|
|
79
103
|
}
|
|
104
|
+
steps['compartment'] = { ...ADOPTED_COMPARTMENT };
|
|
105
|
+
Object.assign(steps, chrisSteps_read(root));
|
|
80
106
|
const ids = {};
|
|
81
107
|
for (const [key, field] of [['clusterId', 'assistedClusterId'], ['infraEnvId', 'assistedInfraEnvId'], ['isoObject', 'isoObjectName']]) {
|
|
82
108
|
if (typeof harbor[field] === 'string')
|
package/dist/domain/adopt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/domain/adopt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAqB,MAAM,yBAAyB,CAAC;AAE9F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAmB,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/domain/adopt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file What `expect` can claim about a domain: how a step stands, how its
|
|
3
|
+
* last verify went, what it costs an hour, and which class it is. Registered
|
|
4
|
+
* with the stratus backend (`Backend.expectSubjects`), so a tenant's manifest
|
|
5
|
+
* asserts its domain as a ChRIS manifest asserts its runs:
|
|
6
|
+
*
|
|
7
|
+
* expect domain ${NAME} step run eq done
|
|
8
|
+
* expect domain ${NAME} verify eq 10
|
|
9
|
+
* expect domain ${NAME} cost lt 1.00
|
|
10
|
+
*
|
|
11
|
+
* Every property reads what the domain's state holds or what the cloud
|
|
12
|
+
* answers; none of them changes anything, so `--within` may ask as often as
|
|
13
|
+
* it likes.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { ExpectSubject } from '@fnndsc/brasa/core';
|
|
18
|
+
import type { CloudDriver } from '../cloud/driver.js';
|
|
19
|
+
import type { DomainStore } from './state.js';
|
|
20
|
+
/** What the domain subject reads. */
|
|
21
|
+
export interface DomainExpectDeps {
|
|
22
|
+
readonly store: DomainStore;
|
|
23
|
+
readonly driver: CloudDriver;
|
|
24
|
+
readonly now: () => Date;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The domain subject, over a session's store and cloud.
|
|
28
|
+
*
|
|
29
|
+
* @param deps - The store and the cloud.
|
|
30
|
+
* @returns The subject.
|
|
31
|
+
*/
|
|
32
|
+
export declare function domainExpectSubject_make(deps: DomainExpectDeps): ExpectSubject;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { spend_read } from './spend.js';
|
|
2
|
+
/** How a verify's summary note begins: `10 of 10 pass`. */
|
|
3
|
+
const VERIFY_PASSED = /^(\d+) of \d+ pass/;
|
|
4
|
+
/**
|
|
5
|
+
* Reads one property of one domain.
|
|
6
|
+
*
|
|
7
|
+
* @param deps - The store and the cloud.
|
|
8
|
+
* @param ask - The claim.
|
|
9
|
+
* @returns The value, or why it has none.
|
|
10
|
+
*/
|
|
11
|
+
async function domain_read(deps, ask) {
|
|
12
|
+
const name = ask.target ?? '';
|
|
13
|
+
const record = deps.store.record_read(name);
|
|
14
|
+
if (record === null) {
|
|
15
|
+
const kept = deps.store.names_list().join(', ') || 'none';
|
|
16
|
+
return { got: null, refusal: `no domain "${name}" is kept in this session (kept: ${kept})` };
|
|
17
|
+
}
|
|
18
|
+
if (ask.property === 'step') {
|
|
19
|
+
const step = ask.words[0];
|
|
20
|
+
if (step === undefined)
|
|
21
|
+
return { got: null, refusal: 'expect domain <name> step <step> <predicate> <value>' };
|
|
22
|
+
return { got: record.steps[step]?.state ?? 'not done' };
|
|
23
|
+
}
|
|
24
|
+
if (ask.property === 'verify') {
|
|
25
|
+
const note = record.steps['verify']?.note;
|
|
26
|
+
const passed = note === undefined ? null : note.match(VERIFY_PASSED);
|
|
27
|
+
if (passed === null)
|
|
28
|
+
return { got: null, refusal: `${name} has not been verified here yet: domain verify ${name}` };
|
|
29
|
+
return { got: passed[1] };
|
|
30
|
+
}
|
|
31
|
+
if (ask.property === 'class') {
|
|
32
|
+
return { got: record.gone !== undefined ? 'torn down' : record.adopted !== undefined ? 'adopted' : 'built' };
|
|
33
|
+
}
|
|
34
|
+
if (record.compartmentId === undefined)
|
|
35
|
+
return { got: null, refusal: `${name} has no compartment recorded yet, so nothing to price` };
|
|
36
|
+
const spend = await spend_read(deps.driver, record.compartmentId, record.region, deps.now());
|
|
37
|
+
return { got: spend.hourly.toFixed(4) };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The domain subject, over a session's store and cloud.
|
|
41
|
+
*
|
|
42
|
+
* @param deps - The store and the cloud.
|
|
43
|
+
* @returns The subject.
|
|
44
|
+
*/
|
|
45
|
+
export function domainExpectSubject_make(deps) {
|
|
46
|
+
return {
|
|
47
|
+
name: 'domain',
|
|
48
|
+
named: true,
|
|
49
|
+
properties: { step: 1, verify: 0, class: 0, cost: 0 },
|
|
50
|
+
read: async (ask) => await domain_read(deps, ask),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=expect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/domain/expect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** One manifest the engine ships. */
|
|
2
|
+
export interface ShippedManifest {
|
|
3
|
+
/** Its name in the session's home. */
|
|
4
|
+
readonly name: string;
|
|
5
|
+
/** Its text. */
|
|
6
|
+
readonly text: string;
|
|
7
|
+
}
|
|
8
|
+
/** The tenant's manifest, by its name in the home. */
|
|
9
|
+
export declare const TENANT_MANIFEST: string;
|
|
10
|
+
/**
|
|
11
|
+
* Reads the shipped manifests from the package's `manifests/`; one that
|
|
12
|
+
* cannot be read is left out rather than shown empty.
|
|
13
|
+
*
|
|
14
|
+
* @param folder - Where they are; the package's own folder when absent.
|
|
15
|
+
* @returns The manifests.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shippedManifests_read(folder?: URL): ShippedManifest[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The manifests stratus ships: `tenant.mise`, the procedure that
|
|
3
|
+
* builds a Trusted Domain from its written spec to a verified cluster
|
|
4
|
+
* (docs/stratus.adoc, D14).
|
|
5
|
+
*
|
|
6
|
+
* They are files of the package, read once from beside `dist/`, and shown in
|
|
7
|
+
* the session's home (`~/tenant.mise`, beside the domains), so `play` finds
|
|
8
|
+
* one there as a ChRIS session finds a manifest in its home.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
/** The tenant's manifest, by its name in the home. */
|
|
14
|
+
export const TENANT_MANIFEST = 'tenant.mise';
|
|
15
|
+
/** The manifests the package holds, by name. */
|
|
16
|
+
const SHIPPED = [TENANT_MANIFEST];
|
|
17
|
+
/**
|
|
18
|
+
* Reads the shipped manifests from the package's `manifests/`; one that
|
|
19
|
+
* cannot be read is left out rather than shown empty.
|
|
20
|
+
*
|
|
21
|
+
* @param folder - Where they are; the package's own folder when absent.
|
|
22
|
+
* @returns The manifests.
|
|
23
|
+
*/
|
|
24
|
+
export function shippedManifests_read(folder = new URL('../../manifests/', import.meta.url)) {
|
|
25
|
+
const read = [];
|
|
26
|
+
for (const name of SHIPPED) {
|
|
27
|
+
try {
|
|
28
|
+
read.push({ name, text: readFileSync(new URL(name, folder), 'utf8') });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// A package without its manifests still builds and reads domains.
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return read;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=manifests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/domain/manifests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAUvC,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAW,aAAa,CAAC;AAErD,gDAAgD;AAChD,MAAM,OAAO,GAA0B,CAAC,eAAe,CAAC,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAc,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9F,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type DomainCondition, type DomainSummary, type PlanSummary } from '@fnndsc/menu';
|
|
2
|
+
import { type JobRecord } from '@fnndsc/brasa/core';
|
|
3
|
+
import { type InfraPlan } from '../cloud/builder.js';
|
|
4
|
+
import { type HarborDomain } from '../domains/harborOci.js';
|
|
5
|
+
import type { DomainRecord, DomainStore } from './state.js';
|
|
6
|
+
import { VERIFY_FILE, type VerifyKept } from './verify.js';
|
|
7
|
+
export { VERIFY_FILE, type VerifyKept };
|
|
8
|
+
/** The parts of a summary the controller draws, beyond the tile's glance. */
|
|
9
|
+
export type DomainReadout = Required<Pick<DomainSummary, 'condition' | 'billing' | 'origin' | 'protected' | 'refused' | 'region' | 'compartment' | 'gone' | 'spec' | 'next' | 'billingStep' | 'running' | 'plan' | 'verify' | 'asking'>>;
|
|
10
|
+
/**
|
|
11
|
+
* Where a domain stands in one word.
|
|
12
|
+
*
|
|
13
|
+
* @param domain - The domain.
|
|
14
|
+
* @param record - Its state on the host, or null for one read from a checkout.
|
|
15
|
+
* @param running - Whether its build is running.
|
|
16
|
+
* @param asking - Whether the engine waits on a question about it.
|
|
17
|
+
* @returns The condition.
|
|
18
|
+
*/
|
|
19
|
+
export declare function condition_derive(domain: HarborDomain, record: DomainRecord | null, running: boolean, asking: boolean): DomainCondition;
|
|
20
|
+
/**
|
|
21
|
+
* The verbs refused on a domain, with why, in the words the verbs refuse with.
|
|
22
|
+
*
|
|
23
|
+
* @param domain - The domain.
|
|
24
|
+
* @param record - Its state on the host, or null.
|
|
25
|
+
* @returns By verb.
|
|
26
|
+
*/
|
|
27
|
+
export declare function refusals_derive(domain: HarborDomain, record: DomainRecord | null): Record<string, string>;
|
|
28
|
+
/**
|
|
29
|
+
* The last plan, counted, its rows grouped by action and kind.
|
|
30
|
+
*
|
|
31
|
+
* @param plan - The plan.
|
|
32
|
+
* @param at - When it was made.
|
|
33
|
+
* @returns The summary.
|
|
34
|
+
*/
|
|
35
|
+
export declare function planSummary_build(plan: InfraPlan, at: string | null): PlanSummary;
|
|
36
|
+
/**
|
|
37
|
+
* What the controller draws of a domain, from the host.
|
|
38
|
+
*
|
|
39
|
+
* @param domain - The domain.
|
|
40
|
+
* @param store - The domains this daemon keeps, or null when it keeps none.
|
|
41
|
+
* @param job - The build's task, when one was ever started.
|
|
42
|
+
* @param asking - The question the engine waits on about it, or null.
|
|
43
|
+
* @returns The readout.
|
|
44
|
+
*/
|
|
45
|
+
export declare function domainReadout_build(domain: HarborDomain, store: DomainStore | null, job: JobRecord | undefined, asking?: string | null): DomainReadout;
|
|
46
|
+
/**
|
|
47
|
+
* A domain's steps for the model: each with its name, evidence and times.
|
|
48
|
+
*
|
|
49
|
+
* @param domain - The domain.
|
|
50
|
+
* @param record - Its state on the host, or null.
|
|
51
|
+
* @returns The steps.
|
|
52
|
+
*/
|
|
53
|
+
export declare function summarySteps_map(domain: HarborDomain, record: DomainRecord | null): DomainSummary['steps'];
|
|
54
|
+
/**
|
|
55
|
+
* One domain's summary as the host knows it, without asking the cloud: the
|
|
56
|
+
* live counts null and the cost absent. What a build's state event carries.
|
|
57
|
+
*
|
|
58
|
+
* @param store - The domains this daemon keeps, or null.
|
|
59
|
+
* @param domainsPath - The folder the domains stand in.
|
|
60
|
+
* @param domain - The domain.
|
|
61
|
+
* @param asking - The question the engine waits on about it, or null.
|
|
62
|
+
* @returns The summary.
|
|
63
|
+
*/
|
|
64
|
+
export declare function domainSummary_read(store: DomainStore | null, domainsPath: string, domain: HarborDomain, asking?: string | null): DomainSummary;
|