vmware-pilot 2.1.0__tar.gz → 2.3.0__tar.gz
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.
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/.claude-plugin/plugin.json +1 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/.mcp.json +1 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/PKG-INFO +68 -3
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/README-CN.md +63 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/README.md +65 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/RELEASE_NOTES.md +44 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/openclaw.plugin.json +1 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/package.json +1 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/pyproject.toml +3 -3
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/server.json +2 -2
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/SKILL.md +3 -3
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/capabilities.md +7 -7
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/cli-reference.md +2 -2
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/setup-guide.md +41 -5
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/fixtures/companion_tools.json +54 -0
- vmware_pilot-2.3.0/tests/test_approval_roles.py +180 -0
- vmware_pilot-2.3.0/tests/test_approver_is_caller.py +67 -0
- vmware_pilot-2.3.0/tests/test_policy_roles.py +32 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/uv.lock +6 -6
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/__init__.py +1 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/cli.py +24 -3
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/custom_loader.py +4 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/_shared.py +12 -2
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/server.py +21 -4
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/tools/authoring.py +16 -2
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/tools/lifecycle.py +85 -1
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/models.py +27 -0
- vmware_pilot-2.3.0/vmware_pilot/policy_roles.py +27 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/.clawhubignore +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/.gitignore +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/Dockerfile +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/SECURITY.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/docs/architecture-audit-2026-04-30.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/docs/aria-pilot-boundary.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/examples/mcp-configs/claude-code.json +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/evals/evals.json +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/agent-guardrails.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/integration-patterns.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/templates.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/references/workflow-design.md +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/scripts/list_available_tools.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/skills/vmware-pilot/scripts/validate_workflow.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/smithery.yaml +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/conftest.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/_family.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/_scores.json +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/_scoring.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/_skill.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/conftest.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/test_entity_reachability.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/test_error_actionability.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/test_tool_description_quality.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/capability/test_tool_manifest_budget.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/_family_write_surface.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_approval_gate_coverage.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_capability_grader.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_catalog_covers_the_family.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_cli_writes_guarded.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_environment_resolver_isolation.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/eval/regression/test_template_steps_name_real_tools.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/fixtures/snapshot_companion_tools.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_confirm_needs_approval.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_custom_approval_gate.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_executor.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_executor_preview_is_not_success.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_final_review_fixes.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_models.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_no_destructive_ops.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_old_tool_names_translated.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_own_tools_gated.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_review.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_safe_error_passthrough.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_server.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_templates.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/tests/test_templates_pass_confirm.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/approval_gate.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/executor.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/lifecycle_gate.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/__main__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/_catalog.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/tools/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/mcp_server/tools/query.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/renames.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/review.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/__init__.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/_aiops_params.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/_common.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/_gated.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/baseline.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/k8s.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/monitoring.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/network.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/storage.py +0 -0
- {vmware_pilot-2.1.0 → vmware_pilot-2.3.0}/vmware_pilot/templates/vm.py +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://anthropic.com/claude-code/plugin.schema.json",
|
|
3
3
|
"name": "vmware-pilot",
|
|
4
4
|
"displayName": "VMware Pilot",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.3.0",
|
|
6
6
|
"description": "Multi-step workflow orchestration for VMware MCP skills with approval gates and rollback.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Wei Zhou",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: vmware-pilot
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: VMware workflow orchestration — multi-step state machine with approval gates
|
|
5
5
|
Project-URL: Homepage, https://github.com/vmware-skills/VMware-Pilot
|
|
6
6
|
Project-URL: Repository, https://github.com/vmware-skills/VMware-Pilot
|
|
@@ -9,10 +9,10 @@ Project-URL: Changelog, https://github.com/vmware-skills/VMware-Pilot/blob/main/
|
|
|
9
9
|
Author-email: Wei Zhou <wei-wz.zhou@broadcom.com>
|
|
10
10
|
License-Expression: MIT
|
|
11
11
|
Requires-Python: >=3.10
|
|
12
|
-
Requires-Dist: mcp[cli]<2.0,>=1.
|
|
12
|
+
Requires-Dist: mcp[cli]<2.0,>=1.28
|
|
13
13
|
Requires-Dist: pyyaml<7.0,>=6.0
|
|
14
14
|
Requires-Dist: typer<1.0,>=0.12
|
|
15
|
-
Requires-Dist: vmware-policy<2.0,>=1.
|
|
15
|
+
Requires-Dist: vmware-policy<2.0,>=1.21.0
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
|
|
18
18
|
<!-- mcp-name: io.github.vmware-skills/vmware-pilot -->
|
|
@@ -146,6 +146,71 @@ update it. Requires vmware-policy ≥ 1.19.0. Details: [RELEASE_NOTES.md](RELEAS
|
|
|
146
146
|
> corporate proxy (`invalid peer certificate: UnknownIssuer`). The installed entry point above
|
|
147
147
|
> touches the network zero times; set `UV_NATIVE_TLS=true` if you must use `uvx`.
|
|
148
148
|
|
|
149
|
+
<!-- usage: remote-and-exposure -->
|
|
150
|
+
## Remote access (HTTPS) and limiting tools
|
|
151
|
+
|
|
152
|
+
By default `vmware-pilot mcp` speaks stdio to one local client and offers every tool. Two options change that
|
|
153
|
+
(vmware-policy ≥ 1.21.0).
|
|
154
|
+
|
|
155
|
+
**Serve over HTTPS** so clients on other machines can connect. Every caller needs a bearer token:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
vmware-audit token create alice # prints the token once; give it to alice
|
|
159
|
+
vmware-audit token list # names only
|
|
160
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
161
|
+
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
162
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
163
|
+
--public-name mcp.example.com
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
|
|
170
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"mcpServers": {
|
|
176
|
+
"vmware-pilot": {
|
|
177
|
+
"type": "http",
|
|
178
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
179
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
- The server will not start without a token, refuses Host/Origin values outside `--public-name`, and checks
|
|
186
|
+
before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
|
|
187
|
+
- Behind a TLS-terminating reverse proxy on the same machine use `--transport http --host 127.0.0.1
|
|
188
|
+
--public-name mcp.example.com` and pass the `Authorization` header through.
|
|
189
|
+
- Behind a load balancer or gateway on another machine, keep `--transport https` (a self-signed certificate is
|
|
190
|
+
fine), list in `--public-name` the host name the balancer sends as `Host`, and have it forward `Authorization`.
|
|
191
|
+
Its health probe can use `GET /healthz`, which needs no token and returns only `{"status": "ok"}`
|
|
192
|
+
(vmware-policy ≥ 1.23.0).
|
|
193
|
+
- Send `traceparent` or `X-Request-ID` with each request to have it stored on the audit row;
|
|
194
|
+
`vmware-audit log --correlation-id ID` then finds the calls behind one platform request.
|
|
195
|
+
- The audit log records each caller as `token:<name>`. Calls naming different targets run in parallel; calls that
|
|
196
|
+
name no target run one at a time, so name the target when several people share a server.
|
|
197
|
+
- **Everyone who can reach the endpoint acts with this server's account.** Tokens identify callers; they grant
|
|
198
|
+
nothing on the platform. Run one endpoint per privilege level.
|
|
199
|
+
- **Several people or roles on one endpoint:** run `vmware-audit roles enable` once, then give each token a role (`vmware-audit token create NAME --role reader`, or a role in `roles.yaml` naming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
|
|
200
|
+
|
|
201
|
+
**Offer only read tools, plus the writes you choose:**
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
vmware-pilot mcp --expose read --allow-write cancel_workflow
|
|
205
|
+
# or: VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcp
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server
|
|
209
|
+
(exit 2). This limits what clients are offered; it is not authorization, so the account itself should be
|
|
210
|
+
least-privilege.
|
|
211
|
+
|
|
212
|
+
Details: `skills/vmware-pilot/references/setup-guide.md` ("Serving MCP over HTTPS", "Limiting which tools are offered").
|
|
213
|
+
|
|
149
214
|
## License
|
|
150
215
|
|
|
151
216
|
MIT
|
|
@@ -105,6 +105,69 @@ CLI 命令也不变。技能目录同时跟随 vmware-vks 的改名(`get_super
|
|
|
105
105
|
- 查看最近操作:`vmware-audit log --last 20`
|
|
106
106
|
- 查看被拒绝的操作:`vmware-audit log --status denied`
|
|
107
107
|
|
|
108
|
+
<!-- usage: remote-and-exposure -->
|
|
109
|
+
## 远程访问(HTTPS)与限制工具
|
|
110
|
+
|
|
111
|
+
默认情况下 `vmware-pilot mcp` 通过 stdio 服务一个本地客户端,并提供全部工具。以下两个选项可以改变这一点
|
|
112
|
+
(需 vmware-policy ≥ 1.21.0)。
|
|
113
|
+
|
|
114
|
+
**通过 HTTPS 提供服务**,让其他机器上的客户端连接。每个调用者都需要一个 bearer token:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
vmware-audit token create alice # 只显示一次,交给 alice
|
|
118
|
+
vmware-audit token list # 只列名字
|
|
119
|
+
vmware-audit token revoke alice # 下一个请求起即拒绝,无需重启
|
|
120
|
+
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
121
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
122
|
+
--public-name mcp.example.com
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
连接客户端(以 Claude Code 为例;任何支持 streamable HTTP 和自定义请求头的 MCP 客户端都可以):
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
|
|
129
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"mcpServers": {
|
|
135
|
+
"vmware-pilot": {
|
|
136
|
+
"type": "http",
|
|
137
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
138
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
- 没有 token 时服务不会启动;`--public-name` 之外的 Host/Origin 一律拒绝;绑定端口前会自检,确认未认证请求得到 401。
|
|
145
|
+
证书要用客户端信任、且覆盖这些名字的证书。
|
|
146
|
+
- 在同一台机器上由反向代理终结 TLS 时,用 `--transport http --host 127.0.0.1 --public-name mcp.example.com`,
|
|
147
|
+
并让代理透传 `Authorization` 头。
|
|
148
|
+
- 负载均衡或网关在另一台机器上时,保持 `--transport https`(自签证书也可以),在 `--public-name` 里写上负载均衡
|
|
149
|
+
转发时带的 `Host` 名,并让它透传 `Authorization`。健康检查可以用 `GET /healthz`:不需要 token,只返回
|
|
150
|
+
`{"status": "ok"}`(需 vmware-policy ≥ 1.23.0)。
|
|
151
|
+
- 每个请求带上 `traceparent` 或 `X-Request-ID`,它会记进审计记录;用 `vmware-audit log --correlation-id ID`
|
|
152
|
+
就能查到平台上某一次请求对应的调用。
|
|
153
|
+
- 审计日志把每个调用者记为 `token:<名字>`。指定不同 target 的调用并行执行;不指定 target 的调用逐个执行,
|
|
154
|
+
所以多人共用一个 server 时请写明 target。
|
|
155
|
+
- **能连到这个端点的人,都以该 server 配置的账号操作。** token 只用来识别调用者,不在平台上授予任何权限。
|
|
156
|
+
每个权限级别单独起一个端点。
|
|
157
|
+
- **一个端点给多人或多种角色用:** 先运行一次 `vmware-audit roles enable`,再给每个 token 指定角色(`vmware-audit token create 名字 --role reader`,或在 `roles.yaml` 里定义可用的工具和 target;需 vmware-policy ≥ 1.24.0)。角色只能限定这个 token 在本端点上能调用什么,不能超出账号本身的权限。详见 vmware-policy README 的「网络调用者的角色」一节。
|
|
158
|
+
|
|
159
|
+
**只提供读工具,加上你选定的写工具:**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
vmware-pilot mcp --expose read --allow-write cancel_workflow
|
|
163
|
+
# 或:VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcp
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
未提供的工具不会出现在客户端的工具列表里。取值错误或写工具名不存在时服务直接退出(exit 2)。
|
|
167
|
+
这只限制提供给客户端的工具,不是授权;账号本身仍应遵循最小权限。
|
|
168
|
+
|
|
169
|
+
详见 `skills/vmware-pilot/references/setup-guide.md`("Serving MCP over HTTPS"、"Limiting which tools are offered")。
|
|
170
|
+
|
|
108
171
|
## 许可证
|
|
109
172
|
|
|
110
173
|
MIT
|
|
@@ -129,6 +129,71 @@ update it. Requires vmware-policy ≥ 1.19.0. Details: [RELEASE_NOTES.md](RELEAS
|
|
|
129
129
|
> corporate proxy (`invalid peer certificate: UnknownIssuer`). The installed entry point above
|
|
130
130
|
> touches the network zero times; set `UV_NATIVE_TLS=true` if you must use `uvx`.
|
|
131
131
|
|
|
132
|
+
<!-- usage: remote-and-exposure -->
|
|
133
|
+
## Remote access (HTTPS) and limiting tools
|
|
134
|
+
|
|
135
|
+
By default `vmware-pilot mcp` speaks stdio to one local client and offers every tool. Two options change that
|
|
136
|
+
(vmware-policy ≥ 1.21.0).
|
|
137
|
+
|
|
138
|
+
**Serve over HTTPS** so clients on other machines can connect. Every caller needs a bearer token:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
vmware-audit token create alice # prints the token once; give it to alice
|
|
142
|
+
vmware-audit token list # names only
|
|
143
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
144
|
+
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
145
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
146
|
+
--public-name mcp.example.com
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
|
|
153
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"mcpServers": {
|
|
159
|
+
"vmware-pilot": {
|
|
160
|
+
"type": "http",
|
|
161
|
+
"url": "https://mcp.example.com:8443/mcp",
|
|
162
|
+
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
- The server will not start without a token, refuses Host/Origin values outside `--public-name`, and checks
|
|
169
|
+
before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
|
|
170
|
+
- Behind a TLS-terminating reverse proxy on the same machine use `--transport http --host 127.0.0.1
|
|
171
|
+
--public-name mcp.example.com` and pass the `Authorization` header through.
|
|
172
|
+
- Behind a load balancer or gateway on another machine, keep `--transport https` (a self-signed certificate is
|
|
173
|
+
fine), list in `--public-name` the host name the balancer sends as `Host`, and have it forward `Authorization`.
|
|
174
|
+
Its health probe can use `GET /healthz`, which needs no token and returns only `{"status": "ok"}`
|
|
175
|
+
(vmware-policy ≥ 1.23.0).
|
|
176
|
+
- Send `traceparent` or `X-Request-ID` with each request to have it stored on the audit row;
|
|
177
|
+
`vmware-audit log --correlation-id ID` then finds the calls behind one platform request.
|
|
178
|
+
- The audit log records each caller as `token:<name>`. Calls naming different targets run in parallel; calls that
|
|
179
|
+
name no target run one at a time, so name the target when several people share a server.
|
|
180
|
+
- **Everyone who can reach the endpoint acts with this server's account.** Tokens identify callers; they grant
|
|
181
|
+
nothing on the platform. Run one endpoint per privilege level.
|
|
182
|
+
- **Several people or roles on one endpoint:** run `vmware-audit roles enable` once, then give each token a role (`vmware-audit token create NAME --role reader`, or a role in `roles.yaml` naming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
|
|
183
|
+
|
|
184
|
+
**Offer only read tools, plus the writes you choose:**
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
vmware-pilot mcp --expose read --allow-write cancel_workflow
|
|
188
|
+
# or: VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcp
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server
|
|
192
|
+
(exit 2). This limits what clients are offered; it is not authorization, so the account itself should be
|
|
193
|
+
least-privilege.
|
|
194
|
+
|
|
195
|
+
Details: `skills/vmware-pilot/references/setup-guide.md` ("Serving MCP over HTTPS", "Limiting which tools are offered").
|
|
196
|
+
|
|
132
197
|
## License
|
|
133
198
|
|
|
134
199
|
MIT
|
|
@@ -1,3 +1,47 @@
|
|
|
1
|
+
## v2.3.0 — roles for network callers (HLD §18)
|
|
2
|
+
|
|
3
|
+
* Workflows record their creator (`created_by`: the network caller `token:<name>`, or the OS user). Workflows saved
|
|
4
|
+
before this release have none.
|
|
5
|
+
* With vmware-policy ≥ 1.24.0 and roles enabled, `approve` follows the caller's role: `approve: none` cannot
|
|
6
|
+
approve, `approve: others` cannot approve a workflow its own token created (nor one with no recorded creator),
|
|
7
|
+
`approve: any` can. The token also needs a role that allows the `approve` tool itself. Whoever edits a draft
|
|
8
|
+
(`update_draft`) or confirms it (`confirm_draft`) is recorded in `authors` and counts as its creator for
|
|
9
|
+
`others`; so is whoever saved a custom template, for workflows made from it (the YAML records `authors`).
|
|
10
|
+
A refusal is audited as `denied` with `rule=role:<name>`.
|
|
11
|
+
* Approval is an audited attestation, not a gate on execution: this server does not run other skills' steps, it
|
|
12
|
+
returns them (`pending_dispatch`) and each skill's server checks the caller's own role there.
|
|
13
|
+
* Declares role metadata (no tool takes a target). README and setup guide: one endpoint for several people or roles.
|
|
14
|
+
|
|
15
|
+
## v2.2.0 — serve MCP over HTTPS
|
|
16
|
+
|
|
17
|
+
`vmware-pilot mcp` can now serve the network as well as stdio (HLD §16, via vmware-policy 1.21.0):
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
vmware-audit token create alice # once per caller; shown once
|
|
21
|
+
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
22
|
+
--cert server.pem --key server-key.pem --public-name mcp.example.com
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Connect a client and manage callers (Claude Code shown; any MCP client with streamable HTTP and custom headers works):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \
|
|
29
|
+
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
|
|
30
|
+
vmware-audit token list # names only
|
|
31
|
+
vmware-audit token revoke alice # refused from its next request, no restart
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
* Every request needs `Authorization: Bearer <token>`; the server will not start without a token, refuses Host or
|
|
35
|
+
Origin values outside `--public-name`, and checks itself (unauthenticated requests must get 401) before it
|
|
36
|
+
binds. `--transport http` binds loopback only, for a TLS-terminating reverse proxy.
|
|
37
|
+
* Audit rows record the caller as `token:<name>` and the surface as `mcp-https`. Calls naming different targets
|
|
38
|
+
run in parallel; calls naming no target run one at a time.
|
|
39
|
+
* Over HTTPS, `approve` records the authenticated caller as the approver and refuses a different free-text
|
|
40
|
+
name (HLD §16 D-12). stdio and the CLI are unchanged.
|
|
41
|
+
* stdio remains the default; the `vmware-pilot-mcp` console script and `python -m` are unchanged.
|
|
42
|
+
* Everyone who can reach the endpoint acts with this server's account; run one endpoint per privilege level.
|
|
43
|
+
* Requires `vmware-policy>=1.21.0` and `mcp>=1.28`.
|
|
44
|
+
|
|
1
45
|
## v2.1.0 — offer only read tools, plus chosen write tools
|
|
2
46
|
|
|
3
47
|
`vmware-pilot mcp` can now offer a subset of this server's tools (HLD §17 D-16, via vmware-policy 1.20.0):
|
|
@@ -4,15 +4,15 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "vmware-pilot"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.3.0"
|
|
8
8
|
description = "VMware workflow orchestration — multi-step state machine with approval gates"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
11
11
|
requires-python = ">=3.10"
|
|
12
12
|
authors = [{ name = "Wei Zhou", email = "wei-wz.zhou@broadcom.com" }]
|
|
13
13
|
dependencies = [
|
|
14
|
-
"vmware-policy>=1.
|
|
15
|
-
"mcp[cli]>=1.
|
|
14
|
+
"vmware-policy>=1.21.0,<2.0",
|
|
15
|
+
"mcp[cli]>=1.28,<2.0",
|
|
16
16
|
"pyyaml>=6.0,<7.0",
|
|
17
17
|
"typer>=0.12,<1.0",
|
|
18
18
|
]
|
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
"url": "https://github.com/vmware-skills/VMware-Pilot",
|
|
8
8
|
"source": "github"
|
|
9
9
|
},
|
|
10
|
-
"version": "2.
|
|
10
|
+
"version": "2.3.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "pypi",
|
|
14
14
|
"identifier": "vmware-pilot",
|
|
15
|
-
"version": "2.
|
|
15
|
+
"version": "2.3.0",
|
|
16
16
|
"runtimeHint": "uvx",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
@@ -42,7 +42,7 @@ Multi-step workflow orchestration for VMware MCP skills — design, approve, exe
|
|
|
42
42
|
## Quick Install
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
uv tool install vmware-pilot==2.
|
|
45
|
+
uv tool install vmware-pilot==2.3.0
|
|
46
46
|
vmware-pilot mcp # start the MCP server (stdio)
|
|
47
47
|
```
|
|
48
48
|
|
|
@@ -147,7 +147,7 @@ Deploy a backend VM, create a K8s namespace, and wire up AKO Ingress to the AVI
|
|
|
147
147
|
|
|
148
148
|
This is intentional v2-style architecture: pilot's context stays small, state is always on disk, and there are no persistent agent threads. Full contract details: see [`references/integration-patterns.md`](references/integration-patterns.md#the-dispatch-contract).
|
|
149
149
|
|
|
150
|
-
**`get_skill_catalog` is a curated design aid, not a whitelist.** It surfaces 100 hand-picked building blocks across 13 skills — a deliberate subset of what those skills expose (aiops alone has
|
|
150
|
+
**`get_skill_catalog` is a curated design aid, not a whitelist.** It surfaces 100 hand-picked building blocks across 13 skills — a deliberate subset of what those skills expose (aiops alone has 61 tools; the catalog lists 19). A step's `skill` field is a free-form string handed to the calling agent, so a workflow may name any companion skill, including ones the catalog does not list — pilot itself (`pilot`) is used that way by built-in templates for approval gates. Use the catalog for inspiration; consult the target skill's own SKILL.md for its full tool surface.
|
|
151
151
|
|
|
152
152
|
## MCP Tools (13 — 4 read, 9 write/control)
|
|
153
153
|
|
|
@@ -303,7 +303,7 @@ No vCenter credentials needed — pilot orchestrates other skills that handle co
|
|
|
303
303
|
}
|
|
304
304
|
```
|
|
305
305
|
|
|
306
|
-
> Fallback: `{"command": "uvx", "args": ["--from", "vmware-pilot==2.
|
|
306
|
+
> Fallback: `{"command": "uvx", "args": ["--from", "vmware-pilot==2.3.0", "vmware-pilot-mcp"]}` also
|
|
307
307
|
> works, but `uvx` re-resolves the package against PyPI on every start and fails behind a
|
|
308
308
|
> TLS-inspecting corporate proxy (`invalid peer certificate: UnknownIssuer`). The installed
|
|
309
309
|
> entry point above touches the network zero times; set `UV_NATIVE_TLS=true` if you must use `uvx`.
|
|
@@ -55,21 +55,21 @@ numbers matter here, and they are not the same thing:
|
|
|
55
55
|
|
|
56
56
|
| Skill | Package | Skill tools | In design catalog | Domain |
|
|
57
57
|
|-------|---------|:-----------:|:-----------------:|--------|
|
|
58
|
-
| vmware-aiops | `vmware-aiops` |
|
|
59
|
-
| vmware-monitor | `vmware-monitor` |
|
|
58
|
+
| vmware-aiops | `vmware-aiops` | 61 | 19 | VM lifecycle, deployment, guest ops, clusters |
|
|
59
|
+
| vmware-monitor | `vmware-monitor` | 33 | 5 | Read-only inventory, alarms, events |
|
|
60
60
|
| vmware-nsx | `vmware-nsx-mgmt` | 33 | 8 | NSX segments, gateways, NAT, routing, IPAM |
|
|
61
61
|
| vmware-nsx-security | `vmware-nsx-security` | 22 | 7 | DFW policies/rules, security groups, traceflow |
|
|
62
|
-
| vmware-aria | `vmware-aria` |
|
|
63
|
-
| vmware-vks | `vmware-vks` |
|
|
64
|
-
| vmware-storage | `vmware-storage` |
|
|
62
|
+
| vmware-aria | `vmware-aria` | 46 | 7 | Aria Ops metrics, alerts, capacity, anomalies |
|
|
63
|
+
| vmware-vks | `vmware-vks` | 24 | 8 | Tanzu Supervisor, Namespaces, TKC clusters |
|
|
64
|
+
| vmware-storage | `vmware-storage` | 15 | 5 | Datastores, iSCSI, vSAN, FC multipath |
|
|
65
65
|
| vmware-avi | `vmware-avi` | 28 | 13 | AVI load balancing, pool members, AKO K8s ops |
|
|
66
66
|
| vmware-debug | `vmware-debug` | 14 | 5 | Incident correlation, evidence-graded cases |
|
|
67
67
|
| vmware-harden | `vmware-harden` | 8 | 5 | Compliance baselines, violations, drift |
|
|
68
68
|
| vmware-log-insight | `vmware-log-insight` | 7 | 4 | Log search, aggregation, alerts |
|
|
69
|
-
| vmware-privateai | `vmware-privateai` |
|
|
69
|
+
| vmware-privateai | `vmware-privateai` | 18 | 5 | GPU hosts, vGPU profiles, utilisation |
|
|
70
70
|
| vmware-vdi | `vmware-vdi` | 27 | 9 | Horizon pools, sessions, machines, images |
|
|
71
71
|
|
|
72
|
-
**Totals**:
|
|
72
|
+
**Totals**: 336 tools across the 13 companion skills; the design catalog covers 100 of them
|
|
73
73
|
across all 13. Pilot adds 13 orchestration tools of its own. The counts are checked against
|
|
74
74
|
the companion snapshot by `tests/eval/regression/test_catalog_covers_the_family.py`.
|
|
75
75
|
|
|
@@ -19,12 +19,12 @@ client.
|
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
# Recommended: installed entry point, never touches the network
|
|
22
|
-
uv tool install vmware-pilot==2.
|
|
22
|
+
uv tool install vmware-pilot==2.3.0
|
|
23
23
|
vmware-pilot mcp
|
|
24
24
|
|
|
25
25
|
# Fallback: uvx re-resolves against PyPI each start and fails behind a
|
|
26
26
|
# TLS-inspecting corporate proxy — set UV_NATIVE_TLS=true if you must use it
|
|
27
|
-
uvx --from vmware-pilot==2.
|
|
27
|
+
uvx --from vmware-pilot==2.3.0 vmware-pilot-mcp
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
The server runs on **stdio** transport and exposes 13 MCP tools (4 read, 9 write).
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
### Via uv (Recommended)
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
uv tool install vmware-pilot==2.
|
|
14
|
+
uv tool install vmware-pilot==2.3.0
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
### Via pip
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
uv tool install vmware-pilot==2.
|
|
20
|
+
uv tool install vmware-pilot==2.3.0
|
|
21
21
|
|
|
22
22
|
# China mainland mirror
|
|
23
|
-
pip install vmware-pilot==2.
|
|
23
|
+
pip install vmware-pilot==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### Verify Installation
|
|
@@ -84,7 +84,7 @@ The `uvx` form still works and needs no prior install:
|
|
|
84
84
|
"mcpServers": {
|
|
85
85
|
"vmware-pilot": {
|
|
86
86
|
"command": "uvx",
|
|
87
|
-
"args": ["--from", "vmware-pilot==2.
|
|
87
|
+
"args": ["--from", "vmware-pilot==2.3.0", "vmware-pilot-mcp"]
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -100,7 +100,7 @@ invalid peer certificate: UnknownIssuer
|
|
|
100
100
|
|
|
101
101
|
`uv` ships its own certificate bundle and ignores the system trust store, which is what breaks.
|
|
102
102
|
Either set `UV_NATIVE_TLS=true` so it honours your corporate CA, or install the tool once
|
|
103
|
-
(`uv tool install vmware-pilot==2.
|
|
103
|
+
(`uv tool install vmware-pilot==2.3.0`) and launch `vmware-pilot mcp`, which touches the network
|
|
104
104
|
zero times.
|
|
105
105
|
|
|
106
106
|
---
|
|
@@ -132,6 +132,42 @@ vmware-pilot mcp --expose read --allow-write cancel_workflow
|
|
|
132
132
|
- This limits what clients are offered. It is **not** authorization. This server's write tools change workflow state on this machine; the steps it runs act through the other skills' accounts;
|
|
133
133
|
deny rules in `~/.vmware/rules.yaml` still apply to every exposed tool.
|
|
134
134
|
|
|
135
|
+
## Serving MCP over HTTPS
|
|
136
|
+
|
|
137
|
+
By default the MCP server speaks stdio to one local client. To let clients on other machines reach it, serve it over
|
|
138
|
+
HTTPS. Every caller then needs a bearer token.
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
vmware-audit token create alice # prints the token once; give it to alice
|
|
142
|
+
vmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \
|
|
143
|
+
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
|
|
144
|
+
--public-name mcp.example.com
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- Clients connect to `https://mcp.example.com:8443/mcp` and send `Authorization: Bearer <token>`.
|
|
148
|
+
- `--public-name` lists every host name clients use (comma-separated); requests for any other Host or Origin are
|
|
149
|
+
refused. Use a certificate your clients trust for those names.
|
|
150
|
+
- Behind a reverse proxy that terminates TLS (Nginx, HAProxy) on the same machine, use
|
|
151
|
+
`--transport http --host 127.0.0.1 --public-name mcp.example.com` (the names the proxy forwards in `Host`), and
|
|
152
|
+
have the proxy pass the `Authorization` header through.
|
|
153
|
+
- Behind a load balancer or gateway on another machine, keep `--transport https` (a self-signed certificate is
|
|
154
|
+
fine: the balancer is the client that has to trust it), list in `--public-name` the host name the balancer sends
|
|
155
|
+
as `Host`, and have it forward `Authorization`. Point its health probe at `GET /healthz`: it needs no token, returns
|
|
156
|
+
only `{"status": "ok"}` and accepts any `Host` (vmware-policy ≥ 1.23.0). Every other path still needs the token.
|
|
157
|
+
- Correlation: each audit row stores the caller's `traceparent` trace-id, else its `X-Request-ID` /
|
|
158
|
+
`X-Correlation-ID`. Have the agent platform send one, and `vmware-audit log --correlation-id ID` lists the calls
|
|
159
|
+
behind one platform request.
|
|
160
|
+
- `vmware-audit token list` / `token revoke NAME` manage callers; a revoked token is refused from its next request.
|
|
161
|
+
Replace a leaked token under a new name.
|
|
162
|
+
- The server will not start without at least one token, and checks before it binds that unauthenticated requests
|
|
163
|
+
are refused.
|
|
164
|
+
- Each audit row records the caller as `token:<name>`. Calls naming different targets run in parallel; calls that
|
|
165
|
+
name no target run one at a time, so name the target when several people use one server.
|
|
166
|
+
- **Everyone who can reach the endpoint acts with this server's account.** Tokens identify callers; they grant
|
|
167
|
+
nothing on the platform. Run one endpoint per privilege level (for example a read-only account behind
|
|
168
|
+
`--expose read`, and a separate endpoint for operators).
|
|
169
|
+
- **Several people or roles on one endpoint:** run `vmware-audit roles enable` once, then give each token a role (`vmware-audit token create NAME --role reader`, or a role in `roles.yaml` naming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".
|
|
170
|
+
|
|
135
171
|
## Configuration
|
|
136
172
|
|
|
137
173
|
Pilot itself requires **no vCenter/NSX/AVI credentials**. It is a pure orchestrator that delegates all infrastructure calls to companion skills.
|
|
@@ -353,6 +353,13 @@
|
|
|
353
353
|
"vm_name"
|
|
354
354
|
]
|
|
355
355
|
},
|
|
356
|
+
"get_access_info": {
|
|
357
|
+
"properties": [
|
|
358
|
+
"target",
|
|
359
|
+
"tool"
|
|
360
|
+
],
|
|
361
|
+
"required": []
|
|
362
|
+
},
|
|
356
363
|
"get_cluster_health_summary": {
|
|
357
364
|
"properties": [
|
|
358
365
|
"cluster_filter",
|
|
@@ -827,6 +834,16 @@
|
|
|
827
834
|
"alert_id"
|
|
828
835
|
]
|
|
829
836
|
},
|
|
837
|
+
"get_api_path": {
|
|
838
|
+
"properties": [
|
|
839
|
+
"params",
|
|
840
|
+
"path",
|
|
841
|
+
"target"
|
|
842
|
+
],
|
|
843
|
+
"required": [
|
|
844
|
+
"path"
|
|
845
|
+
]
|
|
846
|
+
},
|
|
830
847
|
"get_aria_health": {
|
|
831
848
|
"properties": [
|
|
832
849
|
"target"
|
|
@@ -1127,6 +1144,15 @@
|
|
|
1127
1144
|
"query"
|
|
1128
1145
|
]
|
|
1129
1146
|
},
|
|
1147
|
+
"search_api_operations": {
|
|
1148
|
+
"properties": [
|
|
1149
|
+
"limit",
|
|
1150
|
+
"query"
|
|
1151
|
+
],
|
|
1152
|
+
"required": [
|
|
1153
|
+
"query"
|
|
1154
|
+
]
|
|
1155
|
+
},
|
|
1130
1156
|
"set_alert_definition_state": {
|
|
1131
1157
|
"properties": [
|
|
1132
1158
|
"definition_id",
|
|
@@ -1625,6 +1651,13 @@
|
|
|
1625
1651
|
],
|
|
1626
1652
|
"required": []
|
|
1627
1653
|
},
|
|
1654
|
+
"get_access_info": {
|
|
1655
|
+
"properties": [
|
|
1656
|
+
"target",
|
|
1657
|
+
"tool"
|
|
1658
|
+
],
|
|
1659
|
+
"required": []
|
|
1660
|
+
},
|
|
1628
1661
|
"get_alarms": {
|
|
1629
1662
|
"properties": [
|
|
1630
1663
|
"limit",
|
|
@@ -2526,6 +2559,13 @@
|
|
|
2526
2559
|
],
|
|
2527
2560
|
"required": []
|
|
2528
2561
|
},
|
|
2562
|
+
"get_access_info": {
|
|
2563
|
+
"properties": [
|
|
2564
|
+
"target",
|
|
2565
|
+
"tool"
|
|
2566
|
+
],
|
|
2567
|
+
"required": []
|
|
2568
|
+
},
|
|
2529
2569
|
"get_gpu_host": {
|
|
2530
2570
|
"properties": [
|
|
2531
2571
|
"host_name",
|
|
@@ -2692,6 +2732,13 @@
|
|
|
2692
2732
|
"host_name"
|
|
2693
2733
|
]
|
|
2694
2734
|
},
|
|
2735
|
+
"get_access_info": {
|
|
2736
|
+
"properties": [
|
|
2737
|
+
"target",
|
|
2738
|
+
"tool"
|
|
2739
|
+
],
|
|
2740
|
+
"required": []
|
|
2741
|
+
},
|
|
2695
2742
|
"get_iscsi_status": {
|
|
2696
2743
|
"properties": [
|
|
2697
2744
|
"host_name",
|
|
@@ -3136,6 +3183,13 @@
|
|
|
3136
3183
|
"namespace"
|
|
3137
3184
|
]
|
|
3138
3185
|
},
|
|
3186
|
+
"get_access_info": {
|
|
3187
|
+
"properties": [
|
|
3188
|
+
"target",
|
|
3189
|
+
"tool"
|
|
3190
|
+
],
|
|
3191
|
+
"required": []
|
|
3192
|
+
},
|
|
3139
3193
|
"get_harbor_info": {
|
|
3140
3194
|
"properties": [
|
|
3141
3195
|
"target"
|