Skip to the content.

Central v0.7 depth workflows (v07-central-depth)

Scope: Central-only. Adds schema-backed template/bulk/firmware-campaign/ config-health/troubleshooting-orchestration workflows on top of the existing curated central-config / central-monitoring / central-ops tools, plus a credential-gated live evaluator and a disposable-write lifecycle harness. This page documents those additions only — it does not restate or revise any global tool-count claims (see README.md / docs/architecture/RAG-ARCHITECTURE.md for those, owned by the release process).

Why these five workflows

Every endpoint below was verified against the committed OpenAPI source (ingestion/sources/openapi_specs/*.json) and/or the generated Central manifest (src/hpe_networking_mcp/mcp_servers/openapi_gen/manifests/central.json, 1,677 operations) before any tool was written — no Classic-Central-shaped path was guessed.

Workflow New Central schema source Gap this closes
VSF stacking-template lifecycle ingestion/sources/openapi_specs/vsf-template.json (GET/POST/PATCH/DELETE /network-config/v1alpha1/vsf-templates[/{name}]) The only schema-backed generic “template” resource in New Central; the existing list_config_templates only probes speculative Classic-shaped endpoints
Bulk site / site-collection delete scope-management-1fkx1wmq0s.json (DELETE /network-config/v1/sites/bulk, DELETE /network-config/v1/site-collections/bulk) Device-group bulk delete already existed; site/site-collection bulk delete did not
Firmware-compliance campaign Orchestrates the existing manifest-confirmed /network-config/v1alpha1/firmware-compliance POST/PATCH flow across multiple targets No bulk-firmware endpoint exists in the schema — this composes the single-target endpoint safely across scopes/personas instead of inventing one
Config-health remediation planning + execution configuration-health-b374ik1cmq.json (config-health/devices, config-health/active-issue, config-health/devices-resync, maxItems: 50) Planning was previously manual; resync had no schema-enforced chunk bound
Troubleshooting orchestration Composes existing confirmed /network-troubleshooting/* LLDP/ARP/ping/show tools No bounded, multi-step diagnostic bundle existed

Endpoints considered and explicitly not implemented because no authoritative schema exists in this manifest:

New tools

All writes below share one contract: dry_run=True by default (no network call), an explicit confirm=True is required to execute, execution is gated behind the existing Central write gate (HPE_MCP_CENTRAL_WRITES, default enabled — enforce_platform_write in src/hpe_networking_mcp/mcp_servers/shared.py), the executed response is validated (validate_write_result, raises WriteResultError on a non-2xx/error envelope), and a read-back call confirms what Central actually stored.

src/hpe_networking_mcp/mcp_servers/config.py (75 → 80 tools)

Tool Annotation Notes
build_vsf_template IDEMPOTENT_WRITE Create/update a LOCAL-scoped VSF template (number_of_members 1-10); read-back via GET after write
delete_vsf_template DESTRUCTIVE Delete + read-back; a 404 on read-back is surfaced as read_back={"deleted_confirmed": True}
delete_sites_bulk DESTRUCTIVE Up to 100 site IDs per call; irreversible (no read-back — verify with list_sites first)
delete_site_collections_bulk DESTRUCTIVE Same shape/bound as delete_sites_bulk
run_firmware_compliance_campaign IDEMPOTENT_WRITE Up to 25 {scope_id, device_function} targets; every target is attempted independently — one target’s failure never aborts the rest (targets_failed, per-target error); each successful target is read back via get_firmware_compliance

get_network_profile / set_network_profile / delete_network_profile also work generically against profile_type="vsf-template" (added to _NETWORK_PROFILE_TYPES), consistent with the existing BGP/OSPF/VRF/VSX/ telemetry profile family.

src/hpe_networking_mcp/mcp_servers/monitoring.py (85 → 87 tools)

Tool Annotation Notes
plan_config_health_remediation READ_ONLY Bounded scan (max_devices_scanned ≤ 200) of list_devices_config_health + get_device_config_issues; makes no config changes
execute_config_health_remediation IDEMPOTENT_WRITE Chunks ≤200 serials into groups of ≤50 (the resyncCfgDevices schema max) and resyncs each chunk independently — one chunk’s failure never aborts the rest; reads back get_device_config_issues per serial in each successful chunk

resync_device_config now enforces the same 50-serial schema bound directly (ValueError above the limit) instead of silently forwarding an oversized request.

src/hpe_networking_mcp/mcp_servers/ops.py (40 → 41 tools)

Tool Annotation Notes
run_troubleshooting_bundle DIAGNOSTIC CX or AOS-S only. Always runs an ARP-table step (CX also runs LLDP); optional ping (destination) and show (commands, ≤5, each must start with show ) steps. Composes existing tools only — no new endpoint. Each step’s failure is captured independently; the bundle never aborts early

Live evaluation: scripts/evaluate_central_070_readonly.py

Credential-gated per src/hpe_networking_mcp/pipeline/live_test_config.py; every artifact is written through src/hpe_networking_mcp/pipeline/artifact_contracts.write_artifact (live_lifecycle_evidence kind), which redacts secrets and hashes any identifier before the file touches disk.

Live status for this evaluation run

HPE_MCP_LIVE_TEST_CENTRAL_READ was not set in this environment, so per the task’s read-only-gating rule, no live call was attempted here — only the default offline/fixture-backed evaluation was run (.venv/bin/python scripts/evaluate_central_070_readonly.py). Central credentials happen to be present in config/credentials.yaml, but credential presence never implies authorization (see src/hpe_networking_mcp/pipeline/live_test_config.py) — set HPE_MCP_LIVE_TEST_CENTRAL_READ=1 explicitly to run the bounded GET-only path.

Tests

File Covers
tests/unit/test_config_v07_workflows.py VSF template dry_run/confirm/gate/read-back/validated-result; bulk-delete bounds + payload shape; firmware campaign bounds + partial failure
tests/unit/test_monitoring_config_health_remediation.py Remediation planning (healthy-device skip, scan bound, per-device error capture); execution chunk bound, dry_run/confirm/gate, partial-chunk-failure
tests/unit/test_ops_troubleshooting_bundle.py Device-type/command validation, CX vs AOS-S step composition, per-step partial-failure isolation
tests/unit/test_evaluate_central_070_readonly.py Offline artifact validity + redaction (no raw fixture identifiers), live-read gating, disposable-write harness never auto-executed and hashes its identifier

Run: .venv/bin/python -m pytest tests/unit/test_config_v07_workflows.py tests/unit/test_monitoring_config_health_remediation.py tests/unit/test_ops_troubleshooting_bundle.py tests/unit/test_evaluate_central_070_readonly.py -q