Skip to content

docs: init template fingerprint hint, friendlier no-device errors (#129) - #131

Open
fastrevmd-lab wants to merge 7 commits into
mainfrom
docs/onboarding-init-nodevice
Open

fastrevmd-lab wants to merge 7 commits into
mainfrom
docs/onboarding-init-nodevice

Conversation

@fastrevmd-lab

@fastrevmd-lab fastrevmd-lab commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Summary

Closes #129 (README portion). The code portion (init
template scaffolding, inventory error message) is covered separately by
#132 — this PR no longer touches init.rs/inventory.rs to avoid
duplicating that change.

  • Documents that netconf init scaffolds desired/example/interfaces.xml
    (rename or replace example/ with your device names).
  • Documents the commented host_key_fingerprint option in the generated
    inventory template, with guidance to source the fingerprint
    out-of-band rather than trusting an unauthenticated ssh-keyscan.
  • Adds a "Trying it without a device" section stating plainly there is
    no bundled demo/offline mode.

Verification

cargo build -p rustnetconf-cli --locked
# clean

fastrevmd-lab and others added 2 commits October 10, 2026 14:10
… without a device

Fixes #129

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…cquisition

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@fastrevmd-lab

Copy link
Copy Markdown
Member Author

Addressed the changes-requested finding: the host-key fingerprint guidance in rustnetconf-cli/src/commands/init.rs and README.md no longer presents ssh-keyscan as the acquisition procedure. It now directs the reader to a trusted out-of-band source and, where the command is kept as a convenience, labels its output as unverified pending out-of-band confirmation.

Verified locally:

cargo fmt --all -- --check   # clean
cargo test -p rustnetconf-cli --locked   # 41 passed; 0 failed

CI on the PR (Test, Clippy, Rustfmt, CodeQL, cargo-audit/deny, gitleaks) was already green before this push.

@fastrevmd-lab

Copy link
Copy Markdown
Member Author

Merged main into this branch to clear the BEHIND merge state (no conflicts; the diff vs main is still README.md only — init.rs/inventory.rs changes from main's #132 merge did not overlap with anything on this branch).

Verified locally: cargo fmt --all -- --check clean. No Rust files changed, so build/test/clippy results are unchanged from main. CI is re-running on the merge commit 36e0e12.

@fastrevmd-lab

Copy link
Copy Markdown
Member Author

Verified the branch at the current head (36e0e12, after the earlier main-merge):

  • Diff vs main is README.md only (25 insertions); the init.rs/inventory.rs changes in the diff come from main's own history via the merge, not new work on this branch.
  • The last reviewer verdict (approved, non-blocking nit: the PR description's first bullet referenced an ssh-keyscan/ssh-keygen command the template no longer includes) — the description here no longer makes that claim; checked and confirmed current.
  • cargo fmt --all -- --check — clean
  • cargo test -p rustnetconf-cli --locked — 45 passed; 0 failed
  • GitHub CI on 36e0e12: Test, Clippy, Rustfmt, YANG codegen, cargo audit, cargo-audit+cargo-deny, gitleaks, readme-version, CodeQL (actions) all pass; CodeQL (rust) was still completing at last check.

No further changes needed.

@fastrevmd-lab

Copy link
Copy Markdown
Member Author

Project Structure now matches netconf init after #132.

97d4fca replaces the sentence that said init creates an empty desired/ the user fills by hand. The README now says init scaffolds desired/example/interfaces.xml as a starter config, and that you rename or replace desired/example/ so the subdirectory matches each device name uncommented in inventory.toml.

That matches rustnetconf-cli init on main (369dc0b, #132), which creates desired/example/interfaces.xml. The branch already contains that main commit. The diff vs main is README.md only.

@fastrevmd-lab

Copy link
Copy Markdown
Member Author

Addressed the latest changes-requested verdict on rustnetconf#131 (MEC-2704).

That verdict asked for the README Project Structure sentence to match netconf init after #132. The sentence is already on this branch (97d4fca): init creates inventory.toml (devices commented out), desired/example/interfaces.xml as a starter config, and .netconf/state/, and you rename or replace desired/example/ so the subdirectory matches each device name uncommented in inventory.toml. That matches rustnetconf-cli/src/commands/init.rs, which creates desired/example/interfaces.xml. The earlier host-key finding stays addressed: the README still says to pin the fingerprint from a trusted out-of-band source and labels ssh-keyscan as unverified.

The branch was one commit behind main (5b0da71, #135). Merged main into docs/onboarding-init-nodevice at 651aa74. Diff vs main is still README.md only (+25). The merge brings the lockfile bump (der 0.8.0 to 0.8.2, wnaf 0.14.0 to 0.14.1).

Checks on 651aa74:

  • cargo fmt --all -- --check — clean
  • cargo test --workspace --all-features --locked with RUSTFLAGS=-D warnings — passed (library 560, integration_vendor_pool 9, integration_vsrx 23, rpc_reply_contract 10, rustnetconf-cli 45, yang 2, codegen 7, doc-tests 22; 0 failed)
  • cargo audit — no advisories
  • cargo deny check bans sources licenses — ok
  • .github/scripts/check-lockfile-prereleases.py on this repo's Cargo.lock and fuzz/Cargo.lock — ok (only allowlisted ssh-key 0.7.0-rc.*)
  • cargo clippy --workspace --all-targets --all-features --locked -- -D warnings — failed locally on rustc 1.99 with pre-existing clippy::double_must_use in src/transport/mod.rs (async_trait). That file is identical to main and is outside this PR's diff. GitHub Clippy on the previous head was green.

Pushed to the existing PR branch. Not merged.
#131

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.

First run: init output, host_key_fingerprint and a no-device path don't match the README

1 participant