Skip to content

Fix/redfish capability guidance - #84

Merged
RohanAdwankar merged 14 commits into
mainfrom
fix/redfish-capability-guidance
Oct 30, 2026
Merged

RohanAdwankar merged 14 commits into
mainfrom
fix/redfish-capability-guidance

Conversation

@RohanAdwankar

Copy link
Copy Markdown
Member

Description

Checklist

evberrypi and others added 3 commits October 27, 2026 16:03
Add modules.bcm.redfish (off by default) so the agent can read a node's
BMC over Redfish when the node is down or unreachable in-band. The BCM
SSH adapter registers redfish_* MCP tools behind its existing bearer
auth. The model passes only a BCM hostname; the adapter resolves the
BMC address and credentials through CMSH and never returns them.

RedfishPolicy allowlists GET on inventory, health, sensor, log,
firmware and task resources, accepts only $expand, $top and $skip, and
rejects Actions, AccountService, SessionService, CertificateService,
EventService, SecureBoot, Bios/Settings, VirtualMedia, '..', '//' and
'%' before any credential lookup. Responses have password, token and
secret fields redacted, and errors omit the BMC address.

By default each GET runs curl on the BCM head node over the adapter's
SSH session, with the credential on stdin; viaHeadNode=false uses a
direct HTTPS client without redirects. The extension adds
bcm_redfish_system_summary, _thermal, _power, _sel, _firmware and _get
as read tools in every mode, outside the mutation policy.

Signed-off-by: Ev Lacey <elacey@nvidia.com>
Address review findings on the read-only Redfish tools.

$expand could return denied resources: the policy checked only the
requested path, so /redfish/v1?$expand=*($levels=5) inlined
AccountService. Accept only $expand=. at one level, refuse query
parameters on the service root, and check every embedded resource in a
response against the allowlist, reducing any outside it to a bare link.

bcm_redfish_sel hid read failures: errors reading LogServices or
Entries were skipped, so a 403, 503 or 504 looked like an empty log.
Report failed sources in errors with complete=false, and fail the call
when no log could be read. Log services that reject query parameters
are read unqueried.

bcm_redfish_sel could omit the newest events: it ignored
Members@odata.nextLink. Follow continuation pages, bounded, through the
same policy check. Keep oversized results valid JSON by omitting the
oldest entries and reporting how many were omitted.

Signed-off-by: Ev Lacey <elacey@nvidia.com>
Require capability claims to follow registered tools and session access. Explain that Redfish Actions metadata does not grant an executable tool, and avoid offering unavailable writes or asking for confirmation to perform them.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
The deployed application rejected all six Redfish tools as unclassified even though BCM registered them as read-only. Add the explicit Redfish API tools to the shared read-only classification and verify that every registered Redfish tool remains available without Edit mode; existing mutation policy is unchanged.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Preserve both Redfish and web-search validation, then regenerate the bundled agent documentation from merged source. Keep the category credential fix and current main behavior alongside the Redfish tools, guidance, and read-only policy classification.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Redact sensitive HTTP headers and recursively sanitize JSON-encoded task bodies before returning Redfish data to the model or UI telemetry. Preserve task state, request metadata, and non-secret fields; redact malformed encoded bodies and header containers that cannot be inspected safely.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Limit curl downloads and cap SSH stdout while data arrives, terminating and reaping the child on oversized output or timeout. Use nonblocking input and output so the deadline also covers blocked credential input. Preserve existing CMSH calls and direct-transport limits; verify bounded reads, timeouts, and process cleanup without contacting hardware.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Explain that diagnostic catalog searches do not enumerate registered agent capabilities, both in the tool description and each search response. Preserve diagnostic results and tool registration, and verify the scope guidance for empty and populated results.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Add an opt-in BCM Redfish checkbox and emit its nested Helm flag only when BCM is enabled. Explain the read-only and TLS defaults, preserve dependency-driven BCM selection, and verify generated commands render successfully.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Require new installation headings and options to be reflected in the builder, and place a reminder beside the guide title. Document the builder validation commands and refresh the bundled agent documentation.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Remove the maintainer comment from the installation guide as requested, retaining the synchronization guidance in CONTRIBUTING.md. Refresh the bundled documentation.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Move the Redfish checkbox from connection settings into the BCM module block and indent it below BCM. Preserve opt-in behavior and generated Helm settings; update builder guidance and bundled documentation.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Let the expanded BCM block occupy two grid rows so adjacent modules fill the available space. Preserve a single-column flow on narrow screens.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
Move the complete Redfish setup from the BCM-specific guide to the main installation guide after BCM. Point the BCM guide and installation builder at the canonical extension section and refresh bundled agent documentation.

Signed-off-by: Rohan Adwankar <39285979+RohanAdwankar@users.noreply.github.com>
@RohanAdwankar
RohanAdwankar merged commit dfc3648 into main Oct 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants