@robinmordasiewicz/f5xc-xcsh 2.0.4-2601050253 → 2.0.8-2601051356
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 +34 -114
- package/dist/index.js +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,15 +35,15 @@ xcsh <domain> <operation> <resource-type> [resource-name] [flags]
|
|
|
35
35
|
|
|
36
36
|
Common domains include:
|
|
37
37
|
|
|
38
|
-
| Domain |
|
|
39
|
-
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
46
|
-
| `
|
|
38
|
+
| Domain | Purpose |
|
|
39
|
+
|--------|---------|
|
|
40
|
+
| `virtual` | HTTP, TCP, UDP load balancers and origin pools |
|
|
41
|
+
| `cloud_infrastructure` | AWS, Azure, GCP cloud sites and credentials |
|
|
42
|
+
| `waf` | Web application firewalls and security policies |
|
|
43
|
+
| `dns` | DNS zones and load balancing |
|
|
44
|
+
| `sites` | Site management and virtual sites |
|
|
45
|
+
| `tenant_and_identity` | User profiles and sessions |
|
|
46
|
+
| `ai_services` | AI assistant for natural language queries |
|
|
47
47
|
|
|
48
48
|
### Examples
|
|
49
49
|
|
|
@@ -51,50 +51,41 @@ Common domains include:
|
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
# List HTTP load balancers in default namespace
|
|
54
|
-
xcsh
|
|
55
|
-
|
|
56
|
-
# Using alias for shorter command
|
|
57
|
-
xcsh lb list http_loadbalancer
|
|
54
|
+
xcsh virtual list http_loadbalancer
|
|
58
55
|
|
|
59
56
|
# List in specific namespace
|
|
60
|
-
xcsh
|
|
57
|
+
xcsh virtual list http_loadbalancer -ns production
|
|
61
58
|
```
|
|
62
59
|
|
|
63
60
|
#### Get a Specific Resource
|
|
64
61
|
|
|
65
62
|
```bash
|
|
66
63
|
# Get a load balancer configuration
|
|
67
|
-
xcsh
|
|
64
|
+
xcsh virtual get http_loadbalancer example-lb
|
|
68
65
|
|
|
69
|
-
# Get from specific namespace
|
|
70
|
-
xcsh
|
|
66
|
+
# Get from specific namespace as YAML
|
|
67
|
+
xcsh virtual get http_loadbalancer example-lb -ns production -o yaml
|
|
71
68
|
```
|
|
72
69
|
|
|
73
70
|
#### Create a Resource
|
|
74
71
|
|
|
75
72
|
```bash
|
|
76
73
|
# Create from YAML file
|
|
77
|
-
xcsh
|
|
78
|
-
|
|
79
|
-
# Create from inline JSON
|
|
80
|
-
xcsh lb create origin_pool --json-data '{"metadata":{"name":"example-pool"},...}'
|
|
74
|
+
xcsh virtual create http_loadbalancer -f lb-config.yaml
|
|
81
75
|
```
|
|
82
76
|
|
|
83
77
|
#### Delete a Resource
|
|
84
78
|
|
|
85
79
|
```bash
|
|
86
|
-
# Delete
|
|
87
|
-
xcsh
|
|
88
|
-
|
|
89
|
-
# Delete without confirmation (for scripts)
|
|
90
|
-
xcsh lb delete http_loadbalancer example-lb --yes
|
|
80
|
+
# Delete a resource
|
|
81
|
+
xcsh virtual delete http_loadbalancer example-lb -ns production
|
|
91
82
|
```
|
|
92
83
|
|
|
93
84
|
#### Apply (Create or Update)
|
|
94
85
|
|
|
95
86
|
```bash
|
|
96
87
|
# Apply from YAML (creates if not exists, updates if does)
|
|
97
|
-
xcsh
|
|
88
|
+
xcsh virtual apply http_loadbalancer -f lb-config.yaml
|
|
98
89
|
```
|
|
99
90
|
|
|
100
91
|
#### Get Help
|
|
@@ -104,102 +95,31 @@ xcsh load_balancer apply http_loadbalancer -i lb-config.yaml
|
|
|
104
95
|
xcsh --help
|
|
105
96
|
|
|
106
97
|
# Show domain-specific operations
|
|
107
|
-
xcsh
|
|
108
|
-
|
|
109
|
-
# Show operation-specific help
|
|
110
|
-
xcsh load_balancer list --help
|
|
111
|
-
|
|
112
|
-
# Show resource-type help
|
|
113
|
-
xcsh load_balancer list http_loadbalancer --help
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Development & Domain System
|
|
117
|
-
|
|
118
|
-
### Automated Domain Synchronization
|
|
119
|
-
|
|
120
|
-
xcsh uses an **automated CI/CD-driven system** to keep domain definitions synchronized with upstream F5 Distributed Cloud API changes. This ensures the CLI always reflects the latest API structure without manual intervention.
|
|
121
|
-
|
|
122
|
-
#### How It Works
|
|
123
|
-
|
|
124
|
-
1. **Daily Checks**: GitHub Actions workflow (`sync-upstream-specs.yml`) checks for new upstream spec versions daily at 6 AM UTC
|
|
125
|
-
2. **Automatic Regeneration**: When updates are detected, the system:
|
|
126
|
-
- Downloads latest enriched API specifications
|
|
127
|
-
- Regenerates domain and resource registries
|
|
128
|
-
- Validates code quality and tests pass
|
|
129
|
-
- Creates a pull request with all changes
|
|
130
|
-
3. **Idempotent Generation**: Code generation is deterministic - running it twice with identical inputs produces byte-for-byte identical output
|
|
131
|
-
4. **CI/CD Validation**: Every commit validates that generated files match upstream specs and are reproducible
|
|
132
|
-
|
|
133
|
-
#### Domain Registry
|
|
134
|
-
|
|
135
|
-
The domain registry (`pkg/types/domains_generated.go`) is **automatically generated** from upstream API specifications (``.specs/index.json`). It currently contains **40 domains** organized by functional area:
|
|
136
|
-
|
|
137
|
-
- **Infrastructure**: cloud_infrastructure, site, site_management, container_services
|
|
138
|
-
- **Security**: waf, bot_and_threat_defense, network_security
|
|
139
|
-
- **Networking**: network, dns, network_connectivity, vpn
|
|
140
|
-
- **Observability**: observability_and_analytics, telemetry_and_insights, statistics
|
|
141
|
-
- **Identity**: identity, user_and_account_management, users
|
|
142
|
-
- **And 24 more...**
|
|
143
|
-
|
|
144
|
-
#### Manual Domain Configuration
|
|
145
|
-
|
|
146
|
-
Team-specific domain customization is managed in `.specs/domain_config.yaml`:
|
|
147
|
-
|
|
148
|
-
```yaml
|
|
149
|
-
# Domain aliases (short command shortcuts)
|
|
150
|
-
aliases:
|
|
151
|
-
load_balancer: [lb]
|
|
152
|
-
security: [sec]
|
|
153
|
-
networking: [net]
|
|
154
|
-
infrastructure: [infra]
|
|
155
|
-
|
|
156
|
-
# Deprecated domains with migration guidance
|
|
157
|
-
deprecated_domains:
|
|
158
|
-
config:
|
|
159
|
-
maps_to: system
|
|
160
|
-
reason: "Configuration management merged into system domain"
|
|
161
|
-
deprecated_since: "v1.0.25"
|
|
162
|
-
|
|
163
|
-
# Missing metadata requiring upstream attention
|
|
164
|
-
missing_metadata:
|
|
165
|
-
- domain: api_security
|
|
166
|
-
missing_field: "is_preview"
|
|
167
|
-
reason: "Need to mark preview/beta domains"
|
|
98
|
+
xcsh virtual --help
|
|
168
99
|
```
|
|
169
100
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
#### For Developers
|
|
101
|
+
## Development
|
|
173
102
|
|
|
174
|
-
|
|
103
|
+
### Build from Source
|
|
175
104
|
|
|
176
105
|
```bash
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
# Verify idempotency (CI safety check)
|
|
184
|
-
make ci-generate
|
|
106
|
+
git clone https://github.com/robinmordasiewicz/f5xc-xcsh.git
|
|
107
|
+
cd f5xc-xcsh
|
|
108
|
+
npm install
|
|
109
|
+
npm run build
|
|
110
|
+
./dist/index.js version
|
|
185
111
|
```
|
|
186
112
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
1. Downloads latest specs via `scripts/download-specs.sh`
|
|
190
|
-
2. Runs `scripts/generate-domains.go` to create domain registry
|
|
191
|
-
3. Runs `scripts/generate-schemas.go` to create resource schemas
|
|
192
|
-
4. Validates against `scripts/validate-specs.go`
|
|
193
|
-
|
|
194
|
-
#### Upstream Spec Quality
|
|
113
|
+
### Domain Registry
|
|
195
114
|
|
|
196
|
-
|
|
115
|
+
xcsh contains **38 domains** organized by functional area and automatically synchronized with F5 Distributed Cloud API specifications:
|
|
197
116
|
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
|
|
202
|
-
|
|
117
|
+
- **Load Balancing**: virtual (HTTP, TCP, UDP load balancers and origin pools)
|
|
118
|
+
- **Infrastructure**: cloud_infrastructure, sites, ce_management
|
|
119
|
+
- **Security**: waf, bot_and_threat_defense, network_security
|
|
120
|
+
- **Networking**: network, dns
|
|
121
|
+
- **Observability**: observability, statistics, telemetry_and_insights
|
|
122
|
+
- **Identity**: tenant_and_identity, users, authentication
|
|
203
123
|
|
|
204
124
|
## License
|
|
205
125
|
|
package/dist/index.js
CHANGED
|
@@ -46994,8 +46994,8 @@ function getLogoModeFromEnv(envPrefix) {
|
|
|
46994
46994
|
var CLI_NAME = "xcsh";
|
|
46995
46995
|
var CLI_FULL_NAME = "F5 Distributed Cloud Shell";
|
|
46996
46996
|
function getVersion() {
|
|
46997
|
-
if ("v2.0.
|
|
46998
|
-
return "v2.0.
|
|
46997
|
+
if ("v2.0.8-2601051356") {
|
|
46998
|
+
return "v2.0.8-2601051356";
|
|
46999
46999
|
}
|
|
47000
47000
|
if (process.env.XCSH_VERSION) {
|
|
47001
47001
|
return process.env.XCSH_VERSION;
|
|
@@ -154320,7 +154320,7 @@ program2.name(CLI_NAME).description("F5 Distributed Cloud Shell - Interactive CL
|
|
|
154320
154320
|
}
|
|
154321
154321
|
process.stdin.resume();
|
|
154322
154322
|
const appProps = { initialSession: session };
|
|
154323
|
-
render_default(/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(App2, { ...appProps }));
|
|
154323
|
+
render_default(/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(App2, { ...appProps }), { exitOnCtrlC: false });
|
|
154324
154324
|
return;
|
|
154325
154325
|
}
|
|
154326
154326
|
await executeNonInteractive(commandArgs);
|