Skip to content

fix(installer): explain failed OpenIB service - #7152

Merged
ericksoa merged 5 commits into
NVIDIA:mainfrom
senthilr-nv:codex/7151-openibd-remediation
Jul 18, 2026
Merged

fix(installer): explain failed OpenIB service#7152
ericksoa merged 5 commits into
NVIDIA:mainfrom
senthilr-nv:codex/7151-openibd-remediation

Conversation

@senthilr-nv

@senthilr-nv senthilr-nv commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

Station preparation currently reports only a generic failed-unit error when openibd.service blocks installation. This change preserves the fail-closed gate while explaining that NemoClaw does not require RDMA and giving host owners precise disable-or-repair remediation without changing systemd or networking state.

Related Issue

Fixes #7151

Changes

  • Print bounded default-route and NFS mount checks when openibd.service is an unqualified failed unit.
  • Direct owners who do not use RDMA to disable the unused service, reboot, and rerun; direct RDMA users to repair OpenIB/OFED.
  • Preserve the existing fatal exit and explicitly state that NemoClaw made no systemd or networking changes.
  • Add focused regression coverage proving the OpenIB diagnostic and unchanged generic behavior for unrelated failed units.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: existing Station documentation already states that unqualified failed services require administrator review; the new context-sensitive terminal guidance supplies the exact remediation at the failure point.
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: fail-closed behavior is unchanged, no diagnostic command is executed, and no systemd or networking state is modified; the boundary is recorded in fix(installer): explain failed OpenIB service during Station preparation #7151.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — npx vitest run test/install-station-openibd-remediation.test.ts test/install-station-host-preparation.test.ts (2 files, 57 tests passed)
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Senthil Ravichandran senthilr@nvidia.com

Summary by CodeRabbit

  • Bug Fixes
    • Added OpenIB-specific remediation guidance when DGX Station setup detects failures related to openibd.service, including conditional next steps based on whether RDMA networking is used.
    • Preserved the existing generic failure handling for unrelated failed services.
  • Tests
    • Added a Vitest suite that validates the expected remediation messaging for openibd.service failures and confirms unrelated failures don’t trigger OpenIB-specific guidance.

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
@senthilr-nv senthilr-nv self-assigned this Jul 18, 2026
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 8282099d-1428-4b18-9122-d3bae3125408

📥 Commits

Reviewing files that changed from the base of the PR and between 3c35730 and 151ea64.

📒 Files selected for processing (2)
  • scripts/prepare-dgx-station-host.sh
  • test/install-station-openibd-remediation.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • scripts/prepare-dgx-station-host.sh
  • test/install-station-openibd-remediation.test.ts

📝 Walkthrough

Walkthrough

Station preparation now emits targeted remediation guidance when openibd.service fails while continuing to block preparation. Tests verify the OpenIB-specific output and preserve generic fail-closed handling for unrelated failed units.

Changes

OpenIB remediation

Layer / File(s) Summary
OpenIB failure diagnostics
scripts/prepare-dgx-station-host.sh
Adds RDMA-specific disable-or-repair guidance for failed openibd.service units without changing host state.
Remediation behavior tests
test/install-station-openibd-remediation.test.ts
Runs the script with controlled failed-unit responses and verifies OpenIB-specific and generic failure output paths.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested labels: area: install, bug-fix, platform: dgx-station

Suggested reviewers: apurvvkumaria, ericksoa

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately summarizes the main change to OpenIB failure handling.
Linked Issues check ✅ Passed The changes add openibd-specific fail-closed remediation and tests, matching the issue requirements.
Out of Scope Changes check ✅ Passed The PR stays focused on openibd remediation and regression tests without unrelated changes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
test/install-station-openibd-remediation.test.ts (1)

23-25: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Exercise the supported --apply boundary.

checkFailedUnit() sources the script and calls check_failed_units directly, bypassing the bash "$helper" --apply path used by scripts/install.sh at Lines 3492-3550. Add at least one test that invokes the script through its supported entrypoint so argument handling and orchestration regressions cannot pass unnoticed.

As per path instructions, tests should validate observable behavior through the public boundary rather than lock onto implementation details.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/install-station-openibd-remediation.test.ts` around lines 23 - 25,
Extend the tests around check_failed_units to invoke the script through its
supported entrypoint with --apply, rather than only sourcing SCRIPT_UNDER_TEST
and calling the helper directly. Assert the observable remediation behavior and
retain any direct-helper coverage only where needed, ensuring argument parsing
and orchestration are exercised through the public boundary.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/install-station-openibd-remediation.test.ts`:
- Line 48: Update the assertions for both spawnSync results in the OpenIBD
remediation test to explicitly require result.error to be undefined and
result.status to be non-null before asserting the exit status is nonzero. Apply
this to the assertions near the existing openibd.result.status checks,
preserving the output context in failures.

---

Nitpick comments:
In `@test/install-station-openibd-remediation.test.ts`:
- Around line 23-25: Extend the tests around check_failed_units to invoke the
script through its supported entrypoint with --apply, rather than only sourcing
SCRIPT_UNDER_TEST and calling the helper directly. Assert the observable
remediation behavior and retain any direct-helper coverage only where needed,
ensuring argument parsing and orchestration are exercised through the public
boundary.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 83b6bb34-6fef-481d-9be6-312db11ea636

