Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
5601d87
WIP: allow launching multiple racks with omicron-dev
internet-diglett Dec 3, 2025
5a46d99
WIP: integrate mgd changes
internet-diglett Dec 16, 2025
e135d80
make mgd work correctly in omicron-dev (and test ctx)
internet-diglett Dec 17, 2025
1600e1c
update test fixture
internet-diglett Dec 17, 2025
b3dcdf4
WIP: add LLDPD
internet-diglett Dec 23, 2025
bebb200
kinda need this file :P
internet-diglett Dec 23, 2025
e5354b3
fix missing enum variant
internet-diglett Dec 23, 2025
2af1971
fix tests
internet-diglett Dec 23, 2025
3492950
cargo fmt
internet-diglett Dec 23, 2025
c3b3782
ensure lldpd is available for linux testing
internet-diglett Dec 29, 2025
364a20c
fixup! ensure lldpd is available for linux testing
internet-diglett Dec 30, 2025
11932cc
fixup! ensure lldpd is available for linux testing
internet-diglett Dec 30, 2025
adceaab
fixup! ensure lldpd is available for linux testing
internet-diglett Dec 30, 2025
f9e2a92
Use DNS to lookup lldp daemon
internet-diglett Jan 3, 2026
c350612
fix checksum
internet-diglett Jan 3, 2026
e46222d
linux treats 'localhost' differently?
internet-diglett Jan 4, 2026
c49b5c3
move JBOR options to their own subcommands
internet-diglett Jan 7, 2026
02c7146
cargo fmt
internet-diglett Jan 7, 2026
d3d826f
fixup! move JBOR options to their own subcommands
internet-diglett Jan 7, 2026
1638b1f
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett Jan 7, 2026
eaa10cc
fix downloader for macos
internet-diglett Jan 7, 2026
bd796ff
I accidentally orphaned these :D
internet-diglett Jan 9, 2026
abe910e
okay, fix it for real this time
internet-diglett Jan 10, 2026
9f3d55e
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett Feb 26, 2026
81699d6
bump lldp
internet-diglett Feb 26, 2026
149f50e
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett Feb 26, 2026
336adb2
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett Mar 6, 2026
fa84cdc
update maghemite
internet-diglett Mar 9, 2026
c0a4a56
wip: plumb in new mgd flag
internet-diglett Mar 10, 2026
37f7aec
wip: setup loopbacks
internet-diglett Mar 19, 2026
57ae7b6
bump lldp
internet-diglett Mar 31, 2026
b54d64a
feed clippy / fmt
internet-diglett Mar 31, 2026
66887b9
expectorate
internet-diglett Mar 31, 2026
9adb9e4
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett Apr 10, 2026
240372d
bump mgd binary too
internet-diglett Apr 10, 2026
db85656
hakari
internet-diglett Apr 10, 2026
5c321cf
add loopback ip manager to enable peering via localhost
internet-diglett May 18, 2026
2b75f21
WIP: auto-configure bgp peering
internet-diglett May 19, 2026
a6ee5f8
more logging
internet-diglett May 20, 2026
57956b8
clippy and fmt
internet-diglett May 20, 2026
c664492
Merge branch 'main' into omicron-dev-for-multi-rack
internet-diglett May 21, 2026
a96018a
smooth out some sharp edges
internet-diglett May 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ PATH_add out/cockroachdb/bin
PATH_add out/clickhouse
PATH_add out/dendrite-stub/bin
PATH_add out/mgd/root/opt/oxide/mgd/bin
PATH_add out/lldp/root/opt/oxide/bin

if [ "$OMICRON_USE_FLAKE" = 1 ] && nix flake show &> /dev/null
then
Expand Down
31 changes: 31 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,7 @@ ntp-admin-types = { path = "ntp-admin/types" }
ntp-admin-types-versions = { path = "ntp-admin/types/versions" }
mg-admin-client = { git = "https://github.com/oxidecomputer/maghemite", rev = "7696ee48d5ee29a917dea459e281fe2e8ff20513" }
ddm-admin-client = { git = "https://github.com/oxidecomputer/maghemite", rev = "7696ee48d5ee29a917dea459e281fe2e8ff20513" }
loopback-ip-mgr = { git = "https://github.com/oxidecomputer/falcon", rev = "aa44de0ab2edd702322ef60dd9fec1d1e70348ad" }
multimap = "0.10.1"
nexus-auth = { path = "nexus/auth" }
nexus-background-task-interface = { path = "nexus/background-task-interface" }
Expand Down
78 changes: 78 additions & 0 deletions dev-tools/downloader/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ enum Target {

/// Transceiver Control binary
TransceiverControl,

/// LLDP binary
LLDP,
}

