@serve.zone/interfaces 32.51.0 → 32.53.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 +93 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/appstore/catalog.d.ts +92 -12
- package/dist_ts/appstore/catalog.js +119 -5
- package/dist_ts/appstore/types.d.ts +28 -4
- package/dist_ts/appstore/types.js +1 -1
- package/dist_ts/appstore/versionconfig.d.ts +1 -1
- package/dist_ts/data/cluster.d.ts +1 -1
- package/dist_ts/data/clusteringress.d.ts +4 -4
- package/dist_ts/data/clusteringressdesignation.d.ts +2 -2
- package/dist_ts/data/clusternode.d.ts +13 -6
- package/dist_ts/data/clusternode.js +1 -1
- package/dist_ts/data/clusternodehostname.d.ts +63 -0
- package/dist_ts/data/clusternodehostname.js +122 -0
- package/dist_ts/data/clusterrelaycredential.d.ts +3 -3
- package/dist_ts/data/clusterruntime.d.ts +1 -1
- package/dist_ts/data/clustervpn.d.ts +4 -4
- package/dist_ts/data/coremail.d.ts +11 -11
- package/dist_ts/data/coremail.runtime.d.ts +6 -6
- package/dist_ts/data/coremail.runtime.js +1 -1
- package/dist_ts/data/corestorecontroltoken.d.ts +1 -1
- package/dist_ts/data/corestorelegacyadoption.d.ts +2 -2
- package/dist_ts/data/deploymentmachineuser.d.ts +1 -1
- package/dist_ts/data/deploymentpreflight.d.ts +26 -1
- package/dist_ts/data/fleetcutover.d.ts +28 -28
- package/dist_ts/data/hostedapp.d.ts +4 -4
- package/dist_ts/data/immutableimage.d.ts +3 -3
- package/dist_ts/data/index.d.ts +1 -0
- package/dist_ts/data/index.js +2 -1
- package/dist_ts/data/isolatedrestore.d.ts +7 -7
- package/dist_ts/data/isolatedrestore.js +1 -1
- package/dist_ts/data/networkaddressplan.d.ts +2 -2
- package/dist_ts/data/networkapplication.d.ts +9 -9
- package/dist_ts/data/networkauthority.d.ts +5 -5
- package/dist_ts/data/networkcredential.js +1 -1
- package/dist_ts/data/networkegressretirement.d.ts +3 -3
- package/dist_ts/data/networkegressretirement.js +1 -1
- package/dist_ts/data/networkhost.d.ts +3 -3
- package/dist_ts/data/networklease.d.ts +9 -9
- package/dist_ts/data/networkprojection.d.ts +7 -7
- package/dist_ts/data/networkprojectionretirement.d.ts +6 -6
- package/dist_ts/data/networkprotection.d.ts +9 -9
- package/dist_ts/data/networksigning.d.ts +6 -6
- package/dist_ts/data/networkworkloadingress.d.ts +3 -3
- package/dist_ts/data/nodeenrollment.d.ts +8 -8
- package/dist_ts/data/noderetirement.d.ts +1 -1
- package/dist_ts/data/noderuntimebinding.d.ts +11 -11
- package/dist_ts/data/privatenetwork.d.ts +3 -3
- package/dist_ts/data/runtimeassignment.d.ts +9 -9
- package/dist_ts/data/runtimeassignment.js +1 -1
- package/dist_ts/data/runtimeassignmentexec.d.ts +2 -2
- package/dist_ts/data/runtimeassignmentlogs.d.ts +4 -4
- package/dist_ts/data/runtimeassignmentstats.d.ts +2 -2
- package/dist_ts/data/runtimeconfig.d.ts +1 -1
- package/dist_ts/data/runtimelocalstorageclaim.d.ts +4 -4
- package/dist_ts/data/runtimelocalvolumearchive.d.ts +5 -5
- package/dist_ts/data/runtimesession.d.ts +5 -5
- package/dist_ts/data/runtimesession.js +1 -1
- package/dist_ts/data/runtimestorageclaim.d.ts +4 -4
- package/dist_ts/data/runtimeterminalreceipt.d.ts +2 -2
- package/dist_ts/data/runtimeterminalreceipt.js +1 -1
- package/dist_ts/data/secret.d.ts +4 -4
- package/dist_ts/data/secret.js +1 -1
- package/dist_ts/data/service.d.ts +10 -3
- package/dist_ts/data/serviceplatformownership.d.ts +1 -1
- package/dist_ts/data/serviceports.js +1 -1
- package/dist_ts/data/serviceruntime.d.ts +3 -3
- package/dist_ts/data/servicevolumeinitialization.d.ts +1 -1
- package/dist_ts/data/settings.d.ts +37 -31
- package/dist_ts/data/settings.js +1 -1
- package/dist_ts/data/sparklegacyretirement.d.ts +4 -4
- package/dist_ts/data/sparknodereport.d.ts +61 -1
- package/dist_ts/data/sparknodereport.js +66 -3
- package/dist_ts/platform/storage.d.ts +1 -1
- package/dist_ts/platform/storagemigration.d.ts +6 -6
- package/dist_ts/platform/storagemigration.golden.d.ts +13 -13
- package/dist_ts/platform/types.d.ts +1 -1
- package/dist_ts/private/canonicaljson.d.ts +6 -6
- package/dist_ts/private/canonicaljson.js +1 -1
- package/dist_ts/private/dataproperties.js +1 -1
- package/dist_ts/private/networkcontract.js +1 -1
- package/dist_ts/private/storagecontract.d.ts +1 -1
- package/dist_ts/private/storagecontract.js +1 -1
- package/dist_ts/protocol.d.ts +1 -1
- package/dist_ts/requests/appstore.d.ts +18 -0
- package/dist_ts/requests/hostedapp.d.ts +6 -0
- package/dist_ts/requests/hostedapp.js +1 -1
- package/dist_ts/requests/node.d.ts +59 -0
- package/dist_ts/runtime.appstorecatalog.d.ts +17 -0
- package/dist_ts/runtime.appstorecatalog.js +84 -12
- package/dist_ts/runtime.assignmentsecret.d.ts +3 -3
- package/dist_ts/runtime.assignmentsecret.js +1 -1
- package/dist_ts/runtime.corestore.d.ts +13 -13
- package/dist_ts/runtime.d.ts +1 -1
- package/dist_ts/runtime.workloadinit.d.ts +11 -11
- package/package.json +4 -3
- package/readme.md +27 -0
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/appstore/catalog.ts +175 -5
- package/ts/appstore/types.ts +25 -0
- package/ts/data/clusternode.ts +8 -0
- package/ts/data/clusternodehostname.ts +153 -0
- package/ts/data/index.ts +1 -0
- package/ts/data/service.ts +10 -2
- package/ts/data/settings.ts +6 -0
- package/ts/data/sparknodereport.ts +112 -2
- package/ts/requests/appstore.ts +22 -0
- package/ts/requests/hostedapp.ts +6 -0
- package/ts/requests/node.ts +67 -0
- package/ts/runtime.appstorecatalog.ts +91 -11
|
@@ -426,4 +426,4 @@ export const bindGetRuntimeAssignmentSecretMaterialResponse = async (valueArg, r
|
|
|
426
426
|
return fail();
|
|
427
427
|
}
|
|
428
428
|
};
|
|
429
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5hc3NpZ25tZW50c2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcnVudGltZS5hc3NpZ25tZW50c2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBTXhDLE9BQU8sRUFDTCw2QkFBNkIsRUFBRSw2QkFBNkIsRUFBRSxjQUFjLEVBQzVFLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUNuRiw4QkFBOEIsRUFBRSx1Q0FBdUMsRUFDdkUsK0JBQStCLEVBQUUsMEJBQTBCLEVBQUUsa0NBQWtDLEVBQy9GLDJCQUEyQixHQUM1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFDTCwyQ0FBMkMsRUFBRSw4Q0FBOEMsR0FHNUYsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDM0QsZ0JBQWdCLEVBQUUsZ0RBQWdEO0lBQ2xFLG1CQUFtQixFQUFFLE9BQU87SUFDNUIsb0JBQW9CLEVBQUUsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ3ZDLEtBQUssRUFBRSw4Q0FBOEM7Q0FDN0MsQ0FBQyxDQUFDO0FBRVosTUFBTSxJQUFJLEdBQUcsR0FBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixTQUFTLFlBQVksQ0FBQyxZQUFxQjtJQUN6QyxJQUFJLENBQUMsWUFBWTtRQUFF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
|
|
429
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5hc3NpZ25tZW50c2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcnVudGltZS5hc3NpZ25tZW50c2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBTXhDLE9BQU8sRUFDTCw2QkFBNkIsRUFBRSw2QkFBNkIsRUFBRSxjQUFjLEVBQzVFLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixFQUNuRiw4QkFBOEIsRUFBRSx1Q0FBdUMsRUFDdkUsK0JBQStCLEVBQUUsMEJBQTBCLEVBQUUsa0NBQWtDLEVBQy9GLDJCQUEyQixHQUM1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFDTCwyQ0FBMkMsRUFBRSw4Q0FBOEMsR0FHNUYsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFOUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDM0QsZ0JBQWdCLEVBQUUsZ0RBQWdEO0lBQ2xFLG1CQUFtQixFQUFFLE9BQU87SUFDNUIsb0JBQW9CLEVBQUUsR0FBRyxHQUFHLElBQUksR0FBRyxJQUFJO0lBQ3ZDLEtBQUssRUFBRSw4Q0FBOEM7Q0FDN0MsQ0FBQyxDQUFDO0FBRVosTUFBTSxJQUFJLEdBQUcsR0FBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixTQUFTLFlBQVksQ0FBQyxZQUFxQjtJQUN6QyxJQUFJLENBQUMsWUFBWTtRQUFF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
|
|
@@ -5,13 +5,13 @@ import type { IObjectStorageRetentionIntent, IObjectStorageRetentionEvidenceExpe
|
|
|
5
5
|
import type { IPlatformDatabaseEndpoint } from './platform/database.js';
|
|
6
6
|
export type TCorestoreCredentialCapability = 'database' | 'objectstorage';
|
|
7
7
|
export declare const corestoreProviderConfigIds: Readonly<{
|
|
8
|
-
readonly database:
|
|
9
|
-
readonly objectstorage:
|
|
8
|
+
readonly database: 'cloudly-corestore-database';
|
|
9
|
+
readonly objectstorage: 'cloudly-corestore-objectstorage';
|
|
10
10
|
}>;
|
|
11
|
-
export declare const corestoreControlUrl:
|
|
12
|
-
export declare const corestoreCredentialManagementScope:
|
|
13
|
-
export declare const corestoreControlCredentialKey:
|
|
14
|
-
export declare const corestoreCredentialEnvironment:
|
|
11
|
+
export declare const corestoreControlUrl: 'http://corestore:3000';
|
|
12
|
+
export declare const corestoreCredentialManagementScope: 'platform:cloudly-corestore';
|
|
13
|
+
export declare const corestoreControlCredentialKey: 'CORESTORE_API_TOKEN';
|
|
14
|
+
export declare const corestoreCredentialEnvironment: 'production';
|
|
15
15
|
export declare const corestoreCredentialRuntimeLimits: Readonly<{
|
|
16
16
|
maximumIdentifierLength: 200;
|
|
17
17
|
maximumPublicationGrants: 256;
|
|
@@ -22,7 +22,7 @@ export declare const corestoreCredentialRuntimeLimits: Readonly<{
|
|
|
22
22
|
maximumControlTokenBytes: 4096;
|
|
23
23
|
maximumSealedControlCredentialBytes: number;
|
|
24
24
|
}>;
|
|
25
|
-
export declare const getCorestoreProviderConfigId: (capabilityArg: TCorestoreCredentialCapability) =>
|
|
25
|
+
export declare const getCorestoreProviderConfigId: (capabilityArg: TCorestoreCredentialCapability) => typeof corestoreProviderConfigIds[TCorestoreCredentialCapability];
|
|
26
26
|
export interface ICorestoreControlCredentialPlaintext {
|
|
27
27
|
key: typeof corestoreControlCredentialKey;
|
|
28
28
|
environment: typeof corestoreCredentialEnvironment;
|
|
@@ -92,7 +92,7 @@ interface ICorestoreCredentialBindingRequestBase {
|
|
|
92
92
|
managementScope: typeof corestoreCredentialManagementScope;
|
|
93
93
|
environment: typeof corestoreCredentialEnvironment;
|
|
94
94
|
}
|
|
95
|
-
export type TCorestoreCredentialBindingRequest = ICorestoreCredentialBindingRequestBase & {
|
|
95
|
+
export type TCorestoreCredentialBindingRequest = (ICorestoreCredentialBindingRequestBase & {
|
|
96
96
|
capability: 'database';
|
|
97
97
|
/**
|
|
98
98
|
* Where a workload reaches the database: the `corestoreDatabase` of the node the binding is
|
|
@@ -102,11 +102,11 @@ export type TCorestoreCredentialBindingRequest = ICorestoreCredentialBindingRequ
|
|
|
102
102
|
* is admitted is the provider's decision, never a default this contract supplies.
|
|
103
103
|
*/
|
|
104
104
|
endpoint?: IPlatformDatabaseEndpoint;
|
|
105
|
-
} | ICorestoreCredentialBindingRequestBase & {
|
|
105
|
+
}) | (ICorestoreCredentialBindingRequestBase & {
|
|
106
106
|
capability: 'objectstorage';
|
|
107
107
|
bucketName: string;
|
|
108
108
|
objectstorageRetention?: IObjectStorageRetentionIntent;
|
|
109
|
-
};
|
|
109
|
+
});
|
|
110
110
|
export declare const validateCorestoreCredentialBindingRequest: (requestArg: unknown) => string[];
|
|
111
111
|
export declare const createCorestoreCredentialBindingRequestDigestInput: (requestArg: TCorestoreCredentialBindingRequest) => string;
|
|
112
112
|
export declare const computeCorestoreCredentialBindingRequestSha256: (requestArg: TCorestoreCredentialBindingRequest) => Promise<string>;
|
|
@@ -209,7 +209,7 @@ export interface IReq_PublishCorestoreCredentialMaterial extends plugins.typedre
|
|
|
209
209
|
receipt: ICorestoreCredentialPublicationReceipt;
|
|
210
210
|
};
|
|
211
211
|
}
|
|
212
|
-
export declare const createPublishCorestoreCredentialMaterialEnvelopeContext: (requestArg: Omit<IPublishCorestoreCredentialMaterialRequest,
|
|
212
|
+
export declare const createPublishCorestoreCredentialMaterialEnvelopeContext: (requestArg: Omit<IPublishCorestoreCredentialMaterialRequest, 'identity' | 'envelope'>) => Uint8Array;
|
|
213
213
|
export declare const validatePublishCorestoreCredentialMaterialRequest: (requestArg: unknown, expectedGrantArg: ICorestoreCredentialPublicationGrant, activeRecipientArg: IActiveSecretRecipientMetadata, trustedNowArg: number) => Promise<string[]>;
|
|
214
214
|
export interface ICorestoreCredentialPublicationReceiptExpectation {
|
|
215
215
|
request: IPublishCorestoreCredentialMaterialRequest;
|
|
@@ -312,9 +312,9 @@ export interface ICorestoreDatabaseBackupClosureReceipt {
|
|
|
312
312
|
* is a transfer that fails at the last hop instead of at the first. Every one of them imports this
|
|
313
313
|
* constant rather than writing the bytes again.
|
|
314
314
|
*/
|
|
315
|
-
export declare const corestoreDatabaseBackupMediaType:
|
|
315
|
+
export declare const corestoreDatabaseBackupMediaType: 'application/vnd.serve-zone.corestore-database-backup';
|
|
316
316
|
/** The format a backup receipt states, which is this media type's payload contract. */
|
|
317
|
-
export declare const corestoreDatabaseBackupFormat:
|
|
317
|
+
export declare const corestoreDatabaseBackupFormat: 'corestore.database.backup';
|
|
318
318
|
export interface ICorestoreDatabaseBackupReceipt {
|
|
319
319
|
format: typeof corestoreDatabaseBackupFormat;
|
|
320
320
|
backupId: string;
|
package/dist_ts/runtime.d.ts
CHANGED
|
@@ -144,7 +144,7 @@ export interface ICoreflowSecretRuntimeRegistrationExpectation {
|
|
|
144
144
|
activeRecipient: IActiveSecretRecipientMetadata;
|
|
145
145
|
}
|
|
146
146
|
/** Dedicated TypedSocket tag carrying ICoreflowSecretRuntimeRegistration. */
|
|
147
|
-
export declare const coreflowSecretRuntimeRegistrationTagId:
|
|
147
|
+
export declare const coreflowSecretRuntimeRegistrationTagId: 'coreflowSecretRuntimeRegistration';
|
|
148
148
|
export type TCoreflowSecretRuntimeRegistrationExpectationResponse = {
|
|
149
149
|
status: 'available';
|
|
150
150
|
expectation: ICoreflowSecretRuntimeRegistrationExpectation;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { TSha256Digest, TImmutableContainerPlatform } from './data/immutableimage.js';
|
|
2
2
|
export declare const workloadInitReleaseContract: Readonly<{
|
|
3
|
-
readonly packageName:
|
|
4
|
-
readonly sourceRepository:
|
|
5
|
-
readonly imageRegistry:
|
|
6
|
-
readonly imageRepository:
|
|
7
|
-
readonly imageIndexMediaType:
|
|
8
|
-
readonly statementType:
|
|
9
|
-
readonly predicateType:
|
|
10
|
-
readonly buildType:
|
|
11
|
-
readonly builderId:
|
|
12
|
-
readonly signatureFormat:
|
|
13
|
-
readonly signatureAlgorithm:
|
|
3
|
+
readonly packageName: '@serve.zone/workloadinit';
|
|
4
|
+
readonly sourceRepository: 'https://code.foss.global/serve.zone/workloadinit.git';
|
|
5
|
+
readonly imageRegistry: 'code.foss.global';
|
|
6
|
+
readonly imageRepository: 'serve.zone/workloadinit';
|
|
7
|
+
readonly imageIndexMediaType: 'application/vnd.oci.image.index.v1+json';
|
|
8
|
+
readonly statementType: 'https://in-toto.io/Statement/v1';
|
|
9
|
+
readonly predicateType: 'https://slsa.dev/provenance/v1';
|
|
10
|
+
readonly buildType: 'https://serve.zone/buildtypes/workloadinit-gitzone-tsdocker';
|
|
11
|
+
readonly builderId: 'https://serve.zone/builders/workloadinit-manual-release';
|
|
12
|
+
readonly signatureFormat: 'cosign-dsse-bundle-v0.3';
|
|
13
|
+
readonly signatureAlgorithm: 'ecdsa-p256-sha256';
|
|
14
14
|
}>;
|
|
15
15
|
export interface IWorkloadInitBuildToolVersions {
|
|
16
16
|
dockerBuildx: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/interfaces",
|
|
3
|
-
"version": "32.
|
|
3
|
+
"version": "32.53.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
|
|
6
6
|
"exports": {
|
|
@@ -27,11 +27,12 @@
|
|
|
27
27
|
"@tsclass/tsclass": "^9.5.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@git.zone/tsbuild": "^
|
|
30
|
+
"@git.zone/tsbuild": "^6.0.0",
|
|
31
31
|
"@git.zone/tsdoc": "^3.0.2",
|
|
32
32
|
"@git.zone/tsrun": "^3.0.2",
|
|
33
33
|
"@git.zone/tstest": "^7.2.0",
|
|
34
|
-
"@types/node": "26.6.3"
|
|
34
|
+
"@types/node": "26.6.3",
|
|
35
|
+
"typescript": "^6.0.3"
|
|
35
36
|
},
|
|
36
37
|
"files": [
|
|
37
38
|
"ts/**/*",
|
package/readme.md
CHANGED
|
@@ -203,6 +203,19 @@ current authority or workload readiness. Persist only the report and receipt in
|
|
|
203
203
|
`IClusterNode.data.sparkNodeReport`, never the bearer. Keep legacy reporting
|
|
204
204
|
separate. This endpoint does not deliver or acknowledge operator actions.
|
|
205
205
|
|
|
206
|
+
`data.sparkNodeHostContract` defines the node's desired-host route,
|
|
207
|
+
`/spark/nodes/host`, with 1024-byte request and response bounds, authenticated and
|
|
208
|
+
judged in the same order as the heartbeat. `ISparkNodeHostRequest` carries the
|
|
209
|
+
Spark bearer and the sender's offer; `ISparkNodeDesiredHost` answers with the whole
|
|
210
|
+
desired value of `IClusterNode.data.hostnameIntent` — the hostname and its
|
|
211
|
+
generation — never a change, and `hostname: null` with generation `0` states that
|
|
212
|
+
Cloudly holds no intent, so Spark leaves the host's hostname as it is. Spark applies
|
|
213
|
+
the latest generation and states the outcome of its last attempt as the optional
|
|
214
|
+
`ISparkNodeReport.hostApply` (`applied`, or `failed` with a bounded reason) on its
|
|
215
|
+
next heartbeat; the node has converged when `runtime.hostname` states the intent's
|
|
216
|
+
hostname. A Spark that sends `hostApply` raises its `minimumPeerVersion` so it
|
|
217
|
+
reaches only a Cloudly that reads it.
|
|
218
|
+
|
|
206
219
|
The snapshot functions reject unknown keys, accessors, malformed identities and
|
|
207
220
|
nonfinite/out-of-range numbers, then return detached frozen records. Transports
|
|
208
221
|
own byte limits, timeouts and cancellation. These contracts do not implement a
|
|
@@ -2921,6 +2934,11 @@ Common data contracts include:
|
|
|
2921
2934
|
|
|
2922
2935
|
- `ICluster` and `IClusterNode` for cluster membership and provisioning state, including the
|
|
2923
2936
|
optional `ICluster.data.relay` block described below.
|
|
2937
|
+
- `clusternodehostname` for the static hostname Cloudly wants a node to carry:
|
|
2938
|
+
`IClusterNodeHostnameIntent` on `IClusterNode.data.hostnameIntent`, the default scheme
|
|
2939
|
+
`cloudly-worker-<name>` (`clusterNodeHostnameContract`, `deriveDefaultClusterNodeHostname`,
|
|
2940
|
+
`proposeClusterNodeName`) and the named `clusterNodeHostnameRefusals` of
|
|
2941
|
+
`setClusterNodeHostname` and `resetClusterNodeHostname`.
|
|
2924
2942
|
- `IService`, `IDeployment`, `IImage`, `IRegistryTarget`, and `IExternalRegistry` for workload delivery.
|
|
2925
2943
|
- Service port contracts including `IServiceTargetPort`, `IServiceDomainRoute`, and `IServicePublicPortMapping` for canonical backend targets, domain target references, and edge/Coretraffic TCP/UDP public exposure.
|
|
2926
2944
|
- `IDomain`, `IDnsEntry`, and traffic contracts for routing and DNS management.
|
|
@@ -3541,6 +3559,7 @@ Compatibility rules:
|
|
|
3541
3559
|
- Every level has exact keys; an unknown member is `schemaInvalid` (`appstore.validateAppStoreCatalog`).
|
|
3542
3560
|
- `requiresFeatures` gates one version: a consumer passes the feature ids it fulfils (`supportedFeatureIds`, e.g. `appStoreStorageFeatureIds` values). A version naming any other id stays listed, is refused for install and upgrade there, and its config is not interpreted, so a new config capability ships under a feature id without refusing the rest of the catalog (`appstore.getAppStoreCatalogMissingFeatureIds`).
|
|
3543
3561
|
- A published `app@version` stays in every later catalog and never changes (`appstore.judgeAppStoreCatalogSuccession`): a later catalog that no longer lists it is `publishedVersionRemoved`, one that lists it with another `configDigest` is `publishedVersionMutated`, and a revision that does not increase is `revisionRegressed`.
|
|
3562
|
+
- A version names the oldest host releases that run it (`minOneboxVersion`, `minCloudlyVersion`). A host passes itself to `appstore.judgeAppStoreCatalogInstallTarget` as `{ kind: 'onebox' | 'cloudly', version }` (`IAppStoreCatalogConsumer`), which refuses a version needing a newer release of it as `consumerVersionTooOld`; the version stays listed and installs once the host is upgraded.
|
|
3544
3563
|
- A publisher retires a version by withdrawing it, never by removing it. A withdrawn version keeps its entry, config and digest, so services installed from it keep reading it, and is refused as an install or upgrade target, like a version gated on a feature the consumer lacks (`appstore.judgeAppStoreCatalogInstallTarget`). A withdrawal is final: a later catalog that revokes or rewrites it is `publishedWithdrawalChanged`; a version withdrawn by mistake is republished under a new version.
|
|
3545
3564
|
|
|
3546
3565
|
Digests are SHA-256 over strict canonical JSON (keys in UTF-16 code-unit order, safe integers only) of a domain-separated value: `computeAppStoreCatalogConfigDigest`, `computeAppStoreCatalogDigest` and `computeAppStoreCatalogSigningKeyId`. A signature covers `createAppStoreCatalogSignaturePayload(catalogDigest)`. These helpers use Web Crypto and are safe in the browser entry.
|
|
@@ -3565,6 +3584,14 @@ if (!verification.accepted) {
|
|
|
3565
3584
|
|
|
3566
3585
|
`verifyAppStoreCatalogEnvelope` authenticates before it interprets: envelope shape, `catalogDigest`, one valid signature by a trusted key (a failing signature by a trusted key refuses the envelope), then contract, schema and every `configDigest`. The consumer then judges succession against its active catalog.
|
|
3567
3586
|
|
|
3587
|
+
A publisher keeps its signing key as a file: `importAppStoreCatalogSigningKeyPem(text)` reads one unencrypted PKCS#8 PEM Ed25519 private key (`openssl genpkey -algorithm ed25519`) into an `IAppStoreCatalogSigningKey` with its public key and key id, and `exportAppStoreCatalogSigningKeyPem(key)` writes one. `getAppStoreCatalogTrustedKey(key)` is the `IAppStoreCatalogTrustedKey` a consumer ships for it. A trusted key also converts from and to an SPKI PEM public key (`openssl pkey -pubout`) with `importAppStoreCatalogTrustedKeyPem` and `exportAppStoreCatalogTrustedKeyPem`. Each refuses another PEM label or key type and a key id that does not match its public key, and no error quotes its input.
|
|
3588
|
+
|
|
3589
|
+
A service records the App Store version it runs as `IService.data.appStoreTemplate` (`IAppStoreServiceTemplateSnapshot`: `appId`, `version`, `configDigest`, `config`, `catalogRevision`), taken from a verified catalog by `appstore.createAppStoreServiceTemplateSnapshot`. It is server-managed (`TServiceWritableData` excludes it): the host writes it at install, upgrade and catalog adoption, and runtime paths read it, never the live catalog. While no catalog is active, an `unavailable` status states its `cause` (`loading`, `failed`, `refused`) for programs next to the operator's `reason`, and App Store install, upgrade and upgrade preview are refused with the retryable code `APPSTORE_CATALOG_UNAVAILABLE` (`IAppStoreCatalogUnavailableErrorData`). `IReq_Any_ImportAppStoreCatalog` imports an operator's envelope text (origin `operatorImport`) and answers the status after it, so an air-gapped host needs no registry.
|
|
3590
|
+
|
|
3591
|
+
A host loads the catalog from the npm registries `appstore.resolveAppStoreCatalogRegistries(list)` answers: the configured list (Cloudly's `ICloudlySettings.appStoreCatalogRegistries`, an Onebox setting) in canonical form, or `appStoreCatalogDefaultRegistries` (npmjs) when it is empty. `appstore.validateAppStoreCatalogRegistries` is the one rule for a configured list: `https:` base URLs without credentials, query or fragment, each registry once.
|
|
3592
|
+
|
|
3593
|
+
A host's App Store views carry the listing as `IAppStoreApp` and `IAppStoreAppMeta`: `versions` names the install targets, and the optional `versionStates` (`IAppStoreAppVersionState`) states every listed version, withdrawn and feature-gated ones included, with its `judgeAppStoreCatalogInstallTarget` answer as `installRefusal`.
|
|
3594
|
+
|
|
3568
3595
|
`TAppStoreCatalogStatus` is the operator's view, discriminated by `availability`: `ready` (`IAppStoreCatalogReadyStatus`) always carries the `active` catalog's revision, digest, key and origin, including a restored last-known-good catalog; `unavailable` (`IAppStoreCatalogUnavailableStatus`) always carries a `reason` and no active catalog. Both state `supportedContract`, `supportedFeatureIds`, `lastAttempt`, `nextAttemptAt` and the last `refused` catalog. Loading a catalog never gates the boot, readiness or health of anything else; while none is active only App Store install, upgrade and upgrade-preview are refused. `requests.appstore.IReq_Any_GetAppStoreCatalogStatus` reads it, `IReq_Any_RefreshAppStoreCatalog` runs one attempt now and answers the state after it, and `IReq_Any_GetAppStoreTemplates` may answer it as `catalogStatus`.
|
|
3569
3596
|
|
|
3570
3597
|
The catalog validator judges every supported version config in full; no consumer needs a second validator. Besides the catalog's own rules (member set, image pinning, the feature gate, minimum versions, upgrade flags, `healthCheck`) it applies `appstore.validateAppStoreVersionConfig`, the member rules a host applies before it installs a version, in this order:
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/appstore/catalog.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { TSha256Digest } from '../data/immutableimage.js';
|
|
14
14
|
import { getDigestFromPinnedImageReference, isSha256Digest } from '../data/immutableimage.js';
|
|
15
|
+
import { compareReleaseVersions, parseReleaseVersion } from '../data/releaseversion.js';
|
|
15
16
|
import {
|
|
16
17
|
canonicalizeStrictJson,
|
|
17
18
|
compareWireTokens,
|
|
@@ -268,14 +269,39 @@ export interface IAppStoreCatalogReadyStatus extends IAppStoreCatalogStatusBase
|
|
|
268
269
|
reason?: never;
|
|
269
270
|
}
|
|
270
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Why no verified catalog is active, for programs; `reason` says it for operators.
|
|
274
|
+
*
|
|
275
|
+
* - `loading`: no attempt has ended since start and no last-known-good catalog was restored.
|
|
276
|
+
* - `failed`: the last attempt read no candidate (transport, integrity or packaging failed).
|
|
277
|
+
* - `refused`: the last attempt read a candidate and refused it (`refused` holds the record).
|
|
278
|
+
*/
|
|
279
|
+
export type TAppStoreCatalogUnavailableCause = 'loading' | 'failed' | 'refused';
|
|
280
|
+
|
|
271
281
|
/** No verified catalog is active, neither a last-known-good one nor a fetched one. */
|
|
272
282
|
export interface IAppStoreCatalogUnavailableStatus extends IAppStoreCatalogStatusBase {
|
|
273
283
|
availability: 'unavailable';
|
|
274
|
-
/** Why no catalog is active, e.g. the last attempt's failure. */
|
|
284
|
+
/** Why no catalog is active, e.g. the last attempt's failure. For operators; never parse it. */
|
|
275
285
|
reason: string;
|
|
286
|
+
/** Why no catalog is active, for programs. Every host that loads the catalog at runtime states it. */
|
|
287
|
+
cause?: TAppStoreCatalogUnavailableCause;
|
|
276
288
|
active?: never;
|
|
277
289
|
}
|
|
278
290
|
|
|
291
|
+
/**
|
|
292
|
+
* The code a host answers, as `TypedResponseError.errorData` (`IAppStoreCatalogUnavailableErrorData`),
|
|
293
|
+
* when it refuses an App Store install, upgrade or upgrade preview because no verified catalog is
|
|
294
|
+
* active. Retryable: the same request succeeds once a catalog is active.
|
|
295
|
+
*/
|
|
296
|
+
export const appStoreCatalogUnavailableErrorCode = 'APPSTORE_CATALOG_UNAVAILABLE' as const;
|
|
297
|
+
|
|
298
|
+
export interface IAppStoreCatalogUnavailableErrorData {
|
|
299
|
+
code: typeof appStoreCatalogUnavailableErrorCode;
|
|
300
|
+
retryable: true;
|
|
301
|
+
/** The status `cause` when the host states one. */
|
|
302
|
+
cause?: TAppStoreCatalogUnavailableCause;
|
|
303
|
+
}
|
|
304
|
+
|
|
279
305
|
/**
|
|
280
306
|
* The App Store domain's state as an operator sees it, discriminated by `availability`.
|
|
281
307
|
*
|
|
@@ -768,23 +794,167 @@ export const findAppStoreCatalogConfigDigestMismatch = async (
|
|
|
768
794
|
return null;
|
|
769
795
|
};
|
|
770
796
|
|
|
797
|
+
/** The registries a consumer loads the catalog from when it configures none. */
|
|
798
|
+
export const appStoreCatalogDefaultRegistries: readonly string[] = Object.freeze(['https://registry.npmjs.org']);
|
|
799
|
+
|
|
800
|
+
const maximumRegistries = 16;
|
|
801
|
+
const maximumRegistryUrlLength = 2048;
|
|
802
|
+
|
|
803
|
+
/** The canonical base URL of one registry entry, or `null` when the entry is not admissible. */
|
|
804
|
+
const readRegistryBaseUrl = (entryArg: unknown): string | null => {
|
|
805
|
+
if (typeof entryArg !== 'string' || entryArg.length > maximumRegistryUrlLength) return null;
|
|
806
|
+
let url: URL;
|
|
807
|
+
try {
|
|
808
|
+
url = new URL(entryArg);
|
|
809
|
+
} catch {
|
|
810
|
+
return null;
|
|
811
|
+
}
|
|
812
|
+
if (url.protocol !== 'https:' || url.username !== '' || url.password !== '' || url.search !== ''
|
|
813
|
+
|| url.hash !== '' || entryArg.includes('?') || entryArg.includes('#')) {
|
|
814
|
+
return null;
|
|
815
|
+
}
|
|
816
|
+
return url.toString().replace(/\/+$/, '');
|
|
817
|
+
};
|
|
818
|
+
|
|
819
|
+
/**
|
|
820
|
+
* The errors of a configured registry list; empty when a consumer may load from it. Every entry is
|
|
821
|
+
* an `https:` base URL without credentials, query or fragment, no two name the same registry, and
|
|
822
|
+
* an empty list means `appStoreCatalogDefaultRegistries`. Errors name entries by index and never
|
|
823
|
+
* quote them, so a URL carrying credentials does not reach a log.
|
|
824
|
+
*/
|
|
825
|
+
export const validateAppStoreCatalogRegistries = (listArg: unknown): string[] => {
|
|
826
|
+
const entries = readDataElements(listArg, maximumRegistries);
|
|
827
|
+
if (entries === null) return [`registries must be a list of at most ${maximumRegistries} URLs`];
|
|
828
|
+
const errors: string[] = [];
|
|
829
|
+
const seen = new Set<string>();
|
|
830
|
+
entries.forEach((entryArg, indexArg) => {
|
|
831
|
+
const baseUrl = readRegistryBaseUrl(entryArg);
|
|
832
|
+
if (baseUrl === null) {
|
|
833
|
+
errors.push(`registries[${indexArg}] must be an https base URL without credentials, query or fragment`);
|
|
834
|
+
} else if (seen.has(baseUrl)) {
|
|
835
|
+
errors.push(`registries[${indexArg}] names a registry listed before it`);
|
|
836
|
+
} else {
|
|
837
|
+
seen.add(baseUrl);
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
return errors;
|
|
841
|
+
};
|
|
842
|
+
|
|
843
|
+
/**
|
|
844
|
+
* The registry base URLs a consumer asks, in order: the configured list in canonical form (no
|
|
845
|
+
* trailing slash), or `appStoreCatalogDefaultRegistries` when it is absent or empty. Throws the
|
|
846
|
+
* `validateAppStoreCatalogRegistries` errors for a list it refuses.
|
|
847
|
+
*/
|
|
848
|
+
export const resolveAppStoreCatalogRegistries = (listArg: readonly string[] | undefined): string[] => {
|
|
849
|
+
const errors = validateAppStoreCatalogRegistries(listArg ?? []);
|
|
850
|
+
if (errors.length > 0) throw new Error(`App Store catalog registries refused: ${errors.join('; ')}`);
|
|
851
|
+
const configured = (listArg ?? []).map((entryArg) => readRegistryBaseUrl(entryArg))
|
|
852
|
+
.filter((entryArg): entryArg is string => entryArg !== null);
|
|
853
|
+
return configured.length > 0 ? configured : [...appStoreCatalogDefaultRegistries];
|
|
854
|
+
};
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* The App Store version a service runs, as its host took it from a verified catalog.
|
|
858
|
+
*
|
|
859
|
+
* Server-managed: a host writes it when it installs or upgrades the service and when it adopts an
|
|
860
|
+
* existing service on catalog activation, and every runtime path reads this snapshot, never the
|
|
861
|
+
* live catalog. Published versions never change (`judgeAppStoreCatalogSuccession`), so a snapshot
|
|
862
|
+
* stays equal to its catalog entry for as long as the entry is listed.
|
|
863
|
+
*/
|
|
864
|
+
export interface IAppStoreServiceTemplateSnapshot {
|
|
865
|
+
appId: string;
|
|
866
|
+
version: string;
|
|
867
|
+
/** The catalog entry's `configDigest`: `computeAppStoreCatalogConfigDigest(config)`. */
|
|
868
|
+
configDigest: TSha256Digest;
|
|
869
|
+
config: TAppStoreCatalogVersionConfig;
|
|
870
|
+
/** The `revision` of the catalog the snapshot was taken from. */
|
|
871
|
+
catalogRevision: number;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* The snapshot of `appId@version` from a verified catalog, or `null` when the catalog does not list
|
|
876
|
+
* it. Withdrawn versions are listed and snapshot like any other: a host adopting an installed
|
|
877
|
+
* service records the version it runs; whether a version is an install or upgrade target is
|
|
878
|
+
* `judgeAppStoreCatalogInstallTarget`. The config is a copy the caller owns.
|
|
879
|
+
*/
|
|
880
|
+
export const createAppStoreServiceTemplateSnapshot = (
|
|
881
|
+
catalogArg: IAppStoreCatalog,
|
|
882
|
+
appIdArg: string,
|
|
883
|
+
versionArg: string,
|
|
884
|
+
): IAppStoreServiceTemplateSnapshot | null => {
|
|
885
|
+
const entry = catalogArg.apps.find((appArg) => appArg.info.id === appIdArg)
|
|
886
|
+
?.versions.find((candidateArg) => candidateArg.version === versionArg);
|
|
887
|
+
if (entry === undefined) return null;
|
|
888
|
+
return {
|
|
889
|
+
appId: appIdArg,
|
|
890
|
+
version: entry.version,
|
|
891
|
+
configDigest: entry.configDigest,
|
|
892
|
+
config: structuredClone(entry.config),
|
|
893
|
+
catalogRevision: catalogArg.revision,
|
|
894
|
+
};
|
|
895
|
+
};
|
|
896
|
+
|
|
897
|
+
/** The hosts that consume the catalog; each version names its minimum release of each. */
|
|
898
|
+
export type TAppStoreCatalogConsumerKind = 'onebox' | 'cloudly';
|
|
899
|
+
|
|
900
|
+
/** The consumer judging a version: which host it is and the release it runs. */
|
|
901
|
+
export interface IAppStoreCatalogConsumer {
|
|
902
|
+
kind: TAppStoreCatalogConsumerKind;
|
|
903
|
+
/** The host's own release, `MAJOR.MINOR.PATCH`. */
|
|
904
|
+
version: string;
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
const consumerMinimumVersionKeys = Object.freeze({
|
|
908
|
+
onebox: 'minOneboxVersion',
|
|
909
|
+
cloudly: 'minCloudlyVersion',
|
|
910
|
+
} as const);
|
|
911
|
+
|
|
771
912
|
/** Why a listed version is not an install or upgrade target for this consumer. */
|
|
772
913
|
export type TAppStoreCatalogInstallTargetRefusal =
|
|
773
914
|
| { reason: 'versionWithdrawn'; withdrawal: IAppStoreCatalogWithdrawal }
|
|
774
|
-
| { reason: 'featuresUnsupported'; missingFeatureIds: string[] }
|
|
915
|
+
| { reason: 'featuresUnsupported'; missingFeatureIds: string[] }
|
|
916
|
+
/** The version names a minimum release of this host (`minOneboxVersion`, `minCloudlyVersion`) newer than it runs. */
|
|
917
|
+
| {
|
|
918
|
+
reason: 'consumerVersionTooOld';
|
|
919
|
+
consumerKind: TAppStoreCatalogConsumerKind;
|
|
920
|
+
consumerVersion: string;
|
|
921
|
+
minimumVersion: string;
|
|
922
|
+
};
|
|
775
923
|
|
|
776
924
|
/**
|
|
777
925
|
* Whether a consumer may install a listed version, or upgrade a service to it; `null` when it may.
|
|
778
|
-
* A withdrawn version
|
|
779
|
-
* and are refused here,
|
|
926
|
+
* A withdrawn version, a version requiring a feature the consumer does not fulfil and a version
|
|
927
|
+
* requiring a newer release of the consumer stay listed and are refused here, in that order, and
|
|
928
|
+
* nowhere else is a second answer needed.
|
|
929
|
+
*
|
|
930
|
+
* A host passes `consumerArg` on every call; without it the minimum release is not judged. A
|
|
931
|
+
* consumer version that is not `MAJOR.MINOR.PATCH` throws: it is the host's own constant.
|
|
780
932
|
*/
|
|
781
933
|
export const judgeAppStoreCatalogInstallTarget = (
|
|
782
934
|
versionArg: IAppStoreCatalogVersion,
|
|
783
935
|
supportedFeatureIdsArg: Iterable<string>,
|
|
936
|
+
consumerArg?: IAppStoreCatalogConsumer,
|
|
784
937
|
): TAppStoreCatalogInstallTargetRefusal | null => {
|
|
938
|
+
const consumerVersion = consumerArg === undefined ? null : parseReleaseVersion(consumerArg.version);
|
|
939
|
+
if (consumerArg !== undefined && consumerVersion === null) {
|
|
940
|
+
throw new Error('App Store catalog consumer version must be MAJOR.MINOR.PATCH');
|
|
941
|
+
}
|
|
785
942
|
if (versionArg.withdrawn !== undefined) return { reason: 'versionWithdrawn', withdrawal: versionArg.withdrawn };
|
|
786
943
|
const missingFeatureIds = getAppStoreCatalogMissingFeatureIds(versionArg.config, supportedFeatureIdsArg);
|
|
787
|
-
|
|
944
|
+
if (missingFeatureIds.length > 0) return { reason: 'featuresUnsupported', missingFeatureIds };
|
|
945
|
+
if (consumerArg === undefined || consumerVersion === null) return null;
|
|
946
|
+
const minimumVersion = versionArg.config[consumerMinimumVersionKeys[consumerArg.kind]];
|
|
947
|
+
if (minimumVersion === undefined) return null;
|
|
948
|
+
const minimum = parseReleaseVersion(minimumVersion);
|
|
949
|
+
if (minimum === null || compareReleaseVersions(consumerVersion, minimum) < 0) {
|
|
950
|
+
return {
|
|
951
|
+
reason: 'consumerVersionTooOld',
|
|
952
|
+
consumerKind: consumerArg.kind,
|
|
953
|
+
consumerVersion: consumerArg.version,
|
|
954
|
+
minimumVersion,
|
|
955
|
+
};
|
|
956
|
+
}
|
|
957
|
+
return null;
|
|
788
958
|
};
|
|
789
959
|
|
|
790
960
|
export type TAppStoreCatalogSuccession =
|
package/ts/appstore/types.ts
CHANGED
|
@@ -27,6 +27,7 @@ import type {
|
|
|
27
27
|
TStorageResourceKind,
|
|
28
28
|
TStorageSnapshotMode,
|
|
29
29
|
} from '../platform/storage.js';
|
|
30
|
+
import type { TAppStoreCatalogInstallTargetRefusal } from './catalog.js';
|
|
30
31
|
|
|
31
32
|
export type TAppStorePlatformRequirement =
|
|
32
33
|
| 'mongodb'
|
|
@@ -314,6 +315,18 @@ export const validateAppStoreVersionPlatformOidc = (
|
|
|
314
315
|
return errors;
|
|
315
316
|
};
|
|
316
317
|
|
|
318
|
+
/** One listed version of an app as a host shows it: an install target, or why it is not one. */
|
|
319
|
+
export interface IAppStoreAppVersionState {
|
|
320
|
+
version: string;
|
|
321
|
+
/**
|
|
322
|
+
* `null` when the host may install the version or upgrade a service to it; otherwise
|
|
323
|
+
* `versionWithdrawn` with the withdrawal, `featuresUnsupported` with the feature ids the host
|
|
324
|
+
* does not fulfil or `consumerVersionTooOld` with the host release the version requires, as
|
|
325
|
+
* `judgeAppStoreCatalogInstallTarget` answers it.
|
|
326
|
+
*/
|
|
327
|
+
installRefusal: TAppStoreCatalogInstallTargetRefusal | null;
|
|
328
|
+
}
|
|
329
|
+
|
|
317
330
|
export interface IAppStoreApp {
|
|
318
331
|
id: string;
|
|
319
332
|
name: string;
|
|
@@ -323,6 +336,12 @@ export interface IAppStoreApp {
|
|
|
323
336
|
iconUrl?: string;
|
|
324
337
|
latestVersion: string;
|
|
325
338
|
versions?: string[];
|
|
339
|
+
/**
|
|
340
|
+
* Every version the catalog lists, withdrawn and feature-gated ones included, in catalog order,
|
|
341
|
+
* each with whether this host may install it. `versions` names only the install targets; a view
|
|
342
|
+
* reads this member to show the others and why they are not offered.
|
|
343
|
+
*/
|
|
344
|
+
versionStates?: IAppStoreAppVersionState[];
|
|
326
345
|
tags?: string[];
|
|
327
346
|
channel?: string;
|
|
328
347
|
upgradeStrategy?: TAppStoreUpgradeStrategy;
|
|
@@ -346,6 +365,12 @@ export interface IAppStoreAppMeta {
|
|
|
346
365
|
iconName?: string;
|
|
347
366
|
latestVersion: string;
|
|
348
367
|
versions: string[];
|
|
368
|
+
/**
|
|
369
|
+
* Every version the catalog lists, withdrawn and feature-gated ones included, in catalog order,
|
|
370
|
+
* each with whether this host may install it. `versions` names only the install targets; a view
|
|
371
|
+
* reads this member to show the others and why they are not offered.
|
|
372
|
+
*/
|
|
373
|
+
versionStates?: IAppStoreAppVersionState[];
|
|
349
374
|
maintainer?: string;
|
|
350
375
|
links?: Record<string, string>;
|
|
351
376
|
tags?: string[];
|
package/ts/data/clusternode.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import { isSha256Digest, type TSha256Digest, type TImmutableContainerPlatform } from './immutableimage.js';
|
|
3
3
|
import type { ISparkNodeReportRecord } from './sparknodereport.js';
|
|
4
|
+
import type { IClusterNodeHostnameIntent } from './clusternodehostname.js';
|
|
4
5
|
import type { IPlatformObjectStorageEndpoint } from '../platform/objectstorage.js';
|
|
5
6
|
import type { IPlatformDatabaseEndpoint } from '../platform/database.js';
|
|
6
7
|
import {
|
|
@@ -1765,6 +1766,13 @@ export interface IClusterNode {
|
|
|
1765
1766
|
|
|
1766
1767
|
/** Separately accepted Pallet-era host report; never grants workload readiness. */
|
|
1767
1768
|
sparkNodeReport?: ISparkNodeReportRecord;
|
|
1769
|
+
|
|
1770
|
+
/**
|
|
1771
|
+
* The static hostname Cloudly wants this node to carry, which Spark applies on the host. The
|
|
1772
|
+
* node has converged when `sparkNodeReport` states the same hostname. Absent until enrollment
|
|
1773
|
+
* or a migration records one; Spark then leaves the host's hostname as it is.
|
|
1774
|
+
*/
|
|
1775
|
+
hostnameIntent?: IClusterNodeHostnameIntent;
|
|
1768
1776
|
|
|
1769
1777
|
/**
|
|
1770
1778
|
* Docker swarm node ID if part of swarm
|