@f5-sales-demo/xcsh 19.62.0 → 19.62.2
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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@f5-sales-demo/xcsh",
|
|
4
|
-
"version": "19.62.
|
|
4
|
+
"version": "19.62.2",
|
|
5
5
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
6
6
|
"homepage": "https://github.com/f5-sales-demo/xcsh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -56,13 +56,13 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@agentclientprotocol/sdk": "0.16.1",
|
|
58
58
|
"@mozilla/readability": "^0.6",
|
|
59
|
-
"@f5-sales-demo/xcsh-stats": "19.62.
|
|
60
|
-
"@f5-sales-demo/pi-agent-core": "19.62.
|
|
61
|
-
"@f5-sales-demo/pi-ai": "19.62.
|
|
62
|
-
"@f5-sales-demo/pi-natives": "19.62.
|
|
63
|
-
"@f5-sales-demo/pi-resource-management": "19.62.
|
|
64
|
-
"@f5-sales-demo/pi-tui": "19.62.
|
|
65
|
-
"@f5-sales-demo/pi-utils": "19.62.
|
|
59
|
+
"@f5-sales-demo/xcsh-stats": "19.62.2",
|
|
60
|
+
"@f5-sales-demo/pi-agent-core": "19.62.2",
|
|
61
|
+
"@f5-sales-demo/pi-ai": "19.62.2",
|
|
62
|
+
"@f5-sales-demo/pi-natives": "19.62.2",
|
|
63
|
+
"@f5-sales-demo/pi-resource-management": "19.62.2",
|
|
64
|
+
"@f5-sales-demo/pi-tui": "19.62.2",
|
|
65
|
+
"@f5-sales-demo/pi-utils": "19.62.2",
|
|
66
66
|
"@sinclair/typebox": "^0.34",
|
|
67
67
|
"@xterm/headless": "^6.0",
|
|
68
68
|
"ajv": "^8.20",
|
|
@@ -131,6 +131,25 @@ export function touchLastSeen(reg: Registry, sessionId: string | undefined, now:
|
|
|
131
131
|
return true;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
/** True iff this manager should self-recycle because it is running a STALE on-disk
|
|
135
|
+
* binary. Only for a COMPILED install: after `brew upgrade` + `brew cleanup`, the old
|
|
136
|
+
* versioned binary the manager was launched from is DELETED, yet the process lingers
|
|
137
|
+
* on the freed inode — and can no longer spawn workers/spares (spawn ENOENT), which
|
|
138
|
+
* surfaces as the extension's "xcsh didn't start". Detecting the deleted binary lets
|
|
139
|
+
* the manager step down so a fresh one (launched from the version-stable PATH wrapper)
|
|
140
|
+
* takes over. Dev (`bun src/cli.ts`) has a live interpreter execPath → never stale.
|
|
141
|
+
* Fail-closed: any error from `exists` → NOT stale, so uncertainty never triggers a
|
|
142
|
+
* recycle loop. Only the unambiguous deleted-binary signal is used (a version/realpath
|
|
143
|
+
* drift signal was deliberately NOT added — false positives would flap-recycle). */
|
|
144
|
+
export function binaryIsStale(opts: { compiled: boolean; execPath: string; exists: (p: string) => boolean }): boolean {
|
|
145
|
+
if (!opts.compiled) return false;
|
|
146
|
+
try {
|
|
147
|
+
return !opts.exists(opts.execPath);
|
|
148
|
+
} catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
134
153
|
/** The NDJSON keepalive an actively-chatting worker writes to the manager control
|
|
135
154
|
* socket to refresh its `lastSeen` (consumed by `touchLastSeen`). Null for the
|
|
136
155
|
* unbound `spare` sentinel or an empty id — a spare has no session to keep alive. */
|
package/src/commands/manager.ts
CHANGED
|
@@ -26,8 +26,11 @@ import { Command } from "@f5-sales-demo/pi-utils/cli";
|
|
|
26
26
|
// slows the manager's cold start — keep the daemon's module graph minimal).
|
|
27
27
|
import { VERSION } from "@f5-sales-demo/pi-utils/dirs";
|
|
28
28
|
import { portCandidates } from "../browser/extension-bridge";
|
|
29
|
+
// Lean standalone fn (compiled-runtime detection) — no heavy graph, safe for the daemon.
|
|
30
|
+
import { detectCompiledRuntime } from "../internal-urls/build-info-runtime";
|
|
29
31
|
import { removeManagerState, writeManagerState } from "../services/manager-state";
|
|
30
32
|
import {
|
|
33
|
+
binaryIsStale,
|
|
31
34
|
needsProvision,
|
|
32
35
|
parseControlMsg,
|
|
33
36
|
pickPort,
|
|
@@ -209,6 +212,17 @@ export default class Manager extends Command {
|
|
|
209
212
|
// (production always reports the real binary VERSION).
|
|
210
213
|
const selfVersion = process.env.XCSH_MANAGER_VERSION || VERSION;
|
|
211
214
|
|
|
215
|
+
// Durable-upgrade self-recycle (#upgrade-recycle): a compiled manager whose
|
|
216
|
+
// on-disk binary was removed by `brew upgrade`+`brew cleanup` lingers on the
|
|
217
|
+
// freed inode but can no longer spawn workers (ENOENT) → it must step down so a
|
|
218
|
+
// fresh manager (from the version-stable PATH wrapper) takes over. Dev is never
|
|
219
|
+
// compiled → never stale. `XCSH_FORCE_STALE=1` lets the dev-mode integration test
|
|
220
|
+
// exercise the recycle path (same env-override convention as XCSH_MANAGER_VERSION).
|
|
221
|
+
const compiled = detectCompiledRuntime(import.meta.url, Bun.env);
|
|
222
|
+
const isSelfStale = (): boolean =>
|
|
223
|
+
process.env.XCSH_FORCE_STALE === "1" ||
|
|
224
|
+
binaryIsStale({ compiled, execPath: process.execPath, exists: fs.existsSync });
|
|
225
|
+
|
|
212
226
|
// Lifecycle gate (#1874): once we begin graceful shutdown we stop accepting
|
|
213
227
|
// provisions (the host retries the successor manager) and never double-run
|
|
214
228
|
// the teardown.
|
|
@@ -430,13 +444,22 @@ export default class Manager extends Command {
|
|
|
430
444
|
const msg = parseControlMsg(raw);
|
|
431
445
|
if (!msg) return; // fail closed on unknown/invalid frames
|
|
432
446
|
if (msg.type === "provision") {
|
|
433
|
-
// Draining
|
|
434
|
-
|
|
447
|
+
// Draining, OR self-stale (our binary was removed by an upgrade): refuse
|
|
448
|
+
// this provision so the host retries the successor manager — spawning now
|
|
449
|
+
// would ENOENT on the deleted binary. If stale-but-still-accepting, step
|
|
450
|
+
// down immediately so the fresh manager takes over in seconds (not on the
|
|
451
|
+
// ≤60s sweep). Reuses the existing draining reply/contract.
|
|
452
|
+
const stale = accepting && isSelfStale();
|
|
453
|
+
if (!accepting || stale) {
|
|
435
454
|
try {
|
|
436
455
|
socket.write(`${JSON.stringify({ type: "draining" })}\n`);
|
|
437
456
|
} catch {
|
|
438
457
|
/* client hung up */
|
|
439
458
|
}
|
|
459
|
+
if (stale) {
|
|
460
|
+
console.error("[xcsh manager] binary is stale (upgraded/removed) — recycling on provision");
|
|
461
|
+
gracefulShutdown("updated");
|
|
462
|
+
}
|
|
440
463
|
return;
|
|
441
464
|
}
|
|
442
465
|
const provisionReceivedAt = Date.now(); // TTFT Phase 2: start of manager_provision
|
|
@@ -537,8 +560,15 @@ export default class Manager extends Command {
|
|
|
537
560
|
// Pre-warm the spare pool so provisions can adopt instead of cold-spawn.
|
|
538
561
|
if (poolTarget > 0) maintainPool();
|
|
539
562
|
|
|
540
|
-
// Idle sweep: reap workers untouched for longer than the TTL.
|
|
563
|
+
// Idle sweep: reap workers untouched for longer than the TTL. Also self-recycle
|
|
564
|
+
// if our own binary went stale (upgrade removed it) — a lingering deleted-binary
|
|
565
|
+
// manager can't spawn workers, so step down for a fresh one (#upgrade-recycle).
|
|
541
566
|
setInterval(() => {
|
|
567
|
+
if (isSelfStale()) {
|
|
568
|
+
console.error("[xcsh manager] binary is stale (upgraded/removed) — recycling on sweep");
|
|
569
|
+
gracefulShutdown("updated");
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
542
572
|
for (const key of staleKeys(reg, Date.now(), IDLE_MS)) reap(key);
|
|
543
573
|
}, SWEEP_MS);
|
|
544
574
|
|
|
@@ -17,17 +17,17 @@ export interface BuildInfo {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export const BUILD_INFO: BuildInfo = {
|
|
20
|
-
"version": "19.62.
|
|
21
|
-
"commit": "
|
|
22
|
-
"shortCommit": "
|
|
20
|
+
"version": "19.62.2",
|
|
21
|
+
"commit": "2db94a2fe43570de2c145baf4692241c0154dd3e",
|
|
22
|
+
"shortCommit": "2db94a2",
|
|
23
23
|
"branch": "main",
|
|
24
|
-
"tag": "v19.62.
|
|
25
|
-
"commitDate": "2026-07-
|
|
26
|
-
"buildDate": "2026-07-
|
|
24
|
+
"tag": "v19.62.2",
|
|
25
|
+
"commitDate": "2026-07-08T20:22:16Z",
|
|
26
|
+
"buildDate": "2026-07-08T20:48:07.292Z",
|
|
27
27
|
"dirty": true,
|
|
28
28
|
"prNumber": "",
|
|
29
29
|
"repoUrl": "https://github.com/f5-sales-demo/xcsh",
|
|
30
30
|
"repoSlug": "f5-sales-demo/xcsh",
|
|
31
|
-
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/
|
|
32
|
-
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.62.
|
|
31
|
+
"commitUrl": "https://github.com/f5-sales-demo/xcsh/commit/2db94a2fe43570de2c145baf4692241c0154dd3e",
|
|
32
|
+
"releaseUrl": "https://github.com/f5-sales-demo/xcsh/releases/tag/v19.62.2"
|
|
33
33
|
};
|
|
@@ -269,9 +269,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
269
269
|
category: "load-balancing",
|
|
270
270
|
description:
|
|
271
271
|
"Advertise_policy object controls how and where a service represented by a given virtual_host object is advertised to consumers. configuration",
|
|
272
|
-
required: ["name", "address", "protocol", "skip_xff_append"],
|
|
272
|
+
required: ["name", "namespace", "address", "protocol", "skip_xff_append"],
|
|
273
273
|
minimal_config:
|
|
274
|
-
'resource "xcsh_advertise_policy" "example" {\n name = "example-advertise-policy"\n namespace = "
|
|
274
|
+
'resource "xcsh_advertise_policy" "example" {\n name = "example-advertise-policy"\n namespace = "staging"\n\n address = "example-value"\n protocol = "example-value"\n skip_xff_append = true\n}',
|
|
275
275
|
dependencies: {
|
|
276
276
|
requires: [],
|
|
277
277
|
},
|
|
@@ -293,7 +293,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
293
293
|
description: "New Alert Receiver object",
|
|
294
294
|
required: ["name", "namespace", "receiver_choice"],
|
|
295
295
|
minimal_config:
|
|
296
|
-
'resource "xcsh_alert_receiver" "example" {\n name = "example-alert-receiver"\n namespace = "
|
|
296
|
+
'resource "xcsh_alert_receiver" "example" {\n name = "example-alert-receiver"\n namespace = "staging"\n}',
|
|
297
297
|
dependencies: {
|
|
298
298
|
requires: [],
|
|
299
299
|
},
|
|
@@ -302,9 +302,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
302
302
|
api_crawler: {
|
|
303
303
|
category: "api-security",
|
|
304
304
|
description: "API Crawler resource",
|
|
305
|
-
required: ["name"],
|
|
305
|
+
required: ["name", "namespace"],
|
|
306
306
|
minimal_config:
|
|
307
|
-
'resource "xcsh_api_crawler" "example" {\n name = "example-api-crawler"\n namespace = "
|
|
307
|
+
'resource "xcsh_api_crawler" "example" {\n name = "example-api-crawler"\n namespace = "staging"\n}',
|
|
308
308
|
dependencies: {
|
|
309
309
|
requires: [],
|
|
310
310
|
},
|
|
@@ -315,7 +315,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
315
315
|
description: "API Definition",
|
|
316
316
|
required: ["name", "namespace"],
|
|
317
317
|
minimal_config:
|
|
318
|
-
'resource "xcsh_api_definition" "example" {\n name = "example-api-definition"\n namespace = "
|
|
318
|
+
'resource "xcsh_api_definition" "example" {\n name = "example-api-definition"\n namespace = "staging"\n}',
|
|
319
319
|
dependencies: {
|
|
320
320
|
requires: ["namespace"],
|
|
321
321
|
},
|
|
@@ -326,7 +326,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
326
326
|
description: "API discovery creates a new object in the storage backend for metadata.namespace",
|
|
327
327
|
required: ["name", "namespace", "user_defined_api_discovery_policy"],
|
|
328
328
|
minimal_config:
|
|
329
|
-
'resource "xcsh_api_discovery" "example" {\n name = "example-api-discovery"\n namespace = "
|
|
329
|
+
'resource "xcsh_api_discovery" "example" {\n name = "example-api-discovery"\n namespace = "staging"\n}',
|
|
330
330
|
dependencies: {
|
|
331
331
|
requires: [],
|
|
332
332
|
},
|
|
@@ -335,9 +335,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
335
335
|
api_testing: {
|
|
336
336
|
category: "api-security",
|
|
337
337
|
description: "API Testing resource",
|
|
338
|
-
required: ["name", "custom_header_value"],
|
|
338
|
+
required: ["name", "namespace", "custom_header_value"],
|
|
339
339
|
minimal_config:
|
|
340
|
-
'resource "xcsh_api_testing" "example" {\n name = "example-api-testing"\n namespace = "
|
|
340
|
+
'resource "xcsh_api_testing" "example" {\n name = "example-api-testing"\n namespace = "staging"\n\n custom_header_value = "example-value"\n}',
|
|
341
341
|
dependencies: {
|
|
342
342
|
requires: [],
|
|
343
343
|
},
|
|
@@ -356,9 +356,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
356
356
|
app_api_group: {
|
|
357
357
|
category: "api-security",
|
|
358
358
|
description: "App_api_group creates a new object in the storage backend for metadata.namespace",
|
|
359
|
-
required: ["name"],
|
|
359
|
+
required: ["name", "namespace"],
|
|
360
360
|
minimal_config:
|
|
361
|
-
'resource "xcsh_app_api_group" "example" {\n name = "example-app-api-group"\n namespace = "
|
|
361
|
+
'resource "xcsh_app_api_group" "example" {\n name = "example-app-api-group"\n namespace = "staging"\n}',
|
|
362
362
|
dependencies: {
|
|
363
363
|
requires: [],
|
|
364
364
|
},
|
|
@@ -378,9 +378,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
378
378
|
app_setting: {
|
|
379
379
|
category: "applications",
|
|
380
380
|
description: "App setting configuration in namespace metadata.namespace",
|
|
381
|
-
required: ["name"],
|
|
381
|
+
required: ["name", "namespace"],
|
|
382
382
|
minimal_config:
|
|
383
|
-
'resource "xcsh_app_setting" "example" {\n name = "example-app-setting"\n namespace = "
|
|
383
|
+
'resource "xcsh_app_setting" "example" {\n name = "example-app-setting"\n namespace = "staging"\n}',
|
|
384
384
|
dependencies: {
|
|
385
385
|
requires: [],
|
|
386
386
|
},
|
|
@@ -389,9 +389,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
389
389
|
app_type: {
|
|
390
390
|
category: "applications",
|
|
391
391
|
description: "App type will create the configuration in namespace metadata.namespace",
|
|
392
|
-
required: ["name"],
|
|
392
|
+
required: ["name", "namespace"],
|
|
393
393
|
minimal_config:
|
|
394
|
-
'resource "xcsh_app_type" "example" {\n name = "example-app-type"\n namespace = "
|
|
394
|
+
'resource "xcsh_app_type" "example" {\n name = "example-app-type"\n namespace = "staging"\n}',
|
|
395
395
|
dependencies: {
|
|
396
396
|
requires: [],
|
|
397
397
|
},
|
|
@@ -433,9 +433,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
433
433
|
aws_tgw_site: {
|
|
434
434
|
category: "sites",
|
|
435
435
|
description: "Deploying F5 sites connected via AWS Transit Gateway",
|
|
436
|
-
required: ["name"],
|
|
436
|
+
required: ["name", "namespace"],
|
|
437
437
|
minimal_config:
|
|
438
|
-
'resource "xcsh_aws_tgw_site" "example" {\n name = "example-aws-tgw-site"\n namespace = "
|
|
438
|
+
'resource "xcsh_aws_tgw_site" "example" {\n name = "example-aws-tgw-site"\n namespace = "staging"\n}',
|
|
439
439
|
dependencies: {
|
|
440
440
|
requires: [],
|
|
441
441
|
},
|
|
@@ -444,9 +444,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
444
444
|
aws_vpc_site: {
|
|
445
445
|
category: "sites",
|
|
446
446
|
description: "Deploying F5 sites within AWS VPC environments",
|
|
447
|
-
required: ["name", "address", "aws_region", "disk_size", "instance_type", "ssh_key"],
|
|
447
|
+
required: ["name", "namespace", "address", "aws_region", "disk_size", "instance_type", "ssh_key"],
|
|
448
448
|
minimal_config:
|
|
449
|
-
'resource "xcsh_aws_vpc_site" "example" {\n name = "example-aws-vpc-site"\n namespace = "
|
|
449
|
+
'resource "xcsh_aws_vpc_site" "example" {\n name = "example-aws-vpc-site"\n namespace = "staging"\n\n aws_region = "example-value"\n instance_type = "example-value"\n ssh_key = "example-value"\n address = "example-value"\n disk_size = 1\n}',
|
|
450
450
|
dependencies: {
|
|
451
451
|
requires: [],
|
|
452
452
|
},
|
|
@@ -455,9 +455,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
455
455
|
azure_vnet_site: {
|
|
456
456
|
category: "sites",
|
|
457
457
|
description: "Deploying F5 sites within Azure Virtual Network environments",
|
|
458
|
-
required: ["name", "machine_type", "resource_group", "ssh_key"],
|
|
458
|
+
required: ["name", "namespace", "machine_type", "resource_group", "ssh_key"],
|
|
459
459
|
minimal_config:
|
|
460
|
-
'resource "xcsh_azure_vnet_site" "example" {\n name = "example-Azure-vnet-site"\n namespace = "
|
|
460
|
+
'resource "xcsh_azure_vnet_site" "example" {\n name = "example-Azure-vnet-site"\n namespace = "staging"\n\n machine_type = "example-value"\n resource_group = "example-value"\n ssh_key = "example-value"\n}',
|
|
461
461
|
dependencies: {
|
|
462
462
|
requires: [],
|
|
463
463
|
},
|
|
@@ -467,8 +467,8 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
467
467
|
category: "networking",
|
|
468
468
|
description:
|
|
469
469
|
"Bgp object is the configuration for peering with external bgp servers. it is created by users in system namespace. configuration",
|
|
470
|
-
required: ["name"],
|
|
471
|
-
minimal_config: 'resource "xcsh_bgp" "example" {\n name = "example-bgp"\n namespace = "
|
|
470
|
+
required: ["name", "namespace"],
|
|
471
|
+
minimal_config: 'resource "xcsh_bgp" "example" {\n name = "example-bgp"\n namespace = "staging"\n}',
|
|
472
472
|
dependencies: {
|
|
473
473
|
requires: [],
|
|
474
474
|
},
|
|
@@ -477,9 +477,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
477
477
|
bgp_asn_set: {
|
|
478
478
|
category: "networking",
|
|
479
479
|
description: "Bgp_asn_set creates a new object in the storage backend for metadata.namespace",
|
|
480
|
-
required: ["name"],
|
|
480
|
+
required: ["name", "namespace"],
|
|
481
481
|
minimal_config:
|
|
482
|
-
'resource "xcsh_bgp_asn_set" "example" {\n name = "example-bgp-asn-set"\n namespace = "
|
|
482
|
+
'resource "xcsh_bgp_asn_set" "example" {\n name = "example-bgp-asn-set"\n namespace = "staging"\n\n as_numbers = [1]\n}',
|
|
483
483
|
dependencies: {
|
|
484
484
|
requires: [],
|
|
485
485
|
},
|
|
@@ -588,9 +588,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
588
588
|
cloud_credentials: {
|
|
589
589
|
category: "authentication",
|
|
590
590
|
description: "Api to create cloud_credentials object. configuration",
|
|
591
|
-
required: ["name"],
|
|
591
|
+
required: ["name", "namespace"],
|
|
592
592
|
minimal_config:
|
|
593
|
-
'resource "xcsh_cloud_credentials" "example" {\n name = "example-cloud-credentials"\n namespace = "
|
|
593
|
+
'resource "xcsh_cloud_credentials" "example" {\n name = "example-cloud-credentials"\n namespace = "staging"\n}',
|
|
594
594
|
dependencies: {
|
|
595
595
|
requires: [],
|
|
596
596
|
},
|
|
@@ -599,9 +599,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
599
599
|
cloud_elastic_ip: {
|
|
600
600
|
category: "cloud-resources",
|
|
601
601
|
description: "Cloud Elastic IP creates Cloud Elastic IP object Object is attached to a site",
|
|
602
|
-
required: ["name", "item_count"],
|
|
602
|
+
required: ["name", "namespace", "item_count"],
|
|
603
603
|
minimal_config:
|
|
604
|
-
'resource "xcsh_cloud_elastic_ip" "example" {\n name = "example-cloud-elastic-ip"\n namespace = "
|
|
604
|
+
'resource "xcsh_cloud_elastic_ip" "example" {\n name = "example-cloud-elastic-ip"\n namespace = "staging"\n\n item_count = 1\n}',
|
|
605
605
|
dependencies: {
|
|
606
606
|
requires: [],
|
|
607
607
|
},
|
|
@@ -651,9 +651,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
651
651
|
code_base_integration: {
|
|
652
652
|
category: "integrations",
|
|
653
653
|
description: "Integration details",
|
|
654
|
-
required: ["name"],
|
|
654
|
+
required: ["name", "namespace"],
|
|
655
655
|
minimal_config:
|
|
656
|
-
'resource "xcsh_code_base_integration" "example" {\n name = "example-code-base-integration"\n namespace = "
|
|
656
|
+
'resource "xcsh_code_base_integration" "example" {\n name = "example-code-base-integration"\n namespace = "staging"\n}',
|
|
657
657
|
dependencies: {
|
|
658
658
|
requires: [],
|
|
659
659
|
},
|
|
@@ -706,9 +706,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
706
706
|
dc_cluster_group: {
|
|
707
707
|
category: "networking",
|
|
708
708
|
description: "DC Cluster group in given namespace",
|
|
709
|
-
required: ["name"],
|
|
709
|
+
required: ["name", "namespace"],
|
|
710
710
|
minimal_config:
|
|
711
|
-
'resource "xcsh_dc_cluster_group" "example" {\n name = "example-dc-cluster-group"\n namespace = "
|
|
711
|
+
'resource "xcsh_dc_cluster_group" "example" {\n name = "example-dc-cluster-group"\n namespace = "staging"\n}',
|
|
712
712
|
dependencies: {
|
|
713
713
|
requires: [],
|
|
714
714
|
},
|
|
@@ -717,9 +717,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
717
717
|
discovery: {
|
|
718
718
|
category: "applications",
|
|
719
719
|
description: "Api to create discovery object for a site or virtual site in system namespace. configuration",
|
|
720
|
-
required: ["name"],
|
|
720
|
+
required: ["name", "namespace"],
|
|
721
721
|
minimal_config:
|
|
722
|
-
'resource "xcsh_discovery" "example" {\n name = "example-discovery"\n namespace = "
|
|
722
|
+
'resource "xcsh_discovery" "example" {\n name = "example-discovery"\n namespace = "staging"\n}',
|
|
723
723
|
dependencies: {
|
|
724
724
|
requires: [],
|
|
725
725
|
},
|
|
@@ -773,9 +773,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
773
773
|
dns_load_balancer: {
|
|
774
774
|
category: "dns",
|
|
775
775
|
description: "DNS Load Balancer in a given namespace. If one already exist it will give a error",
|
|
776
|
-
required: ["name"
|
|
776
|
+
required: ["name"],
|
|
777
777
|
minimal_config:
|
|
778
|
-
'resource "xcsh_dns_load_balancer" "example" {\n name = "example-dns-load-balancer"\n namespace = "
|
|
778
|
+
'resource "xcsh_dns_load_balancer" "example" {\n name = "example-dns-load-balancer"\n namespace = "system"\n}',
|
|
779
779
|
dependencies: {
|
|
780
780
|
requires: [],
|
|
781
781
|
},
|
|
@@ -784,9 +784,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
784
784
|
dns_proxy: {
|
|
785
785
|
category: "dns",
|
|
786
786
|
description: "DNS Proxy in a given namespace. If one already exists it will give an error",
|
|
787
|
-
required: ["name", "
|
|
787
|
+
required: ["name", "transport_type"],
|
|
788
788
|
minimal_config:
|
|
789
|
-
'resource "xcsh_dns_proxy" "example" {\n name = "example-dns-proxy"\n namespace = "
|
|
789
|
+
'resource "xcsh_dns_proxy" "example" {\n name = "example-dns-proxy"\n namespace = "system"\n\n transport_type = "UDP"\n}',
|
|
790
790
|
dependencies: {
|
|
791
791
|
requires: [],
|
|
792
792
|
},
|
|
@@ -806,9 +806,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
806
806
|
endpoint: {
|
|
807
807
|
category: "load-balancing",
|
|
808
808
|
description: "Endpoint will create the object in the storage backend for namespace metadata.namespace",
|
|
809
|
-
required: ["name", "health_check_port", "port", "protocol"],
|
|
809
|
+
required: ["name", "namespace", "health_check_port", "port", "protocol"],
|
|
810
810
|
minimal_config:
|
|
811
|
-
'resource "xcsh_endpoint" "example" {\n name = "example-endpoint"\n namespace = "
|
|
811
|
+
'resource "xcsh_endpoint" "example" {\n name = "example-endpoint"\n namespace = "staging"\n\n health_check_port = 1\n port = 1\n protocol = "example-value"\n}',
|
|
812
812
|
dependencies: {
|
|
813
813
|
requires: [],
|
|
814
814
|
},
|
|
@@ -851,9 +851,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
851
851
|
fast_acl_rule: {
|
|
852
852
|
category: "security",
|
|
853
853
|
description: "New Fast ACL rule, has specification to match source IP, source port and action to apply",
|
|
854
|
-
required: ["name"],
|
|
854
|
+
required: ["name", "namespace"],
|
|
855
855
|
minimal_config:
|
|
856
|
-
'resource "xcsh_fast_acl_rule" "example" {\n name = "example-fast-acl-rule"\n namespace = "
|
|
856
|
+
'resource "xcsh_fast_acl_rule" "example" {\n name = "example-fast-acl-rule"\n namespace = "staging"\n}',
|
|
857
857
|
dependencies: {
|
|
858
858
|
requires: [],
|
|
859
859
|
},
|
|
@@ -875,13 +875,14 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
875
875
|
description: "Fleet will create a fleet object in 'system' namespace of the user",
|
|
876
876
|
required: [
|
|
877
877
|
"name",
|
|
878
|
+
"namespace",
|
|
878
879
|
"enable_default_fleet_config_download",
|
|
879
880
|
"fleet_label",
|
|
880
881
|
"operating_system_version",
|
|
881
882
|
"volterra_software_version",
|
|
882
883
|
],
|
|
883
884
|
minimal_config:
|
|
884
|
-
'resource "xcsh_fleet" "example" {\n name = "example-fleet"\n namespace = "
|
|
885
|
+
'resource "xcsh_fleet" "example" {\n name = "example-fleet"\n namespace = "staging"\n\n fleet_label = "example-value"\n enable_default_fleet_config_download = true\n operating_system_version = "example-value"\n volterra_software_version = "example-value"\n}',
|
|
885
886
|
dependencies: {
|
|
886
887
|
requires: [],
|
|
887
888
|
},
|
|
@@ -912,9 +913,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
912
913
|
gcp_vpc_site: {
|
|
913
914
|
category: "sites",
|
|
914
915
|
description: "Deploying F5 sites within Google Cloud VPC environments",
|
|
915
|
-
required: ["name", "address", "disk_size", "gcp_region", "instance_type", "ssh_key"],
|
|
916
|
+
required: ["name", "namespace", "address", "disk_size", "gcp_region", "instance_type", "ssh_key"],
|
|
916
917
|
minimal_config:
|
|
917
|
-
'resource "xcsh_gcp_vpc_site" "example" {\n name = "example-gcp-vpc-site"\n namespace = "
|
|
918
|
+
'resource "xcsh_gcp_vpc_site" "example" {\n name = "example-gcp-vpc-site"\n namespace = "staging"\n\n gcp_region = "example-value"\n instance_type = "example-value"\n ssh_key = "example-value"\n address = "example-value"\n disk_size = 1\n}',
|
|
918
919
|
dependencies: {
|
|
919
920
|
requires: [],
|
|
920
921
|
},
|
|
@@ -936,7 +937,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
936
937
|
description: "New Global Log Receiver object",
|
|
937
938
|
required: ["name", "namespace", "log_type", "receiver_choice"],
|
|
938
939
|
minimal_config:
|
|
939
|
-
'resource "xcsh_global_log_receiver" "example" {\n name = "example-global-log-receiver"\n namespace = "
|
|
940
|
+
'resource "xcsh_global_log_receiver" "example" {\n name = "example-global-log-receiver"\n namespace = "staging"\n}',
|
|
940
941
|
dependencies: {
|
|
941
942
|
requires: [],
|
|
942
943
|
},
|
|
@@ -1038,7 +1039,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1038
1039
|
description: "K8s_cluster will create the object in the storage backend for namespace metadata.namespace",
|
|
1039
1040
|
required: ["name", "namespace"],
|
|
1040
1041
|
minimal_config:
|
|
1041
|
-
'resource "xcsh_k8s_cluster" "example" {\n name = "example-k8s-cluster"\n namespace = "
|
|
1042
|
+
'resource "xcsh_k8s_cluster" "example" {\n name = "example-k8s-cluster"\n namespace = "staging"\n}',
|
|
1042
1043
|
dependencies: {
|
|
1043
1044
|
requires: [],
|
|
1044
1045
|
},
|
|
@@ -1093,9 +1094,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1093
1094
|
log_receiver: {
|
|
1094
1095
|
category: "monitoring",
|
|
1095
1096
|
description: "New Log Receiver object",
|
|
1096
|
-
required: ["name"],
|
|
1097
|
+
required: ["name", "namespace"],
|
|
1097
1098
|
minimal_config:
|
|
1098
|
-
'resource "xcsh_log_receiver" "example" {\n name = "example-log-receiver"\n namespace = "
|
|
1099
|
+
'resource "xcsh_log_receiver" "example" {\n name = "example-log-receiver"\n namespace = "staging"\n}',
|
|
1099
1100
|
dependencies: {
|
|
1100
1101
|
requires: [],
|
|
1101
1102
|
},
|
|
@@ -1139,9 +1140,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1139
1140
|
nat_policy: {
|
|
1140
1141
|
category: "security",
|
|
1141
1142
|
description: "Nat policy create specification configures nat policy with multiple rules,. configuration",
|
|
1142
|
-
required: ["name"],
|
|
1143
|
+
required: ["name", "namespace"],
|
|
1143
1144
|
minimal_config:
|
|
1144
|
-
'resource "xcsh_nat_policy" "example" {\n name = "example-nat-policy"\n namespace = "
|
|
1145
|
+
'resource "xcsh_nat_policy" "example" {\n name = "example-nat-policy"\n namespace = "staging"\n}',
|
|
1145
1146
|
dependencies: {
|
|
1146
1147
|
requires: [],
|
|
1147
1148
|
},
|
|
@@ -1150,9 +1151,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1150
1151
|
network_connector: {
|
|
1151
1152
|
category: "networking",
|
|
1152
1153
|
description: "Network connector is created by users in system namespace. configuration",
|
|
1153
|
-
required: ["name"],
|
|
1154
|
+
required: ["name", "namespace"],
|
|
1154
1155
|
minimal_config:
|
|
1155
|
-
'resource "xcsh_network_connector" "example" {\n name = "example-network-connector"\n namespace = "
|
|
1156
|
+
'resource "xcsh_network_connector" "example" {\n name = "example-network-connector"\n namespace = "staging"\n}',
|
|
1156
1157
|
dependencies: {
|
|
1157
1158
|
requires: [],
|
|
1158
1159
|
},
|
|
@@ -1173,9 +1174,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1173
1174
|
category: "networking",
|
|
1174
1175
|
description:
|
|
1175
1176
|
"Network interface represents configuration of a network device. it is created by users in system namespace. configuration",
|
|
1176
|
-
required: ["name"],
|
|
1177
|
+
required: ["name", "namespace"],
|
|
1177
1178
|
minimal_config:
|
|
1178
|
-
'resource "xcsh_network_interface" "example" {\n name = "example-network-interface"\n namespace = "
|
|
1179
|
+
'resource "xcsh_network_interface" "example" {\n name = "example-network-interface"\n namespace = "staging"\n}',
|
|
1179
1180
|
dependencies: {
|
|
1180
1181
|
requires: [],
|
|
1181
1182
|
},
|
|
@@ -1195,9 +1196,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1195
1196
|
network_policy_rule: {
|
|
1196
1197
|
category: "security",
|
|
1197
1198
|
description: "Network policy rule with configured parameters in specified namespace",
|
|
1198
|
-
required: ["name"],
|
|
1199
|
+
required: ["name", "namespace"],
|
|
1199
1200
|
minimal_config:
|
|
1200
|
-
'resource "xcsh_network_policy_rule" "example" {\n name = "example-network-policy-rule"\n namespace = "
|
|
1201
|
+
'resource "xcsh_network_policy_rule" "example" {\n name = "example-network-policy-rule"\n namespace = "staging"\n}',
|
|
1201
1202
|
dependencies: {
|
|
1202
1203
|
requires: [],
|
|
1203
1204
|
},
|
|
@@ -1217,9 +1218,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1217
1218
|
nfv_service: {
|
|
1218
1219
|
category: "networking",
|
|
1219
1220
|
description: "New NFV service with configured parameters",
|
|
1220
|
-
required: ["name"],
|
|
1221
|
+
required: ["name", "namespace"],
|
|
1221
1222
|
minimal_config:
|
|
1222
|
-
'resource "xcsh_nfv_service" "example" {\n name = "example-nfv-service"\n namespace = "
|
|
1223
|
+
'resource "xcsh_nfv_service" "example" {\n name = "example-nfv-service"\n namespace = "staging"\n}',
|
|
1223
1224
|
dependencies: {
|
|
1224
1225
|
requires: [],
|
|
1225
1226
|
},
|
|
@@ -1229,9 +1230,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1229
1230
|
category: "networking",
|
|
1230
1231
|
description:
|
|
1231
1232
|
"Api to create nginx service discovery object for a site or virtual site in system namespace. configuration",
|
|
1232
|
-
required: ["name"],
|
|
1233
|
+
required: ["name", "namespace"],
|
|
1233
1234
|
minimal_config:
|
|
1234
|
-
'resource "xcsh_nginx_service_discovery" "example" {\n name = "example-nginx-service-discovery"\n namespace = "
|
|
1235
|
+
'resource "xcsh_nginx_service_discovery" "example" {\n name = "example-nginx-service-discovery"\n namespace = "staging"\n}',
|
|
1235
1236
|
dependencies: {
|
|
1236
1237
|
requires: [],
|
|
1237
1238
|
},
|
|
@@ -1278,7 +1279,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1278
1279
|
"Protocol Inspection Specification in a given namespace. If one already exists it will give an error",
|
|
1279
1280
|
required: ["name", "namespace", "enable_disable_compliance_checks", "enable_disable_signatures"],
|
|
1280
1281
|
minimal_config:
|
|
1281
|
-
'resource "xcsh_protocol_inspection" "example" {\n name = "example-protocol-inspection"\n namespace = "
|
|
1282
|
+
'resource "xcsh_protocol_inspection" "example" {\n name = "example-protocol-inspection"\n namespace = "staging"\n}',
|
|
1282
1283
|
dependencies: {
|
|
1283
1284
|
requires: [],
|
|
1284
1285
|
},
|
|
@@ -1343,9 +1344,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1343
1344
|
secret_management_access: {
|
|
1344
1345
|
category: "authentication",
|
|
1345
1346
|
description: "Secret_management_access creates a new object in storage backend for metadata.namespace",
|
|
1346
|
-
required: ["name", "provider_name"],
|
|
1347
|
+
required: ["name", "namespace", "provider_name"],
|
|
1347
1348
|
minimal_config:
|
|
1348
|
-
'resource "xcsh_secret_management_access" "example" {\n name = "example-secret-management-access"\n namespace = "
|
|
1349
|
+
'resource "xcsh_secret_management_access" "example" {\n name = "example-secret-management-access"\n namespace = "staging"\n\n provider_name = "example-value"\n}',
|
|
1349
1350
|
dependencies: {
|
|
1350
1351
|
requires: [],
|
|
1351
1352
|
},
|
|
@@ -1354,9 +1355,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1354
1355
|
securemesh_site: {
|
|
1355
1356
|
category: "sites",
|
|
1356
1357
|
description: "Deploying secure mesh edge sites with distributed security capabilities",
|
|
1357
|
-
required: ["name", "address", "volterra_certified_hw"],
|
|
1358
|
+
required: ["name", "namespace", "address", "volterra_certified_hw"],
|
|
1358
1359
|
minimal_config:
|
|
1359
|
-
'resource "xcsh_securemesh_site" "example" {\n name = "example-securemesh-site"\n namespace = "
|
|
1360
|
+
'resource "xcsh_securemesh_site" "example" {\n name = "example-securemesh-site"\n namespace = "staging"\n\n volterra_certified_hw = "example-value"\n worker_nodes = ["example-value"]\n address = "example-value"\n}',
|
|
1360
1361
|
dependencies: {
|
|
1361
1362
|
requires: [],
|
|
1362
1363
|
},
|
|
@@ -1365,9 +1366,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1365
1366
|
securemesh_site_v2: {
|
|
1366
1367
|
category: "sites",
|
|
1367
1368
|
description: "Deploying secure mesh edge sites with enhanced security and networking features",
|
|
1368
|
-
required: ["name"],
|
|
1369
|
+
required: ["name", "namespace"],
|
|
1369
1370
|
minimal_config:
|
|
1370
|
-
'resource "xcsh_securemesh_site_v2" "example" {\n name = "example-securemesh-site-v2"\n namespace = "
|
|
1371
|
+
'resource "xcsh_securemesh_site_v2" "example" {\n name = "example-securemesh-site-v2"\n namespace = "staging"\n}',
|
|
1371
1372
|
dependencies: {
|
|
1372
1373
|
requires: [],
|
|
1373
1374
|
},
|
|
@@ -1420,9 +1421,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1420
1421
|
site: {
|
|
1421
1422
|
category: "sites",
|
|
1422
1423
|
description: "Virtual site object in given namespace",
|
|
1423
|
-
required: ["name", "site_type"],
|
|
1424
|
+
required: ["name", "namespace", "site_type"],
|
|
1424
1425
|
minimal_config:
|
|
1425
|
-
'resource "xcsh_site" "example" {\n name = "example-site"\n namespace = "
|
|
1426
|
+
'resource "xcsh_site" "example" {\n name = "example-site"\n namespace = "staging"\n\n site_type = "INVALID"\n}',
|
|
1426
1427
|
dependencies: {
|
|
1427
1428
|
requires: [],
|
|
1428
1429
|
},
|
|
@@ -1431,9 +1432,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1431
1432
|
site_mesh_group: {
|
|
1432
1433
|
category: "sites",
|
|
1433
1434
|
description: "Site Mesh Group in system namespace of user",
|
|
1434
|
-
required: ["name"],
|
|
1435
|
+
required: ["name", "namespace"],
|
|
1435
1436
|
minimal_config:
|
|
1436
|
-
'resource "xcsh_site_mesh_group" "example" {\n name = "example-site-mesh-group"\n namespace = "
|
|
1437
|
+
'resource "xcsh_site_mesh_group" "example" {\n name = "example-site-mesh-group"\n namespace = "staging"\n}',
|
|
1437
1438
|
dependencies: {
|
|
1438
1439
|
requires: [],
|
|
1439
1440
|
},
|
|
@@ -1482,9 +1483,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1482
1483
|
tenant_configuration: {
|
|
1483
1484
|
category: "organization",
|
|
1484
1485
|
description: "Tenant configuration specification. configuration",
|
|
1485
|
-
required: ["name"],
|
|
1486
|
+
required: ["name", "namespace"],
|
|
1486
1487
|
minimal_config:
|
|
1487
|
-
'resource "xcsh_tenant_configuration" "example" {\n name = "example-tenant-configuration"\n namespace = "
|
|
1488
|
+
'resource "xcsh_tenant_configuration" "example" {\n name = "example-tenant-configuration"\n namespace = "staging"\n}',
|
|
1488
1489
|
dependencies: {
|
|
1489
1490
|
requires: [],
|
|
1490
1491
|
},
|
|
@@ -1526,9 +1527,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1526
1527
|
usb_policy: {
|
|
1527
1528
|
category: "security",
|
|
1528
1529
|
description: "New USB policy object",
|
|
1529
|
-
required: ["name"],
|
|
1530
|
+
required: ["name", "namespace"],
|
|
1530
1531
|
minimal_config:
|
|
1531
|
-
'resource "xcsh_usb_policy" "example" {\n name = "example-usb-policy"\n namespace = "
|
|
1532
|
+
'resource "xcsh_usb_policy" "example" {\n name = "example-usb-policy"\n namespace = "staging"\n}',
|
|
1532
1533
|
dependencies: {
|
|
1533
1534
|
requires: [],
|
|
1534
1535
|
},
|
|
@@ -1593,7 +1594,7 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1593
1594
|
description: "Virtual site object in given namespace",
|
|
1594
1595
|
required: ["name", "namespace", "site_type", "site_selector"],
|
|
1595
1596
|
minimal_config:
|
|
1596
|
-
'resource "xcsh_virtual_site" "example" {\n name = "example-virtual-site"\n namespace = "
|
|
1597
|
+
'resource "xcsh_virtual_site" "example" {\n name = "example-virtual-site"\n namespace = "staging"\n\n site_type = "INVALID"\n}',
|
|
1597
1598
|
dependencies: {
|
|
1598
1599
|
requires: [],
|
|
1599
1600
|
},
|
|
@@ -1602,9 +1603,9 @@ export const TERRAFORM_INDEX: TerraformIndex = {
|
|
|
1602
1603
|
voltstack_site: {
|
|
1603
1604
|
category: "sites",
|
|
1604
1605
|
description: "Deploying Volterra stack sites for edge computing",
|
|
1605
|
-
required: ["name", "address", "volterra_certified_hw"],
|
|
1606
|
+
required: ["name", "namespace", "address", "volterra_certified_hw"],
|
|
1606
1607
|
minimal_config:
|
|
1607
|
-
'resource "xcsh_voltstack_site" "example" {\n name = "example-voltstack-site"\n namespace = "
|
|
1608
|
+
'resource "xcsh_voltstack_site" "example" {\n name = "example-voltstack-site"\n namespace = "staging"\n\n volterra_certified_hw = "example-value"\n worker_nodes = ["example-value"]\n address = "example-value"\n}',
|
|
1608
1609
|
dependencies: {
|
|
1609
1610
|
requires: [],
|
|
1610
1611
|
},
|