#[derive(Parser)]
Expand Down Expand Up @@ -136,6 +139,7 @@ pub async fn run_cmd(args: DownloadArgs) -> Result<()> {
Target::Cockroach => downloader.download_cockroach().await,
Target::Console => downloader.download_console().await,
Target::DendriteStub => downloader.download_dendrite_stub().await,
Target::LLDP => downloader.download_lldp().await,
Target::MaghemiteMgd => downloader.download_maghemite_mgd().await,
Target::Softnpu => downloader.download_softnpu().await,
Target::TransceiverControl => {
Expand Down Expand Up @@ -870,6 +874,80 @@ impl Downloader<'_> {
Ok(())
}

async fn download_lldp(&self) -> std::result::Result<(), anyhow::Error> {
let download_dir = self.output_dir.join("downloads");
tokio::fs::create_dir_all(&download_dir).await?;

let checksums_path = self.versions_dir.join("lldp_checksums");
let [lldp_sha2, lldp_linux_sha2] = get_values_from_file(
["CIDL_SHA256", "LINUX_SHA256"],
&checksums_path,
)
.await?;
let commit_path = self.versions_dir.join("lldp_openapi_version");
let [commit] = get_values_from_file(["COMMIT"], &commit_path).await?;

let repo = "oxidecomputer/lldp";
let base_url = format!("{BUILDOMAT_URL}/{repo}/image/{commit}");

let filename = "lldp.tar.gz";
let tarball_path = download_dir.join(filename);
download_file_and_verify(
&self.log,
&tarball_path,
&format!("{base_url}/{filename}"),
ChecksumAlgorithm::Sha2,
&lldp_sha2,
)
.await?;
unpack_tarball(&self.log, &tarball_path, &download_dir).await?;

let destination_dir = self.output_dir.join("lldp");
let _ = tokio::fs::remove_dir_all(&destination_dir).await;
tokio::fs::create_dir_all(&destination_dir).await?;
copy_dir_all(
&download_dir.join("root"),
&destination_dir.join("root"),
)?;

let binary_dir = destination_dir.join("root/opt/oxide/bin");

match os_name()? {
Os::Linux => {
let filename = "lldpd";
let path = download_dir.join(filename);
download_file_and_verify(
&self.log,
&path,
&format!(
"{BUILDOMAT_URL}/{repo}/linux/{commit}/{filename}"
),
ChecksumAlgorithm::Sha2,
&lldp_linux_sha2,
)
.await?;
set_permissions(&path, 0o755).await?;
tokio::fs::copy(path, binary_dir.join(filename)).await?;
}
Os::Mac => {
info!(self.log, "Building lldp from source for macOS");

let binaries = [("lldpd", &["--no-default-features"][..])];

let built_binaries =
self.build_from_git("lldp", &commit, &binaries).await?;

// Copy built binary to binary_dir
let dest = binary_dir.join("lldp");
tokio::fs::copy(&built_binaries[0], &dest).await?;
set_permissions(&dest, 0o755).await?;
}
Os::Illumos => (),
}

Ok(())
}

async fn download_maghemite_mgd(&self) -> Result<()> {
let download_dir = self.output_dir.join("downloads");
tokio::fs::create_dir_all(&download_dir).await?;
Expand Down
8 changes: 7 additions & 1 deletion dev-tools/omicron-dev/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,22 @@ futures.workspace = true
gateway-client.workspace = true
gateway-test-utils.workspace = true
libc.workspace = true
loopback-ip-mgr.workspace = true
sled-agent-types.workspace = true
mg-admin-client.workspace = true
nexus-config.workspace = true
nexus-test-interface.workspace = true
nexus-test-utils = { workspace = true, features = ["omicron-dev"] }
omicron-test-utils.workspace = true
omicron-nexus.workspace = true
omicron-workspace-hack.workspace = true
oxide-tokio-rt.workspace = true
# See omicron-rpaths for more about the "pq-sys" dependency.
pq-sys = "*"
signal-hook-tokio.workspace = true
slog.workspace=true
slog-term.workspace=true
slog-async.workspace=true
tokio.workspace = true
toml.workspace = true

Expand All @@ -38,7 +45,6 @@ fmd-adm-sys.workspace = true
[dev-dependencies]
expectorate.workspace = true
omicron-dev-lib.workspace = true
omicron-test-utils.workspace = true
oxide-client.workspace = true
subprocess.workspace = true
tokio-postgres.workspace = true
Loading
Loading