oxidecomputer / oxidecomputer/omicron

`address_lot_block_id` in `BgpAnnouncement` set to announce set ID instead of address lot block ID

Open
#9,642 0 comments 0 reactions 0 assignees View on GitHub

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.

https://github.com/oxidecomputer/omicron/blob/b234cfc226a78b8f1ad04edfa27c2c60bb890f3e/nexus/db-queries/src/db/datastore/bgp.rs#L646-L650

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.

https://github.com/oxidecomputer/omicron/blob/b234cfc226a78b8f1ad04edfa27c2c60bb890f3e/nexus/types/src/external_api/params.rs#L2645-L2653

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

Open the contributing guide

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.

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.