@serve.zone/interfaces 32.14.0 → 32.16.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/changelog.md +27 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/clusternode.d.ts +35 -3
- package/dist_ts/data/clusternode.js +141 -3
- package/dist_ts/data/fleetcutover.d.ts +263 -0
- package/dist_ts/data/fleetcutover.js +784 -7
- package/dist_ts/data/runtimestorageclaim.d.ts +43 -0
- package/dist_ts/data/runtimestorageclaim.js +88 -4
- package/dist_ts/requests/fleetcutover.d.ts +70 -6
- package/dist_ts/requests/runtimesession.d.ts +47 -0
- package/package.json +1 -1
- package/readme.md +118 -16
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/clusternode.ts +209 -2
- package/ts/data/fleetcutover.ts +1156 -5
- package/ts/data/runtimestorageclaim.ts +122 -3
- package/ts/requests/fleetcutover.ts +80 -5
- package/ts/requests/runtimesession.ts +57 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { snapshotClusterRuntimeReference } from './clusterruntime.js';
|
|
2
|
-
import {
|
|
2
|
+
import { bindRuntimeStorageClaimToIntent, snapshotRuntimeStorageClaim, snapshotRuntimeStorageClaimIntent, validateRuntimeStorageClaim, validateRuntimeStorageClaimIntent, } from './runtimestorageclaim.js';
|
|
3
|
+
import { normalizeStorageRequest } from '../platform/storage.js';
|
|
4
|
+
import { canonicalizeStrictJson, compareWireTokens, createCanonicalJsonSha256Hex, } from '../private/canonicaljson.js';
|
|
3
5
|
import { captureNetwork, networkCounter, networkDigest, networkId, networkList, networkNodeId, networkRecord, networkReference, networkSorted, requireNetwork, } from '../private/networkcontract.js';
|
|
4
6
|
export const fleetCutoverContract = Object.freeze({
|
|
5
7
|
maximumServices: 512,
|
|
@@ -7,19 +9,36 @@ export const fleetCutoverContract = Object.freeze({
|
|
|
7
9
|
maximumNodes: 1024,
|
|
8
10
|
maximumContainersPerNode: 512,
|
|
9
11
|
maximumMountsPerOwner: 32,
|
|
12
|
+
maximumConstraintsPerService: 256,
|
|
13
|
+
maximumDockerTextBytes: 4096,
|
|
14
|
+
maximumDockerServiceSpecCanonicalBytes: 1_048_576,
|
|
15
|
+
maximumPreparedVolumeHandoffMutationEntries: 32,
|
|
16
|
+
/** Every admitted task has one node placement and at most 32 mounts: 4096 * 32. */
|
|
17
|
+
maximumPreparedVolumeHandoffs: 4096 * 32,
|
|
18
|
+
maximumPreparedVolumeHandoffPages: (4096 * 32) / 32,
|
|
19
|
+
maximumHeldVolumeFenceEvidenceBytes: 131_072,
|
|
10
20
|
maximumClassifications: 512,
|
|
11
21
|
observationFreshnessMs: 300_000,
|
|
12
22
|
mountSourceIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-source-identity',
|
|
13
23
|
mountTargetIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-target-identity',
|
|
14
24
|
mountIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-identity',
|
|
25
|
+
mountCorrelationIdentityDigestDomain: 'serve.zone/fleet-cutover-mount-correlation-identity',
|
|
26
|
+
dockerServiceSpecDigestDomain: 'serve.zone/fleet-cutover-docker-service-spec',
|
|
27
|
+
dockerConstraintSetDigestDomain: 'serve.zone/fleet-cutover-docker-constraint-set',
|
|
15
28
|
containerSetIdentityDigestDomain: 'serve.zone/fleet-cutover-container-set-identity',
|
|
16
29
|
localNodeSnapshotDigestDomain: 'serve.zone/fleet-cutover-local-node-snapshot',
|
|
17
30
|
managerSnapshotDigestDomain: 'serve.zone/fleet-cutover-manager-snapshot',
|
|
18
31
|
censusDigestDomain: 'serve.zone/fleet-cutover-census',
|
|
19
32
|
scopeDigestDomain: 'serve.zone/fleet-cutover-scope',
|
|
20
33
|
volumeHandoffDigestDomain: 'serve.zone/fleet-cutover-volume-handoff',
|
|
34
|
+
preparedVolumeHandoffDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff',
|
|
35
|
+
preparedVolumeHandoffAggregateDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-aggregate',
|
|
36
|
+
preparedVolumeHandoffPageContentDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-page-content',
|
|
37
|
+
preparedVolumeHandoffPageDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-page',
|
|
38
|
+
preparedVolumeHandoffSetDigestDomain: 'serve.zone/fleet-cutover-prepared-volume-handoff-set',
|
|
21
39
|
volumeFenceDigestDomain: 'serve.zone/fleet-cutover-volume-fence',
|
|
22
40
|
corestoreAdoptionDigestDomain: 'serve.zone/fleet-cutover-corestore-adoption',
|
|
41
|
+
storageAdoptionGrantDigestDomain: 'serve.zone/fleet-cutover-storage-adoption-grant',
|
|
23
42
|
coreflowRetirementDigestDomain: 'serve.zone/fleet-cutover-coreflow-retirement',
|
|
24
43
|
ingressDesignationDigestDomain: 'serve.zone/fleet-cutover-ingress-designation',
|
|
25
44
|
ingressAuthorityDigestDomain: 'serve.zone/fleet-cutover-ingress-authority',
|
|
@@ -30,6 +49,10 @@ export const fleetCutoverContract = Object.freeze({
|
|
|
30
49
|
pallet: null,
|
|
31
50
|
}),
|
|
32
51
|
});
|
|
52
|
+
/** Docker labels with established historical producer semantics. */
|
|
53
|
+
export const fleetCutoverDockerLabelNames = Object.freeze({
|
|
54
|
+
serviceId: 'serve.zone.serviceId',
|
|
55
|
+
});
|
|
33
56
|
const fail = () => { throw new Error('Fleet cutover contract rejected.'); };
|
|
34
57
|
const safe = (operationArg) => {
|
|
35
58
|
try {
|
|
@@ -114,6 +137,17 @@ const mountDescriptor = (valueArg) => {
|
|
|
114
137
|
};
|
|
115
138
|
};
|
|
116
139
|
const sortedMountDescriptors = (valueArg) => networkSorted(networkList(valueArg, fleetCutoverContract.maximumMountsPerOwner, mountDescriptor), itemArg => itemArg.mountIdentityDigest);
|
|
140
|
+
const physicalMountCorrelation = (valueArg) => {
|
|
141
|
+
const value = networkRecord(valueArg, [
|
|
142
|
+
'physicalMountIdentityDigest', 'serviceMountIdentityDigest', 'correlationIdentityDigest',
|
|
143
|
+
]);
|
|
144
|
+
return {
|
|
145
|
+
physicalMountIdentityDigest: networkDigest(value.physicalMountIdentityDigest),
|
|
146
|
+
serviceMountIdentityDigest: networkDigest(value.serviceMountIdentityDigest),
|
|
147
|
+
correlationIdentityDigest: networkDigest(value.correlationIdentityDigest),
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
const sortedPhysicalMountCorrelations = (valueArg) => networkSorted(networkList(valueArg, fleetCutoverContract.maximumMountsPerOwner, physicalMountCorrelation), itemArg => itemArg.physicalMountIdentityDigest);
|
|
117
151
|
const dockerMode = (valueArg) => {
|
|
118
152
|
requireNetwork(valueArg !== null && typeof valueArg === 'object');
|
|
119
153
|
const kind = valueArg.kind;
|
|
@@ -138,6 +172,8 @@ const dockerService = (valueArg) => {
|
|
|
138
172
|
'dockerServiceId', 'dockerServiceName', 'specVersion', 'specDigest', 'imageDigest', 'mode',
|
|
139
173
|
'desiredTaskCount', 'constraintCount', 'constraintSetDigest', 'mounts', 'ownershipLabels',
|
|
140
174
|
]);
|
|
175
|
+
const constraintCount = nonNegative(value.constraintCount);
|
|
176
|
+
requireNetwork(constraintCount <= fleetCutoverContract.maximumConstraintsPerService);
|
|
141
177
|
return {
|
|
142
178
|
dockerServiceId: networkId(value.dockerServiceId),
|
|
143
179
|
dockerServiceName: networkId(value.dockerServiceName),
|
|
@@ -146,7 +182,7 @@ const dockerService = (valueArg) => {
|
|
|
146
182
|
imageDigest: networkDigest(value.imageDigest),
|
|
147
183
|
mode: dockerMode(value.mode),
|
|
148
184
|
desiredTaskCount: nonNegative(value.desiredTaskCount),
|
|
149
|
-
constraintCount
|
|
185
|
+
constraintCount,
|
|
150
186
|
constraintSetDigest: networkDigest(value.constraintSetDigest),
|
|
151
187
|
mounts: sortedMountDescriptors(value.mounts),
|
|
152
188
|
ownershipLabels: ownershipLabels(value.ownershipLabels),
|
|
@@ -183,8 +219,8 @@ const dockerTask = (valueArg) => {
|
|
|
183
219
|
const physicalContainer = (valueArg) => {
|
|
184
220
|
const value = networkRecord(valueArg, [
|
|
185
221
|
'dockerContainerId', 'dockerServiceId', 'dockerTaskId', 'imageId', 'serviceIdLabel', 'mounts',
|
|
186
|
-
]);
|
|
187
|
-
|
|
222
|
+
], ['mountCorrelations']);
|
|
223
|
+
const result = {
|
|
188
224
|
dockerContainerId: networkId(value.dockerContainerId),
|
|
189
225
|
dockerServiceId: value.dockerServiceId === null ? null : networkId(value.dockerServiceId),
|
|
190
226
|
dockerTaskId: value.dockerTaskId === null ? null : networkId(value.dockerTaskId),
|
|
@@ -192,6 +228,10 @@ const physicalContainer = (valueArg) => {
|
|
|
192
228
|
serviceIdLabel: value.serviceIdLabel === null ? null : networkId(value.serviceIdLabel),
|
|
193
229
|
mounts: sortedMountDescriptors(value.mounts),
|
|
194
230
|
};
|
|
231
|
+
if (Object.hasOwn(value, 'mountCorrelations')) {
|
|
232
|
+
result.mountCorrelations = sortedPhysicalMountCorrelations(value.mountCorrelations);
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
195
235
|
};
|
|
196
236
|
const inventory = (valueArg) => {
|
|
197
237
|
const value = networkRecord(valueArg, [
|
|
@@ -265,14 +305,139 @@ const canonicalDigest = async (domainArg, valueArg) => {
|
|
|
265
305
|
};
|
|
266
306
|
const exactDockerText = (valueArg, allowEmptyArg) => {
|
|
267
307
|
requireNetwork(typeof valueArg === 'string'
|
|
268
|
-
&& new TextEncoder().encode(valueArg).length <=
|
|
308
|
+
&& new TextEncoder().encode(valueArg).length <= fleetCutoverContract.maximumDockerTextBytes
|
|
269
309
|
&& (allowEmptyArg || valueArg.length > 0));
|
|
270
310
|
return valueArg;
|
|
271
311
|
};
|
|
312
|
+
const openDockerRecord = (valueArg) => {
|
|
313
|
+
const value = captureNetwork(valueArg);
|
|
314
|
+
requireNetwork(value !== null && typeof value === 'object' && !Array.isArray(value));
|
|
315
|
+
return value;
|
|
316
|
+
};
|
|
272
317
|
const computeExactIdentityDigest = async (domainArg, inputArg) => `sha256:${await createCanonicalJsonSha256Hex(canonicalizeStrictJson({
|
|
273
318
|
domain: domainArg,
|
|
274
319
|
input: inputArg,
|
|
275
320
|
}, fail), fail)}`;
|
|
321
|
+
/**
|
|
322
|
+
* Hash the complete open-schema Docker Service.Spec object. Unknown response properties are
|
|
323
|
+
* intentionally included: this helper returns only the digest and never a retained projection.
|
|
324
|
+
*/
|
|
325
|
+
export const computeFleetCutoverDockerServiceSpecDigest = async (valueArg) => {
|
|
326
|
+
try {
|
|
327
|
+
const spec = openDockerRecord(valueArg);
|
|
328
|
+
const canonicalSpec = canonicalizeStrictJson(spec, fail, 'Docker Service.Spec');
|
|
329
|
+
requireNetwork(new TextEncoder().encode(canonicalSpec).byteLength
|
|
330
|
+
<= fleetCutoverContract.maximumDockerServiceSpecCanonicalBytes);
|
|
331
|
+
return await computeExactIdentityDigest(fleetCutoverContract.dockerServiceSpecDigestDomain, { spec });
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
return fail();
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
/** Sort exact constraint strings while preserving duplicate entries, then return value-free identity. */
|
|
338
|
+
export const computeFleetCutoverDockerConstraintSetIdentity = async (valueArg) => {
|
|
339
|
+
try {
|
|
340
|
+
const captured = captureNetwork(valueArg);
|
|
341
|
+
requireNetwork(Array.isArray(captured)
|
|
342
|
+
&& captured.length <= fleetCutoverContract.maximumConstraintsPerService);
|
|
343
|
+
const constraints = captured.map(itemArg => exactDockerText(itemArg, false))
|
|
344
|
+
.sort(compareWireTokens);
|
|
345
|
+
return {
|
|
346
|
+
constraintCount: constraints.length,
|
|
347
|
+
constraintSetDigest: await computeExactIdentityDigest(fleetCutoverContract.dockerConstraintSetDigestDomain, { constraints }),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
return fail();
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
export const snapshotFleetCutoverDockerDesiredTaskCount = (valueArg) => safe(() => nonNegative(valueArg));
|
|
355
|
+
export const validateFleetCutoverDockerDesiredTaskCount = (valueArg) => (typeof valueArg === 'number' && Number.isSafeInteger(valueArg) && valueArg >= 0
|
|
356
|
+
? []
|
|
357
|
+
: ['Docker ServiceStatus.DesiredTasks must be a non-negative safe integer']);
|
|
358
|
+
/** Apply only the documented exact cutover mount classifications; no path normalization occurs. */
|
|
359
|
+
export const classifyFleetCutoverDockerMount = (valueArg) => safe(() => {
|
|
360
|
+
const value = networkRecord(valueArg, ['type', 'source', 'target', 'readOnly']);
|
|
361
|
+
const rawType = exactDockerText(value.type, false);
|
|
362
|
+
const source = exactDockerText(value.source, true);
|
|
363
|
+
const target = exactDockerText(value.target, false);
|
|
364
|
+
requireNetwork(typeof value.readOnly === 'boolean');
|
|
365
|
+
if (rawType === 'volume')
|
|
366
|
+
return { type: 'volume', classification: 'persistent-volume' };
|
|
367
|
+
if (rawType === 'tmpfs')
|
|
368
|
+
return { type: 'tmpfs', classification: 'tmpfs' };
|
|
369
|
+
if (rawType !== 'bind')
|
|
370
|
+
return { type: 'unknown', classification: 'unknown' };
|
|
371
|
+
if (source === '/var/run/docker.sock'
|
|
372
|
+
&& target === '/var/run/docker.sock'
|
|
373
|
+
&& value.readOnly === false) {
|
|
374
|
+
return { type: 'bind', classification: 'docker-socket' };
|
|
375
|
+
}
|
|
376
|
+
if (source === '/sys/fs/cgroup'
|
|
377
|
+
&& target === '/host/cgroup'
|
|
378
|
+
&& value.readOnly === true) {
|
|
379
|
+
return { type: 'bind', classification: 'cgroup' };
|
|
380
|
+
}
|
|
381
|
+
return { type: 'bind', classification: 'bind' };
|
|
382
|
+
});
|
|
383
|
+
export const createFleetCutoverMountDescriptor = async (valueArg) => {
|
|
384
|
+
try {
|
|
385
|
+
const value = networkRecord(valueArg, ['type', 'source', 'target', 'readOnly']);
|
|
386
|
+
const source = exactDockerText(value.source, true);
|
|
387
|
+
const target = exactDockerText(value.target, false);
|
|
388
|
+
requireNetwork(typeof value.readOnly === 'boolean');
|
|
389
|
+
const shape = classifyFleetCutoverDockerMount({
|
|
390
|
+
type: exactDockerText(value.type, false),
|
|
391
|
+
source,
|
|
392
|
+
target,
|
|
393
|
+
readOnly: value.readOnly,
|
|
394
|
+
});
|
|
395
|
+
requireNetwork(shape.type === 'tmpfs' ? source.length === 0 : source.length > 0);
|
|
396
|
+
const identityInput = {
|
|
397
|
+
...shape,
|
|
398
|
+
sourceIdentityDigest: await computeFleetCutoverMountSourceIdentityDigest({
|
|
399
|
+
type: shape.type,
|
|
400
|
+
source,
|
|
401
|
+
}),
|
|
402
|
+
targetIdentityDigest: await computeFleetCutoverMountTargetIdentityDigest({ target }),
|
|
403
|
+
readOnly: value.readOnly,
|
|
404
|
+
};
|
|
405
|
+
return {
|
|
406
|
+
...identityInput,
|
|
407
|
+
mountIdentityDigest: await computeFleetCutoverMountIdentityDigest(identityInput),
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
return fail();
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
const dockerServiceMountInput = (valueArg) => {
|
|
415
|
+
const value = openDockerRecord(valueArg);
|
|
416
|
+
const type = exactDockerText(value.Type, false);
|
|
417
|
+
const source = value.Source === undefined ? '' : exactDockerText(value.Source, true);
|
|
418
|
+
const target = exactDockerText(value.Target, false);
|
|
419
|
+
const readOnly = value.ReadOnly === undefined ? false : value.ReadOnly;
|
|
420
|
+
requireNetwork(typeof readOnly === 'boolean');
|
|
421
|
+
return { type, source, target, readOnly };
|
|
422
|
+
};
|
|
423
|
+
const dockerLocalMountInput = (valueArg) => {
|
|
424
|
+
const value = openDockerRecord(valueArg);
|
|
425
|
+
const type = exactDockerText(value.Type, false);
|
|
426
|
+
const source = exactDockerText(value.Source, true);
|
|
427
|
+
const target = exactDockerText(value.Destination, false);
|
|
428
|
+
requireNetwork(typeof value.RW === 'boolean');
|
|
429
|
+
const logicalSource = type === 'volume'
|
|
430
|
+
? exactDockerText(value.Name, false)
|
|
431
|
+
: source;
|
|
432
|
+
return {
|
|
433
|
+
descriptorInput: { type, source, target, readOnly: !value.RW },
|
|
434
|
+
logicalSource,
|
|
435
|
+
};
|
|
436
|
+
};
|
|
437
|
+
/** Read only consumed Service.Spec Mount fields; future Docker response properties are ignored. */
|
|
438
|
+
export const createFleetCutoverDockerServiceMountDescriptor = async (valueArg) => createFleetCutoverMountDescriptor(dockerServiceMountInput(valueArg));
|
|
439
|
+
/** Read only consumed local MountPoint fields and retain the exact physical Source identity. */
|
|
440
|
+
export const createFleetCutoverDockerLocalMountDescriptor = async (valueArg) => createFleetCutoverMountDescriptor(dockerLocalMountInput(valueArg).descriptorInput);
|
|
276
441
|
export const computeFleetCutoverMountSourceIdentityDigest = async (valueArg) => safe(async () => {
|
|
277
442
|
const value = networkRecord(valueArg, ['type', 'source']);
|
|
278
443
|
return computeExactIdentityDigest(fleetCutoverContract.mountSourceIdentityDigestDomain, {
|
|
@@ -299,12 +464,66 @@ export const computeFleetCutoverMountIdentityDigest = async (valueArg) => safe(a
|
|
|
299
464
|
readOnly: value.readOnly,
|
|
300
465
|
});
|
|
301
466
|
});
|
|
467
|
+
export const computeFleetCutoverMountCorrelationIdentityDigest = async (valueArg) => safe(async () => {
|
|
468
|
+
const value = networkRecord(valueArg, [
|
|
469
|
+
'physicalMountIdentityDigest', 'serviceMountIdentityDigest',
|
|
470
|
+
]);
|
|
471
|
+
return computeExactIdentityDigest(fleetCutoverContract.mountCorrelationIdentityDigestDomain, {
|
|
472
|
+
physicalMountIdentityDigest: networkDigest(value.physicalMountIdentityDigest),
|
|
473
|
+
serviceMountIdentityDigest: networkDigest(value.serviceMountIdentityDigest),
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
/**
|
|
477
|
+
* Produce both the exact local physical descriptor and its logical service-mount correlation.
|
|
478
|
+
* For a volume only MountPoint.Name supplies the logical source. Unknown types and a missing or
|
|
479
|
+
* empty volume Name are refused because they cannot establish a truthful service join.
|
|
480
|
+
*/
|
|
481
|
+
export const createFleetCutoverDockerPhysicalMountEvidence = async (valueArg) => {
|
|
482
|
+
try {
|
|
483
|
+
const value = dockerLocalMountInput(valueArg);
|
|
484
|
+
requireNetwork(['volume', 'bind', 'tmpfs'].includes(value.descriptorInput.type));
|
|
485
|
+
const mount = await createFleetCutoverMountDescriptor(value.descriptorInput);
|
|
486
|
+
const serviceMount = await createFleetCutoverMountDescriptor({
|
|
487
|
+
...value.descriptorInput,
|
|
488
|
+
source: value.logicalSource,
|
|
489
|
+
});
|
|
490
|
+
const correlationInput = {
|
|
491
|
+
physicalMountIdentityDigest: mount.mountIdentityDigest,
|
|
492
|
+
serviceMountIdentityDigest: serviceMount.mountIdentityDigest,
|
|
493
|
+
};
|
|
494
|
+
return {
|
|
495
|
+
mount,
|
|
496
|
+
correlation: {
|
|
497
|
+
...correlationInput,
|
|
498
|
+
correlationIdentityDigest: await computeFleetCutoverMountCorrelationIdentityDigest(correlationInput),
|
|
499
|
+
},
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
catch {
|
|
503
|
+
return fail();
|
|
504
|
+
}
|
|
505
|
+
};
|
|
302
506
|
const validateMountDescriptors = async (mountsArg) => {
|
|
303
507
|
for (const mount of mountsArg) {
|
|
304
508
|
const { mountIdentityDigest, ...input } = mount;
|
|
305
509
|
requireNetwork(mountIdentityDigest === await computeFleetCutoverMountIdentityDigest(input));
|
|
306
510
|
}
|
|
307
511
|
};
|
|
512
|
+
const validatePhysicalMountCorrelations = async (containerArg) => {
|
|
513
|
+
if (containerArg.mountCorrelations === undefined)
|
|
514
|
+
return;
|
|
515
|
+
requireNetwork(containerArg.mountCorrelations.length === containerArg.mounts.length);
|
|
516
|
+
const physicalMountIdentities = new Set(containerArg.mounts.map(itemArg => itemArg.mountIdentityDigest));
|
|
517
|
+
const serviceMountIdentities = new Set(containerArg.mountCorrelations.map(itemArg => itemArg.serviceMountIdentityDigest));
|
|
518
|
+
requireNetwork(physicalMountIdentities.size === containerArg.mounts.length
|
|
519
|
+
&& serviceMountIdentities.size === containerArg.mountCorrelations.length
|
|
520
|
+
&& containerArg.mountCorrelations.every(itemArg => physicalMountIdentities.has(itemArg.physicalMountIdentityDigest)));
|
|
521
|
+
for (const correlation of containerArg.mountCorrelations) {
|
|
522
|
+
const { correlationIdentityDigest, ...input } = correlation;
|
|
523
|
+
requireNetwork(correlationIdentityDigest
|
|
524
|
+
=== await computeFleetCutoverMountCorrelationIdentityDigest(input));
|
|
525
|
+
}
|
|
526
|
+
};
|
|
308
527
|
export const computeFleetCutoverContainerSetIdentityDigest = async (containerIdsArg) => safe(async () => {
|
|
309
528
|
const containerIds = networkSorted(networkList(containerIdsArg, fleetCutoverContract.maximumContainersPerNode, networkId), itemArg => itemArg);
|
|
310
529
|
return computeExactIdentityDigest(fleetCutoverContract.containerSetIdentityDigestDomain, {
|
|
@@ -347,8 +566,10 @@ export const validateFleetCutoverLocalNodeSnapshot = async (valueArg) => {
|
|
|
347
566
|
const containerIdsDigest = await computeFleetCutoverContainerSetIdentityDigest(value.containers.map(itemArg => itemArg.dockerContainerId));
|
|
348
567
|
requireNetwork(value.before.containerIdsDigest === containerIdsDigest
|
|
349
568
|
&& value.after.containerIdsDigest === containerIdsDigest);
|
|
350
|
-
for (const container of value.containers)
|
|
569
|
+
for (const container of value.containers) {
|
|
351
570
|
await validateMountDescriptors(container.mounts);
|
|
571
|
+
await validatePhysicalMountCorrelations(container);
|
|
572
|
+
}
|
|
352
573
|
return value.snapshotDigest === await computeFleetCutoverLocalNodeSnapshotDigest(value)
|
|
353
574
|
? [] : ['fleet cutover local node snapshot digest does not match'];
|
|
354
575
|
}
|
|
@@ -470,6 +691,10 @@ export const fleetCutoverEvidenceReferenceOf = (valueArg) => reference({
|
|
|
470
691
|
generation: valueArg.generation,
|
|
471
692
|
digest: valueArg.digest,
|
|
472
693
|
});
|
|
694
|
+
export const fleetCutoverPreparedVolumeHandoffPageReferenceOf = (valueArg) => ({
|
|
695
|
+
...fleetCutoverEvidenceReferenceOf(valueArg),
|
|
696
|
+
nodeId: networkNodeId(valueArg.nodeId),
|
|
697
|
+
});
|
|
473
698
|
export const snapshotFleetCutoverAcceptedEvidenceReference = (valueArg) => safe(() => reference(captureNetwork(valueArg)));
|
|
474
699
|
const scopeEntry = (valueArg) => {
|
|
475
700
|
const value = networkRecord(valueArg, [
|
|
@@ -591,6 +816,297 @@ const volumeHandoff = (valueArg) => {
|
|
|
591
816
|
};
|
|
592
817
|
export const snapshotFleetCutoverVolumeHandoffIntent = (valueArg) => safe(() => volumeHandoff(captureNetwork(valueArg)));
|
|
593
818
|
export const computeFleetCutoverVolumeHandoffDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.volumeHandoffDigestDomain, snapshotFleetCutoverVolumeHandoffIntent(valueArg));
|
|
819
|
+
const persistentVolumeMountDescriptor = (valueArg) => {
|
|
820
|
+
const value = mountDescriptor(valueArg);
|
|
821
|
+
requireNetwork(value.type === 'volume'
|
|
822
|
+
&& value.classification === 'persistent-volume'
|
|
823
|
+
&& value.readOnly === false);
|
|
824
|
+
return value;
|
|
825
|
+
};
|
|
826
|
+
const preparedVolumeHandoff = (valueArg) => {
|
|
827
|
+
const value = networkRecord(valueArg, [
|
|
828
|
+
'id', 'generation', 'clusterId', 'nodeId', 'serviceId', 'volumeId', 'observedMount',
|
|
829
|
+
'claimIntent', 'runtime', 'scope', 'targetSet', 'legacyStorageEvidence',
|
|
830
|
+
'sourceNodeObservation', 'acceptedAt', 'digest',
|
|
831
|
+
]);
|
|
832
|
+
const clusterId = networkId(value.clusterId);
|
|
833
|
+
const nodeId = networkNodeId(value.nodeId);
|
|
834
|
+
const serviceId = networkId(value.serviceId);
|
|
835
|
+
const observedMount = persistentVolumeMountDescriptor(value.observedMount);
|
|
836
|
+
const claimIntent = snapshotRuntimeStorageClaimIntent(value.claimIntent);
|
|
837
|
+
const runtime = runtimeReference(value.runtime);
|
|
838
|
+
const targetSet = targetSetReference(value.targetSet);
|
|
839
|
+
requireNetwork(runtime.id === clusterId && runtime.phase === 'draining'
|
|
840
|
+
&& targetSet.cloudlyClusterId === clusterId
|
|
841
|
+
&& claimIntent.clusterId === clusterId
|
|
842
|
+
&& claimIntent.nodeId === nodeId
|
|
843
|
+
&& claimIntent.serviceId === serviceId);
|
|
844
|
+
return {
|
|
845
|
+
id: networkId(value.id),
|
|
846
|
+
generation: networkCounter(value.generation),
|
|
847
|
+
clusterId,
|
|
848
|
+
nodeId,
|
|
849
|
+
serviceId,
|
|
850
|
+
volumeId: networkId(value.volumeId),
|
|
851
|
+
observedMount,
|
|
852
|
+
claimIntent,
|
|
853
|
+
runtime: runtime,
|
|
854
|
+
scope: reference(value.scope),
|
|
855
|
+
targetSet,
|
|
856
|
+
legacyStorageEvidence: reference(value.legacyStorageEvidence),
|
|
857
|
+
sourceNodeObservation: reference(value.sourceNodeObservation),
|
|
858
|
+
acceptedAt: networkCounter(value.acceptedAt),
|
|
859
|
+
digest: networkDigest(value.digest),
|
|
860
|
+
};
|
|
861
|
+
};
|
|
862
|
+
export const snapshotFleetCutoverPreparedVolumeHandoffIntent = (valueArg) => safe(() => preparedVolumeHandoff(captureNetwork(valueArg)));
|
|
863
|
+
export const computeFleetCutoverPreparedVolumeHandoffDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffIntent(valueArg));
|
|
864
|
+
export const validateFleetCutoverPreparedVolumeHandoffIntent = async (valueArg) => {
|
|
865
|
+
try {
|
|
866
|
+
const value = snapshotFleetCutoverPreparedVolumeHandoffIntent(valueArg);
|
|
867
|
+
if ((await validateRuntimeStorageClaimIntent(value.claimIntent)).length) {
|
|
868
|
+
return ['fleet cutover prepared volume handoff claim intent is invalid'];
|
|
869
|
+
}
|
|
870
|
+
return value.digest === await computeFleetCutoverPreparedVolumeHandoffDigest(value)
|
|
871
|
+
? [] : ['fleet cutover prepared volume handoff digest does not match'];
|
|
872
|
+
}
|
|
873
|
+
catch {
|
|
874
|
+
return ['fleet cutover prepared volume handoff must use its exact canonical schema'];
|
|
875
|
+
}
|
|
876
|
+
};
|
|
877
|
+
export const snapshotFleetCutoverPreparedVolumeHandoffMutation = (valueArg) => safe(() => {
|
|
878
|
+
const value = networkRecord(captureNetwork(valueArg), [
|
|
879
|
+
'mutationId', 'clusterId', 'currentRuntime', 'scope', 'targetSet', 'expectedAggregate',
|
|
880
|
+
'upserts', 'removals',
|
|
881
|
+
]);
|
|
882
|
+
const clusterId = networkId(value.clusterId);
|
|
883
|
+
const currentRuntime = runtimeReference(value.currentRuntime);
|
|
884
|
+
const targetSet = targetSetReference(value.targetSet);
|
|
885
|
+
requireNetwork(currentRuntime.id === clusterId && currentRuntime.phase === 'draining'
|
|
886
|
+
&& targetSet.cloudlyClusterId === clusterId);
|
|
887
|
+
const requestKeys = new Set();
|
|
888
|
+
const placementKeys = new Set();
|
|
889
|
+
const upserts = networkSorted(networkList(value.upserts, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
|
|
890
|
+
const item = networkRecord(itemArg, [
|
|
891
|
+
'nodeId', 'serviceId', 'mountIdentityDigest', 'request',
|
|
892
|
+
]);
|
|
893
|
+
const nodeId = networkNodeId(item.nodeId);
|
|
894
|
+
const serviceId = networkId(item.serviceId);
|
|
895
|
+
const mountIdentityDigest = networkDigest(item.mountIdentityDigest);
|
|
896
|
+
const request = normalizeStorageRequest(item.request);
|
|
897
|
+
requireNetwork(request.kind === 'filesystem'
|
|
898
|
+
&& request.accessMode === 'ReadWriteOnce'
|
|
899
|
+
&& request.reclaimPolicy === 'retain');
|
|
900
|
+
const requestKey = `${nodeId}\u0000${serviceId}\u0000${request.id}`;
|
|
901
|
+
const placementKey = `${nodeId}\u0000${serviceId}\u0000${mountIdentityDigest}`;
|
|
902
|
+
requireNetwork(!requestKeys.has(requestKey) && !placementKeys.has(placementKey));
|
|
903
|
+
requestKeys.add(requestKey);
|
|
904
|
+
placementKeys.add(placementKey);
|
|
905
|
+
return {
|
|
906
|
+
nodeId,
|
|
907
|
+
serviceId,
|
|
908
|
+
mountIdentityDigest,
|
|
909
|
+
request: request,
|
|
910
|
+
};
|
|
911
|
+
}), itemArg => `${itemArg.nodeId}\u0000${itemArg.serviceId}\u0000${itemArg.mountIdentityDigest}`);
|
|
912
|
+
const removals = networkSorted(networkList(value.removals, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, reference), itemArg => `${itemArg.id}\u0000${String(itemArg.generation).padStart(16, '0')}\u0000${itemArg.digest}`);
|
|
913
|
+
requireNetwork(upserts.length + removals.length > 0
|
|
914
|
+
&& upserts.length + removals.length
|
|
915
|
+
<= fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries);
|
|
916
|
+
return {
|
|
917
|
+
mutationId: networkId(value.mutationId),
|
|
918
|
+
clusterId,
|
|
919
|
+
currentRuntime: currentRuntime,
|
|
920
|
+
scope: reference(value.scope),
|
|
921
|
+
targetSet,
|
|
922
|
+
expectedAggregate: value.expectedAggregate === null ? null : reference(value.expectedAggregate),
|
|
923
|
+
upserts,
|
|
924
|
+
removals,
|
|
925
|
+
};
|
|
926
|
+
});
|
|
927
|
+
const preparedVolumeHandoffAggregate = (valueArg) => {
|
|
928
|
+
const value = networkRecord(valueArg, [
|
|
929
|
+
'id', 'generation', 'previous', 'clusterId', 'runtime', 'scope', 'targetSet', 'state',
|
|
930
|
+
'requiredHandoffCount', 'handoffCount', 'pageCount', 'handoffSetDigest', 'acceptedAt',
|
|
931
|
+
'digest',
|
|
932
|
+
]);
|
|
933
|
+
const id = networkId(value.id);
|
|
934
|
+
const generation = networkCounter(value.generation);
|
|
935
|
+
const previous = value.previous === null ? null : reference(value.previous);
|
|
936
|
+
requireNetwork(generation === 1
|
|
937
|
+
? previous === null
|
|
938
|
+
: previous?.id === id && previous.generation === generation - 1);
|
|
939
|
+
const clusterId = networkId(value.clusterId);
|
|
940
|
+
const runtime = runtimeReference(value.runtime);
|
|
941
|
+
const targetSet = targetSetReference(value.targetSet);
|
|
942
|
+
const state = literal(['incomplete', 'complete'], value.state);
|
|
943
|
+
const requiredHandoffCount = nonNegative(value.requiredHandoffCount);
|
|
944
|
+
const handoffCount = nonNegative(value.handoffCount);
|
|
945
|
+
const pageCount = nonNegative(value.pageCount);
|
|
946
|
+
requireNetwork(runtime.id === clusterId && runtime.phase === 'draining'
|
|
947
|
+
&& targetSet.cloudlyClusterId === clusterId
|
|
948
|
+
&& requiredHandoffCount <= fleetCutoverContract.maximumPreparedVolumeHandoffs
|
|
949
|
+
&& handoffCount <= fleetCutoverContract.maximumPreparedVolumeHandoffs
|
|
950
|
+
&& pageCount <= fleetCutoverContract.maximumPreparedVolumeHandoffPages
|
|
951
|
+
&& pageCount === Math.ceil(handoffCount
|
|
952
|
+
/ fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries)
|
|
953
|
+
&& (state === 'complete') === (requiredHandoffCount === handoffCount));
|
|
954
|
+
return {
|
|
955
|
+
id,
|
|
956
|
+
generation,
|
|
957
|
+
previous,
|
|
958
|
+
clusterId,
|
|
959
|
+
runtime: runtime,
|
|
960
|
+
scope: reference(value.scope),
|
|
961
|
+
targetSet,
|
|
962
|
+
state,
|
|
963
|
+
requiredHandoffCount,
|
|
964
|
+
handoffCount,
|
|
965
|
+
pageCount,
|
|
966
|
+
handoffSetDigest: networkDigest(value.handoffSetDigest),
|
|
967
|
+
acceptedAt: networkCounter(value.acceptedAt),
|
|
968
|
+
digest: networkDigest(value.digest),
|
|
969
|
+
};
|
|
970
|
+
};
|
|
971
|
+
export const snapshotFleetCutoverPreparedVolumeHandoffAggregate = (valueArg) => safe(() => preparedVolumeHandoffAggregate(captureNetwork(valueArg)));
|
|
972
|
+
export const computeFleetCutoverPreparedVolumeHandoffAggregateDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffAggregateDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffAggregate(valueArg));
|
|
973
|
+
export const validateFleetCutoverPreparedVolumeHandoffAggregate = async (valueArg) => {
|
|
974
|
+
try {
|
|
975
|
+
const value = snapshotFleetCutoverPreparedVolumeHandoffAggregate(valueArg);
|
|
976
|
+
return value.digest === await computeFleetCutoverPreparedVolumeHandoffAggregateDigest(value)
|
|
977
|
+
? [] : ['fleet cutover prepared volume handoff aggregate digest does not match'];
|
|
978
|
+
}
|
|
979
|
+
catch {
|
|
980
|
+
return ['fleet cutover prepared volume handoff aggregate must use its exact canonical schema'];
|
|
981
|
+
}
|
|
982
|
+
};
|
|
983
|
+
const preparedVolumeHandoffPage = (valueArg) => {
|
|
984
|
+
const value = networkRecord(valueArg, [
|
|
985
|
+
'id', 'generation', 'aggregate', 'pageIndex', 'handoffs', 'handoffSetPageDigest', 'digest',
|
|
986
|
+
]);
|
|
987
|
+
requireNetwork(value.generation === 1);
|
|
988
|
+
const handoffs = networkSorted(networkList(value.handoffs, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
|
|
989
|
+
const item = networkRecord(itemArg, ['id', 'generation', 'digest', 'nodeId']);
|
|
990
|
+
return fleetCutoverPreparedVolumeHandoffPageReferenceOf({
|
|
991
|
+
...reference({ id: item.id, generation: item.generation, digest: item.digest }),
|
|
992
|
+
nodeId: networkNodeId(item.nodeId),
|
|
993
|
+
});
|
|
994
|
+
}), itemArg => `${itemArg.id}\u0000${String(itemArg.generation).padStart(16, '0')}\u0000${itemArg.digest}`);
|
|
995
|
+
const pageIndex = nonNegative(value.pageIndex);
|
|
996
|
+
requireNetwork(handoffs.length > 0
|
|
997
|
+
&& pageIndex < fleetCutoverContract.maximumPreparedVolumeHandoffPages);
|
|
998
|
+
return {
|
|
999
|
+
id: networkId(value.id),
|
|
1000
|
+
generation: 1,
|
|
1001
|
+
aggregate: reference(value.aggregate),
|
|
1002
|
+
pageIndex,
|
|
1003
|
+
handoffs,
|
|
1004
|
+
handoffSetPageDigest: networkDigest(value.handoffSetPageDigest),
|
|
1005
|
+
digest: networkDigest(value.digest),
|
|
1006
|
+
};
|
|
1007
|
+
};
|
|
1008
|
+
export const snapshotFleetCutoverPreparedVolumeHandoffPage = (valueArg) => safe(() => preparedVolumeHandoffPage(captureNetwork(valueArg)));
|
|
1009
|
+
export const computeFleetCutoverPreparedVolumeHandoffPageContentDigest = async (pageIndexArg, handoffsArg) => {
|
|
1010
|
+
const page = preparedVolumeHandoffPage({
|
|
1011
|
+
id: 'FleetCutoverPreparedVolumeHandoffPage:content',
|
|
1012
|
+
generation: 1,
|
|
1013
|
+
aggregate: { id: 'FleetCutoverPreparedVolumeHandoffAggregate:content', generation: 1,
|
|
1014
|
+
digest: `sha256:${'0'.repeat(64)}` },
|
|
1015
|
+
pageIndex: pageIndexArg,
|
|
1016
|
+
handoffs: handoffsArg,
|
|
1017
|
+
handoffSetPageDigest: `sha256:${'0'.repeat(64)}`,
|
|
1018
|
+
digest: `sha256:${'0'.repeat(64)}`,
|
|
1019
|
+
});
|
|
1020
|
+
return canonicalDigest(fleetCutoverContract.preparedVolumeHandoffPageContentDigestDomain, {
|
|
1021
|
+
pageIndex: page.pageIndex,
|
|
1022
|
+
handoffs: page.handoffs,
|
|
1023
|
+
digest: `sha256:${'0'.repeat(64)}`,
|
|
1024
|
+
});
|
|
1025
|
+
};
|
|
1026
|
+
export const computeFleetCutoverPreparedVolumeHandoffPageDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.preparedVolumeHandoffPageDigestDomain, snapshotFleetCutoverPreparedVolumeHandoffPage(valueArg));
|
|
1027
|
+
export const validateFleetCutoverPreparedVolumeHandoffPage = async (valueArg) => {
|
|
1028
|
+
try {
|
|
1029
|
+
const value = snapshotFleetCutoverPreparedVolumeHandoffPage(valueArg);
|
|
1030
|
+
if (value.handoffSetPageDigest
|
|
1031
|
+
!== await computeFleetCutoverPreparedVolumeHandoffPageContentDigest(value.pageIndex, value.handoffs)) {
|
|
1032
|
+
return ['fleet cutover prepared volume handoff page content digest does not match'];
|
|
1033
|
+
}
|
|
1034
|
+
return value.digest === await computeFleetCutoverPreparedVolumeHandoffPageDigest(value)
|
|
1035
|
+
? [] : ['fleet cutover prepared volume handoff page digest does not match'];
|
|
1036
|
+
}
|
|
1037
|
+
catch {
|
|
1038
|
+
return ['fleet cutover prepared volume handoff page must use its exact canonical schema'];
|
|
1039
|
+
}
|
|
1040
|
+
};
|
|
1041
|
+
export const computeFleetCutoverPreparedVolumeHandoffSetDigest = async (entriesArg) => safe(async () => {
|
|
1042
|
+
const entries = networkSorted(networkList(captureNetwork(entriesArg), fleetCutoverContract.maximumPreparedVolumeHandoffPages, itemArg => {
|
|
1043
|
+
const item = networkRecord(itemArg, ['pageIndex', 'handoffSetPageDigest']);
|
|
1044
|
+
return {
|
|
1045
|
+
pageIndex: nonNegative(item.pageIndex),
|
|
1046
|
+
handoffSetPageDigest: networkDigest(item.handoffSetPageDigest),
|
|
1047
|
+
};
|
|
1048
|
+
}), itemArg => String(itemArg.pageIndex).padStart(8, '0'));
|
|
1049
|
+
requireNetwork(entries.every((entryArg, indexArg) => entryArg.pageIndex === indexArg));
|
|
1050
|
+
return canonicalDigest(fleetCutoverContract.preparedVolumeHandoffSetDigestDomain, {
|
|
1051
|
+
entries,
|
|
1052
|
+
digest: `sha256:${'0'.repeat(64)}`,
|
|
1053
|
+
});
|
|
1054
|
+
});
|
|
1055
|
+
/**
|
|
1056
|
+
* Full pinned-set proof. The caller must supply every page for the exact aggregate revision; a
|
|
1057
|
+
* node-local subset or a mixed revision can never satisfy this binder.
|
|
1058
|
+
*/
|
|
1059
|
+
export const bindFleetCutoverPreparedVolumeHandoffPages = async (aggregateArg, pagesArg) => {
|
|
1060
|
+
const aggregate = snapshotFleetCutoverPreparedVolumeHandoffAggregate(aggregateArg);
|
|
1061
|
+
if ((await validateFleetCutoverPreparedVolumeHandoffAggregate(aggregate)).length)
|
|
1062
|
+
fail();
|
|
1063
|
+
const pages = safe(() => {
|
|
1064
|
+
requireNetwork(Array.isArray(pagesArg)
|
|
1065
|
+
&& Object.getPrototypeOf(pagesArg) === Array.prototype
|
|
1066
|
+
&& pagesArg.length <= fleetCutoverContract.maximumPreparedVolumeHandoffPages);
|
|
1067
|
+
const keys = Reflect.ownKeys(pagesArg);
|
|
1068
|
+
requireNetwork(keys.length === pagesArg.length + 1);
|
|
1069
|
+
const result = [];
|
|
1070
|
+
for (let index = 0; index < pagesArg.length; index++) {
|
|
1071
|
+
const descriptor = Object.getOwnPropertyDescriptor(pagesArg, String(index));
|
|
1072
|
+
requireNetwork(descriptor?.enumerable && Object.hasOwn(descriptor, 'value'));
|
|
1073
|
+
result.push(snapshotFleetCutoverPreparedVolumeHandoffPage(descriptor.value));
|
|
1074
|
+
}
|
|
1075
|
+
return networkSorted(result, itemArg => String(itemArg.pageIndex).padStart(8, '0'));
|
|
1076
|
+
});
|
|
1077
|
+
requireNetwork(pages.length === aggregate.pageCount);
|
|
1078
|
+
let handoffCount = 0;
|
|
1079
|
+
const seen = new Set();
|
|
1080
|
+
let previousHandoffKey = null;
|
|
1081
|
+
for (const [index, page] of pages.entries()) {
|
|
1082
|
+
requireNetwork(page.pageIndex === index
|
|
1083
|
+
&& page.aggregate.id === aggregate.id
|
|
1084
|
+
&& page.aggregate.generation === aggregate.generation
|
|
1085
|
+
&& page.aggregate.digest === aggregate.digest
|
|
1086
|
+
&& !(await validateFleetCutoverPreparedVolumeHandoffPage(page)).length);
|
|
1087
|
+
const expectedLength = index < pages.length - 1
|
|
1088
|
+
? fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries
|
|
1089
|
+
: aggregate.handoffCount
|
|
1090
|
+
% fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries
|
|
1091
|
+
|| fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries;
|
|
1092
|
+
requireNetwork(page.handoffs.length === expectedLength);
|
|
1093
|
+
handoffCount += page.handoffs.length;
|
|
1094
|
+
for (const handoff of page.handoffs) {
|
|
1095
|
+
const key = `${handoff.id}\u0000${handoff.generation}\u0000${handoff.digest}`;
|
|
1096
|
+
requireNetwork(!seen.has(key) && (previousHandoffKey === null || previousHandoffKey < key));
|
|
1097
|
+
seen.add(key);
|
|
1098
|
+
previousHandoffKey = key;
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
const entries = pages.map(page => ({
|
|
1102
|
+
pageIndex: page.pageIndex,
|
|
1103
|
+
handoffSetPageDigest: page.handoffSetPageDigest,
|
|
1104
|
+
}));
|
|
1105
|
+
requireNetwork(handoffCount === aggregate.handoffCount
|
|
1106
|
+
&& aggregate.handoffSetDigest
|
|
1107
|
+
=== await computeFleetCutoverPreparedVolumeHandoffSetDigest(entries));
|
|
1108
|
+
return { aggregate, pages };
|
|
1109
|
+
};
|
|
594
1110
|
const volumeFence = (valueArg) => {
|
|
595
1111
|
requireNetwork(valueArg !== null && typeof valueArg === 'object');
|
|
596
1112
|
const state = valueArg.state;
|
|
@@ -683,6 +1199,38 @@ export const bindFleetCutoverAdoptionToVolumeFence = (adoptionArg, fenceArg) =>
|
|
|
683
1199
|
&& adoption.palletFence.digest === fence.digest);
|
|
684
1200
|
return { adoption, fence };
|
|
685
1201
|
});
|
|
1202
|
+
/**
|
|
1203
|
+
* Joins the accepted adoption result to the full handoff and provider-ready claim content.
|
|
1204
|
+
* Native attachment fencing and accepted-record dereferencing remain owner checks.
|
|
1205
|
+
*/
|
|
1206
|
+
export const bindFleetCutoverAdoptionToStorageClaim = async (adoptionArg, handoffArg, claimArg) => {
|
|
1207
|
+
try {
|
|
1208
|
+
const adoption = snapshotFleetCutoverCorestoreAdoptionReceipt(adoptionArg);
|
|
1209
|
+
const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
|
|
1210
|
+
const claim = snapshotRuntimeStorageClaim(claimArg);
|
|
1211
|
+
if ((await validateFleetCutoverCorestoreAdoptionReceipt(adoption)).length
|
|
1212
|
+
|| (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
|
|
1213
|
+
|| (await validateRuntimeStorageClaim(claim)).length)
|
|
1214
|
+
fail();
|
|
1215
|
+
await bindRuntimeStorageClaimToIntent(claim, handoff.claimIntent);
|
|
1216
|
+
requireNetwork(adoption.clusterId === handoff.clusterId
|
|
1217
|
+
&& adoption.nodeId === handoff.nodeId
|
|
1218
|
+
&& adoption.serviceId === handoff.serviceId
|
|
1219
|
+
&& adoption.volumeId === handoff.volumeId
|
|
1220
|
+
&& adoption.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
|
|
1221
|
+
&& adoption.handoffIntent.id === handoff.id
|
|
1222
|
+
&& adoption.handoffIntent.generation === handoff.generation
|
|
1223
|
+
&& adoption.handoffIntent.digest === handoff.digest
|
|
1224
|
+
&& adoption.claim.id === claim.id
|
|
1225
|
+
&& adoption.claim.generation === claim.generation
|
|
1226
|
+
&& adoption.claim.digest === claim.digest
|
|
1227
|
+
&& adoption.acceptedAt >= handoff.acceptedAt);
|
|
1228
|
+
return { adoption, handoff, claim };
|
|
1229
|
+
}
|
|
1230
|
+
catch {
|
|
1231
|
+
return fail();
|
|
1232
|
+
}
|
|
1233
|
+
};
|
|
686
1234
|
export const validateFleetCutoverVolumeHandoffIntent = async (valueArg) => {
|
|
687
1235
|
try {
|
|
688
1236
|
const value = snapshotFleetCutoverVolumeHandoffIntent(valueArg);
|
|
@@ -735,6 +1283,235 @@ const runtimeSession = (valueArg) => {
|
|
|
735
1283
|
runtimeNamespace: networkId(value.runtimeNamespace),
|
|
736
1284
|
};
|
|
737
1285
|
};
|
|
1286
|
+
const storageAdoptionGrant = (valueArg) => {
|
|
1287
|
+
const value = networkRecord(valueArg, [
|
|
1288
|
+
'id', 'generation', 'previous', 'clusterId', 'nodeId', 'serviceId', 'volumeId',
|
|
1289
|
+
'observedMount', 'runtime', 'session', 'handoffIntent', 'palletFence', 'acceptedAt',
|
|
1290
|
+
'digest',
|
|
1291
|
+
]);
|
|
1292
|
+
const id = networkId(value.id);
|
|
1293
|
+
const generation = networkCounter(value.generation);
|
|
1294
|
+
const previous = value.previous === null ? null : reference(value.previous);
|
|
1295
|
+
requireNetwork(generation === 1
|
|
1296
|
+
? previous === null
|
|
1297
|
+
: previous?.id === id && previous.generation === generation - 1);
|
|
1298
|
+
const clusterId = networkId(value.clusterId);
|
|
1299
|
+
const nodeId = networkNodeId(value.nodeId);
|
|
1300
|
+
const runtime = runtimeReference(value.runtime);
|
|
1301
|
+
const session = runtimeSession(value.session);
|
|
1302
|
+
requireNetwork(runtime.id === clusterId && runtime.phase === 'pallet'
|
|
1303
|
+
&& session.clusterId === clusterId
|
|
1304
|
+
&& session.nodeId === nodeId
|
|
1305
|
+
&& session.controller.kind === 'cloudly');
|
|
1306
|
+
return {
|
|
1307
|
+
id,
|
|
1308
|
+
generation,
|
|
1309
|
+
previous,
|
|
1310
|
+
clusterId,
|
|
1311
|
+
nodeId,
|
|
1312
|
+
serviceId: networkId(value.serviceId),
|
|
1313
|
+
volumeId: networkId(value.volumeId),
|
|
1314
|
+
observedMount: persistentVolumeMountDescriptor(value.observedMount),
|
|
1315
|
+
runtime: runtime,
|
|
1316
|
+
session,
|
|
1317
|
+
handoffIntent: reference(value.handoffIntent),
|
|
1318
|
+
palletFence: reference(value.palletFence),
|
|
1319
|
+
acceptedAt: networkCounter(value.acceptedAt),
|
|
1320
|
+
digest: networkDigest(value.digest),
|
|
1321
|
+
};
|
|
1322
|
+
};
|
|
1323
|
+
export const snapshotFleetCutoverStorageAdoptionGrant = (valueArg) => safe(() => storageAdoptionGrant(captureNetwork(valueArg)));
|
|
1324
|
+
export const computeFleetCutoverStorageAdoptionGrantDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.storageAdoptionGrantDigestDomain, snapshotFleetCutoverStorageAdoptionGrant(valueArg));
|
|
1325
|
+
export const validateFleetCutoverStorageAdoptionGrant = async (valueArg) => {
|
|
1326
|
+
try {
|
|
1327
|
+
const value = snapshotFleetCutoverStorageAdoptionGrant(valueArg);
|
|
1328
|
+
return value.digest === await computeFleetCutoverStorageAdoptionGrantDigest(value)
|
|
1329
|
+
? [] : ['fleet cutover storage adoption grant digest does not match'];
|
|
1330
|
+
}
|
|
1331
|
+
catch {
|
|
1332
|
+
return ['fleet cutover storage adoption grant must use its exact canonical schema'];
|
|
1333
|
+
}
|
|
1334
|
+
};
|
|
1335
|
+
/** Content join only; the controller must still prove this is the live current session and phase. */
|
|
1336
|
+
export const bindFleetCutoverStorageAdoptionGrant = async (grantArg, handoffArg, heldFenceArg) => {
|
|
1337
|
+
try {
|
|
1338
|
+
const grant = snapshotFleetCutoverStorageAdoptionGrant(grantArg);
|
|
1339
|
+
const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
|
|
1340
|
+
const fence = snapshotFleetCutoverVolumeFence(heldFenceArg);
|
|
1341
|
+
if ((await validateFleetCutoverStorageAdoptionGrant(grant)).length
|
|
1342
|
+
|| (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
|
|
1343
|
+
|| (await validateFleetCutoverVolumeFence(fence)).length)
|
|
1344
|
+
fail();
|
|
1345
|
+
requireNetwork(fence.state === 'held'
|
|
1346
|
+
&& grant.clusterId === handoff.clusterId
|
|
1347
|
+
&& grant.nodeId === handoff.nodeId
|
|
1348
|
+
&& grant.serviceId === handoff.serviceId
|
|
1349
|
+
&& grant.volumeId === handoff.volumeId
|
|
1350
|
+
&& grant.observedMount.type === handoff.observedMount.type
|
|
1351
|
+
&& grant.observedMount.classification === handoff.observedMount.classification
|
|
1352
|
+
&& grant.observedMount.sourceIdentityDigest === handoff.observedMount.sourceIdentityDigest
|
|
1353
|
+
&& grant.observedMount.targetIdentityDigest === handoff.observedMount.targetIdentityDigest
|
|
1354
|
+
&& grant.observedMount.readOnly === handoff.observedMount.readOnly
|
|
1355
|
+
&& grant.observedMount.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
|
|
1356
|
+
&& grant.handoffIntent.id === handoff.id
|
|
1357
|
+
&& grant.handoffIntent.generation === handoff.generation
|
|
1358
|
+
&& grant.handoffIntent.digest === handoff.digest
|
|
1359
|
+
&& grant.palletFence.id === fence.id
|
|
1360
|
+
&& grant.palletFence.generation === fence.generation
|
|
1361
|
+
&& grant.palletFence.digest === fence.digest
|
|
1362
|
+
&& fence.clusterId === handoff.clusterId
|
|
1363
|
+
&& fence.nodeId === handoff.nodeId
|
|
1364
|
+
&& fence.serviceId === handoff.serviceId
|
|
1365
|
+
&& fence.volumeId === handoff.volumeId
|
|
1366
|
+
&& fence.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
|
|
1367
|
+
&& fence.handoffIntent.id === handoff.id
|
|
1368
|
+
&& fence.handoffIntent.generation === handoff.generation
|
|
1369
|
+
&& fence.handoffIntent.digest === handoff.digest
|
|
1370
|
+
&& fence.heldRuntime.id === handoff.runtime.id
|
|
1371
|
+
&& fence.heldRuntime.phase === handoff.runtime.phase
|
|
1372
|
+
&& fence.heldRuntime.generation === handoff.runtime.generation
|
|
1373
|
+
&& grant.session.controller.id === handoff.claimIntent.controller.id
|
|
1374
|
+
&& grant.session.controller.epoch === handoff.claimIntent.controller.epoch
|
|
1375
|
+
&& grant.session.runtimeNamespace === handoff.claimIntent.runtimeNamespace
|
|
1376
|
+
&& grant.acceptedAt >= fence.heldAt);
|
|
1377
|
+
return { grant, handoff, fence };
|
|
1378
|
+
}
|
|
1379
|
+
catch {
|
|
1380
|
+
return fail();
|
|
1381
|
+
}
|
|
1382
|
+
};
|
|
1383
|
+
export const snapshotFleetCutoverStorageAdoptionBundle = (valueArg) => safe(() => {
|
|
1384
|
+
const value = networkRecord(captureNetwork(valueArg), [
|
|
1385
|
+
'grant', 'fence', 'adoption', 'claim',
|
|
1386
|
+
]);
|
|
1387
|
+
const fence = snapshotFleetCutoverVolumeFence(value.fence);
|
|
1388
|
+
requireNetwork(fence.state === 'consumed');
|
|
1389
|
+
return {
|
|
1390
|
+
grant: snapshotFleetCutoverStorageAdoptionGrant(value.grant),
|
|
1391
|
+
fence,
|
|
1392
|
+
adoption: snapshotFleetCutoverCorestoreAdoptionReceipt(value.adoption),
|
|
1393
|
+
claim: snapshotRuntimeStorageClaim(value.claim),
|
|
1394
|
+
};
|
|
1395
|
+
});
|
|
1396
|
+
/**
|
|
1397
|
+
* Binds the complete post-adoption content. Physical lineage remains the provider-produced
|
|
1398
|
+
* adoption digest and is deliberately never equated to the observed Docker source identity.
|
|
1399
|
+
*/
|
|
1400
|
+
export const bindFleetCutoverStorageAdoptionBundle = async (valueArg, handoffArg) => {
|
|
1401
|
+
try {
|
|
1402
|
+
const bundle = snapshotFleetCutoverStorageAdoptionBundle(valueArg);
|
|
1403
|
+
const handoff = snapshotFleetCutoverPreparedVolumeHandoffIntent(handoffArg);
|
|
1404
|
+
const { grant, fence, adoption, claim } = bundle;
|
|
1405
|
+
if ((await validateFleetCutoverStorageAdoptionGrant(grant)).length
|
|
1406
|
+
|| (await validateFleetCutoverPreparedVolumeHandoffIntent(handoff)).length
|
|
1407
|
+
|| (await validateFleetCutoverVolumeFence(fence)).length
|
|
1408
|
+
|| (await validateFleetCutoverCorestoreAdoptionReceipt(adoption)).length
|
|
1409
|
+
|| (await validateRuntimeStorageClaim(claim)).length)
|
|
1410
|
+
fail();
|
|
1411
|
+
await bindRuntimeStorageClaimToIntent(claim, handoff.claimIntent);
|
|
1412
|
+
requireNetwork(grant.clusterId === handoff.clusterId
|
|
1413
|
+
&& grant.nodeId === handoff.nodeId
|
|
1414
|
+
&& grant.serviceId === handoff.serviceId
|
|
1415
|
+
&& grant.volumeId === handoff.volumeId
|
|
1416
|
+
&& grant.observedMount.type === handoff.observedMount.type
|
|
1417
|
+
&& grant.observedMount.classification === handoff.observedMount.classification
|
|
1418
|
+
&& grant.observedMount.sourceIdentityDigest === handoff.observedMount.sourceIdentityDigest
|
|
1419
|
+
&& grant.observedMount.targetIdentityDigest === handoff.observedMount.targetIdentityDigest
|
|
1420
|
+
&& grant.observedMount.readOnly === handoff.observedMount.readOnly
|
|
1421
|
+
&& grant.observedMount.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
|
|
1422
|
+
&& grant.session.controller.id === handoff.claimIntent.controller.id
|
|
1423
|
+
&& grant.session.controller.epoch === handoff.claimIntent.controller.epoch
|
|
1424
|
+
&& grant.session.runtimeNamespace === handoff.claimIntent.runtimeNamespace
|
|
1425
|
+
&& grant.handoffIntent.id === handoff.id
|
|
1426
|
+
&& grant.handoffIntent.generation === handoff.generation
|
|
1427
|
+
&& grant.handoffIntent.digest === handoff.digest
|
|
1428
|
+
&& fence.clusterId === grant.clusterId
|
|
1429
|
+
&& fence.nodeId === grant.nodeId
|
|
1430
|
+
&& fence.serviceId === grant.serviceId
|
|
1431
|
+
&& fence.volumeId === grant.volumeId
|
|
1432
|
+
&& fence.mountIdentityDigest === grant.observedMount.mountIdentityDigest
|
|
1433
|
+
&& fence.handoffIntent.id === handoff.id
|
|
1434
|
+
&& fence.handoffIntent.generation === handoff.generation
|
|
1435
|
+
&& fence.handoffIntent.digest === handoff.digest
|
|
1436
|
+
&& fence.previous !== null
|
|
1437
|
+
&& fence.previous.id === grant.palletFence.id
|
|
1438
|
+
&& fence.previous.generation === grant.palletFence.generation
|
|
1439
|
+
&& fence.previous.digest === grant.palletFence.digest
|
|
1440
|
+
&& fence.consumedRuntime.id === grant.runtime.id
|
|
1441
|
+
&& fence.consumedRuntime.phase === grant.runtime.phase
|
|
1442
|
+
&& fence.consumedRuntime.generation === grant.runtime.generation
|
|
1443
|
+
&& adoption.clusterId === handoff.clusterId
|
|
1444
|
+
&& adoption.nodeId === handoff.nodeId
|
|
1445
|
+
&& adoption.serviceId === handoff.serviceId
|
|
1446
|
+
&& adoption.volumeId === handoff.volumeId
|
|
1447
|
+
&& adoption.mountIdentityDigest === handoff.observedMount.mountIdentityDigest
|
|
1448
|
+
&& adoption.handoffIntent.id === handoff.id
|
|
1449
|
+
&& adoption.handoffIntent.generation === handoff.generation
|
|
1450
|
+
&& adoption.handoffIntent.digest === handoff.digest
|
|
1451
|
+
&& adoption.palletFence.id === grant.palletFence.id
|
|
1452
|
+
&& adoption.palletFence.generation === grant.palletFence.generation
|
|
1453
|
+
&& adoption.palletFence.digest === grant.palletFence.digest
|
|
1454
|
+
&& adoption.claim.id === claim.id
|
|
1455
|
+
&& adoption.claim.generation === claim.generation
|
|
1456
|
+
&& adoption.claim.digest === claim.digest
|
|
1457
|
+
&& fence.adoptionReceipt.id === adoption.id
|
|
1458
|
+
&& fence.adoptionReceipt.generation === adoption.generation
|
|
1459
|
+
&& fence.adoptionReceipt.digest === adoption.digest
|
|
1460
|
+
&& fence.claim.id === claim.id
|
|
1461
|
+
&& fence.claim.generation === claim.generation
|
|
1462
|
+
&& fence.claim.digest === claim.digest
|
|
1463
|
+
&& adoption.acceptedAt >= grant.acceptedAt
|
|
1464
|
+
&& fence.consumedAt >= adoption.acceptedAt);
|
|
1465
|
+
return { bundle, handoff };
|
|
1466
|
+
}
|
|
1467
|
+
catch {
|
|
1468
|
+
return fail();
|
|
1469
|
+
}
|
|
1470
|
+
};
|
|
1471
|
+
export const snapshotFleetCutoverHeldVolumeFenceEvidencePage = (valueArg) => safe(() => {
|
|
1472
|
+
const value = networkRecord(captureNetwork(valueArg), ['aggregate', 'page', 'nodeId', 'fences']);
|
|
1473
|
+
const aggregate = reference(value.aggregate);
|
|
1474
|
+
const page = preparedVolumeHandoffPage(value.page);
|
|
1475
|
+
const nodeId = networkNodeId(value.nodeId);
|
|
1476
|
+
requireNetwork(page.aggregate.id === aggregate.id
|
|
1477
|
+
&& page.aggregate.generation === aggregate.generation
|
|
1478
|
+
&& page.aggregate.digest === aggregate.digest);
|
|
1479
|
+
const pageHandoffs = page.handoffs.filter(itemArg => itemArg.nodeId === nodeId);
|
|
1480
|
+
const fences = networkSorted(networkList(value.fences, fleetCutoverContract.maximumPreparedVolumeHandoffMutationEntries, itemArg => {
|
|
1481
|
+
const fence = volumeFence(itemArg);
|
|
1482
|
+
requireNetwork(fence.state === 'held' && fence.nodeId === nodeId);
|
|
1483
|
+
return fence;
|
|
1484
|
+
}), itemArg => `${itemArg.handoffIntent.id}\u0000${itemArg.handoffIntent.generation}\u0000${itemArg.handoffIntent.digest}`);
|
|
1485
|
+
requireNetwork(fences.length === pageHandoffs.length
|
|
1486
|
+
&& fences.every((fenceArg, indexArg) => {
|
|
1487
|
+
const handoff = pageHandoffs[indexArg];
|
|
1488
|
+
return fenceArg.handoffIntent.id === handoff.id
|
|
1489
|
+
&& fenceArg.handoffIntent.generation === handoff.generation
|
|
1490
|
+
&& fenceArg.handoffIntent.digest === handoff.digest;
|
|
1491
|
+
}));
|
|
1492
|
+
return { aggregate, page, nodeId, fences };
|
|
1493
|
+
});
|
|
1494
|
+
export const validateFleetCutoverHeldVolumeFenceEvidencePage = async (valueArg) => {
|
|
1495
|
+
try {
|
|
1496
|
+
const value = snapshotFleetCutoverHeldVolumeFenceEvidencePage(valueArg);
|
|
1497
|
+
if (new TextEncoder().encode(canonicalizeStrictJson(value, fail)).byteLength
|
|
1498
|
+
> fleetCutoverContract.maximumHeldVolumeFenceEvidenceBytes) {
|
|
1499
|
+
return ['fleet cutover held volume fence evidence page exceeds its encoded byte bound'];
|
|
1500
|
+
}
|
|
1501
|
+
if ((await validateFleetCutoverPreparedVolumeHandoffPage(value.page)).length) {
|
|
1502
|
+
return ['fleet cutover held volume fence evidence page is not a valid immutable page'];
|
|
1503
|
+
}
|
|
1504
|
+
for (const fence of value.fences) {
|
|
1505
|
+
if ((await validateFleetCutoverVolumeFence(fence)).length) {
|
|
1506
|
+
return ['fleet cutover held volume fence evidence contains an invalid held fence'];
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
return [];
|
|
1510
|
+
}
|
|
1511
|
+
catch {
|
|
1512
|
+
return ['fleet cutover held volume fence evidence page must use its exact canonical schema'];
|
|
1513
|
+
}
|
|
1514
|
+
};
|
|
738
1515
|
export const snapshotFleetCutoverCoreflowRetirementEvidence = (valueArg) => safe(() => {
|
|
739
1516
|
const value = networkRecord(captureNetwork(valueArg), [
|
|
740
1517
|
'id', 'generation', 'clusterId', 'scope', 'targetSet', 'runtime', 'relay', 'spark',
|
|
@@ -1018,4 +1795,4 @@ export const snapshotFleetCutoverRuntimeSpecRelease = (valueArg) => safe(() => {
|
|
|
1018
1795
|
? { ...base, kind, emptyPublishedPortsPolicy: reference(value.emptyPublishedPortsPolicy) }
|
|
1019
1796
|
: { ...base, kind, ingressAuthority: reference(value.ingressAuthority) };
|
|
1020
1797
|
});
|
|
1021
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUFxZHZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEQsZUFBZSxFQUFFLEdBQUc7SUFDcEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsd0JBQXdCLEVBQUUsR0FBRztJQUM3QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNCQUFzQixFQUFFLEdBQUc7SUFDM0Isc0JBQXNCLEVBQUUsT0FBTztJQUMvQiwrQkFBK0IsRUFBRSxnREFBZ0Q7SUFDakYsK0JBQStCLEVBQUUsZ0RBQWdEO0lBQ2pGLHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSxnQ0FBZ0MsRUFBRSxpREFBaUQ7SUFDbkYsNkJBQTZCLEVBQUUsOENBQThDO0lBQzdFLDJCQUEyQixFQUFFLDJDQUEyQztJQUN4RSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSx1QkFBdUIsRUFBRSx1Q0FBdUM7SUFDaEUsNkJBQTZCLEVBQUUsNkNBQTZDO0lBQzVFLDhCQUE4QixFQUFFLDhDQUE4QztJQUM5RSw4QkFBOEIsRUFBRSw4Q0FBOEM7SUFDOUUs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
|
|
1798
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdEUsT0FBTyxFQUNMLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0IsaUNBQWlDLEVBQ2pDLDJCQUEyQixFQUMzQixpQ0FBaUMsR0FDbEMsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUEwbkJ2QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2hELGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLHdCQUF3QixFQUFFLEdBQUc7SUFDN0IscUJBQXFCLEVBQUUsRUFBRTtJQUN6Qiw0QkFBNEIsRUFBRSxHQUFHO0lBQ2pDLHNCQUFzQixFQUFFLElBQUk7SUFDNUIsc0NBQXNDLEVBQUUsU0FBUztJQUNqRCwyQ0FBMkMsRUFBRSxFQUFFO0lBQy9DLG1GQUFtRjtJQUNuRiw2QkFBNkIsRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUN4QyxpQ0FBaUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ25ELG1DQUFtQyxFQUFFLE9BQU87SUFDNUMs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
|