-
Notifications
You must be signed in to change notification settings - Fork 69
ipv6 e2e integration #9570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
ipv6 e2e integration #9570
Changes from 70 commits
Commits
Show all changes
80 commits
Select commit
Hold shift + click to select a range
1bd54d4
ipv6 all the things
rcgoodfellow 409e7b4
pull in bgp work
rcgoodfellow a4fb72c
bgp unnumbered plumbing
rcgoodfellow 78c2f6a
bump maghemite
rcgoodfellow 27b97ae
bump dendrite
rcgoodfellow 390c231
bump softnpu
rcgoodfellow 5a1a1a4
more bumps
rcgoodfellow 7e04eff
comment out v6 unicast for the moment .....
rcgoodfellow 25a161d
first swing at bootstrap agent lockstep api
rcgoodfellow 34955d2
various fixes
rcgoodfellow 8f19176
remove rack-init APIs from client-side versioned bootstrap agent api
rcgoodfellow 745d1b7
bring rack network config into current versioning scheme
rcgoodfellow 4d42838
the great type migration continues
rcgoodfellow 6225e55
remove long dead compat types
rcgoodfellow 62b248c
the final type shuffle?
rcgoodfellow c6bbb34
turn an ipv4addr into an ipaddr
rcgoodfellow 44d7f58
update bootstore early networking serialization tests
rcgoodfellow 83dd4f0
feed clippy
rcgoodfellow 579524b
bump maghemite
internet-diglett 7e66df8
Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett 07ae84b
fixup! Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett 2699f9b
bump mgd, fix openapi specs (broke them while merging main)
internet-diglett 51bf1c3
fixup! bump mgd, fix openapi specs (broke them while merging main)
internet-diglett ee35acf
Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett d9688c2
generate openapi
internet-diglett 12bcf0d
oops I did it again
internet-diglett 85ac5c7
bump mgd
internet-diglett 6d8380d
Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett 281c3f4
fix api versioning
internet-diglett 414b1f5
sync v6 v2p mappings
rcgoodfellow 18caec5
ipv6 e2e integration tweaks (1/?): remove type/impl duplication (#9786)
jgallagher ee0435d
ipv6 e2e integration tweaks (2/?): avoid duplicated types in bootstra…
jgallagher b2b3477
ipv6 e2e integration tweaks (3/3): add `rack_init::impl` module (#9788)
jgallagher c27c91d
align UnnumberedBgpPeerConfig.interface name with switch zone interfa…
internet-diglett 142e73a
WIP: enable link-local uplinks, enable v6 on v4-only fields
internet-diglett c2b5baf
plumb through ipv6 / unnumbered types
internet-diglett 75cadb9
bump maghemite/dendrite
rcgoodfellow d4fa712
Merge remote-tracking branch 'origin/main' into ry/ipv6-all-the-things
jgallagher a1f38e6
add ipv6 link-local logic to uplink preflight check
internet-diglett a6e7902
fix openapi check failure
jgallagher fc626a9
allow ipv6 infra ips in wicket
internet-diglett 7644966
ipv6 e2e tweaks from PR review (#9807)
jgallagher f32811c
allow unnumbered peers in wicket
internet-diglett 00f17a0
fix ordering of new id column to be consistent with migrations
jgallagher 7944c59
regnerate wicketd openapi
jgallagher bfdd3c6
ipv6 e2e tweak: use existing constants instead of integer literals fo…
jgallagher ca9360a
Merge branch 'main' into ry/ipv6-all-the-things
jgallagher e0e7fc8
pull in dendrite#216
internet-diglett 20df046
WIP: add max_paths to BGP configuration
internet-diglett c47d065
fix unnumbered ifx names, no lot reserve for ll, bump dendrite/magehmite
rcgoodfellow 2397044
bump maghemite
rcgoodfellow e387c9a
fix openapi error
internet-diglett e172b46
bump maghemite
rcgoodfellow 53409b2
Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett d0d2348
refresh openapi
internet-diglett b211fc9
don't perform range check for unspecified addresses
internet-diglett 01e9a05
dont sync unspec addrs to asic, dont reconcile link locals
rcgoodfellow 7e964c7
plumb router lifetime parameter
rcgoodfellow 7734c1d
bump maghemite
rcgoodfellow 8602165
fix bgp parameter plumbing
rcgoodfellow a1540d4
maghemite -> main, unnumbered communities, unnumbered status
rcgoodfellow 8553288
add peer id to bgp peer status
rcgoodfellow 2a5ffb0
clippy
rcgoodfellow db61b45
update bgp imported / exported to support ipv6
internet-diglett a43414c
max_paths should be greater than zero
internet-diglett 2f71173
use RouterLifetimeConfig in more places instead of u16
internet-diglett fb531a9
don't filter ipv6 from mgadm bgp imported / exported requests
internet-diglett 1bbcfbb
ipv6 e2e integration tweaks: stricter bounds validation (#9844)
jgallagher 165d363
bump maghemite
internet-diglett c39d68b
provide switch location with exported prefixes
internet-diglett d97bf9a
Merge remote-tracking branch 'origin/main' into ry/ipv6-all-the-things
jgallagher cbd3a63
bump maghemite, review feedback
rcgoodfellow 93248d3
fix openapi
internet-diglett f689bb6
pull in maghemite 639
rcgoodfellow 4d35436
support v6 infra ip addresses for bootstore sync
internet-diglett acd95fb
render IpAddr::UNSPECIFIED as 'link-local'
internet-diglett 8a54196
allow v6 static routing in early networking
internet-diglett 72e1f85
check for unspecified addr in Option<IpX> fields
internet-diglett d50f4d4
Merge branch 'main' into ry/ipv6-all-the-things
internet-diglett 9913c6a
regenerate openapi
internet-diglett File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| [package] | ||
| name = "bootstrap-agent-lockstep-client" | ||
| version = "0.1.0" | ||
| edition.workspace = true | ||
| license = "MPL-2.0" | ||
|
|
||
| [lints] | ||
| workspace = true | ||
|
|
||
| [dependencies] | ||
| omicron-common.workspace = true | ||
| omicron-uuid-kinds.workspace = true | ||
| omicron-workspace-hack.workspace = true | ||
| oxnet.workspace = true | ||
| progenitor.workspace = true | ||
| regress.workspace = true | ||
| reqwest.workspace = true | ||
| schemars.workspace = true | ||
| serde.workspace = true | ||
| serde_json.workspace = true | ||
| sled-hardware-types.workspace = true | ||
| slog.workspace = true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| // This Source Code Form is subject to the terms of the Mozilla Public | ||
| // License, v. 2.0. If a copy of the MPL was not distributed with this | ||
| // file, You can obtain one at https://mozilla.org/MPL/2.0/. | ||
|
|
||
| //! Interface for making API requests to the Bootstrap Agent Lockstep API | ||
|
|
||
| progenitor::generate_api!( | ||
| spec = "../../openapi/bootstrap-agent-lockstep.json", | ||
| interface = Positional, | ||
| inner_type = slog::Logger, | ||
| pre_hook = (|log: &slog::Logger, request: &reqwest::Request| { | ||
| slog::debug!(log, "client request"; | ||
| "method" => %request.method(), | ||
| "uri" => %request.url(), | ||
| "body" => ?&request.body(), | ||
| ); | ||
| }), | ||
| post_hook = (|log: &slog::Logger, result: &Result<_, _>| { | ||
| slog::debug!(log, "client response"; "result" => ?result); | ||
| }), | ||
| derives = [schemars::JsonSchema], | ||
| crates = { | ||
| "omicron-uuid-kinds" = "*", | ||
| "oxnet" = "0.1.0", | ||
| }, | ||
| replace = { | ||
| AllowedSourceIps = omicron_common::api::external::AllowedSourceIps, | ||
| Baseboard = sled_hardware_types::Baseboard, | ||
| ImportExportPolicy = omicron_common::api::external::ImportExportPolicy, | ||
| }, | ||
| ); | ||
|
|
||
| impl omicron_common::api::external::ClientError for types::Error { | ||
| fn message(&self) -> String { | ||
| self.message.clone() | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this right? I was under the impression we needed to stay on bootstrap-agent 1.0.0 this release so that we could upgrade through this change from R17.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please double-check, but we think this is okay:
bootstrap-agent-lockstep, because those calls were only ever made by lockstep clients (during RSS).common/src/api/internal/shared/*/v2.rs, only made wire-compatible changes, allowing us to still deserialize the old bootstore. The kinds of changes made are:#[serde(default)](e.g.,BgpPeerConfig::router_lifetime) - still deserializes thanks to the default tagUplinkAddressConfig::address) - still deserializes and will show up asSome(_)RackNetworkConfig::infra_ip_{first,last}) - still deserializes because we can parse an IPv4 string as a generic IpAddrThis is obviously all very manual and error prone, hence filing #9801, which we basically must do before any more changes need to happen to these types.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I thought the issue was is that older bootstrap agent server will 404 any responses from clients that are generated from the 2.0.0 spec, because the server isn't aware of that version yet.
But if that's okay, then that all seems fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
... I completely forgot about this. I think we only tested bootstore compatibility via mupdate, which wouldn't run into problems here. 🤦
That said, I think we're okay, but please double check this too! The only endpoints left in the bootstrap API are
baseboard_get()andcomponents_get(). I don't think there are any callers ofcomponents_get(). There's one caller ofbaseboard_get(): other sled-agent instances to service a "sled add". This would fail mid-online-update, but it's probably okay to note that adding a sled during an update from R17 to R18 needs to wait until after all the OS updates are done?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that makes sense, but I will admit to not having double-checked it. I suppose if there is a show-stopper we will catch it in upgrade testing (we should definitely make sure we perform online upgrade of a racklette from 17.1 to 18).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verified online-update from 17.2 to 18 on a racklet and it worked just fine for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correction: Upgrade to this commit turned out to cause bgp config to be lost (which manifests itself during a cold boot or in the next update). The fix is in #9863.