Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

smf/mgs-sim/config.toml's ignition targets might be off by one

Open Beginner friendly
#11,374 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
66/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
ci-cd, testing

Research direction

Read smf/mgs-sim/config.toml alongside smf/sp-sim/config.toml, then check the zero-indexed insertion and lookup paths in sp-sim/src/sidecar.rs. Confirm how each configured ignition target maps to a simulated SP and whether the mismatch affects the inventory exercised by .github/buildomat/jobs/deploy.sh. Done means the configuration and simulator mapping agree, with the deploy inventory check still passing.

Written by the indexing model from the issue text.

Description

non-important non-blocker Testing & Analysis

The smf/sp-sim/config.toml config for the SP simulator used in the helios / deploy CI job (and I think nothing else) declares one simulated Sidecar and two simulated Gimlets. The smf/mgs-sim/config.toml that configures MGS to talk to the simulated SPs declares three switch ports with the addresses of those simulated SPs: https://github.com/oxidecomputer/omicron/blob/f079d063197dde3eef042eca49cb3e5b888f0163/smf/mgs-sim/config.toml#L73-L99

However, note that the ignition-targets here are declared as 1, 2, and 3. In the SP simulator, simulated ignition targets are pushed to a zero-indexed vec in the order that they were declared in the config file:
https://github.com/oxidecomputer/omicron/blob/f079d063197dde3eef042eca49cb3e5b888f0163/sp-sim/src/sidecar.rs#L1116-L1123

and are then accessed when ignition targets are requested by looking them up from that Vec (again, zero-indexedly):

https://github.com/oxidecomputer/omicron/blob/f079d063197dde3eef042eca49cb3e5b888f0163/sp-sim/src/sidecar.rs#L1150-L1163

This means that if helios / deploy's control plane tries to use ignition, it may end up getting the wrong ignition target, or getting an InvalidPort error when it doesn't expect one, depending on which ignition target it requests.

Luckily, it appears that this 🌈DOESN'T ACTUALLY MATTER AT ALL✨.
The only thing that helios / deploy currently does that exercises ignition is inventory collection, and the only thing the CI job currently does with inventory collection is "assert that there is at least one inventory collection":

https://github.com/oxidecomputer/omicron/blob/f079d063197dde3eef042eca49cb3e5b888f0163/.github/buildomat/jobs/deploy.sh#L435-L449

The fact that some simulated SPs are not going to be inventoried correctly appears to basically not matter because the test doesn't actually care whether they're all inventoried or not. So that's funny. But I guess if we're going to make this test actually care about the contents of its inventory, we should maybe fix that.

Dominant language
Rust
Stars
610
Forks
104
Avg merge
2d 18h
Merged PRs (30d)
96

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from oxidecomputer/omicron

All issues in oxidecomputer/omicron

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.