Skip to content

Commit 17ceb72

Browse files
authored
[1/n] [sled-agent] split early networking into its own crate (#10448)
Working on extending the ls-apis analysis to treat RSS separately from Sled Agent (#10318 (comment)), we realized that certain assumptions that hold for RSS (namely that the rack has a consistent version) are not upheld for early networking. Split early networking into its own crate, and make the main omicron-sled-agent crate depend on it. (Due to #10370, RSS no longer depends on the new early networking crate.) This means that after the work to treat RSS separately, any clients depended on by the new sled-agent-early-networking crate are attributed only to Sled Agent.
1 parent 8ca64d8 commit 17ceb72

11 files changed

Lines changed: 68 additions & 28 deletions

File tree

Cargo.lock

Lines changed: 25 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ members = [
148148
"sled-agent/bootstrap-agent-lockstep-api",
149149
"sled-agent/bootstrap-agent-lockstep-types",
150150
"sled-agent/config-reconciler",
151+
"sled-agent/early-networking",
151152
"sled-agent/health-monitor",
152153
"sled-agent/measurements",
153154
"sled-agent/rack-setup",
@@ -335,6 +336,7 @@ default-members = [
335336
"sled-agent/bootstrap-agent-lockstep-api",
336337
"sled-agent/bootstrap-agent-lockstep-types",
337338
"sled-agent/config-reconciler",
339+
"sled-agent/early-networking",
338340
"sled-agent/health-monitor",
339341
"sled-agent/measurements",
340342
"sled-agent/rack-setup",
@@ -792,6 +794,7 @@ sled = "=0.34.7"
792794
sled-agent-api = { path = "sled-agent/api" }
793795
sled-agent-client = { path = "clients/sled-agent-client" }
794796
sled-agent-config-reconciler = { path = "sled-agent/config-reconciler" }
797+
sled-agent-early-networking = { path = "sled-agent/early-networking" }
795798
sled-agent-health-monitor = { path = "sled-agent/health-monitor" }
796799
sled-agent-measurements = { path = "sled-agent/measurements" }
797800
sled-agent-rack-setup = { path = "sled-agent/rack-setup" }

dev-tools/ls-apis/tests/api_dependencies.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ NTP Admin (client: ntp-admin-client)
8080
consumed by: omicron-sled-agent (omicron/sled-agent) via 1 path
8181

8282
NTP Admin version 1 (client: ntp-admin-v1-client)
83-
consumed by: omicron-sled-agent (omicron/sled-agent) via 2 paths
83+
consumed by: omicron-sled-agent (omicron/sled-agent) via 1 path
8484

8585
External API (client: oxide-client)
8686

sled-agent/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ nexus-config.workspace = true
6161
nexus-lockstep-client.workspace = true
6262
nexus-types.workspace = true
6363
nix = { workspace = true, features = ["signal"] }
64-
ntp-admin-v1-client.workspace = true
6564
omicron-common.workspace = true
6665
omicron-ledger.workspace = true
6766
omicron-ddm-admin-client.workspace = true
@@ -90,6 +89,7 @@ signal-hook.workspace = true
9089
sled-agent-api.workspace = true
9190
sled-agent-client.workspace = true
9291
sled-agent-config-reconciler.workspace = true
92+
sled-agent-early-networking.workspace = true
9393
sled-agent-health-monitor.workspace = true
9494
sled-agent-measurements.workspace = true
9595
sled-agent-rack-setup.workspace = true
@@ -109,7 +109,6 @@ slog-error-chain.workspace = true
109109
slog-term.workspace = true
110110
smf.workspace = true
111111
sprockets-tls.workspace = true
112-
static_assertions.workspace = true
113112
strum.workspace = true
114113
tar.workspace = true
115114
thiserror.workspace = true
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
[package]
2+
name = "sled-agent-early-networking"
3+
version = "0.1.0"
4+
edition.workspace = true
5+
license = "MPL-2.0"
6+
7+
[lints]
8+
workspace = true
9+
10+
[dependencies]
11+
anyhow.workspace = true
12+
# XXX NOTE this is due to https://github.com/oxidecomputer/omicron/issues/9704
13+
# This is the R17 dpd client
14+
# dpd-client.workspace = true
15+
dpd-client = { git = "https://github.com/oxidecomputer/dendrite", rev = "cc8e02a0800034c431c8cf96b889ea638da3d194" }
16+
futures.workspace = true
17+
gateway-client.workspace = true
18+
http.workspace = true
19+
internal-dns-resolver.workspace = true
20+
internal-dns-types.workspace = true
21+
mg-admin-client.workspace = true
22+
omicron-common.workspace = true
23+
omicron-ddm-admin-client.workspace = true
24+
omicron-workspace-hack.workspace = true
25+
oxnet.workspace = true
26+
rdb-types.workspace = true
27+
sled-agent-types.workspace = true
28+
slog.workspace = true
29+
slog-error-chain.workspace = true
30+
thiserror.workspace = true
31+
tokio = { workspace = true, features = ["full"] }

sled-agent/rack-setup/src/early_networking.rs renamed to sled-agent/early-networking/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ use sled_agent_types::early_networking::{
4545
use sled_agent_types::sled::ThisSledSwitchZoneUnderlayIpAddr;
4646
use sled_agent_types::system_networking::SystemNetworkingConfig;
4747
use slog::Logger;
48+
use slog::error;
49+
use slog::info;
50+
use slog::o;
51+
use slog::warn;
4852
use slog_error_chain::InlineErrorChain;
4953
use std::collections::{HashMap, HashSet};
5054
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};

sled-agent/rack-setup/Cargo.toml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,13 @@ cancel-safe-futures.workspace = true
1616
chrono.workspace = true
1717
cockroach-admin-client.workspace = true
1818
dns-service-client.workspace = true
19-
# XXX NOTE this is due to https://github.com/oxidecomputer/omicron/issues/9704
20-
# This is the R17 dpd client
21-
# dpd-client.workspace = true
22-
dpd-client = { git = "https://github.com/oxidecomputer/dendrite", rev = "cc8e02a0800034c431c8cf96b889ea638da3d194" }
2319
futures.workspace = true
24-
gateway-client.workspace = true
2520
http.workspace = true
2621
iddqd.workspace = true
2722
illumos-utils.workspace = true
2823
internal-dns-resolver.workspace = true
2924
internal-dns-types.workspace = true
3025
itertools.workspace = true
31-
mg-admin-client.workspace = true
3226
nexus-lockstep-client.workspace = true
3327
nexus-types.workspace = true
3428
ntp-admin-client.workspace = true
@@ -38,8 +32,7 @@ omicron-ledger.workspace = true
3832
omicron-uuid-kinds.workspace = true
3933
omicron-workspace-hack.workspace = true
4034
oxnet.workspace = true
41-
rand = { workspace = true, features = ["os_rng"] }
42-
rdb-types.workspace = true
35+
rand.workspace = true
4336
reqwest = { workspace = true, features = ["rustls", "stream"] }
4437
schemars = { workspace = true, features = ["chrono", "uuid1"] }
4538
serde.workspace = true

sled-agent/rack-setup/src/lib.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,9 @@
77
#[macro_use]
88
extern crate slog;
99

10-
mod early_networking;
1110
mod plan;
1211
mod service;
1312

14-
pub use early_networking::EarlyNetworkSetup;
15-
pub use early_networking::EarlyNetworkSetupError;
1613
pub use plan::service::PlannedSledDescription;
1714
pub use plan::service::ServicePlan;
1815
pub use plan::service::SledConfig;

sled-agent/rack-setup/src/service.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
//! after a clean slate upon failure.
6868
//! See <https://github.com/oxidecomputer/omicron/issues/7174> for details.
6969
70-
use crate::early_networking::EarlyNetworkSetupError;
7170
use crate::plan::service::PlanError as ServicePlanError;
7271
use crate::plan::service::ServicePlan;
7372
use crate::plan::sled::SledPlan;
@@ -265,11 +264,6 @@ pub enum SetupServiceError {
265264
#[error("Failed to construct valid set of service zone NAT entries")]
266265
InvalidServiceZoneNatEntries(#[from] ServiceZoneNatEntriesError),
267266

268-
// We used transparent, because `EarlyNetworkSetupError` contains a subset
269-
// of error variants already in this type
270-
#[error(transparent)]
271-
EarlyNetworkSetup(#[from] EarlyNetworkSetupError),
272-
273267
#[error("Rack already initialized")]
274268
RackAlreadyInitialized,
275269

sled-agent/src/services.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ use omicron_common::backoff::{
8484
use omicron_common::disk::{DatasetKind, DatasetName};
8585
use omicron_ddm_admin_client::DdmError;
8686
use omicron_uuid_kinds::OmicronZoneUuid;
87-
use sled_agent_rack_setup::{EarlyNetworkSetup, EarlyNetworkSetupError};
87+
use sled_agent_early_networking::{EarlyNetworkSetup, EarlyNetworkSetupError};
8888
use sled_agent_resolvable_files::{
8989
ZoneImageSourceResolver, ramdisk_file_source,
9090
};

0 commit comments

Comments
 (0)