@norskvideo/ctl-product-template-schema 0.1.24 → 0.1.26
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/index.d.ts +18 -0
- package/index.js +7 -0
- package/migration-socket.js +7 -2
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -30,6 +30,9 @@ export declare const ProductTemplateAdvancedSchema: z.ZodObject<{
|
|
|
30
30
|
domain: z.ZodOptional<z.ZodObject<{
|
|
31
31
|
default: z.ZodOptional<z.ZodString>;
|
|
32
32
|
}, z.core.$strip>>;
|
|
33
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
default: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
33
36
|
openFileLimit: z.ZodOptional<z.ZodObject<{
|
|
34
37
|
default: z.ZodOptional<z.ZodNumber>;
|
|
35
38
|
}, z.core.$strip>>;
|
|
@@ -123,6 +126,9 @@ export declare const ProductTemplateRequirementsSchema: z.ZodObject<{
|
|
|
123
126
|
}>;
|
|
124
127
|
value: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
125
128
|
}, z.core.$strip>>;
|
|
129
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
130
|
+
count: z.ZodNumber;
|
|
131
|
+
}, z.core.$strip>>;
|
|
126
132
|
}, z.core.$strip>;
|
|
127
133
|
export type ProductTemplateRequirements = z.infer<typeof ProductTemplateRequirementsSchema>;
|
|
128
134
|
export declare const PRODUCT_TEMPLATE_MIGRATION_STRATEGIES: readonly ["overlap", "stopThenStart", "handover"];
|
|
@@ -205,6 +211,9 @@ export declare const ProductTemplateManifestSchema: z.ZodObject<{
|
|
|
205
211
|
domain: z.ZodOptional<z.ZodObject<{
|
|
206
212
|
default: z.ZodOptional<z.ZodString>;
|
|
207
213
|
}, z.core.$strip>>;
|
|
214
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
215
|
+
default: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
216
|
+
}, z.core.$strip>>;
|
|
208
217
|
openFileLimit: z.ZodOptional<z.ZodObject<{
|
|
209
218
|
default: z.ZodOptional<z.ZodNumber>;
|
|
210
219
|
}, z.core.$strip>>;
|
|
@@ -274,6 +283,9 @@ export declare const ProductTemplateManifestSchema: z.ZodObject<{
|
|
|
274
283
|
}>;
|
|
275
284
|
value: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
276
285
|
}, z.core.$strip>>;
|
|
286
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
287
|
+
count: z.ZodNumber;
|
|
288
|
+
}, z.core.$strip>>;
|
|
277
289
|
}, z.core.$strip>>;
|
|
278
290
|
allocatedPorts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
279
291
|
param: z.ZodString;
|
|
@@ -415,6 +427,9 @@ export declare const ProductTemplateMaterialsSchema: z.ZodObject<{
|
|
|
415
427
|
domain: z.ZodOptional<z.ZodObject<{
|
|
416
428
|
default: z.ZodOptional<z.ZodString>;
|
|
417
429
|
}, z.core.$strip>>;
|
|
430
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
431
|
+
default: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
432
|
+
}, z.core.$strip>>;
|
|
418
433
|
openFileLimit: z.ZodOptional<z.ZodObject<{
|
|
419
434
|
default: z.ZodOptional<z.ZodNumber>;
|
|
420
435
|
}, z.core.$strip>>;
|
|
@@ -484,6 +499,9 @@ export declare const ProductTemplateMaterialsSchema: z.ZodObject<{
|
|
|
484
499
|
}>;
|
|
485
500
|
value: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
486
501
|
}, z.core.$strip>>;
|
|
502
|
+
st2110Nics: z.ZodOptional<z.ZodObject<{
|
|
503
|
+
count: z.ZodNumber;
|
|
504
|
+
}, z.core.$strip>>;
|
|
487
505
|
}, z.core.$strip>>;
|
|
488
506
|
allocatedPorts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
489
507
|
param: z.ZodString;
|
package/index.js
CHANGED
|
@@ -134,6 +134,10 @@ export const ProductTemplateAdvancedSchema = z
|
|
|
134
134
|
// without the operator naming it; a launch can override, or decline with
|
|
135
135
|
// "" to run isolated.
|
|
136
136
|
domain: z.object({ default: z.string().optional() }).optional(),
|
|
137
|
+
// ST 2110 NICs (by interface name) an instance claims for MTL. A product
|
|
138
|
+
// that knows its host (a customer turnkey) can name them as its default;
|
|
139
|
+
// the launch overrides, or declines with [].
|
|
140
|
+
st2110Nics: z.object({ default: z.array(z.string()).optional() }).optional(),
|
|
137
141
|
// Open file descriptors per container. The runner already states a ceiling
|
|
138
142
|
// for every instance (unset, containers inherit the host daemon's limit,
|
|
139
143
|
// which is how a media graph at ~1000 handles dies of EMFILE on some hosts
|
|
@@ -267,6 +271,9 @@ export const ProductTemplateRequirementsSchema = z
|
|
|
267
271
|
hostPorts: requirementDimension(z.array(z.string().regex(/^\d+\/(tcp|udp)$/i, "canonical PORT/proto token, e.g. 5001/udp")).min(1))
|
|
268
272
|
.optional()
|
|
269
273
|
.meta({ description: "Fixed host sockets the job binds (exclusive)." }),
|
|
274
|
+
st2110Nics: z.object({ count: z.number().int().positive() }).optional().meta({
|
|
275
|
+
description: "How many ST 2110 NICs an instance must claim. For a product that cannot know which NICs a host has: the operator picks them at launch (advanced.st2110Nics names a default).",
|
|
276
|
+
}),
|
|
270
277
|
})
|
|
271
278
|
.meta({ id: "ProductTemplateRequirements", outputId: "ProductTemplateRequirements" });
|
|
272
279
|
// How a running instance of the product may be moved between nodes
|
package/migration-socket.js
CHANGED
|
@@ -7,12 +7,17 @@
|
|
|
7
7
|
// Transport: a WebSocket on the worker host, default port 6797, reached from
|
|
8
8
|
// a container as `host.docker.internal`. Path `/instances/<jobId>/<role>`
|
|
9
9
|
// where `role` is the instance KEY (unique per migration target), both
|
|
10
|
-
// url-encoded. JSON text frames, each ≤
|
|
10
|
+
// url-encoded. JSON text frames, each ≤ 1 MiB. `payload` is any JSON, opaque
|
|
11
11
|
// to the worker; on the gRPC wire it becomes the UTF-8 bytes of its
|
|
12
12
|
// JSON.stringify and comes back the same way.
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
export const JOB_SOCKET_DEFAULT_PORT = 6797;
|
|
15
|
-
|
|
15
|
+
// 1 MiB. It was 64 KiB, which a handover's `source-stopped-output` — the
|
|
16
|
+
// state of every participant, gathered after the source has stopped its
|
|
17
|
+
// output — could exceed with a few dozen nodes of 32 KiB each; the worker
|
|
18
|
+
// then closed the socket (4413) with the source already stopped. The SDK
|
|
19
|
+
// checks its own frames against this before sending (migration-client.ts).
|
|
20
|
+
export const JOB_SOCKET_MAX_FRAME_BYTES = 1024 * 1024;
|
|
16
21
|
export const JOB_SOCKET_HELLO_TIMEOUT_MS = 5_000;
|
|
17
22
|
/** The name a container reaches its own worker's host under. Injected as an
|
|
18
23
|
* `extra_hosts` mapping on every service so it resolves on native Linux too. */
|