@serve.zone/interfaces 32.22.0 → 32.23.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 +46 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/corestorelegacyadoption.d.ts +178 -0
- package/dist_ts/data/corestorelegacyadoption.js +289 -0
- package/dist_ts/data/index.d.ts +2 -0
- package/dist_ts/data/index.js +3 -1
- package/dist_ts/data/networkprotection.d.ts +13 -0
- package/dist_ts/data/networkprotection.js +8 -2
- package/dist_ts/data/service.d.ts +15 -1
- package/dist_ts/data/service.js +1 -1
- package/dist_ts/data/serviceruntime.d.ts +8 -3
- package/dist_ts/data/serviceruntime.js +3 -2
- package/dist_ts/data/servicevolumeinitialization.d.ts +91 -0
- package/dist_ts/data/servicevolumeinitialization.js +93 -0
- package/dist_ts/platform/types.d.ts +45 -0
- package/dist_ts/platform/types.js +27 -2
- package/dist_ts/requests/corestore.d.ts +60 -0
- package/dist_ts/requests/corestore.js +1 -1
- package/dist_ts/requests/platform.d.ts +6 -1
- package/dist_ts/requests/service.d.ts +23 -0
- package/package.json +1 -1
- package/readme.md +133 -6
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/corestorelegacyadoption.ts +471 -0
- package/ts/data/index.ts +2 -0
- package/ts/data/networkprotection.ts +20 -1
- package/ts/data/service.ts +16 -0
- package/ts/data/serviceruntime.ts +8 -2
- package/ts/data/servicevolumeinitialization.ts +159 -0
- package/ts/platform/types.ts +75 -0
- package/ts/requests/corestore.ts +79 -0
- package/ts/requests/platform.ts +6 -0
- package/ts/requests/service.ts +28 -0
|
@@ -11,6 +11,7 @@ export const runtimeNetworkProtectionContract = Object.freeze({
|
|
|
11
11
|
unavailable: 'null-native-barrier-removes-allocation-eligibility',
|
|
12
12
|
historical: 'retain-for-outbox-replay-never-current-allocation-eligibility',
|
|
13
13
|
quarantine: 'no-release-authority',
|
|
14
|
+
maximumHostAddresses: 32,
|
|
14
15
|
});
|
|
15
16
|
const scopeOf = (value) => ({ controller: value.controller, nodeId: value.nodeId, runtimeNamespace: value.runtimeNamespace });
|
|
16
17
|
const scopeKey = (value) => networkCanonical([value.nodeId, value.runtimeNamespace]);
|
|
@@ -72,7 +73,7 @@ export const admitRuntimeNetworkProtectionReceipt = async (value, previousValue,
|
|
|
72
73
|
}
|
|
73
74
|
};
|
|
74
75
|
export const snapshotReportRuntimeNetworkProtectionRequest = (value) => networkSafe(() => {
|
|
75
|
-
const item = networkRecord(captureNetwork(value), ['session', 'receipt'], ['uplinkAddress']);
|
|
76
|
+
const item = networkRecord(captureNetwork(value), ['session', 'receipt'], ['uplinkAddress', 'hostAddresses']);
|
|
76
77
|
const request = {
|
|
77
78
|
session: snapshotRuntimeSessionBinding(item.session),
|
|
78
79
|
receipt: snapshotRuntimeNetworkProtectionReceipt(item.receipt),
|
|
@@ -80,6 +81,11 @@ export const snapshotReportRuntimeNetworkProtectionRequest = (value) => networkS
|
|
|
80
81
|
if (Object.hasOwn(item, 'uplinkAddress')) {
|
|
81
82
|
request.uplinkAddress = runtimeNodeUplinkAddress(item.uplinkAddress);
|
|
82
83
|
}
|
|
84
|
+
if (Object.hasOwn(item, 'hostAddresses')) {
|
|
85
|
+
const hostAddresses = networkSorted(networkList(item.hostAddresses, runtimeNetworkProtectionContract.maximumHostAddresses, runtimeNodeUplinkAddress), (address) => address);
|
|
86
|
+
requireNetwork(hostAddresses.length > 0);
|
|
87
|
+
request.hostAddresses = hostAddresses;
|
|
88
|
+
}
|
|
83
89
|
return request;
|
|
84
90
|
});
|
|
85
91
|
/**
|
|
@@ -147,4 +153,4 @@ export const bindRuntimeNetworkAllocationProtection = async (protectionValue, re
|
|
|
147
153
|
return failNetwork();
|
|
148
154
|
}
|
|
149
155
|
};
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3Byb3RlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL25ldHdvcmtwcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhJLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUM5RixTQUFTLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQzVGLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUF3Q3BGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUQsWUFBWSxFQUFFLCtDQUErQztJQUM3RCxrQkFBa0IsRUFBRSxHQUFHO0lBQ3ZCLFVBQVUsRUFBRSxpRUFBaUU7SUFDN0UsYUFBYSxFQUFFLDJDQUEyQztJQUMxRCxXQUFXLEVBQUUsb0RBQW9EO0lBQ2pFLFVBQVUsRUFBRSwrREFBK0Q7SUFDM0UsVUFBVSxFQUFFLHNCQUFzQjtDQUMxQixDQUFDLENBQUM7QUFFWixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQStCLEVBQTRCLEVBQUUsQ0FDNUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFD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
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya3Byb3RlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL25ldHdvcmtwcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTVELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWhJLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUM5RixTQUFTLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQzVGLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFvRHBGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUQsWUFBWSxFQUFFLCtDQUErQztJQUM3RCxrQkFBa0IsRUFBRSxHQUFHO0lBQ3ZCLFVBQVUsRUFBRSxpRUFBaUU7SUFDN0UsYUFBYSxFQUFFLDJDQUEyQztJQUMxRCxXQUFXLEVBQUUsb0RBQW9EO0lBQ2pFLFVBQVUsRUFBRSwrREFBK0Q7SUFDM0UsVUFBVSxFQUFFLHNCQUFzQjtJQUNsQyxvQkFBb0IsRUFBRSxFQUFFO0NBQ2hCLENBQUMsQ0FBQztBQUVaLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBK0IsRUFBNEIsRUFBRSxDQUM1RSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNyRyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQW1ELEVBQVUsRUFBRSxDQUMvRSxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRyxDQUFDLEtBQWMsRUFBb0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7SUFDNUgsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVTtRQUMvRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvSCxjQUFjLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVE7V0FDekMsZ0VBQWdFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7V0FDbEYsSUFBSSxDQUFDLE1BQU0sS0FBSyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzdELE1BQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3SSxPQUFPLEVBQUUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLO1FBQ3pDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDbkgsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDN0csTUFBTSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHLENBQUMsS0FBdUMsRUFBMEIsRUFBRSxDQUM5SCxXQUFXLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxFQUFFLHVDQUF1QyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFN0csK0ZBQStGO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEtBQUssRUFDdkQsS0FBYyxFQUFFLGFBQTZCLEVBQUUsaUJBQTBCLEVBQUUsb0JBQTZCLEVBQ2pCLEVBQUU7SUFDekYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsdUNBQXVDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RyxNQUFNLEtBQUssR0FBRywrQkFBK0IsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sVUFBVSxHQUFHLHdDQUF3QyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDbEcsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQztlQUMxRyxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2VBQ3hFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RixjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxNQUFNLDRDQUE0QyxDQUFDLE9BQU8sQ0FBQztlQUN4RixVQUFVLENBQUMsTUFBTSxLQUFLLE1BQU0sNkNBQTZDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsUUFBUTtZQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQ2hGLENBQUM7WUFDSixjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7bUJBQ2hELFFBQVEsQ0FBQyxNQUFNLEtBQUssTUFBTSw0Q0FBNEMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7Z0JBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDMUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQzttQkFDdEYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7bUJBQzVELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7bUJBQ2hFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RGLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JGLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDeEYsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3BELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO29CQUNqSCxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDL0UsQ0FBQztnQkFDRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzNELGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUN0RixJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQzNFLGNBQWMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDOUUsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxXQUFXLEVBQUUsQ0FBQztJQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkNBQTZDLEdBQUcsQ0FBQyxLQUFjLEVBQTBDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0lBQ3hJLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM5RyxNQUFNLE9BQU8sR0FBMkM7UUFDdEQsT0FBTyxFQUFFLDZCQUE2QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEQsT0FBTyxFQUFFLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDL0QsQ0FBQztJQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsYUFBYSxHQUFHLHdCQUF3QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFDaEUsZ0NBQWdDLENBQUMsb0JBQW9CLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekMsT0FBTyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUNqRSxjQUFjLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO1dBQ3ZDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7V0FDekIsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRiw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsQ0FDdkQsS0FBYyxFQUFFLDBCQUFtQyxFQUFFLDJCQUFvQyxFQUNJLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0lBQ2pILE1BQU0sT0FBTyxHQUFHLDZDQUE2QyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLDZCQUE2QixDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7SUFDMUYsTUFBTSxRQUFRLEdBQUcsNkJBQTZCLENBQUMsY0FBYyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztJQUM1RixjQUFjLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1dBQzVHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLGlCQUFpQixLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1SCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsaUJBQWlCLEtBQUssT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN6RyxjQUFjLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7UUFDekUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsb0JBQW9CLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUNuQyxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDhDQUE4QyxHQUFHLENBQUMsS0FBYyxFQUEyQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRTtJQUMxSSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDO1dBQ2xFLENBQUMsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDM0csQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxDQUFDLEtBQWMsRUFBRSxnQkFBeUIsRUFBMkMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7SUFDakssTUFBTSxRQUFRLEdBQUcsOENBQThDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLEtBQUssRUFDekQsZUFBd0IsRUFBRSxhQUFzQixFQUFFLG9CQUE2QixFQUMyQixFQUFFO0lBQzVHLElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLHdDQUF3QyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSx1Q0FBdUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25JLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsR0FBRyxFQUFFLDZCQUE2QixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEksY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssTUFBTSw2Q0FBNkMsQ0FBQyxVQUFVLENBQUM7ZUFDL0YsUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JHLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQzttQkFDeEYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUM7bUJBQ2xILE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGFBQWEsS0FBSyxJQUFJO21CQUN6RixZQUFZLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO21CQUN4RSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sNENBQTRDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBQ0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxXQUFXLEVBQUUsQ0FBQztJQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDIn0=
|
|
@@ -7,6 +7,7 @@ import type { IServiceWebPushConfig } from './webpush.js';
|
|
|
7
7
|
import type { IImageRolloutStatus, IImmutableImageDeploymentPlan } from './immutableimage.js';
|
|
8
8
|
import type { IServiceDomainRoute, IServicePublicPortMapping, IServiceTargetPort } from './serviceports.js';
|
|
9
9
|
import type { IServiceSecretConfiguration, IServiceSecretDeploymentPlan } from './secret.js';
|
|
10
|
+
import type { TServiceVolumeInitialization } from './servicevolumeinitialization.js';
|
|
10
11
|
export interface IServiceVolume {
|
|
11
12
|
/** Stable Docker volume name. If omitted, Coreflow derives one from service id and mount path. */
|
|
12
13
|
name?: string;
|
|
@@ -21,7 +22,15 @@ export interface IServiceVolume {
|
|
|
21
22
|
backup?: boolean;
|
|
22
23
|
/** Driver-specific options forwarded to Docker's VolumeDriver.Create request. */
|
|
23
24
|
options?: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Server-managed: how the volume's node-local storage claim starts on a Pallet cluster. Only
|
|
27
|
+
* `setServiceVolumeInitialization` writes it; a volume without one is refused as
|
|
28
|
+
* `volume-initialization-unknown` instead of being created empty.
|
|
29
|
+
*/
|
|
30
|
+
initialization?: TServiceVolumeInitialization;
|
|
24
31
|
}
|
|
32
|
+
/** Caller-writable volume declaration. Its initialization has its own fenced request. */
|
|
33
|
+
export type TServiceWritableVolume = Omit<IServiceVolume, 'initialization'>;
|
|
25
34
|
/** Validates the canonical organization authority used by service operations. */
|
|
26
35
|
export declare const validateOrganizationId: (valueArg: unknown) => string[];
|
|
27
36
|
export declare const serviceContainerArgLimits: {
|
|
@@ -169,12 +178,17 @@ export interface IService {
|
|
|
169
178
|
* Caller-writable service data. Immutable rollout state and SecretSet
|
|
170
179
|
* attachments are changed only through their dedicated fenced APIs.
|
|
171
180
|
*/
|
|
172
|
-
export type TServiceWritableData = Omit<IService['data'], 'organizationId' | 'immutableImageRequired' | 'imageDeployment' | 'imageRolloutStatus' | 'secretConfiguration' | 'secretDeployment' | 'mail'> & {
|
|
181
|
+
export type TServiceWritableData = Omit<IService['data'], 'organizationId' | 'immutableImageRequired' | 'imageDeployment' | 'imageRolloutStatus' | 'secretConfiguration' | 'secretDeployment' | 'mail' | 'volumes'> & {
|
|
173
182
|
/**
|
|
174
183
|
* Mail configuration stays caller-writable, except for the CoreMail binding
|
|
175
184
|
* metadata Cloudly derives from reconciliation.
|
|
176
185
|
*/
|
|
177
186
|
mail?: TServiceMailWritableConfig;
|
|
187
|
+
/**
|
|
188
|
+
* Volumes stay caller-writable, except for their initialization, which Cloudly refuses here.
|
|
189
|
+
* A stored initialization stays with the volume of the same mount path and goes with it.
|
|
190
|
+
*/
|
|
191
|
+
volumes?: TServiceWritableVolume[];
|
|
178
192
|
};
|
|
179
193
|
/** Caller-writable update data. Null explicitly removes an existing argument vector. */
|
|
180
194
|
export type TServiceUpdateWritableData = Omit<TServiceWritableData, 'containerArgs'> & {
|
package/dist_ts/data/service.js
CHANGED
|
@@ -65,4 +65,4 @@ export const validateServiceContainerArgs = (containerArgsArg) => {
|
|
|
65
65
|
}
|
|
66
66
|
return [];
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE4Q0EsTUFBTSxtQkFBbUIsR0FBRyxxQ0FBcUMsQ0FBQztBQUVsRSxpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxRQUFpQixFQUFZLEVBQUU7SUFDcEUsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN4RSxPQUFPLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxXQUFXLEVBQUUsRUFBRTtJQUNmLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLGlCQUFpQixFQUFFLEVBQUUsR0FBRyxJQUFJO0NBQ3BCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQWUsRUFBc0IsRUFBRTtJQUNsRixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVE7V0FDMUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztXQUN4QixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztXQUN0QixPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7SUFDOUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLEtBQUssR0FBRztZQUFFLFNBQVM7UUFDMUMsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDNUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsU0FBUztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsdUZBQXVGO0FBQ3ZGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsZ0JBQXlCLEVBQVksRUFBRTtJQUNsRixJQUFJLGdCQUFnQixLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUFFLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQ2hGLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQywrREFBK0QsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRSxPQUFPLENBQUMsc0NBQXNDLHlCQUF5QixDQUFDLFdBQVcsVUFBVSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUNELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUMzRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEUsSUFBSSxhQUFhLEdBQUcseUJBQXlCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDOUQsT0FBTyxDQUFDLGlCQUFpQixLQUFLLG9DQUFvQyxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELFVBQVUsSUFBSSxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksVUFBVSxHQUFHLHlCQUF5QixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDN0QsT0FBTyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyxDQUFDIn0=
|
|
@@ -71,14 +71,16 @@ export declare const serviceRuntimeContract: Readonly<{
|
|
|
71
71
|
/** The largest `limit` `getClusterRuntimeAssignments` accepts; Cloudly refuses a larger one. */
|
|
72
72
|
readonly maximumAssignmentPageSize: 256;
|
|
73
73
|
}>;
|
|
74
|
-
declare const serviceRuntimeWaitingReasons: readonly ["node-network-pending", "conflict", "failure-backoff", "storage-import-pending", "bindings-pending"];
|
|
75
|
-
declare const serviceRuntimeRefusals: readonly ["cluster-runtime-missing", "organization-missing", "image-plan-missing", "platform-unsupported", "secrets-unsupported", "volumes-unsupported", "port-protocol-unsupported", "ports-too-many", "readiness-target-undeclared", "environment-too-large", "no-eligible-node", "replica-limit", "node-authority-unsupported", "network-policy-missing", "network-policy-mismatch", "network-workload-pool-missing", "network-workload-pool-exhausted", "volume-driver-unsupported", "volume-options-unsupported", "volume-shared-unsupported", "volume-placement-unsupported"];
|
|
74
|
+
declare const serviceRuntimeWaitingReasons: readonly ["node-network-pending", "conflict", "failure-backoff", "storage-import-pending", "bindings-pending", "legacy-adoption-pending"];
|
|
75
|
+
declare const serviceRuntimeRefusals: readonly ["cluster-runtime-missing", "organization-missing", "image-plan-missing", "platform-unsupported", "secrets-unsupported", "volumes-unsupported", "port-protocol-unsupported", "ports-too-many", "readiness-target-undeclared", "environment-too-large", "no-eligible-node", "replica-limit", "node-authority-unsupported", "network-policy-missing", "network-policy-mismatch", "network-workload-pool-missing", "network-workload-pool-exhausted", "volume-driver-unsupported", "volume-options-unsupported", "volume-shared-unsupported", "volume-placement-unsupported", "volume-initialization-unknown", "volume-ownership-unknown"];
|
|
76
76
|
/**
|
|
77
77
|
* Why the producer is not converging yet, though nothing needs an administrator:
|
|
78
78
|
* `node-network-pending` waits for a node's network readiness, `conflict` for a sweep over inputs
|
|
79
79
|
* that changed while it ran, `failure-backoff` for a failed replica's backoff to elapse,
|
|
80
80
|
* `storage-import-pending` for an `import` local storage claim whose bytes have not arrived on its
|
|
81
|
-
* node,
|
|
81
|
+
* node, `bindings-pending` for the secret manifest to cover every enabled binding of the service, and
|
|
82
|
+
* `legacy-adoption-pending` for a Corestore binding whose legacy resource waits for the offline
|
|
83
|
+
* adoption Corestore requires (the binding's `statusReason` of the same name).
|
|
82
84
|
*/
|
|
83
85
|
export type TServiceRuntimeWaitingReason = typeof serviceRuntimeWaitingReasons[number];
|
|
84
86
|
/**
|
|
@@ -95,6 +97,9 @@ export type TServiceRuntimeWaitingReason = typeof serviceRuntimeWaitingReasons[n
|
|
|
95
97
|
* a volume of a driver other than a node-local directory, `volume-options-unsupported` driver or
|
|
96
98
|
* mount options, `volume-shared-unsupported` one volume mounted by more than one replica or service,
|
|
97
99
|
* and `volume-placement-unsupported` a placement that does not pin each volume to one node.
|
|
100
|
+
* `volume-initialization-unknown` is a volume without an initialization and
|
|
101
|
+
* `volume-ownership-unknown` a `run-as` ownership under `runAs: null`
|
|
102
|
+
* (`deriveServiceVolumeClaimInitialization`); neither is defaulted.
|
|
98
103
|
*/
|
|
99
104
|
export type TServiceRuntimeRefusal = typeof serviceRuntimeRefusals[number];
|
|
100
105
|
interface IServiceRuntimeStatusBase {
|
|
@@ -16,6 +16,7 @@ export const serviceRuntimeContract = Object.freeze({
|
|
|
16
16
|
});
|
|
17
17
|
const serviceRuntimeWaitingReasons = [
|
|
18
18
|
'node-network-pending', 'conflict', 'failure-backoff', 'storage-import-pending', 'bindings-pending',
|
|
19
|
+
'legacy-adoption-pending',
|
|
19
20
|
];
|
|
20
21
|
const serviceRuntimeRefusals = [
|
|
21
22
|
'cluster-runtime-missing', 'organization-missing', 'image-plan-missing', 'platform-unsupported',
|
|
@@ -24,7 +25,7 @@ const serviceRuntimeRefusals = [
|
|
|
24
25
|
'node-authority-unsupported', 'network-policy-missing', 'network-policy-mismatch',
|
|
25
26
|
'network-workload-pool-missing', 'network-workload-pool-exhausted',
|
|
26
27
|
'volume-driver-unsupported', 'volume-options-unsupported', 'volume-shared-unsupported',
|
|
27
|
-
'volume-placement-unsupported',
|
|
28
|
+
'volume-placement-unsupported', 'volume-initialization-unknown', 'volume-ownership-unknown',
|
|
28
29
|
];
|
|
29
30
|
/** Sorted, duplicate-free and read by the vocabulary the ids belong to: a node's, or the canonical one. */
|
|
30
31
|
const sortedIds = (value, maximum, read) => networkSorted(networkList(value, maximum, read), id => id);
|
|
@@ -98,4 +99,4 @@ export const snapshotServiceRuntimeStatus = (value) => producerSafe(() => {
|
|
|
98
99
|
requireNetwork(item.state === 'refused' && isOneOf(serviceRuntimeRefusals, item.reason));
|
|
99
100
|
return { ...base, state: item.state, reason: item.reason };
|
|
100
101
|
});
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXJ1bnRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kYXRhL3NlcnZpY2VydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQzVILGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQ2hILG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF3RDVELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbEQsc0JBQXNCLEVBQUUsRUFBRTtJQUMxQiwrRkFBK0Y7SUFDL0YsZUFBZSxFQUFFLEVBQUU7SUFDbkIsb0hBQW9IO0lBQ3BILGtCQUFrQixFQUFFLCtCQUErQixDQUFDLHdCQUF3QjtJQUM1RSx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyx3QkFBd0I7SUFDbEYsMEZBQTBGO0lBQzFGLG1CQUFtQixFQUFFLEdBQUc7SUFDeEIsZ0dBQWdHO0lBQ2hHLHlCQUF5QixFQUFFLEdBQUc7Q0FDdEIsQ0FBQyxDQUFDO0FBRVosTUFBTSw0QkFBNEIsR0FBRztJQUNuQyxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCO0lBQ25HLHlCQUF5QjtDQUNqQixDQUFDO0FBQ1gsTUFBTSxzQkFBc0IsR0FBRztJQUM3Qix5QkFBeUIs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
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { IRuntimeLocalStorageOwnership } from './runtimelocalstorageclaim.js';
|
|
2
|
+
import type { IServiceRuntimeProfile } from './serviceruntime.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where an `import` volume's bytes come from.
|
|
5
|
+
*
|
|
6
|
+
* `docker-volume` is a Docker volume on the host the claim's node runs on, named exactly as Docker
|
|
7
|
+
* lists it; a Corestore-driver volume is named the same way. The operator copies its tree into the
|
|
8
|
+
* node's import directory; the node never reads this reference, and the local storage claim does
|
|
9
|
+
* not carry it.
|
|
10
|
+
*/
|
|
11
|
+
export type TServiceVolumeImportSource = {
|
|
12
|
+
kind: 'docker-volume';
|
|
13
|
+
volumeName: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The owner and permission bits an `empty` volume's root directory gets.
|
|
17
|
+
*
|
|
18
|
+
* `explicit` states the numeric owner. `run-as` takes the owner from the runtime spec's
|
|
19
|
+
* `profile.runAs` (user and group) when the claim is first issued; the mode is always stated,
|
|
20
|
+
* because no mode is right for every image.
|
|
21
|
+
*/
|
|
22
|
+
export type TServiceVolumeOwnership = {
|
|
23
|
+
kind: 'explicit';
|
|
24
|
+
uid: number;
|
|
25
|
+
gid: number;
|
|
26
|
+
mode: number;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'run-as';
|
|
29
|
+
mode: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* How a service volume's node-local claim starts: `empty` creates a fresh root with the stated
|
|
33
|
+
* ownership, `import` waits for the bytes of an existing volume.
|
|
34
|
+
*/
|
|
35
|
+
export type TServiceVolumeInitialization = {
|
|
36
|
+
kind: 'empty';
|
|
37
|
+
ownership: TServiceVolumeOwnership;
|
|
38
|
+
} | {
|
|
39
|
+
kind: 'import';
|
|
40
|
+
source: TServiceVolumeImportSource;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* What a volume's initialization derives for a local storage claim, or why it derives nothing.
|
|
44
|
+
*
|
|
45
|
+
* `volume-initialization-unknown` is a volume with no initialization: Cloudly never assumes
|
|
46
|
+
* `empty`, because an empty volume in front of a service whose data sits in a legacy volume would
|
|
47
|
+
* start that service without its data. `volume-ownership-unknown` is a `run-as` ownership while
|
|
48
|
+
* the runtime spec runs the image's own user (`runAs: null`), whose numeric identity Cloudly does
|
|
49
|
+
* not know.
|
|
50
|
+
*/
|
|
51
|
+
export type TServiceVolumeClaimInitialization = {
|
|
52
|
+
status: 'derived';
|
|
53
|
+
initialization: 'empty';
|
|
54
|
+
initialOwnership: IRuntimeLocalStorageOwnership;
|
|
55
|
+
} | {
|
|
56
|
+
status: 'derived';
|
|
57
|
+
initialization: 'import';
|
|
58
|
+
initialOwnership: null;
|
|
59
|
+
} | {
|
|
60
|
+
status: 'refused';
|
|
61
|
+
reason: 'volume-initialization-unknown' | 'volume-ownership-unknown';
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Why `setServiceVolumeInitialization` wrote nothing. `volume-not-found` names no declared volume
|
|
65
|
+
* at that mount path, `conflict` a stored initialization other than `expected`,
|
|
66
|
+
* `volume-initialization-invalid` a value this contract refuses, and
|
|
67
|
+
* `volume-initialization-bound` a change while a bound local storage claim of the volume exists:
|
|
68
|
+
* a claim keeps the initialization and ownership it was issued with for its whole life.
|
|
69
|
+
*/
|
|
70
|
+
export type TServiceVolumeInitializationRefusal = 'volume-not-found' | 'conflict' | 'volume-initialization-invalid' | 'volume-initialization-bound';
|
|
71
|
+
/** The named refusal of `setServiceVolumeInitialization`, sent as `TypedResponseError.errorData`. */
|
|
72
|
+
export interface IServiceVolumeInitializationErrorData {
|
|
73
|
+
code: TServiceVolumeInitializationRefusal;
|
|
74
|
+
retryable: false;
|
|
75
|
+
}
|
|
76
|
+
export declare const serviceVolumeInitializationContract: Readonly<{
|
|
77
|
+
/** Every permission bit an ownership may state, the local storage claim's own bound. */
|
|
78
|
+
readonly directoryModeBits: 2047;
|
|
79
|
+
readonly maximumDockerVolumeNameLength: 255;
|
|
80
|
+
}>;
|
|
81
|
+
/** Validates one volume initialization and names every reason it is refused. */
|
|
82
|
+
export declare const validateServiceVolumeInitialization: (valueArg: unknown, pathArg?: string) => string[];
|
|
83
|
+
/**
|
|
84
|
+
* The claim fields a volume's initialization derives under a runtime spec's `runAs`.
|
|
85
|
+
*
|
|
86
|
+
* Absent initialization refuses as `volume-initialization-unknown`; a `run-as` ownership under
|
|
87
|
+
* `runAs: null` refuses as `volume-ownership-unknown`. Nothing is defaulted. The answer is for the
|
|
88
|
+
* first generation of a claim only: later generations carry that claim's own initialization and
|
|
89
|
+
* ownership, whatever `runAs` says by then. A malformed initialization or `runAs` throws.
|
|
90
|
+
*/
|
|
91
|
+
export declare const deriveServiceVolumeClaimInitialization: (initializationArg: TServiceVolumeInitialization | undefined, runAsArg: IServiceRuntimeProfile["runAs"]) => TServiceVolumeClaimInitialization;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { runtimeLocalStorageClaimContract } from './runtimelocalstorageclaim.js';
|
|
2
|
+
import { hasExactKeys, isPlainRecord } from '../private/dataproperties.js';
|
|
3
|
+
import { isRuntimeIdentityNumber } from '../private/runtimepolicy.js';
|
|
4
|
+
export const serviceVolumeInitializationContract = Object.freeze({
|
|
5
|
+
/** Every permission bit an ownership may state, the local storage claim's own bound. */
|
|
6
|
+
directoryModeBits: runtimeLocalStorageClaimContract.directoryModeBits,
|
|
7
|
+
maximumDockerVolumeNameLength: 255,
|
|
8
|
+
});
|
|
9
|
+
/** Docker's own volume name grammar, `[a-zA-Z0-9][a-zA-Z0-9_.-]`, which needs two characters. */
|
|
10
|
+
const dockerVolumeNamePattern = /^[A-Za-z0-9][A-Za-z0-9_.-]+$/;
|
|
11
|
+
const isDirectoryMode = (valueArg) => Number.isSafeInteger(valueArg)
|
|
12
|
+
&& valueArg >= 0
|
|
13
|
+
&& (valueArg & ~serviceVolumeInitializationContract.directoryModeBits) === 0;
|
|
14
|
+
const validateOwnership = (valueArg, pathArg) => {
|
|
15
|
+
if (!isPlainRecord(valueArg))
|
|
16
|
+
return [`${pathArg} must use its exact schema`];
|
|
17
|
+
if (valueArg.kind === 'explicit') {
|
|
18
|
+
if (!hasExactKeys(valueArg, ['kind', 'uid', 'gid', 'mode']))
|
|
19
|
+
return [`${pathArg} must use its exact schema`];
|
|
20
|
+
const errors = [];
|
|
21
|
+
if (!isRuntimeIdentityNumber(valueArg.uid) || !isRuntimeIdentityNumber(valueArg.gid)) {
|
|
22
|
+
errors.push(`${pathArg} uid and gid must be runtime identity numbers`);
|
|
23
|
+
}
|
|
24
|
+
if (!isDirectoryMode(valueArg.mode))
|
|
25
|
+
errors.push(`${pathArg} mode must hold directory permission bits only`);
|
|
26
|
+
return errors;
|
|
27
|
+
}
|
|
28
|
+
if (valueArg.kind === 'run-as') {
|
|
29
|
+
if (!hasExactKeys(valueArg, ['kind', 'mode']))
|
|
30
|
+
return [`${pathArg} must use its exact schema`];
|
|
31
|
+
return isDirectoryMode(valueArg.mode) ? [] : [`${pathArg} mode must hold directory permission bits only`];
|
|
32
|
+
}
|
|
33
|
+
return [`${pathArg} kind must be explicit or run-as`];
|
|
34
|
+
};
|
|
35
|
+
const validateImportSource = (valueArg, pathArg) => {
|
|
36
|
+
if (!isPlainRecord(valueArg) || valueArg.kind !== 'docker-volume'
|
|
37
|
+
|| !hasExactKeys(valueArg, ['kind', 'volumeName'])) {
|
|
38
|
+
return [`${pathArg} must be an exact docker-volume source`];
|
|
39
|
+
}
|
|
40
|
+
return typeof valueArg.volumeName === 'string'
|
|
41
|
+
&& valueArg.volumeName.length <= serviceVolumeInitializationContract.maximumDockerVolumeNameLength
|
|
42
|
+
&& dockerVolumeNamePattern.test(valueArg.volumeName)
|
|
43
|
+
? []
|
|
44
|
+
: [`${pathArg} volumeName must be a Docker volume name`];
|
|
45
|
+
};
|
|
46
|
+
/** Validates one volume initialization and names every reason it is refused. */
|
|
47
|
+
export const validateServiceVolumeInitialization = (valueArg, pathArg = 'service volume initialization') => {
|
|
48
|
+
if (!isPlainRecord(valueArg))
|
|
49
|
+
return [`${pathArg} must use its exact schema`];
|
|
50
|
+
if (valueArg.kind === 'empty') {
|
|
51
|
+
if (!hasExactKeys(valueArg, ['kind', 'ownership']))
|
|
52
|
+
return [`${pathArg} must use its exact schema`];
|
|
53
|
+
return validateOwnership(valueArg.ownership, `${pathArg} ownership`);
|
|
54
|
+
}
|
|
55
|
+
if (valueArg.kind === 'import') {
|
|
56
|
+
if (!hasExactKeys(valueArg, ['kind', 'source']))
|
|
57
|
+
return [`${pathArg} must use its exact schema`];
|
|
58
|
+
return validateImportSource(valueArg.source, `${pathArg} source`);
|
|
59
|
+
}
|
|
60
|
+
return [`${pathArg} kind must be empty or import`];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The claim fields a volume's initialization derives under a runtime spec's `runAs`.
|
|
64
|
+
*
|
|
65
|
+
* Absent initialization refuses as `volume-initialization-unknown`; a `run-as` ownership under
|
|
66
|
+
* `runAs: null` refuses as `volume-ownership-unknown`. Nothing is defaulted. The answer is for the
|
|
67
|
+
* first generation of a claim only: later generations carry that claim's own initialization and
|
|
68
|
+
* ownership, whatever `runAs` says by then. A malformed initialization or `runAs` throws.
|
|
69
|
+
*/
|
|
70
|
+
export const deriveServiceVolumeClaimInitialization = (initializationArg, runAsArg) => {
|
|
71
|
+
if (initializationArg === undefined)
|
|
72
|
+
return { status: 'refused', reason: 'volume-initialization-unknown' };
|
|
73
|
+
const errors = validateServiceVolumeInitialization(initializationArg);
|
|
74
|
+
if (errors.length > 0)
|
|
75
|
+
throw new Error(errors[0]);
|
|
76
|
+
if (runAsArg !== null && !(isPlainRecord(runAsArg) && hasExactKeys(runAsArg, ['user', 'group'])
|
|
77
|
+
&& isRuntimeIdentityNumber(runAsArg.user) && isRuntimeIdentityNumber(runAsArg.group))) {
|
|
78
|
+
throw new Error('runAs must be null or an exact user and group');
|
|
79
|
+
}
|
|
80
|
+
if (initializationArg.kind === 'import') {
|
|
81
|
+
return { status: 'derived', initialization: 'import', initialOwnership: null };
|
|
82
|
+
}
|
|
83
|
+
const ownership = initializationArg.ownership;
|
|
84
|
+
if (ownership.kind === 'explicit') {
|
|
85
|
+
return { status: 'derived', initialization: 'empty',
|
|
86
|
+
initialOwnership: { uid: ownership.uid, gid: ownership.gid, mode: ownership.mode } };
|
|
87
|
+
}
|
|
88
|
+
if (runAsArg === null)
|
|
89
|
+
return { status: 'refused', reason: 'volume-ownership-unknown' };
|
|
90
|
+
return { status: 'derived', initialization: 'empty',
|
|
91
|
+
initialOwnership: { uid: runAsArg.user, gid: runAsArg.group, mode: ownership.mode } };
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXZvbHVtZWluaXRpYWxpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9zZXJ2aWNldm9sdW1laW5pdGlhbGl6YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakYsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQWdFdEUsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvRCx3RkFBd0Y7SUFDeEYsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsaUJBQWlCO0lBQ3JFLDZCQUE2QixFQUFFLEdBQUc7Q0FDMUIsQ0FBQyxDQUFDO0FBRVosaUdBQWlHO0FBQ2pHLE1BQU0sdUJBQXVCLEdBQUcsOEJBQThCLENBQUM7QUFFL0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFpQixFQUFzQixFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7T0FDM0YsUUFBbUIsSUFBSSxDQUFDO09BQ3pCLENBQUUsUUFBbUIsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRTNGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUFpQixFQUFFLE9BQWUsRUFBWSxFQUFFO0lBQ3pFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlFLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1B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
|
|
@@ -4,6 +4,31 @@ export type TPlatformCapability = 'email' | 'sms' | 'pushnotification' | 'letter
|
|
|
4
4
|
export type TPlatformAccessMode = 'rpc' | 'binding' | 'sidecar' | 'internal';
|
|
5
5
|
export type TPlatformBindingStatus = 'requested' | 'provisioning' | 'ready' | 'degraded' | 'failed' | 'disabled';
|
|
6
6
|
export type TPlatformDesiredState = 'enabled' | 'disabled';
|
|
7
|
+
export declare const platformBindingStatusReasons: readonly ["legacy-adoption-pending", "legacy-adoption-conflict", "legacy-adoption-mismatch"];
|
|
8
|
+
/**
|
|
9
|
+
* Why a binding holds the status it reports, where the status alone does not say.
|
|
10
|
+
*
|
|
11
|
+
* All three come from Corestore's refusal of a credential binding beside a legacy
|
|
12
|
+
* `/resources/provision` resource (`code` in its 409 body, read with
|
|
13
|
+
* `readCorestoreLegacyAdoptionRefusal`):
|
|
14
|
+
*
|
|
15
|
+
* - `legacy-adoption-pending` (status `provisioning`): the service owns a legacy resource of this
|
|
16
|
+
* capability that no offline adoption authorizes yet. It clears when the operator runs
|
|
17
|
+
* Corestore's adoption with the plan Cloudly produced.
|
|
18
|
+
* - `legacy-adoption-conflict` (status `failed`): the adoption authorizes another binding id, or
|
|
19
|
+
* it was already consumed.
|
|
20
|
+
* - `legacy-adoption-mismatch` (status `failed`): the legacy resource is no longer the one the
|
|
21
|
+
* adoption authorized, its database tenant is absent, or the binding's bucket or retention
|
|
22
|
+
* intent differs from the legacy bucket's.
|
|
23
|
+
*/
|
|
24
|
+
export type TPlatformBindingStatusReason = typeof platformBindingStatusReasons[number];
|
|
25
|
+
/** The one status each reason is reported with. */
|
|
26
|
+
export declare const getPlatformBindingStatusOfReason: (reasonArg: TPlatformBindingStatusReason) => TPlatformBindingStatus;
|
|
27
|
+
/**
|
|
28
|
+
* Validates a reported status and its optional reason: a reason must be a member of the
|
|
29
|
+
* vocabulary and come with its one status. An absent reason is valid with every status.
|
|
30
|
+
*/
|
|
31
|
+
export declare const validatePlatformBindingStatusReason: (statusArg: unknown, reasonArg: unknown, pathArg?: string) => string[];
|
|
7
32
|
export type TPlatformEndpointProtocol = 'typedrequest' | 'http' | 'tcp' | 'udp' | 'smtp' | 's3' | 'postgres' | 'mongodb' | 'sip';
|
|
8
33
|
export interface IPlatformCapability {
|
|
9
34
|
id: TPlatformCapability;
|
|
@@ -30,6 +55,22 @@ export interface IPlatformServiceEndpoint {
|
|
|
30
55
|
networkAlias?: string;
|
|
31
56
|
port?: number;
|
|
32
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* The legacy Corestore resource an object-storage or database binding adopts.
|
|
60
|
+
*
|
|
61
|
+
* Server-managed: only `adoptCorestoreLegacyResources` writes it, in the same write that creates
|
|
62
|
+
* the binding, and Cloudly refuses it (and `objectstorageBucketName`) on `upsertPlatformBinding`.
|
|
63
|
+
* `nodeId` is the node whose Corestore holds the resource, so the binding is placed there and
|
|
64
|
+
* nowhere else; `resourceName` is the legacy database or bucket name; `inventorySha256` is the
|
|
65
|
+
* legacy inventory the adoption was checked against. An adopted bucket's
|
|
66
|
+
* `objectstorageBucketName` is the legacy bucket and its `objectstorageRetention.intent` the legacy
|
|
67
|
+
* intent exactly, or absent when the legacy bucket has none.
|
|
68
|
+
*/
|
|
69
|
+
export interface IPlatformBindingCorestoreLegacyAdoption {
|
|
70
|
+
nodeId: string;
|
|
71
|
+
resourceName: string;
|
|
72
|
+
inventorySha256: string;
|
|
73
|
+
}
|
|
33
74
|
export interface IPlatformBinding {
|
|
34
75
|
id: string;
|
|
35
76
|
serviceId: string;
|
|
@@ -44,6 +85,10 @@ export interface IPlatformBinding {
|
|
|
44
85
|
objectstorageBucketName?: string;
|
|
45
86
|
/** Capability-specific value-free immutable-retention intent and evidence. */
|
|
46
87
|
objectstorageRetention?: IObjectStorageRetentionBinding;
|
|
88
|
+
/** Server-managed: the legacy Corestore resource this binding adopts. */
|
|
89
|
+
corestoreLegacyAdoption?: IPlatformBindingCorestoreLegacyAdoption;
|
|
90
|
+
/** Why the binding holds its status, as the responsible cluster reported it. */
|
|
91
|
+
statusReason?: TPlatformBindingStatusReason;
|
|
47
92
|
createdAt?: number;
|
|
48
93
|
updatedAt?: number;
|
|
49
94
|
}
|
|
@@ -1,2 +1,27 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export const platformBindingStatusReasons = [
|
|
2
|
+
'legacy-adoption-pending',
|
|
3
|
+
'legacy-adoption-conflict',
|
|
4
|
+
'legacy-adoption-mismatch',
|
|
5
|
+
];
|
|
6
|
+
const platformBindingStatusOfReason = Object.freeze({
|
|
7
|
+
'legacy-adoption-pending': 'provisioning',
|
|
8
|
+
'legacy-adoption-conflict': 'failed',
|
|
9
|
+
'legacy-adoption-mismatch': 'failed',
|
|
10
|
+
});
|
|
11
|
+
/** The one status each reason is reported with. */
|
|
12
|
+
export const getPlatformBindingStatusOfReason = (reasonArg) => platformBindingStatusOfReason[reasonArg];
|
|
13
|
+
/**
|
|
14
|
+
* Validates a reported status and its optional reason: a reason must be a member of the
|
|
15
|
+
* vocabulary and come with its one status. An absent reason is valid with every status.
|
|
16
|
+
*/
|
|
17
|
+
export const validatePlatformBindingStatusReason = (statusArg, reasonArg, pathArg = 'platform binding statusReason') => {
|
|
18
|
+
if (reasonArg === undefined)
|
|
19
|
+
return [];
|
|
20
|
+
if (!platformBindingStatusReasons.includes(reasonArg)) {
|
|
21
|
+
return [`${pathArg} must be a platform binding status reason`];
|
|
22
|
+
}
|
|
23
|
+
return platformBindingStatusOfReason[reasonArg] === statusArg
|
|
24
|
+
? []
|
|
25
|
+
: [`${pathArg} ${reasonArg} requires status ${platformBindingStatusOfReason[reasonArg]}`];
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wbGF0Zm9ybS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUc7SUFDMUMseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQiwwQkFBMEI7Q0FDbEIsQ0FBQztBQW9CWCxNQUFNLDZCQUE2QixHQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ1oseUJBQXlCLEVBQUUsY0FBYztJQUN6QywwQkFBMEIsRUFBRSxRQUFRO0lBQ3BDLDBCQUEwQixFQUFFLFFBQVE7Q0FDckMsQ0FBQyxDQUFDO0FBRUwsbURBQW1EO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQzlDLFNBQXVDLEVBQ2YsRUFBRSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRXRFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLENBQ2pELFNBQWtCLEVBQ2xCLFNBQWtCLEVBQ2xCLE9BQU8sR0FBRywrQkFBK0IsRUFDL0IsRUFBRTtJQUNaLElBQUksU0FBUyxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN2QyxJQUFJLENBQUUsNEJBQW1ELENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDOUUsT0FBTyxDQUFDLEdBQUcsT0FBTywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxPQUFPLDZCQUE2QixDQUFDLFNBQXlDLENBQUMsS0FBSyxTQUFTO1FBQzNGLENBQUMsQ0FBQyxFQUFFO1FBQ0osQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksU0FBbUIsb0JBQW9CLDZCQUE2QixDQUFDLFNBQXlDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEksQ0FBQyxDQUFDIn0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import type { IIdentity } from '../data/user.js';
|
|
3
|
+
import type { ICorestoreLegacyResourceAdoptionPlanEntry, ICorestoreLegacyResourceSelection, TClusterCorestoreLegacyResourceInventory } from '../data/corestorelegacyadoption.js';
|
|
4
|
+
import type { IPlatformBinding } from '../platform/types.js';
|
|
3
5
|
/**
|
|
4
6
|
* A provisioned corestore resource (NoSQLDB database or ObjectStorage bucket)
|
|
5
7
|
* as reported by a node's corestore control API.
|
|
@@ -131,3 +133,61 @@ export interface IReq_Cloudly_Coreflow_GetCorestoreInventory extends plugins.typ
|
|
|
131
133
|
inventory: ICorestoreNodeInventory;
|
|
132
134
|
};
|
|
133
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Cloudly asks the relay for one exact node's legacy Corestore resources.
|
|
138
|
+
*
|
|
139
|
+
* The relay reads Corestore's `corestoreLegacyAdoptionContract.inventoryPath` with the control
|
|
140
|
+
* token and answers `reachable: true` with its services, or `reachable: false` with the reason, never
|
|
141
|
+
* an empty list for a node it could not read.
|
|
142
|
+
*/
|
|
143
|
+
export interface IReq_Cloudly_Relay_GetClusterCorestoreLegacyResources extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Cloudly_Relay_GetClusterCorestoreLegacyResources> {
|
|
144
|
+
method: 'getClusterCorestoreLegacyResources';
|
|
145
|
+
request: {
|
|
146
|
+
nodeId: string;
|
|
147
|
+
};
|
|
148
|
+
response: {
|
|
149
|
+
inventory: TClusterCorestoreLegacyResourceInventory;
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* An administrator reads one node's legacy Corestore resources through its cluster's relay, with
|
|
154
|
+
* the digest an adoption is checked against (`null` for an unreachable node).
|
|
155
|
+
*/
|
|
156
|
+
export interface IReq_Any_Cloudly_GetCorestoreLegacyResources extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_GetCorestoreLegacyResources> {
|
|
157
|
+
method: 'getCorestoreLegacyResources';
|
|
158
|
+
request: {
|
|
159
|
+
identity: IIdentity;
|
|
160
|
+
clusterId: string;
|
|
161
|
+
nodeId: string;
|
|
162
|
+
};
|
|
163
|
+
response: {
|
|
164
|
+
inventory: TClusterCorestoreLegacyResourceInventory;
|
|
165
|
+
inventorySha256: string | null;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* The only path that creates a binding carrying a legacy bucket name.
|
|
170
|
+
*
|
|
171
|
+
* Cloudly reads the node's legacy inventory again, requires `expectedInventorySha256`, and for
|
|
172
|
+
* each selected resource creates the adopting binding in one transaction: enabled, placed on
|
|
173
|
+
* `nodeId`, with `corestoreLegacyAdoption`, and for a bucket the legacy bucket name and retention
|
|
174
|
+
* intent (`validatePlatformBindingCorestoreLegacyAdoption`). A resource whose adopting binding
|
|
175
|
+
* already exists is answered unchanged. The response lists the adopting bindings and the plan
|
|
176
|
+
* (`createCorestoreLegacyResourceAdoptionPlan`) the operator hands to Corestore's offline
|
|
177
|
+
* `legacy-resource-adoption` migration. Refusals travel as `ICorestoreLegacyAdoptionErrorData`.
|
|
178
|
+
*/
|
|
179
|
+
export interface IReq_Any_Cloudly_AdoptCorestoreLegacyResources extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_AdoptCorestoreLegacyResources> {
|
|
180
|
+
method: 'adoptCorestoreLegacyResources';
|
|
181
|
+
request: {
|
|
182
|
+
identity: IIdentity;
|
|
183
|
+
clusterId: string;
|
|
184
|
+
nodeId: string;
|
|
185
|
+
expectedInventorySha256: string;
|
|
186
|
+
/** Sorted by service then capability (`validateCorestoreLegacyResourceSelections`). */
|
|
187
|
+
resources: ICorestoreLegacyResourceSelection[];
|
|
188
|
+
};
|
|
189
|
+
response: {
|
|
190
|
+
bindings: IPlatformBinding[];
|
|
191
|
+
plan: ICorestoreLegacyResourceAdoptionPlanEntry[];
|
|
192
|
+
};
|
|
193
|
+
}
|
|
@@ -96,4 +96,4 @@ export const validateClusterCorestoreInventory = (valueArg, pathArg = 'cluster c
|
|
|
96
96
|
}
|
|
97
97
|
return errors;
|
|
98
98
|
};
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcmVxdWVzdHMvY29yZXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBUXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUF3Ry9ELE1BQU0sMENBQTBDLEdBQUcscUNBQXFDLENBQUM7QUFFekYsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixRQUFpQixFQUNvQixFQUFFLENBQUMsQ0FDeEMsT0FBTyxDQUFDLFFBQVEsQ0FBQztPQUNkLE9BQU8sUUFBUSxLQUFLLFFBQVE7T0FDNUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztPQUN4QixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssTUFBTSxDQUFDLFNBQVM7V0FDbkQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FDL0MsQ0FBQztBQUVGLE1BQU0sd0NBQXdDLEdBQUcsQ0FDL0MsUUFBaUIsRUFDakIsT0FBZSxFQUNMLEVBQUU7SUFDWixJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDO1dBQ2xDLENBQUMsWUFBWSxDQUNkLFFBQVEsRUFDUixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQ3ZDLENBQUMsYUFBYSxDQUFDLENBQ2hCLEVBQUUsQ0FBQztRQUNKLE9BQU8sQ0FBQyxHQUFHLE9BQU8sNEJBQTRCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksT0FBTyxRQUFRLENBQUMsU0FBUyxLQUFLLFFBQVE7V0FDckMsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsUUFBUSxD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
|