oxidecomputer / oxidecomputer/omicron
`address_lot_block_id` in `BgpAnnouncement` set to announce set ID instead of address lot block ID
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
While looking how to expand an IP pool on an Oxide rack I noticed that both the bgp_create_announce_set and bgp_update_announce_set functions set address_lot_block_id to bas.identity.id, which is the announce set's ID instead of the address lot block ID.
The external API expects the user to pass address_lot_block, which confused me since I was looking to do a read, modify, write cycle on an announce set to update it with a new network and leave the existing networks alone.
From what I could tell this address lot block ID is ignored entirely. Is this a bug that should instead be resolving the actual address block ID?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read bgp_create_announce_set and bgp_update_announce_set in nexus/db-queries/src/db/datastore/bgp.rs at the linked lines, then compare their address_lot_block_id handling with the external API parameter in nexus/types/src/external_api/params.rs. Done means both functions retain the actual address lot block ID rather than the announce set ID, with the behavior verified for create and update.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, networking
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100