📥 Commits

Reviewing files that changed from the base of the PR and between 227570f and 4b3cfdd.

📒 Files selected for processing (2)
  • scripts/prepare-dgx-station-host.sh
  • test/install-station-openibd-remediation.test.ts

Comment thread test/install-station-openibd-remediation.test.ts Outdated
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Informational

Advisor assessment: Informational / high confidence
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions
Status: No actionable findings remain in the canonical review ledger.

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized E2E selections match; severity counts match.

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: None

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

senthilr-nv and others added 4 commits July 18, 2026 08:37
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>

@ericksoa ericksoa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at exact head 3dc37d6a48c58bc4826b6d402586d071945626aa against current base fce12723d10fcd9ba91da1e8d57704b542aad9e6 after maintainer review. The change remains fail-closed: it adds bounded remediation guidance for a failed openibd.service, does not disable or ignore services, does not mutate systemd/network/driver state, and preserves the metadata-only --force-station-install boundary. Focused tests passed 57/57 locally; exact-head CI reports 43 successes, 6 intentional skips, and no pending or failing checks; all five commits are GitHub Verified; CodeRabbit and both review-advisor lanes are clear; and no review threads remain unresolved. The local maintainer helper has a confirmed fork-association false negative because GitHub returns pull_requests: [] for these otherwise exact-head runs; lead-admin authorization accepts that tooling exception for this revision.

@ericksoa
ericksoa merged commit d632ae0 into NVIDIA:main Jul 18, 2026
49 checks passed
@senthilr-nv senthilr-nv added bug-fix PR fixes a bug or regression area: install Install, setup, prerequisites, or uninstall flow platform: dgx-station Affects DGX Station hardware or workflows labels Jul 18, 2026
@ericksoa ericksoa mentioned this pull request Jul 18, 2026
21 tasks
ericksoa added a commit that referenced this pull request Jul 18, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical `docs/changelog/2026-07-18.mdx` release-prep entry
with the exact `## v0.0.88` heading.
The entry summarizes every user-visible change on `main` since v0.0.87
and links each release theme to the focused user documentation.

## Changes

- Add one parser-safe dated changelog entry for v0.0.88 covering DGX
Station preparation, inference health, multi-gateway sandbox operations
and recovery, onboarding policy defaults, and rebuild credential reuse.
- Reconcile the changelog against the merged v0.0.88-labeled PRs and the
complete `v0.0.87..origin/main` commit range.
- Source mapping:
- [#7152](#7152) ->
`docs/changelog/2026-07-18.mdx`: Document RDMA-aware OpenIB service
remediation during DGX Station preparation.
- [#7155](#7155) ->
`docs/changelog/2026-07-18.mdx`: Document stopped-container preservation
and fail-closed restart-policy boundaries.
- [#7158](#7158) ->
`docs/changelog/2026-07-18.mdx`: Document bounded packaged CDI refresh
for the exact AI Developer Tools Station profile.
- [#7074](#7074) ->
`docs/changelog/2026-07-18.mdx`: Document authenticated upstream model
probes and precise route-reachability claims.
- [#7007](#7007) ->
`docs/changelog/2026-07-18.mdx`: Document the explicit serving-process
health gap in `status` and `doctor`.
- [#7113](#7113) ->
`docs/changelog/2026-07-18.mdx`: Document owning-gateway selection for
sandbox-scoped status and exec operations.
- [#7092](#7092) ->
`docs/changelog/2026-07-18.mdx`: Document idempotent recovery for
target-owned active port forwards.
- [#7133](#7133) ->
`docs/changelog/2026-07-18.mdx`: Document web-search-aware policy preset
defaults during onboarding.
- [#7129](#7129) ->
`docs/changelog/2026-07-18.mdx`: Document gateway-registered web-search
credential reuse during rebuild preflight.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [x] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates
<!-- Check one tests line and one docs line. Check other lines when
applicable. Add every requested justification or approval reference. -->
- [ ] Tests added or updated for changed behavior
- [x] Existing tests cover changed behavior — justification:
`test/changelog-docs.test.ts` validates the dated changelog contract,
exact release heading, and parser-safe MDX structure.
- [ ] Tests not applicable — justification:
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run check:diff` passed when hooks were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — command/result or justification: `npx
vitest run test/changelog-docs.test.ts` passed 6 tests.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result:
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only) —
completed successfully with 0 errors and 2 existing Fern warnings.
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
— not applicable because native changelog entries use the required
parser-safe MDX SPDX comment without frontmatter.

---
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
  * Added improved DGX Station preparation workflows.
* Enhanced sandbox status and diagnostic reporting for inference health.
  * Improved state selection and recovery across multiple gateways.
  * Added safer onboarding defaults for web search policies.
* Improved rebuild preflight handling for credential reuse and
fail-closed behavior.

* **Documentation**
  * Added release notes for version 0.0.88.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: install Install, setup, prerequisites, or uninstall flow bug-fix PR fixes a bug or regression platform: dgx-station Affects DGX Station hardware or workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(installer): explain failed OpenIB service during Station preparation

3 participants