@calltelemetry/ct-lab-mcp 0.8.68 → 0.8.70
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/README.md +5 -1
- package/dist/src/appliance/executor.d.ts.map +1 -1
- package/dist/src/appliance/executor.js +3 -172
- package/dist/src/appliance/executor.js.map +1 -1
- package/dist/src/hypervisors/esxi/client.d.ts.map +1 -1
- package/dist/src/hypervisors/esxi/client.js +5 -0
- package/dist/src/hypervisors/esxi/client.js.map +1 -1
- package/dist/src/hypervisors/manager.d.ts +1 -0
- package/dist/src/hypervisors/manager.d.ts.map +1 -1
- package/dist/src/hypervisors/manager.js +5 -2
- package/dist/src/hypervisors/manager.js.map +1 -1
- package/dist/src/proxmox/client.d.ts.map +1 -1
- package/dist/src/proxmox/client.js +17 -0
- package/dist/src/proxmox/client.js.map +1 -1
- package/dist/src/slot/manager.d.ts +12 -2
- package/dist/src/slot/manager.d.ts.map +1 -1
- package/dist/src/slot/manager.js +37 -4
- package/dist/src/slot/manager.js.map +1 -1
- package/dist/src/slot/purge-controller.d.ts +1 -0
- package/dist/src/slot/purge-controller.d.ts.map +1 -1
- package/dist/src/slot/purge-controller.js +4 -33
- package/dist/src/slot/purge-controller.js.map +1 -1
- package/dist/src/tools/appliance-claim-tools.d.ts +11 -7
- package/dist/src/tools/appliance-claim-tools.d.ts.map +1 -1
- package/dist/src/tools/appliance-claim-tools.js +28 -81
- package/dist/src/tools/appliance-claim-tools.js.map +1 -1
- package/dist/src/tools/appliance-exec.d.ts +4 -4
- package/dist/src/tools/claim-creation-projection.d.ts +7 -0
- package/dist/src/tools/claim-creation-projection.d.ts.map +1 -0
- package/dist/src/tools/claim-creation-projection.js +112 -0
- package/dist/src/tools/claim-creation-projection.js.map +1 -0
- package/dist/src/tools/claim-first.d.ts.map +1 -1
- package/dist/src/tools/claim-first.js +19 -15
- package/dist/src/tools/claim-first.js.map +1 -1
- package/dist/src/tools/claimed-import-qcow.d.ts +2 -2
- package/dist/src/tools/find-slot.d.ts +1 -1
- package/dist/src/tools/import-qcow.d.ts +6 -6
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +5 -1
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/legacy-guest-guard.d.ts +4 -0
- package/dist/src/tools/legacy-guest-guard.d.ts.map +1 -0
- package/dist/src/tools/legacy-guest-guard.js +26 -0
- package/dist/src/tools/legacy-guest-guard.js.map +1 -0
- package/dist/src/tools/license-tools.d.ts +2 -2
- package/dist/src/tools/list-hosts.d.ts.map +1 -1
- package/dist/src/tools/list-hosts.js +17 -9
- package/dist/src/tools/list-hosts.js.map +1 -1
- package/dist/src/tools/physical-slot-claim-spec-schema.v1.json +1 -0
- package/dist/src/tools/physical-slot.d.ts +205 -0
- package/dist/src/tools/physical-slot.d.ts.map +1 -0
- package/dist/src/tools/physical-slot.js +295 -0
- package/dist/src/tools/physical-slot.js.map +1 -0
- package/dist/src/tools/provision-tools.d.ts +18 -18
- package/dist/src/tools/sandbox-tools.d.ts +2 -2
- package/dist/src/tools/slot-kubernetes.d.ts +13 -0
- package/dist/src/tools/slot-kubernetes.d.ts.map +1 -0
- package/dist/src/tools/slot-kubernetes.js +108 -0
- package/dist/src/tools/slot-kubernetes.js.map +1 -0
- package/dist/src/tools/slot-tools.d.ts +8 -8
- package/dist/src/tools/vm-action.d.ts +4 -4
- package/dist/src/transports/sse.d.ts.map +1 -1
- package/dist/src/transports/sse.js +61 -30
- package/dist/src/transports/sse.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-hosts.js","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list-hosts.js","sourceRoot":"","sources":["../../../src/tools/list-hosts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"properties":{"adminEmail":{"default":"demo@calltelemetry.com","type":"string"},"adminPassword":{"type":"string"},"adminPasswordSecretRef":{"properties":{"key":{"default":"password","type":"string"},"name":{"type":"string"}},"type":"object"},"applianceId":{"type":"string"},"claimType":{"default":"dynamic","enum":["dynamic","fixture"],"type":"string"},"closed":{"type":"boolean"},"containerOverrides":{"properties":{"jtapi":{"type":"string"},"media":{"type":"string"},"syslog":{"type":"string"},"vue":{"type":"string"},"web":{"type":"string"}},"type":"object"},"cubes":{"items":{"properties":{"dialpeers":{"items":{"properties":{"codec":{"default":"g711ulaw","enum":["g711ulaw","g711alaw","g729","g729r8"],"type":"string"},"destinationPattern":{"type":"string"},"dtmfRelay":{"default":"rtp-nte","enum":["rtp-nte","cisco-rtp","sip-notify","sip-kpml"],"type":"string"},"incomingCalledNumber":{"type":"string"},"preference":{"default":0,"maximum":10,"minimum":0,"type":"integer"},"sessionTarget":{"type":"string"},"tag":{"maximum":2147483647,"minimum":1,"type":"integer"},"type":{"default":"voip","enum":["voip","pots"],"type":"string"}},"required":["tag"],"type":"object"},"type":"array"},"gatewayIp":{"pattern":"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"ip":{"pattern":"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"mode":{"default":"dynamic_vm","enum":["dynamic_vm","dynamic_mock","claim_fixture","in_guest_emulator"],"type":"string"},"name":{"type":"string"},"node":{"default":"proxmox","type":"string"},"role":{"enum":["cucm-edge","att-pstn","internal","external","standalone"],"type":"string"},"templateVmid":{"default":200,"type":"integer"},"vlan":{"default":125,"maximum":4094,"minimum":1,"type":"integer"},"vmid":{"maximum":299,"minimum":200,"type":"integer"},"xcc":{"properties":{"applianceUrl":{"type":"string"},"enabled":{"default":true,"type":"boolean"},"heartbeatIntervalSeconds":{"default":15,"maximum":300,"minimum":1,"type":"integer"},"remoteUrl":{"type":"string"}},"type":"object"}},"required":["name","role","mode","ip"],"type":"object"},"type":"array"},"cucmEmulator":{"properties":{"axlVersion":{"default":"14.0","enum":["11.5","12.0","12.5","14.0","15.0"],"type":"string"},"cdrPublisher":{"properties":{"enabled":{"default":true,"type":"boolean"},"intervalSeconds":{"default":60,"maximum":3600,"minimum":5,"type":"integer"},"sftpDestination":{"properties":{"host":{"type":"string"},"passwordSecretRef":{"properties":{"key":{"default":"password","type":"string"},"name":{"type":"string"}},"type":"object"},"path":{"default":"/var/spool/calltelemetry/cdr","type":"string"},"port":{"default":2222,"maximum":65535,"minimum":1,"type":"integer"},"username":{"default":"calltelemetry","type":"string"}},"type":"object"}},"type":"object"},"enabled":{"default":false,"type":"boolean"},"mockPhonesCount":{"default":10,"maximum":1000,"minimum":0,"type":"integer"},"mode":{"default":"dynamic_pod","enum":["dynamic_pod","in_guest","external"],"type":"string"},"profile":{"default":"standard-lab","type":"string"},"scenario":{"type":"string"}},"type":"object"},"enableCallManagers":{"default":true,"type":"boolean"},"enableCubes":{"default":true,"type":"boolean"},"licenseDays":{"default":90,"maximum":3650,"minimum":1,"type":"integer"},"licenseTier":{"default":"Demo","enum":["Demo","Community","Standard","Enterprise"],"type":"string"},"loadTesting":{"properties":{"calledNumberPattern":{"default":"+1555200XXXX","type":"string"},"callerIdPattern":{"default":"+1555100XXXX","type":"string"},"chaosErrorRate":{"default":0,"maximum":100,"minimum":0,"type":"number"},"codec":{"default":"g711ulaw","enum":["g711ulaw","g711alaw","g729"],"type":"string"},"concurrency":{"default":5,"maximum":500,"minimum":1,"type":"integer"},"cps":{"default":1,"maximum":500,"minimum":0.1,"type":"number"},"durationSeconds":{"default":60,"maximum":86400,"minimum":1,"type":"integer"},"enabled":{"default":false,"type":"boolean"},"target":{"default":"external_cube","enum":["external_cube","internal_cube","appliance"],"type":"string"}},"type":"object"},"mockPstn":{"properties":{"autoAnswer":{"default":true,"type":"boolean"},"callRateCps":{"default":2,"maximum":500,"minimum":0.1,"type":"number"},"destinationPrefix":{"default":"1...","type":"string"},"enabled":{"default":false,"type":"boolean"},"ip":{"pattern":"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"sipPort":{"default":5060,"maximum":65535,"minimum":1,"type":"integer"},"vlan":{"default":123,"maximum":4094,"minimum":1,"type":"integer"}},"type":"object"},"node":{"default":"minis","type":"string"},"orgName":{"default":"CallTelemetry Demo","type":"string"},"paused":{"default":false,"type":"boolean"},"pausedReason":{"maxLength":500,"type":"string"},"phoneEmulator":{"properties":{"autoAnswer":{"default":true,"type":"boolean"},"bibAudioStreaming":{"default":true,"type":"boolean"},"bibStreaming":{"default":true,"type":"boolean"},"controlPlanePort":{"default":8080,"maximum":65535,"minimum":1024,"type":"integer"},"count":{"default":2,"maximum":500,"minimum":1,"type":"integer"},"cucmHost":{"type":"string"},"devicePrefix":{"default":"SEP","type":"string"},"enabled":{"default":false,"type":"boolean"},"mode":{"default":"dynamic_pod","enum":["dynamic_pod","in_guest"],"type":"string"},"model":{"default":"CP-7965G","type":"string"},"phoneCount":{"maximum":500,"minimum":1,"type":"integer"},"phoneWebXmlAccess":{"default":true,"type":"boolean"},"protocol":{"default":"SCCP","enum":["SCCP","SIP","sccp","sip"],"type":"string"},"webXmlAccess":{"default":true,"type":"boolean"}},"type":"object"},"preset":{"default":"comprehensive_demo","enum":["comprehensive_demo","standard_demo","minimal_demo","empty"],"type":"string"},"profile":{"default":"demo","enum":["demo","bare"],"type":"string"},"role":{"enum":["runner","gate","cucm","gateway","infra","harness"],"type":"string"},"sftp":{"properties":{"enabled":{"default":false,"type":"boolean"},"mode":{"default":"appliance_builtin","enum":["appliance_builtin","dynamic_pod"],"type":"string"},"passwordSecretRef":{"properties":{"key":{"default":"password","type":"string"},"name":{"type":"string"}},"type":"object"},"port":{"default":2222,"maximum":65535,"minimum":1,"type":"integer"},"stagingPath":{"default":"/opt/calltelemetry/cdr_staging","type":"string"},"user":{"default":"calltelemetry","type":"string"}},"type":"object"},"sideloadLicense":{"type":"string"},"sshUser":{"default":"calltelemetry","type":"string"},"state":{"enum":["Active","Closed"],"type":"string"},"targetIp":{"pattern":"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetPort":{"default":2222,"maximum":65535,"minimum":1,"type":"integer"},"train":{"default":"stable","enum":["stable","beta","rc","candidate","dev","edge"],"type":"string"},"ttlHours":{"default":24,"maximum":8760,"minimum":0,"type":"integer"},"version":{"default":"0.8.6.27","type":"string"},"vmName":{"type":"string"},"vmid":{"maximum":8999,"minimum":100,"type":"integer"}},"type":"object"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type SlotApi } from "./slot-kubernetes.js";
|
|
3
|
+
export declare const SLOT_ANNOTATION = "calltelemetry.com/physical-slot";
|
|
4
|
+
export declare const SLOT_NONCE = "calltelemetry.com/physical-slot-operation-nonce";
|
|
5
|
+
export declare const SLOT_REQUEST = "calltelemetry.com/physical-slot-request-sha256";
|
|
6
|
+
declare const SlotSchema: z.ZodObject<{
|
|
7
|
+
hostAssetId: z.ZodString;
|
|
8
|
+
node: z.ZodString;
|
|
9
|
+
vmid: z.ZodNumber;
|
|
10
|
+
}, "strict", z.ZodTypeAny, {
|
|
11
|
+
node: string;
|
|
12
|
+
vmid: number;
|
|
13
|
+
hostAssetId: string;
|
|
14
|
+
}, {
|
|
15
|
+
node: string;
|
|
16
|
+
vmid: number;
|
|
17
|
+
hostAssetId: string;
|
|
18
|
+
}>;
|
|
19
|
+
export type PhysicalSlot = z.infer<typeof SlotSchema>;
|
|
20
|
+
export declare const ReservationSchema: z.ZodObject<{
|
|
21
|
+
schema: z.ZodLiteral<"physical-slot-reservation/v1">;
|
|
22
|
+
slot: z.ZodObject<{
|
|
23
|
+
hostAssetId: z.ZodString;
|
|
24
|
+
node: z.ZodString;
|
|
25
|
+
vmid: z.ZodNumber;
|
|
26
|
+
}, "strict", z.ZodTypeAny, {
|
|
27
|
+
node: string;
|
|
28
|
+
vmid: number;
|
|
29
|
+
hostAssetId: string;
|
|
30
|
+
}, {
|
|
31
|
+
node: string;
|
|
32
|
+
vmid: number;
|
|
33
|
+
hostAssetId: string;
|
|
34
|
+
}>;
|
|
35
|
+
phase: z.ZodEnum<["provisional", "bound", "provider-bound", "retiring", "released"]>;
|
|
36
|
+
operationNonce: z.ZodEffects<z.ZodString, string, string>;
|
|
37
|
+
requestSha256: z.ZodString;
|
|
38
|
+
intendedClaim: z.ZodObject<{
|
|
39
|
+
namespace: z.ZodLiteral<"ct-lab">;
|
|
40
|
+
name: z.ZodEffects<z.ZodString, string, string>;
|
|
41
|
+
}, "strict", z.ZodTypeAny, {
|
|
42
|
+
name: string;
|
|
43
|
+
namespace: "ct-lab";
|
|
44
|
+
}, {
|
|
45
|
+
name: string;
|
|
46
|
+
namespace: "ct-lab";
|
|
47
|
+
}>;
|
|
48
|
+
context: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
49
|
+
kind: z.ZodLiteral<"mcp">;
|
|
50
|
+
issueKey: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, "strict", z.ZodTypeAny, {
|
|
52
|
+
kind: "mcp";
|
|
53
|
+
issueKey?: string | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
kind: "mcp";
|
|
56
|
+
issueKey?: string | undefined;
|
|
57
|
+
}>, z.ZodObject<{
|
|
58
|
+
kind: z.ZodLiteral<"operator">;
|
|
59
|
+
issueKey: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, "strict", z.ZodTypeAny, {
|
|
61
|
+
kind: "operator";
|
|
62
|
+
issueKey?: string | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
kind: "operator";
|
|
65
|
+
issueKey?: string | undefined;
|
|
66
|
+
}>, z.ZodObject<{
|
|
67
|
+
kind: z.ZodLiteral<"ct-meta">;
|
|
68
|
+
logicalAssetId: z.ZodString;
|
|
69
|
+
issueKey: z.ZodString;
|
|
70
|
+
importOperationId: z.ZodString;
|
|
71
|
+
}, "strict", z.ZodTypeAny, {
|
|
72
|
+
kind: "ct-meta";
|
|
73
|
+
issueKey: string;
|
|
74
|
+
logicalAssetId: string;
|
|
75
|
+
importOperationId: string;
|
|
76
|
+
}, {
|
|
77
|
+
kind: "ct-meta";
|
|
78
|
+
issueKey: string;
|
|
79
|
+
logicalAssetId: string;
|
|
80
|
+
importOperationId: string;
|
|
81
|
+
}>]>;
|
|
82
|
+
claim: z.ZodNullable<z.ZodObject<{
|
|
83
|
+
namespace: z.ZodLiteral<"ct-lab">;
|
|
84
|
+
name: z.ZodEffects<z.ZodString, string, string>;
|
|
85
|
+
uid: z.ZodEffects<z.ZodString, string, string>;
|
|
86
|
+
}, "strict", z.ZodTypeAny, {
|
|
87
|
+
name: string;
|
|
88
|
+
namespace: "ct-lab";
|
|
89
|
+
uid: string;
|
|
90
|
+
}, {
|
|
91
|
+
name: string;
|
|
92
|
+
namespace: "ct-lab";
|
|
93
|
+
uid: string;
|
|
94
|
+
}>>;
|
|
95
|
+
provider: z.ZodNullable<z.ZodObject<{
|
|
96
|
+
uuid: z.ZodEffects<z.ZodString, string, string>;
|
|
97
|
+
vmName: z.ZodString;
|
|
98
|
+
managedOwnershipSha256: z.ZodString;
|
|
99
|
+
volumes: z.ZodArray<z.ZodString, "many">;
|
|
100
|
+
}, "strict", z.ZodTypeAny, {
|
|
101
|
+
uuid: string;
|
|
102
|
+
vmName: string;
|
|
103
|
+
managedOwnershipSha256: string;
|
|
104
|
+
volumes: string[];
|
|
105
|
+
}, {
|
|
106
|
+
uuid: string;
|
|
107
|
+
vmName: string;
|
|
108
|
+
managedOwnershipSha256: string;
|
|
109
|
+
volumes: string[];
|
|
110
|
+
}>>;
|
|
111
|
+
}, "strict", z.ZodTypeAny, {
|
|
112
|
+
claim: {
|
|
113
|
+
name: string;
|
|
114
|
+
namespace: "ct-lab";
|
|
115
|
+
uid: string;
|
|
116
|
+
} | null;
|
|
117
|
+
slot: {
|
|
118
|
+
node: string;
|
|
119
|
+
vmid: number;
|
|
120
|
+
hostAssetId: string;
|
|
121
|
+
};
|
|
122
|
+
schema: "physical-slot-reservation/v1";
|
|
123
|
+
phase: "released" | "provisional" | "bound" | "provider-bound" | "retiring";
|
|
124
|
+
operationNonce: string;
|
|
125
|
+
requestSha256: string;
|
|
126
|
+
intendedClaim: {
|
|
127
|
+
name: string;
|
|
128
|
+
namespace: "ct-lab";
|
|
129
|
+
};
|
|
130
|
+
context: {
|
|
131
|
+
kind: "mcp";
|
|
132
|
+
issueKey?: string | undefined;
|
|
133
|
+
} | {
|
|
134
|
+
kind: "operator";
|
|
135
|
+
issueKey?: string | undefined;
|
|
136
|
+
} | {
|
|
137
|
+
kind: "ct-meta";
|
|
138
|
+
issueKey: string;
|
|
139
|
+
logicalAssetId: string;
|
|
140
|
+
importOperationId: string;
|
|
141
|
+
};
|
|
142
|
+
provider: {
|
|
143
|
+
uuid: string;
|
|
144
|
+
vmName: string;
|
|
145
|
+
managedOwnershipSha256: string;
|
|
146
|
+
volumes: string[];
|
|
147
|
+
} | null;
|
|
148
|
+
}, {
|
|
149
|
+
claim: {
|
|
150
|
+
name: string;
|
|
151
|
+
namespace: "ct-lab";
|
|
152
|
+
uid: string;
|
|
153
|
+
} | null;
|
|
154
|
+
slot: {
|
|
155
|
+
node: string;
|
|
156
|
+
vmid: number;
|
|
157
|
+
hostAssetId: string;
|
|
158
|
+
};
|
|
159
|
+
schema: "physical-slot-reservation/v1";
|
|
160
|
+
phase: "released" | "provisional" | "bound" | "provider-bound" | "retiring";
|
|
161
|
+
operationNonce: string;
|
|
162
|
+
requestSha256: string;
|
|
163
|
+
intendedClaim: {
|
|
164
|
+
name: string;
|
|
165
|
+
namespace: "ct-lab";
|
|
166
|
+
};
|
|
167
|
+
context: {
|
|
168
|
+
kind: "mcp";
|
|
169
|
+
issueKey?: string | undefined;
|
|
170
|
+
} | {
|
|
171
|
+
kind: "operator";
|
|
172
|
+
issueKey?: string | undefined;
|
|
173
|
+
} | {
|
|
174
|
+
kind: "ct-meta";
|
|
175
|
+
issueKey: string;
|
|
176
|
+
logicalAssetId: string;
|
|
177
|
+
importOperationId: string;
|
|
178
|
+
};
|
|
179
|
+
provider: {
|
|
180
|
+
uuid: string;
|
|
181
|
+
vmName: string;
|
|
182
|
+
managedOwnershipSha256: string;
|
|
183
|
+
volumes: string[];
|
|
184
|
+
} | null;
|
|
185
|
+
}>;
|
|
186
|
+
export type Reservation = z.infer<typeof ReservationSchema>;
|
|
187
|
+
export declare function canonicalJson(value: any): string;
|
|
188
|
+
export declare function physicalSlot(hostAssetId: string, node: string, vmid: number): PhysicalSlot;
|
|
189
|
+
export declare function slotLeaseName(role: "mutex" | "reservation", slot: PhysicalSlot): string;
|
|
190
|
+
export declare function creationOwnerSha(record: Reservation): string;
|
|
191
|
+
export declare function claimPhysicalSlot(claim: any): PhysicalSlot;
|
|
192
|
+
/** Internal dependency seam; callers cannot supply transport, clocks, nonce or permits. */
|
|
193
|
+
export interface SlotDeps {
|
|
194
|
+
api: SlotApi;
|
|
195
|
+
now: () => number;
|
|
196
|
+
nonce: () => string;
|
|
197
|
+
}
|
|
198
|
+
export declare function createPhysicalClaim(manifest: any, deps?: SlotDeps): Promise<{
|
|
199
|
+
claim: any;
|
|
200
|
+
reservation: any;
|
|
201
|
+
reused: boolean;
|
|
202
|
+
}>;
|
|
203
|
+
export declare function deletePhysicalClaim(name: string, expectedUid: string, deps?: SlotDeps): Promise<any>;
|
|
204
|
+
export {};
|
|
205
|
+
//# sourceMappingURL=physical-slot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-slot.d.ts","sourceRoot":"","sources":["../../../src/tools/physical-slot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEnE,eAAO,MAAM,eAAe,oCAAoC,CAAC;AACjE,eAAO,MAAM,UAAU,oDAAoD,CAAC;AAC5E,eAAO,MAAM,YAAY,mDAAmD,CAAC;AAO7E,QAAA,MAAM,UAAU;;;;;;;;;;;;EAA2G,CAAC;AAC5H,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAOtD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOnB,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAK5D,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAIhD;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAE1F;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAIvF;AACD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAG5D;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,YAAY,CAK1D;AAiDD,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IAAG,GAAG,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,MAAM,CAAC;CAAE;AAyFnF,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,WAAa,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAmDtI;AACD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,WAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAsB5G"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/** Shared physical-slot authority (REL-1564). Durable records never expire or auto-clear. */
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { load as yamlLoad, JSON_SCHEMA } from "js-yaml";
|
|
5
|
+
import { actualClaimIssue, claimCreationSha256, effectiveClaimSpec } from "./claim-creation-projection.js";
|
|
6
|
+
import { createSlotApi } from "./slot-kubernetes.js";
|
|
7
|
+
export const SLOT_ANNOTATION = "calltelemetry.com/physical-slot";
|
|
8
|
+
export const SLOT_NONCE = "calltelemetry.com/physical-slot-operation-nonce";
|
|
9
|
+
export const SLOT_REQUEST = "calltelemetry.com/physical-slot-request-sha256";
|
|
10
|
+
const LEASES = "/apis/coordination.k8s.io/v1/namespaces/ct-lab/leases";
|
|
11
|
+
const CLAIMS = "/apis/calltelemetry.com/v1alpha1/namespaces/ct-lab/applianceclaims";
|
|
12
|
+
const printable = z.string().min(1).max(256).regex(/^[\x20-\x7e]+$/);
|
|
13
|
+
const uuid = z.string().uuid().refine(value => value === value.toLowerCase(), "UUID must be canonical lowercase");
|
|
14
|
+
const sha = z.string().regex(/^[0-9a-f]{64}$/);
|
|
15
|
+
const objectName = z.string().min(1).max(253).refine(name => name.split(".").every(label => /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(label)), "DNS subdomain labels must be nonempty and at most63 characters");
|
|
16
|
+
const SlotSchema = z.object({ hostAssetId: printable, node: printable, vmid: z.number().safe().int().positive() }).strict();
|
|
17
|
+
const ClaimIdentitySchema = z.object({ namespace: z.literal("ct-lab"), name: objectName, uid: uuid }).strict();
|
|
18
|
+
const ContextSchema = z.discriminatedUnion("kind", [
|
|
19
|
+
z.object({ kind: z.literal("mcp"), issueKey: printable.optional() }).strict(),
|
|
20
|
+
z.object({ kind: z.literal("operator"), issueKey: printable.optional() }).strict(),
|
|
21
|
+
z.object({ kind: z.literal("ct-meta"), logicalAssetId: printable, issueKey: printable, importOperationId: printable }).strict(),
|
|
22
|
+
]);
|
|
23
|
+
export const ReservationSchema = z.object({
|
|
24
|
+
schema: z.literal("physical-slot-reservation/v1"), slot: SlotSchema,
|
|
25
|
+
phase: z.enum(["provisional", "bound", "provider-bound", "retiring", "released"]),
|
|
26
|
+
operationNonce: uuid, requestSha256: sha,
|
|
27
|
+
intendedClaim: z.object({ namespace: z.literal("ct-lab"), name: objectName }).strict(), context: ContextSchema,
|
|
28
|
+
claim: ClaimIdentitySchema.nullable(),
|
|
29
|
+
provider: z.object({ uuid, vmName: printable, managedOwnershipSha256: sha, volumes: z.array(z.string().min(1).max(512).regex(/^[\x20-\x7e]+$/)).max(256) }).strict().nullable(),
|
|
30
|
+
}).strict();
|
|
31
|
+
const MutexSchema = z.object({ schema: z.literal("physical-slot-mutex/v1"), slot: SlotSchema, ownerNonce: uuid, token: uuid }).strict();
|
|
32
|
+
function requireSlot(ok, message) {
|
|
33
|
+
if (!ok)
|
|
34
|
+
throw new Error(`physical slot ${message}; retain reservation`);
|
|
35
|
+
}
|
|
36
|
+
export function canonicalJson(value) {
|
|
37
|
+
if (Array.isArray(value))
|
|
38
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
39
|
+
if (value !== null && typeof value === "object")
|
|
40
|
+
return `{${Object.keys(value).sort().map(k => `${JSON.stringify(k)}:${canonicalJson(value[k])}`).join(",")}}`;
|
|
41
|
+
return JSON.stringify(value);
|
|
42
|
+
}
|
|
43
|
+
const digest = (value) => createHash("sha256").update(canonicalJson(value), "utf8").digest("hex");
|
|
44
|
+
export function physicalSlot(hostAssetId, node, vmid) {
|
|
45
|
+
return SlotSchema.parse({ hostAssetId, node, vmid });
|
|
46
|
+
}
|
|
47
|
+
export function slotLeaseName(role, slot) {
|
|
48
|
+
SlotSchema.parse(slot);
|
|
49
|
+
const hash = digest([slot.hostAssetId, slot.node, slot.vmid]);
|
|
50
|
+
return `ct-physical-slot-${role}.${hash.slice(0, 32)}.${hash.slice(32)}`;
|
|
51
|
+
}
|
|
52
|
+
export function creationOwnerSha(record) {
|
|
53
|
+
const { schema, slot, operationNonce, requestSha256, intendedClaim, context } = ReservationSchema.parse(record);
|
|
54
|
+
return digest({ schema, slot, operationNonce, requestSha256, intendedClaim, context });
|
|
55
|
+
}
|
|
56
|
+
export function claimPhysicalSlot(claim) {
|
|
57
|
+
const node = claim?.spec?.node;
|
|
58
|
+
requireSlot(node === "minis" || node === "proxmox", "requires a canonical Proxmox node");
|
|
59
|
+
requireSlot(Number.isSafeInteger(claim.spec.vmid) && claim.spec.vmid >= 100 && claim.spec.vmid <= 8999, "requires an explicit provider VMID");
|
|
60
|
+
return physicalSlot(node === "minis" ? "proxmox-minis-lab" : "proxmox-lab", node, claim.spec.vmid);
|
|
61
|
+
}
|
|
62
|
+
function leaseEnvelope(lease, name) {
|
|
63
|
+
requireSlot(lease?.apiVersion === "coordination.k8s.io/v1" && lease.kind === "Lease"
|
|
64
|
+
&& lease.metadata?.namespace === "ct-lab" && lease.metadata.name === name
|
|
65
|
+
&& uuid.safeParse(lease.metadata.uid).success && typeof lease.metadata.resourceVersion === "string"
|
|
66
|
+
&& lease.metadata.resourceVersion.length > 0 && !lease.metadata.deletionTimestamp, "Lease identity or CAS version differs");
|
|
67
|
+
}
|
|
68
|
+
function annotationJson(text) {
|
|
69
|
+
requireSlot(typeof text === "string" && Buffer.byteLength(text) <= 65_536, "annotation JSON unavailable or oversized");
|
|
70
|
+
const value = JSON.parse(text); // Accept only JSON syntax, not YAML extensions.
|
|
71
|
+
yamlLoad(text, { schema: JSON_SCHEMA, json: false }); // Reject duplicate/escaped duplicate keys.
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
function reservation(lease, slot) {
|
|
75
|
+
leaseEnvelope(lease, slotLeaseName("reservation", slot));
|
|
76
|
+
const record = ReservationSchema.parse(annotationJson(lease.metadata.annotations?.[SLOT_ANNOTATION]));
|
|
77
|
+
requireSlot(canonicalJson(record.slot) === canonicalJson(slot), "stored full tuple differs");
|
|
78
|
+
requireSlot(lease.spec && Object.keys(lease.spec).length === 0, "durable reservation has expiring lease semantics");
|
|
79
|
+
requireSlot(record.phase === "provisional" ? record.claim === null && record.provider === null : record.claim !== null, "phase and claim binding differ");
|
|
80
|
+
if (record.claim)
|
|
81
|
+
requireSlot(record.claim.namespace === record.intendedClaim.namespace && record.claim.name === record.intendedClaim.name, "bound claim differs from original intent");
|
|
82
|
+
if (record.provider)
|
|
83
|
+
requireSlot(canonicalJson(record.provider.volumes) === canonicalJson([...new Set(record.provider.volumes)].sort()), "provider volumes are not sorted and unique");
|
|
84
|
+
requireSlot(record.phase !== "provider-bound" || record.provider !== null, "provider phase lacks immutable provider binding");
|
|
85
|
+
return record;
|
|
86
|
+
}
|
|
87
|
+
function verifyClaim(live, record, expectedUid) {
|
|
88
|
+
requireSlot(live?.apiVersion === "calltelemetry.com/v1alpha1" && live.kind === "ApplianceClaim"
|
|
89
|
+
&& live.metadata?.namespace === record.intendedClaim.namespace && live.metadata.name === record.intendedClaim.name
|
|
90
|
+
&& uuid.safeParse(live.metadata.uid).success && (!expectedUid || live.metadata.uid === expectedUid)
|
|
91
|
+
&& typeof live.metadata.resourceVersion === "string" && live.metadata.resourceVersion.length > 0
|
|
92
|
+
&& canonicalJson(claimPhysicalSlot(live)) === canonicalJson(record.slot)
|
|
93
|
+
&& live.metadata.annotations?.[SLOT_NONCE] === record.operationNonce
|
|
94
|
+
&& live.metadata.annotations?.[SLOT_REQUEST] === record.requestSha256
|
|
95
|
+
&& (actualClaimIssue(live) ?? null) === (record.context.issueKey ?? null)
|
|
96
|
+
&& claimCreationSha256(live) === record.requestSha256, "independent claim UID, tuple or source lineage differs");
|
|
97
|
+
}
|
|
98
|
+
const MUTEX_FIELDS = ["holderIdentity", "leaseDurationSeconds", "acquireTime", "renewTime", "leaseTransitions"].sort();
|
|
99
|
+
function wireTime(milliseconds) { return new Date(milliseconds).toISOString().replace(/Z$/, "000Z"); }
|
|
100
|
+
function timeValue(value) {
|
|
101
|
+
requireSlot(typeof value === "string" && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}Z$/.test(value), "mutex timestamp is not canonical UTC microseconds");
|
|
102
|
+
const parsed = Date.parse(value);
|
|
103
|
+
requireSlot(Number.isFinite(parsed) && new Date(parsed).toISOString() === value.slice(0, 23) + "Z", "mutex timestamp is invalid");
|
|
104
|
+
return parsed;
|
|
105
|
+
}
|
|
106
|
+
function leaseBody(name, record, existing, spec = {}) {
|
|
107
|
+
return { apiVersion: "coordination.k8s.io/v1", kind: "Lease", metadata: {
|
|
108
|
+
...(existing?.metadata || {}), name, namespace: "ct-lab",
|
|
109
|
+
annotations: { ...(existing?.metadata?.annotations || {}), [SLOT_ANNOTATION]: canonicalJson(record) },
|
|
110
|
+
}, spec };
|
|
111
|
+
}
|
|
112
|
+
const defaults = () => ({ api: createSlotApi(), now: Date.now, nonce: randomUUID });
|
|
113
|
+
class Mutex {
|
|
114
|
+
deps;
|
|
115
|
+
slot;
|
|
116
|
+
lease;
|
|
117
|
+
owner;
|
|
118
|
+
timer;
|
|
119
|
+
tail = Promise.resolve();
|
|
120
|
+
failure;
|
|
121
|
+
constructor(deps, slot) {
|
|
122
|
+
this.deps = deps;
|
|
123
|
+
this.slot = slot;
|
|
124
|
+
this.owner = MutexSchema.parse({ schema: "physical-slot-mutex/v1", slot, ownerNonce: deps.nonce(), token: deps.nonce() });
|
|
125
|
+
}
|
|
126
|
+
name() { return slotLeaseName("mutex", this.slot); }
|
|
127
|
+
queue(fn) {
|
|
128
|
+
const run = this.tail.then(fn);
|
|
129
|
+
this.tail = run.catch(() => { });
|
|
130
|
+
return run;
|
|
131
|
+
}
|
|
132
|
+
validate(value) {
|
|
133
|
+
leaseEnvelope(value, this.name());
|
|
134
|
+
const wire = MutexSchema.parse(annotationJson(value.metadata.annotations?.[SLOT_ANNOTATION]));
|
|
135
|
+
requireSlot(canonicalJson(wire.slot) === canonicalJson(this.slot) && value.spec?.holderIdentity === wire.token
|
|
136
|
+
&& value.spec.leaseDurationSeconds === 120 && Number.isSafeInteger(value.spec.leaseTransitions) && value.spec.leaseTransitions >= 0
|
|
137
|
+
&& canonicalJson(Object.keys(value.spec).sort()) === canonicalJson(MUTEX_FIELDS)
|
|
138
|
+
&& Number.isFinite(timeValue(value.spec.acquireTime)) && Number.isFinite(timeValue(value.spec.renewTime)), "mutex tuple, holder or duration differs");
|
|
139
|
+
return wire;
|
|
140
|
+
}
|
|
141
|
+
async enter() {
|
|
142
|
+
const path = `${LEASES}/${this.name()}`;
|
|
143
|
+
const previous = await this.deps.api.request(path, "GET");
|
|
144
|
+
if (previous) {
|
|
145
|
+
this.validate(previous);
|
|
146
|
+
requireSlot(Date.parse(previous.spec.renewTime) + 120_000 <= this.deps.now(), "mutex is occupied");
|
|
147
|
+
}
|
|
148
|
+
const transitions = previous ? previous.spec.leaseTransitions + 1 : 0;
|
|
149
|
+
requireSlot(Number.isSafeInteger(transitions), "mutex transition counter overflow");
|
|
150
|
+
const spec = { holderIdentity: this.owner.token, leaseDurationSeconds: 120, acquireTime: wireTime(this.deps.now()), renewTime: wireTime(this.deps.now()), leaseTransitions: transitions };
|
|
151
|
+
this.lease = await this.deps.api.request(previous ? path : LEASES, previous ? "PUT" : "POST", leaseBody(this.name(), this.owner, previous, spec));
|
|
152
|
+
this.validate(this.lease);
|
|
153
|
+
requireSlot(canonicalJson(this.validate(this.lease)) === canonicalJson(this.owner), "mutex creation returned another holder");
|
|
154
|
+
this.timer = setInterval(() => { void this.touch().catch(err => { this.failure = err; }); }, 20_000);
|
|
155
|
+
this.timer.unref();
|
|
156
|
+
}
|
|
157
|
+
async touch() {
|
|
158
|
+
return this.queue(async () => {
|
|
159
|
+
if (this.failure)
|
|
160
|
+
throw this.failure;
|
|
161
|
+
const path = `${LEASES}/${this.name()}`;
|
|
162
|
+
const live = await this.deps.api.request(path, "GET");
|
|
163
|
+
const wire = this.validate(live);
|
|
164
|
+
requireSlot(live.metadata.uid === this.lease.metadata.uid && canonicalJson(wire) === canonicalJson(this.owner)
|
|
165
|
+
&& Date.parse(live.spec.renewTime) + 120_000 > this.deps.now(), "mutex ownership expired or changed");
|
|
166
|
+
this.lease = await this.deps.api.request(path, "PUT", leaseBody(this.name(), this.owner, live, { ...live.spec, renewTime: wireTime(this.deps.now()) }));
|
|
167
|
+
this.validate(this.lease);
|
|
168
|
+
requireSlot(this.lease.metadata.uid === live.metadata.uid && canonicalJson(this.validate(this.lease)) === canonicalJson(this.owner) && Date.parse(this.lease.spec.renewTime) + 120_000 > this.deps.now(), "mutex renewal did not preserve ownership");
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
async exit() {
|
|
172
|
+
if (this.timer)
|
|
173
|
+
clearInterval(this.timer);
|
|
174
|
+
await this.tail;
|
|
175
|
+
if (!this.lease || this.failure)
|
|
176
|
+
return;
|
|
177
|
+
try {
|
|
178
|
+
await this.queue(async () => {
|
|
179
|
+
const path = `${LEASES}/${this.name()}`;
|
|
180
|
+
const live = await this.deps.api.request(path, "GET");
|
|
181
|
+
requireSlot(live?.metadata?.uid === this.lease.metadata.uid && canonicalJson(this.validate(live)) === canonicalJson(this.owner), "mutex release owner differs");
|
|
182
|
+
await this.deps.api.request(path, "PUT", leaseBody(this.name(), this.owner, live, { ...live.spec, renewTime: "1970-01-01T00:00:00.000000Z" }));
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
catch { /* Unknown release never removes durable reservation; mutex expires naturally. */ }
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function withMutex(deps, slot, action) {
|
|
189
|
+
const mutex = new Mutex(deps, slot);
|
|
190
|
+
try {
|
|
191
|
+
await mutex.enter();
|
|
192
|
+
return await action(mutex);
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
await mutex.exit();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async function noOtherClaim(deps, slot, ownUid) {
|
|
199
|
+
let next = "";
|
|
200
|
+
for (let page = 0; page < 10; page++) {
|
|
201
|
+
const result = await deps.api.request(`${CLAIMS}?limit=500${next ? `&continue=${encodeURIComponent(next)}` : ""}`, "GET");
|
|
202
|
+
requireSlot(result?.kind === "ApplianceClaimList" && result.apiVersion === "calltelemetry.com/v1alpha1" && Array.isArray(result.items), "claim occupancy list unavailable");
|
|
203
|
+
for (const claim of result.items) {
|
|
204
|
+
if (claim.metadata?.uid === ownUid)
|
|
205
|
+
continue;
|
|
206
|
+
const id = claim.spec?.vmid;
|
|
207
|
+
const node = claim.spec?.node;
|
|
208
|
+
const alias = node === "proxmox-lab" ? "proxmox" : ["proxmox-mini", "proxmox-minis-lab"].includes(node) ? "minis" : node;
|
|
209
|
+
if (String(id) === String(slot.vmid) && (alias === slot.node || !["minis", "proxmox", "esxi"].includes(alias)))
|
|
210
|
+
throw new Error("physical slot has another existing ApplianceClaim; retain reservation");
|
|
211
|
+
}
|
|
212
|
+
next = result.metadata?.continue || "";
|
|
213
|
+
requireSlot(typeof next === "string", "claim occupancy pagination malformed");
|
|
214
|
+
if (!next)
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
throw new Error("physical slot claim occupancy scan incomplete; retain reservation");
|
|
218
|
+
}
|
|
219
|
+
export async function createPhysicalClaim(manifest, deps = defaults()) {
|
|
220
|
+
requireSlot(manifest.metadata?.namespace === "ct-lab", "namespace must be ct-lab");
|
|
221
|
+
objectName.parse(manifest.metadata.name);
|
|
222
|
+
manifest = { ...manifest, spec: effectiveClaimSpec(manifest.spec) };
|
|
223
|
+
const slot = claimPhysicalSlot(manifest);
|
|
224
|
+
requireSlot(typeof manifest.spec.vmName === "string" && manifest.spec.vmName.length > 0, "constructor must provide the actual VM name before claim POST");
|
|
225
|
+
requireSlot(Number.isInteger(manifest.spec?.ttlHours) && manifest.spec.ttlHours > 0 && manifest.spec.ttlHours <= 8760, "dynamic claim requires finite TTL");
|
|
226
|
+
const context = ContextSchema.parse({ kind: "mcp", ...(actualClaimIssue(manifest) ? { issueKey: actualClaimIssue(manifest) } : {}) });
|
|
227
|
+
const requestSha256 = claimCreationSha256(manifest);
|
|
228
|
+
return withMutex(deps, slot, async (mutex) => {
|
|
229
|
+
const path = `${LEASES}/${slotLeaseName("reservation", slot)}`;
|
|
230
|
+
let existing = await deps.api.request(path, "GET");
|
|
231
|
+
if (existing) {
|
|
232
|
+
const held = reservation(existing, slot);
|
|
233
|
+
requireSlot(["bound", "provider-bound"].includes(held.phase) && held.requestSha256 === requestSha256
|
|
234
|
+
&& canonicalJson(held.context) === canonicalJson(context) && held.intendedClaim.name === manifest.metadata.name, "durable reservation is occupied");
|
|
235
|
+
const live = await deps.api.request(`${CLAIMS}/${manifest.metadata.name}`, "GET");
|
|
236
|
+
verifyClaim(live, held, held.claim.uid);
|
|
237
|
+
requireSlot(!live.metadata.deletionTimestamp && live.spec?.closed !== true && live.spec?.state !== "Closed" && live.status?.phase !== "Closed", "bound claim is retiring");
|
|
238
|
+
requireSlot(Number.isInteger(live.spec?.ttlHours) && live.spec.ttlHours >= manifest.spec.ttlHours && live.spec.ttlHours <= 8760 && live.spec.claimType !== "fixture", "bound claim finite TTL differs");
|
|
239
|
+
if (live.status?.phase === "Ready" || live.status?.completionTime) {
|
|
240
|
+
const baseline = Date.parse(live.status?.completionTime || "");
|
|
241
|
+
requireSlot(Number.isFinite(baseline) && baseline + live.spec.ttlHours * 3_600_000 > deps.now(), "bound claim expired or Ready TTL baseline unavailable");
|
|
242
|
+
}
|
|
243
|
+
await noOtherClaim(deps, slot, live.metadata.uid);
|
|
244
|
+
await mutex.touch();
|
|
245
|
+
const current = await deps.api.request(path, "GET");
|
|
246
|
+
requireSlot(current?.metadata?.uid === existing.metadata.uid && canonicalJson(reservation(current, slot)) === canonicalJson(held), "bound reservation changed during retry");
|
|
247
|
+
return { claim: live, reservation: { uid: existing.metadata.uid, creationOwnerSha256: creationOwnerSha(held), record: held }, reused: true };
|
|
248
|
+
}
|
|
249
|
+
await noOtherClaim(deps, slot);
|
|
250
|
+
const record = ReservationSchema.parse({ schema: "physical-slot-reservation/v1", slot, phase: "provisional", operationNonce: deps.nonce(), requestSha256,
|
|
251
|
+
intendedClaim: { namespace: "ct-lab", name: manifest.metadata.name }, context, claim: null, provider: null });
|
|
252
|
+
await mutex.touch();
|
|
253
|
+
existing = await deps.api.request(LEASES, "POST", leaseBody(slotLeaseName("reservation", slot), record));
|
|
254
|
+
requireSlot(canonicalJson(reservation(existing, slot)) === canonicalJson(record), "reservation creation returned another owner");
|
|
255
|
+
const protectedManifest = { ...manifest, metadata: { ...manifest.metadata, annotations: { ...(manifest.metadata.annotations || {}), [SLOT_NONCE]: record.operationNonce, [SLOT_REQUEST]: requestSha256 } } };
|
|
256
|
+
await mutex.touch();
|
|
257
|
+
const response = await deps.api.request(CLAIMS, "POST", protectedManifest);
|
|
258
|
+
requireSlot(uuid.safeParse(response?.metadata?.uid).success, "claim creation response lacks actual UID");
|
|
259
|
+
const live = await deps.api.request(`${CLAIMS}/${manifest.metadata.name}`, "GET");
|
|
260
|
+
verifyClaim(live, record, response.metadata.uid);
|
|
261
|
+
requireSlot(!live.metadata.deletionTimestamp, "new claim is already deleting");
|
|
262
|
+
const bound = { ...record, phase: "bound", claim: { ...record.intendedClaim, uid: live.metadata.uid } };
|
|
263
|
+
await mutex.touch();
|
|
264
|
+
const current = await deps.api.request(path, "GET");
|
|
265
|
+
requireSlot(current?.metadata?.uid === existing.metadata.uid && canonicalJson(reservation(current, slot)) === canonicalJson(record), "provisional reservation changed before UID binding");
|
|
266
|
+
existing = await deps.api.request(path, "PUT", leaseBody(slotLeaseName("reservation", slot), bound, current));
|
|
267
|
+
requireSlot(existing?.metadata?.uid === current.metadata.uid && canonicalJson(reservation(existing, slot)) === canonicalJson(bound), "UID binding not independently confirmed");
|
|
268
|
+
return { claim: live, reservation: { uid: existing.metadata.uid, creationOwnerSha256: creationOwnerSha(bound), record: bound }, reused: false };
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
export async function deletePhysicalClaim(name, expectedUid, deps = defaults()) {
|
|
272
|
+
objectName.parse(name);
|
|
273
|
+
uuid.parse(expectedUid);
|
|
274
|
+
const live = await deps.api.request(`${CLAIMS}/${name}`, "GET");
|
|
275
|
+
requireSlot(live?.metadata?.uid === expectedUid, "original selected claim UID differs or is absent");
|
|
276
|
+
const slot = claimPhysicalSlot(live);
|
|
277
|
+
return withMutex(deps, slot, async (mutex) => {
|
|
278
|
+
const path = `${LEASES}/${slotLeaseName("reservation", slot)}`;
|
|
279
|
+
let lease = await deps.api.request(path, "GET");
|
|
280
|
+
const held = reservation(lease, slot);
|
|
281
|
+
requireSlot(["bound", "provider-bound", "retiring"].includes(held.phase) && held.claim?.uid === expectedUid && held.intendedClaim.name === name, "claim does not own the bound reservation");
|
|
282
|
+
let selected = await deps.api.request(`${CLAIMS}/${name}`, "GET");
|
|
283
|
+
verifyClaim(selected, held, expectedUid);
|
|
284
|
+
const retiring = { ...held, phase: "retiring" };
|
|
285
|
+
await mutex.touch();
|
|
286
|
+
lease = await deps.api.request(path, "PUT", leaseBody(slotLeaseName("reservation", slot), retiring, lease));
|
|
287
|
+
requireSlot(canonicalJson(reservation(lease, slot)) === canonicalJson(retiring), "retiring reservation write failed");
|
|
288
|
+
await mutex.touch();
|
|
289
|
+
selected = await deps.api.request(`${CLAIMS}/${name}`, "GET");
|
|
290
|
+
verifyClaim(selected, retiring, expectedUid);
|
|
291
|
+
await deps.api.request(`${CLAIMS}/${name}`, "DELETE", { apiVersion: "v1", kind: "DeleteOptions", preconditions: { uid: expectedUid, resourceVersion: selected.metadata.resourceVersion } });
|
|
292
|
+
return { requested: true, expectedUid, reservationRetained: true, phase: "retiring", next: "The governed operator/controller must prove original claim, provider and owned-volume absence before releasing physical-slot custody." };
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=physical-slot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physical-slot.js","sourceRoot":"","sources":["../../../src/tools/physical-slot.ts"],"names":[],"mappings":"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"}
|