From cee78bc7b440e921308583d9776268a6dd4c0d6d Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 20 Jun 2024 12:36:40 -0700 Subject: [PATCH 01/42] Start requiring zone filesystem argument --- sled-agent/src/params.rs | 14 +++++++ sled-agent/src/rack_setup/plan/service.rs | 41 ++++++++++++++++--- sled-agent/src/services.rs | 48 +++++++++++------------ sled-agent/src/sim/server.rs | 19 ++++++++- 4 files changed, 88 insertions(+), 34 deletions(-) diff --git a/sled-agent/src/params.rs b/sled-agent/src/params.rs index 9575e08c17..730efccdf6 100644 --- a/sled-agent/src/params.rs +++ b/sled-agent/src/params.rs @@ -125,6 +125,9 @@ pub struct InstanceEnsureBody { /// Metadata used to track instance statistics. pub metadata: InstanceMetadata, + + /// The zpool which will hold this propolis zone's filesystem + pub filesystem_pool: ZpoolName, } /// The body of a request to move a previously-ensured instance into a specific @@ -341,6 +344,13 @@ impl From for sled_agent_client::types::OmicronZonesConfig { pub struct OmicronZoneConfig { pub id: Uuid, pub underlay_address: Ipv6Addr, + + /// The pool on which we'll place this zone's filesystem. + /// + /// Note that this is transient -- the sled agent is permitted to + /// destroy the zone's dataset on this pool each time the zone is + /// initialized. + pub filesystem_pool: ZpoolName, pub zone_type: OmicronZoneType, } @@ -349,6 +359,10 @@ impl From for sled_agent_client::types::OmicronZoneConfig { Self { id: local.id, underlay_address: local.underlay_address, +// filesystem_pool: sled_agent_client::ZpoolName::try_from( +// local.filesystem_pool.to_string(), +// ) +// .expect("Failed to convert pool name to progenitor type"), zone_type: local.zone_type.into(), } } diff --git a/sled-agent/src/rack_setup/plan/service.rs b/sled-agent/src/rack_setup/plan/service.rs index 8499a0000c..7446b1dc02 100644 --- a/sled-agent/src/rack_setup/plan/service.rs +++ b/sled-agent/src/rack_setup/plan/service.rs @@ -31,6 +31,7 @@ use omicron_common::backoff::{ }; use omicron_common::ledger::{self, Ledger, Ledgerable}; use omicron_uuid_kinds::{GenericUuid, OmicronZoneUuid, SledUuid, ZpoolUuid}; +use rand::prelude::SliceRandom; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use sled_agent_client::{ @@ -404,7 +405,8 @@ impl Plan { ) .unwrap(); let dataset_name = - sled.alloc_from_u2_zpool(DatasetKind::InternalDns)?; + sled.alloc_dataset_from_u2s(DatasetKind::InternalDns)?; + let filesystem_pool = dataset_name.pool().clone(); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere @@ -419,6 +421,7 @@ impl Plan { gz_address: dns_subnet.gz_address(), gz_address_index: i.try_into().expect("Giant indices?"), }, + filesystem_pool, }); } @@ -442,7 +445,8 @@ impl Plan { ) .unwrap(); let dataset_name = - sled.alloc_from_u2_zpool(DatasetKind::CockroachDb)?; + sled.alloc_dataset_from_u2s(DatasetKind::CockroachDb)?; + let filesystem_pool = dataset_name.pool().clone(); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -453,6 +457,7 @@ impl Plan { }, address, }, + filesystem_pool, }); } @@ -485,7 +490,8 @@ impl Plan { let dns_port = omicron_common::address::DNS_PORT; let dns_address = SocketAddr::new(external_ip, dns_port); let dataset_kind = DatasetKind::ExternalDns; - let dataset_name = sled.alloc_from_u2_zpool(dataset_kind)?; + let dataset_name = sled.alloc_dataset_from_u2s(dataset_kind)?; + let filesystem_pool = dataset_name.pool().clone(); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere @@ -499,6 +505,7 @@ impl Plan { dns_address, nic, }, + filesystem_pool, }); } @@ -520,6 +527,7 @@ impl Plan { ) .unwrap(); let (nic, external_ip) = svc_port_builder.next_nexus(id)?; + let filesystem_pool = sled.alloc_zpool_from_u2s()?; sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -542,6 +550,7 @@ impl Plan { external_tls: !config.external_certificates.is_empty(), external_dns_servers: config.dns_servers.clone(), }, + filesystem_pool, }); } @@ -563,6 +572,7 @@ impl Plan { omicron_common::address::OXIMETER_PORT, ) .unwrap(); + let filesystem_pool = sled.alloc_zpool_from_u2s()?; sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -575,6 +585,7 @@ impl Plan { 0, ), }, + filesystem_pool, }) } @@ -599,7 +610,8 @@ impl Plan { ) .unwrap(); let dataset_name = - sled.alloc_from_u2_zpool(DatasetKind::Clickhouse)?; + sled.alloc_dataset_from_u2s(DatasetKind::Clickhouse)?; + let filesystem_pool = dataset_name.pool().clone(); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -610,6 +622,7 @@ impl Plan { pool_name: dataset_name.pool().clone(), }, }, + filesystem_pool, }); } @@ -636,7 +649,8 @@ impl Plan { ) .unwrap(); let dataset_name = - sled.alloc_from_u2_zpool(DatasetKind::ClickhouseKeeper)?; + sled.alloc_dataset_from_u2s(DatasetKind::ClickhouseKeeper)?; + let filesystem_pool = dataset_name.pool().clone(); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -647,6 +661,7 @@ impl Plan { pool_name: dataset_name.pool().clone(), }, }, + filesystem_pool, }); } @@ -661,6 +676,7 @@ impl Plan { let address = sled.addr_alloc.next().expect("Not enough addrs"); let port = omicron_common::address::CRUCIBLE_PANTRY_PORT; let id = OmicronZoneUuid::new_v4(); + let filesystem_pool = sled.alloc_zpool_from_u2s()?; dns_builder .host_zone_with_one_backend( id, @@ -676,6 +692,7 @@ impl Plan { zone_type: OmicronZoneType::CruciblePantry { address: SocketAddrV6::new(address, port, 0, 0), }, + filesystem_pool, }); } @@ -704,6 +721,7 @@ impl Plan { address, dataset: OmicronZoneDataset { pool_name: pool.clone() }, }, + filesystem_pool: pool.clone(), }); } } @@ -716,6 +734,7 @@ impl Plan { let id = OmicronZoneUuid::new_v4(); let address = sled.addr_alloc.next().expect("Not enough addrs"); let ntp_address = SocketAddrV6::new(address, NTP_PORT, 0, 0); + let filesystem_pool = sled.alloc_zpool_from_u2s()?; let (zone_type, svcname) = if idx < BOUNDARY_NTP_COUNT { boundary_ntp_servers @@ -753,6 +772,7 @@ impl Plan { id: id.into_untyped_uuid(), underlay_address: address, zone_type, + filesystem_pool, }); } @@ -878,9 +898,18 @@ impl SledInfo { } } + fn alloc_zpool_from_u2s( + &self, + ) -> Result { + self.u2_zpools + .choose(&mut rand::thread_rng()) + .map(|z| z.clone()) + .ok_or_else(|| PlanError::NotEnoughSleds) + } + /// Allocates a dataset of the specified type from one of the U.2 pools on /// this Sled - fn alloc_from_u2_zpool( + fn alloc_dataset_from_u2s( &mut self, kind: DatasetKind, ) -> Result { diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index 70d68f6a8e..9f35073211 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -88,7 +88,6 @@ use omicron_common::backoff::{ use omicron_common::ledger::{self, Ledger, Ledgerable}; use omicron_ddm_admin_client::{Client as DdmAdminClient, DdmError}; use once_cell::sync::OnceCell; -use rand::prelude::SliceRandom; use sled_hardware::is_gimlet; use sled_hardware::underlay; use sled_hardware::SledMode; @@ -2188,6 +2187,7 @@ impl ServiceManager { }, underlay_address, id, + .. }, .. }) => { @@ -3381,13 +3381,13 @@ impl ServiceManager { ) -> Result { let name = zone.zone_name(); - // For each new zone request, we pick a U.2 to store the zone - // filesystem. Note: This isn't known to Nexus right now, so it's a - // local-to-sled decision. + // If the caller has requested a specific durable dataset, + // ensure that it is encrypted and that it exists. // - // Currently, the zone filesystem should be destroyed between - // reboots, so it's fine to make this decision locally. - let root = if let Some(dataset) = zone.dataset_name() { + // Typically, the transient filesystem pool will be placed on the same + // zpool as the durable dataset (to reduce the fault domain), but that + // decision belongs to Nexus, and is not enforced here. + if let Some(dataset) = zone.dataset_name() { // Check that the dataset is actually ready to be used. let [zoned, canmount, encryption] = illumos_utils::zfs::Zfs::get_values( @@ -3417,11 +3417,6 @@ impl ServiceManager { check_property("encryption", encryption, "aes-256-gcm")?; } - // If the zone happens to already manage a dataset, then - // we co-locate the zone dataset on the same zpool. - // - // This slightly reduces the underlying fault domain for the - // service. let data_pool = dataset.pool(); if !all_u2_pools.contains(&data_pool) { warn!( @@ -3434,20 +3429,21 @@ impl ServiceManager { device: format!("zpool: {data_pool}"), }); } - data_pool.dataset_mountpoint(&mount_config.root, ZONE_DATASET) - } else { - // If the zone it not coupled to other datsets, we pick one - // arbitrarily. - let mut rng = rand::thread_rng(); - all_u2_pools - .choose(&mut rng) - .map(|pool| { - pool.dataset_mountpoint(&mount_config.root, ZONE_DATASET) - }) - .ok_or_else(|| Error::U2NotFound)? - .clone() - }; - Ok(root) + } + + let filesystem_pool = &zone.filesystem_pool; + if !all_u2_pools.contains(&filesystem_pool) { + warn!( + self.inner.log, + "zone filesystem dataset requested on a zpool which doesn't exist"; + "zone" => &name, + "zpool" => %filesystem_pool + ); + return Err(Error::MissingDevice { + device: format!("zpool: {filesystem_pool}"), + }); + } + Ok(filesystem_pool.dataset_mountpoint(&mount_config.root, ZONE_DATASET)) } pub async fn cockroachdb_initialize(&self) -> Result<(), Error> { diff --git a/sled-agent/src/sim/server.rs b/sled-agent/src/sim/server.rs index 7ce34473e7..dac1cac19b 100644 --- a/sled-agent/src/sim/server.rs +++ b/sled-agent/src/sim/server.rs @@ -356,18 +356,27 @@ pub async fn run_standalone_server( let internal_dns_version = Generation::try_from(dns_config.generation) .expect("invalid internal dns version"); + let all_u2_zpools = server.sled_agent.get_zpools().await; + let get_random_zpool = || { + use rand::seq::SliceRandom; + let pool = all_u2_zpools.choose(&mut rand::thread_rng()) + .expect("No external zpools found, but we need one"); + ZpoolName::new_external(ZpoolUuid::from_untyped_uuid(pool.id)) + }; + // Record the internal DNS server as though RSS had provisioned it so // that Nexus knows about it. let http_bound = match dns.dropshot_server.local_addr() { SocketAddr::V4(_) => panic!("did not expect v4 address"), SocketAddr::V6(a) => a, }; + let pool_name = ZpoolName::new_external(ZpoolUuid::new_v4()); let mut zones = vec![OmicronZoneConfig { id: Uuid::new_v4(), underlay_address: *http_bound.ip(), zone_type: OmicronZoneType::InternalDns { dataset: OmicronZoneDataset { - pool_name: ZpoolName::new_external(ZpoolUuid::new_v4()), + pool_name: pool_name.clone(), }, http_address: http_bound, dns_address: match dns.dns_server.local_address() { @@ -377,6 +386,8 @@ pub async fn run_standalone_server( gz_address: Ipv6Addr::LOCALHOST, gz_address_index: 0, }, + // Co-locate the filesystem pool with the dataset + filesystem_pool: pool_name, }]; let mut internal_services_ip_pool_ranges = vec![]; @@ -414,6 +425,7 @@ pub async fn run_standalone_server( external_tls: false, external_dns_servers: vec![], }, + filesystem_pool: get_random_zpool(), }); internal_services_ip_pool_ranges.push(match ip { @@ -431,12 +443,13 @@ pub async fn run_standalone_server( { let ip = *external_dns_internal_addr.ip(); let id = Uuid::new_v4(); + let pool_name = ZpoolName::new_external(ZpoolUuid::new_v4()); zones.push(OmicronZoneConfig { id, underlay_address: ip, zone_type: OmicronZoneType::ExternalDns { dataset: OmicronZoneDataset { - pool_name: ZpoolName::new_external(ZpoolUuid::new_v4()), + pool_name: pool_name.clone(), }, http_address: external_dns_internal_addr, dns_address: SocketAddr::V6(external_dns_internal_addr), @@ -455,6 +468,8 @@ pub async fn run_standalone_server( slot: 0, }, }, + // Co-locate the filesystem pool with the dataset + filesystem_pool: pool_name, }); internal_services_ip_pool_ranges From 3be4b6e38bf3ec2ba843e5fe5b1a0a0bd0298b7b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 20 Jun 2024 12:41:14 -0700 Subject: [PATCH 02/42] Deprecate the old service format --- .../src/bin/services-ledger-check-migrate.rs | 80 --- sled-agent/src/lib.rs | 1 - sled-agent/src/services.rs | 245 +------ sled-agent/src/services_migration.rs | 623 ------------------ 4 files changed, 2 insertions(+), 947 deletions(-) delete mode 100644 sled-agent/src/bin/services-ledger-check-migrate.rs delete mode 100644 sled-agent/src/services_migration.rs diff --git a/sled-agent/src/bin/services-ledger-check-migrate.rs b/sled-agent/src/bin/services-ledger-check-migrate.rs deleted file mode 100644 index 456fdc74b7..0000000000 --- a/sled-agent/src/bin/services-ledger-check-migrate.rs +++ /dev/null @@ -1,80 +0,0 @@ -// 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/. - -//! Test-migrates one or more old-format services ledger files to new-format -//! Omicron zones ledgers - -use anyhow::Context; -use camino::Utf8PathBuf; -use clap::Args; -use clap::Parser; -use omicron_common::cmd::fatal; -use omicron_common::cmd::CmdError; -use omicron_sled_agent::services::OmicronZonesConfigLocal; -use omicron_sled_agent::services_migration::AllZoneRequests; - -#[tokio::main] -async fn main() { - if let Err(message) = do_run().await { - fatal(CmdError::Failure(message)); - } -} - -#[derive(Debug, Parser)] -#[clap(about = "Test conversion of old-format services ledgers to new-format \ - zones ledgers")] -enum Converter { - /// checks whether one or more ledger file(s) can be converted successfully - Check(CheckArgs), - - /// for a given ledger file, prints the converted form - Show(ShowArgs), -} - -#[derive(Debug, Args)] -struct CheckArgs { - #[clap(action)] - files: Vec, -} - -#[derive(Debug, Args)] -struct ShowArgs { - #[clap(action)] - file: Utf8PathBuf, -} - -async fn do_run() -> Result<(), anyhow::Error> { - let args = Converter::parse(); - - let (files, do_show) = match args { - Converter::Check(CheckArgs { files }) => (files, false), - Converter::Show(ShowArgs { file }) => (vec![file], true), - }; - - for file_path in &files { - let contents = tokio::fs::read_to_string(file_path) - .await - .with_context(|| format!("read {:?}", &file_path))?; - let parsed: AllZoneRequests = serde_json::from_str(&contents) - .with_context(|| format!("parse {:?}", &file_path))?; - let converted = OmicronZonesConfigLocal::try_from(parsed) - .with_context(|| format!("convert contents of {:?}", &file_path))?; - if do_show { - println!( - "{:#}", - serde_json::to_string_pretty(&converted).with_context( - || format!("print contents of {:?}", &file_path) - )? - ); - } - eprintln!( - "{}: processed okay (zones: {})", - file_path, - converted.zones.len() - ); - } - - eprintln!("all files processed okay (files: {})", files.len()); - Ok(()) -} diff --git a/sled-agent/src/lib.rs b/sled-agent/src/lib.rs index 989f011ed8..f7dc23e4d9 100644 --- a/sled-agent/src/lib.rs +++ b/sled-agent/src/lib.rs @@ -33,7 +33,6 @@ mod profile; pub mod rack_setup; pub mod server; pub mod services; -pub mod services_migration; mod sled_agent; mod smf_helper; mod storage_monitor; diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index 70d68f6a8e..ffe9d9faa5 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -35,7 +35,6 @@ use crate::params::{ TimeSync, ZoneBundleCause, ZoneBundleMetadata, ZoneType, }; use crate::profile::*; -use crate::services_migration::{AllZoneRequests, SERVICES_LEDGER_FILENAME}; use crate::smf_helper::SmfHelper; use crate::zone_bundle::BundleError; use crate::zone_bundle::ZoneBundler; @@ -759,18 +758,6 @@ impl ServiceManager { self.inner.switch_zone_bootstrap_address } - async fn all_service_ledgers(&self) -> Vec { - if let Some(dir) = self.inner.ledger_directory_override.get() { - return vec![dir.join(SERVICES_LEDGER_FILENAME)]; - } - let resources = self.inner.storage.get_latest_disks().await; - resources - .all_m2_mountpoints(CONFIG_DATASET) - .into_iter() - .map(|p| p.join(SERVICES_LEDGER_FILENAME)) - .collect() - } - async fn all_omicron_zone_ledgers(&self) -> Vec { if let Some(dir) = self.inner.ledger_directory_override.get() { return vec![dir.join(ZONES_LEDGER_FILENAME)]; @@ -785,12 +772,6 @@ impl ServiceManager { // Loads persistent configuration about any Omicron-managed zones that we're // supposed to be running. - // - // For historical reasons, there are two possible places this configuration - // could live, each with its own format. This function first checks the - // newer one. If no configuration was found there, it checks the older - // one. If only the older one was found, it is converted into the new form - // so that future calls will only look at the new form. async fn load_ledgered_zones( &self, // This argument attempts to ensure that the caller holds the right @@ -815,127 +796,8 @@ impl ServiceManager { return Ok(Some(ledger)); } - // Now look for the ledger used by previous versions. If we find it, - // we'll convert it and write out a new ledger used by the current - // software. - info!( - log, - "Loading Omicron zones - No zones detected \ - (will look for old-format services)" - ); - let services_ledger_paths = self.all_service_ledgers().await; - info!( - log, - "Loading old-format services from: {services_ledger_paths:?}" - ); - - let maybe_ledger = - Ledger::::new(log, services_ledger_paths.clone()) - .await; - let maybe_converted = match maybe_ledger { - None => { - // The ledger ignores all errors attempting to load files. That - // might be fine most of the time. In this case, we want to - // raise a big red flag if we find an old-format ledger that we - // can't process. - if services_ledger_paths.iter().any(|p| p.exists()) { - Err(Error::ServicesMigration(anyhow!( - "failed to read or parse old-format ledger, \ - but one exists" - ))) - } else { - // There was no old-format ledger at all. - return Ok(None); - } - } - Some(ledger) => { - let all_services = ledger.into_inner(); - OmicronZonesConfigLocal::try_from(all_services) - .map_err(Error::ServicesMigration) - } - }; - - match maybe_converted { - Err(error) => { - // We've tried to test thoroughly so that this should never - // happen. If for some reason it does happen, engineering - // intervention is likely to be required to figure out how to - // proceed. The current software does not directly support - // whatever was in the ledger, and it's not safe to just come up - // with no zones when we're supposed to be running stuff. We'll - // need to figure out what's unexpected about what we found in - // the ledger and figure out how to fix the - // conversion. - error!( - log, - "Loading Omicron zones - found services but failed \ - to convert them (support intervention required): \ - {:#}", - error - ); - return Err(error); - } - Ok(new_config) => { - // We've successfully converted the old ledger. Write a new - // one. - info!( - log, - "Successfully migrated old-format services ledger to \ - zones ledger" - ); - let mut ledger = Ledger::::new_with( - log, - ledger_paths.clone(), - new_config, - ); - - ledger.commit().await?; - - // We could consider removing the old ledger here. That would - // not guarantee that it would be gone, though, because we could - // crash during `ledger.commit()` above having written at least - // one of the new ledgers. In that case, we won't go through - // this code path again on restart. If we wanted to ensure the - // old-format ledger was gone after the migration, we could - // consider unconditionally removing the old ledger paths in the - // caller, after we've got a copy of the new-format ledger. - // - // Should we? In principle, it shouldn't matter either way - // because we will never look at the old-format ledger unless we - // don't have a new-format one, and we should now have a - // new-format one forever now. - // - // When might it matter? Two cases: - // - // (1) If the sled agent is downgraded to a previous version - // that doesn't know about the new-format ledger. Do we - // want that sled agent to use the old-format one? It - // depends. If that downgrade happens immediately because - // the upgrade to the first new-format version was a - // disaster, then we'd probably rather the downgraded sled - // agent _did_ start its zones. If the downgrade happens - // months later, potentially after various additional - // reconfigurations, then that old-format ledger is probably - // out of date and shouldn't be used. There's no way to - // really know which case we're in, but the latter seems - // quite unlikely (why would we downgrade so far back after - // so long?). So that's a reason to keep the old-format - // ledger. - // - // (2) Suppose a developer or Oxide support engineer removes the - // new ledger for some reason, maybe thinking sled agent - // would come up with no zones running. They'll be - // surprised to discover that it actually starts running a - // potentially old set of zones. This probably only matters - // on a production system, and even then, it probably - // shouldn't happen. - // - // Given these cases, we're left ambivalent. We choose to keep - // the old ledger around. If nothing else, if something goes - // wrong, we'll have a copy of its last contents! - Ok(Some(ledger)) - } - } + info!(log, "Loading Omicron zones - No zones detected"); + Ok(None) } // TODO(https://github.com/oxidecomputer/omicron/issues/2973): @@ -4989,109 +4851,6 @@ mod test { logctx.cleanup_successful(); } - #[tokio::test] - async fn test_old_ledger_migration() { - let logctx = omicron_test_utils::dev::test_setup_log( - "test_old_ledger_migration", - ); - let test_config = TestConfig::new().await; - - // Before we start the service manager, stuff one of our old-format - // service ledgers into place. - let contents = - include_str!("../tests/old-service-ledgers/rack2-sled10.json"); - std::fs::write( - test_config.config_dir.path().join(SERVICES_LEDGER_FILENAME), - contents, - ) - .expect("failed to copy example old-format services ledger into place"); - - // Now start the service manager. - let mut helper = - LedgerTestHelper::new(logctx.log.clone(), &test_config).await; - let mgr = helper.new_service_manager(); - LedgerTestHelper::sled_agent_started(&logctx.log, &test_config, &mgr); - - // Trigger the migration code. (Yes, it's hokey that we create this - // fake argument.) - let unused = Mutex::new(BTreeMap::new()); - let migrated_ledger = mgr - .load_ledgered_zones(&unused.lock().await) - .await - .expect("failed to load ledgered zones") - .unwrap(); - - // As a quick check, the migrated ledger should have some zones. - let migrated_config = migrated_ledger.data(); - assert!(!migrated_config.zones.is_empty()); - - // The ServiceManager should now report the migrated zones, meaning that - // they've been copied into the new-format ledger. - let found = - mgr.omicron_zones_list().await.expect("failed to list zones"); - assert_eq!(found, migrated_config.clone().to_omicron_zones_config()); - // They should both match the expected converted output. - let expected: OmicronZonesConfigLocal = serde_json::from_str( - include_str!("../tests/output/new-zones-ledgers/rack2-sled10.json"), - ) - .unwrap(); - let expected_config = expected.to_omicron_zones_config(); - assert_eq!(found, expected_config); - - // Just to be sure, shut down the manager and create a new one without - // triggering migration again. It should also report the same zones. - drop_service_manager(mgr); - - let mgr = helper.new_service_manager(); - LedgerTestHelper::sled_agent_started(&logctx.log, &test_config, &mgr); - - let found = - mgr.omicron_zones_list().await.expect("failed to list zones"); - assert_eq!(found, expected_config); - - drop_service_manager(mgr); - helper.cleanup().await; - logctx.cleanup_successful(); - } - - #[tokio::test] - async fn test_old_ledger_migration_bad() { - let logctx = omicron_test_utils::dev::test_setup_log( - "test_old_ledger_migration_bad", - ); - let test_config = TestConfig::new().await; - let mut helper = - LedgerTestHelper::new(logctx.log.clone(), &test_config).await; - - // Before we start things, stuff a broken ledger into place. For this - // to test what we want, it needs to be a valid ledger that we simply - // failed to convert. - std::fs::write( - test_config.config_dir.path().join(SERVICES_LEDGER_FILENAME), - "{", - ) - .expect("failed to copy example old-format services ledger into place"); - - // Start the service manager. - let mgr = helper.new_service_manager(); - LedgerTestHelper::sled_agent_started(&logctx.log, &test_config, &mgr); - - // Trigger the migration code. - let unused = Mutex::new(BTreeMap::new()); - let error = mgr - .load_ledgered_zones(&unused.lock().await) - .await - .expect_err("succeeded in loading bogus ledgered zones"); - assert_eq!( - "Error migrating old-format services ledger: failed to read or \ - parse old-format ledger, but one exists", - format!("{:#}", error) - ); - - helper.cleanup().await; - logctx.cleanup_successful(); - } - #[test] fn test_bootstrap_addr_to_techport_prefixes() { let ba: Ipv6Addr = "fdb0:1122:3344:5566::".parse().unwrap(); diff --git a/sled-agent/src/services_migration.rs b/sled-agent/src/services_migration.rs deleted file mode 100644 index 511368e2f6..0000000000 --- a/sled-agent/src/services_migration.rs +++ /dev/null @@ -1,623 +0,0 @@ -// 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/. - -//! Sled Agents are responsible for running zones that make up much of the -//! control plane (Omicron). Configuration for these zones is owned by the -//! control plane, but that configuration must be persisted locally in order to -//! support cold boot of the control plane. (The control plane can't very well -//! tell sled agents what to run if it's not online yet!) -//! -//! Historically, these configurations were represented as an -//! `AllZonesRequests`, which contains a bunch of `ZoneRequest`s, each -//! containing a `ServiceZoneRequest`. This last structure was quite general -//! and made it possible to express a world of configurations that are not -//! actually valid. To avoid spreading extra complexity, these structures were -//! replaced with `OmicronZonesConfigLocal` and `OmicronZonesConfig`, -//! respectively. Upgrading production systems across this change requires -//! migrating any locally-stored configuration in the old format into the new -//! one. -//! -//! This file defines these old-format types and functions to convert them to -//! the new types, solely to perform that migration. We can remove all this -//! when we're satified that all deployed systems that we care about have moved -//! past this change. - -use crate::params::{ - OmicronZoneConfig, OmicronZoneDataset, OmicronZoneType, OmicronZonesConfig, - ZoneType, -}; -use crate::services::{OmicronZoneConfigLocal, OmicronZonesConfigLocal}; -use anyhow::{anyhow, ensure, Context}; -use camino::Utf8PathBuf; -use omicron_common::api::external::Generation; -use omicron_common::api::internal::shared::{ - NetworkInterface, SourceNatConfig, -}; -use omicron_common::ledger::Ledgerable; -use schemars::JsonSchema; -use serde::{Deserialize, Serialize}; -use sled_storage::dataset::{DatasetKind, DatasetName}; -use std::fmt::Debug; -use std::net::{IpAddr, Ipv6Addr, SocketAddr, SocketAddrV6}; -use uuid::Uuid; - -/// The filename of the ledger containing this old-format configuration. -pub const SERVICES_LEDGER_FILENAME: &str = "services.json"; - -/// A wrapper around `ZoneRequest` that allows it to be serialized to a JSON -/// file. -#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] -pub struct AllZoneRequests { - /// ledger generation (not an Omicron-provided generation) - generation: Generation, - requests: Vec, -} - -impl Default for AllZoneRequests { - fn default() -> Self { - Self { generation: Generation::new(), requests: vec![] } - } -} - -impl Ledgerable for AllZoneRequests { - fn is_newer_than(&self, other: &AllZoneRequests) -> bool { - self.generation >= other.generation - } - - fn generation_bump(&mut self) { - self.generation = self.generation.next(); - } -} - -impl TryFrom for OmicronZonesConfigLocal { - type Error = anyhow::Error; - - fn try_from(input: AllZoneRequests) -> Result { - // The Omicron generation number that we choose here (2) deserves some - // explanation. - // - // This is supposed to be the control-plane-issued generation number for - // this configuration. But any configuration that we're converting here - // predates the point where the control plane issued generation numbers - // at all. So what should we assign it? Well, what are the - // constraints? - // - // - It must be newer than generation 1 because generation 1 canonically - // represents the initial state of having no zones deployed. If we - // used generation 1 here, any code could ignore this configuration on - // the grounds that it's no newer than what it already has. (The - // contents of a given generation are supposed to be immutable.) - // - // - It should be older than anything else that the control plane might - // try to send us so that if the control plane wants to change - // anything, we won't ignore its request because we think this - // configuration is newer. But really this has to be the control - // plane's responsibility, not ours. That is: Nexus needs to ask us - // what our generation number is and subsequent configurations should - // use newer generation numbers. It's not a great plan for it to - // assume anything about the generation numbers deployed on sleds - // whose configurations it's never seen. (In practice, newly deployed - // systems currently wind up with generation 5, so it _could_ choose - // something like 6 to start with -- or some larger number to leave - // some buffer.) - // - // In summary, 2 seems fine. - let omicron_generation = OmicronZonesConfig::INITIAL_GENERATION.next(); - - // The ledger generation doesn't really matter. In case it's useful, we - // pick the generation from the ledger that we loaded. - let ledger_generation = input.generation; - - let ndatasets_input = - input.requests.iter().filter(|r| r.zone.dataset.is_some()).count(); - - let zones = input - .requests - .into_iter() - .map(OmicronZoneConfigLocal::try_from) - .collect::, _>>() - .context( - "mapping `AllZoneRequests` to `OmicronZonesConfigLocal`", - )?; - - // As a quick check, the number of datasets in the old and new - // generations ought to be the same. - let ndatasets_output = - zones.iter().filter(|r| r.zone.dataset_name().is_some()).count(); - ensure!( - ndatasets_input == ndatasets_output, - "conversion produced a different number of datasets" - ); - - Ok(OmicronZonesConfigLocal { - omicron_generation, - ledger_generation, - zones, - }) - } -} - -/// This struct represents the combo of "what zone did you ask for" + "where did -/// we put it". -#[derive(Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] -struct ZoneRequest { - zone: ServiceZoneRequest, - #[schemars(with = "String")] - root: Utf8PathBuf, -} - -impl TryFrom for OmicronZoneConfigLocal { - type Error = anyhow::Error; - - fn try_from(input: ZoneRequest) -> Result { - Ok(OmicronZoneConfigLocal { - zone: OmicronZoneConfig::try_from(input.zone)?, - root: input.root, - }) - } -} - -/// Describes a request to create a zone running one or more services. -#[derive( - Clone, Debug, Deserialize, Serialize, JsonSchema, PartialEq, Eq, Hash, -)] -struct ServiceZoneRequest { - // The UUID of the zone to be initialized. - id: Uuid, - // The type of the zone to be created. - zone_type: ZoneType, - // The addresses on which the service should listen for requests. - addresses: Vec, - // Datasets which should be managed by this service. - #[serde(default)] - dataset: Option, - // Services that should be run in the zone - services: Vec, -} - -impl TryFrom for OmicronZoneConfig { - type Error = anyhow::Error; - - fn try_from(input: ServiceZoneRequest) -> Result { - let error_context = || { - format!( - "zone {} (type {:?})", - input.id, - input.zone_type.to_string() - ) - }; - - // Historically, this type was used to describe two distinct kinds of - // thing: - // - // 1. an "Omicron" zone: Clickhouse, CockroachDb, Nexus, etc. We call - // these Omicron zones because they're managed by the control plane - // (Omicron). Nexus knows about these, stores information in - // CockroachDB about them, and is responsible for using Sled Agent - // APIs to configure these zones. - // - // 2. a "sled-local" zone. The only such zone is the "switch" zone. - // This is not really known to Nexus nor exposed outside Sled Agent. - // It's configured either based on Sled Agent's config file or else - // autodetection of whether this system _is_ a Scrimlet. - // - // All of the types in this file describe the ledgered configuration of - // the Omicron zones. We don't care about the switch zone here. Even - // for Omicron zones, the `ServiceZoneRequest` type is much more general - // than was strictly necessary to represent the kinds of zones we - // defined in practice. The more constrained schema is described by - // `OmicronZoneConfig`. This function verifies that the structures we - // find conform to that more constrained schema. - // - // Many of these properties were determined by code inspection. They - // could be wrong! But we've tried hard to make sure we're not wrong. - - match input.zone_type { - ZoneType::Clickhouse - | ZoneType::ClickhouseKeeper - | ZoneType::CockroachDb - | ZoneType::CruciblePantry - | ZoneType::Crucible - | ZoneType::ExternalDns - | ZoneType::InternalDns - | ZoneType::Nexus - | ZoneType::Ntp - | ZoneType::Oximeter => (), - ZoneType::Switch => { - return Err(anyhow!("unsupported zone type")) - .with_context(error_context) - } - } - - let id = input.id; - - // In production systems, Omicron zones only ever had exactly one - // address here. Multiple addresses were used for the "switch" zone, - // which cannot appear here. - if input.addresses.len() != 1 { - return Err(anyhow!( - "expected exactly one address, found {}", - input.addresses.len() - )) - .with_context(error_context); - } - - let underlay_address = input.addresses[0]; - - // In production systems, Omicron zones only ever had exactly one - // "service" inside them. (Multiple services were only supported for - // the "switch" zone and for Omicron zones in pre-release versions of - // Omicron, neither of which we expect to see here.) - if input.services.len() != 1 { - return Err(anyhow!( - "expected exactly one service, found {}", - input.services.len(), - )) - .with_context(error_context); - } - - let service = input.services.into_iter().next().unwrap(); - - // The id for the one service we found must match the overall request - // id. - if service.id != input.id { - return Err(anyhow!( - "expected service id ({}) to match id ({})", - service.id, - input.id, - )) - .with_context(error_context); - } - - // If there's a dataset, its id must match the overall request id. - let dataset_request = input - .dataset - .ok_or_else(|| anyhow!("missing dataset")) - .with_context(error_context); - let has_dataset = dataset_request.is_ok(); - if let Ok(dataset) = &dataset_request { - if dataset.id != input.id { - return Err(anyhow!( - "expected dataset id ({}) to match id ({})", - dataset.id, - input.id, - )) - .with_context(error_context); - } - } - - let zone_type = match service.details { - ServiceType::Nexus { - internal_address, - external_ip, - nic, - external_tls, - external_dns_servers, - } => OmicronZoneType::Nexus { - internal_address, - external_ip, - nic, - external_tls, - external_dns_servers, - }, - ServiceType::ExternalDns { http_address, dns_address, nic } => { - OmicronZoneType::ExternalDns { - dataset: dataset_request?.to_omicron_zone_dataset( - DatasetKind::ExternalDns, - http_address, - )?, - http_address, - dns_address, - nic, - } - } - ServiceType::InternalDns { - http_address, - dns_address, - gz_address, - gz_address_index, - } => OmicronZoneType::InternalDns { - dataset: dataset_request?.to_omicron_zone_dataset( - DatasetKind::InternalDns, - http_address, - )?, - http_address, - dns_address, - gz_address, - gz_address_index, - }, - ServiceType::Oximeter { address } => { - OmicronZoneType::Oximeter { address } - } - ServiceType::CruciblePantry { address } => { - OmicronZoneType::CruciblePantry { address } - } - ServiceType::BoundaryNtp { - address, - ntp_servers, - dns_servers, - domain, - nic, - snat_cfg, - } => OmicronZoneType::BoundaryNtp { - address, - ntp_servers, - dns_servers, - domain, - nic, - snat_cfg, - }, - ServiceType::InternalNtp { - address, - ntp_servers, - dns_servers, - domain, - } => OmicronZoneType::InternalNtp { - address, - ntp_servers, - dns_servers, - domain, - }, - ServiceType::Clickhouse { address } => { - OmicronZoneType::Clickhouse { - address, - dataset: dataset_request?.to_omicron_zone_dataset( - DatasetKind::Clickhouse, - address, - )?, - } - } - ServiceType::ClickhouseKeeper { address } => { - OmicronZoneType::ClickhouseKeeper { - address, - dataset: dataset_request?.to_omicron_zone_dataset( - DatasetKind::ClickhouseKeeper, - address, - )?, - } - } - ServiceType::CockroachDb { address } => { - OmicronZoneType::CockroachDb { - address, - dataset: dataset_request?.to_omicron_zone_dataset( - DatasetKind::CockroachDb, - address, - )?, - } - } - ServiceType::Crucible { address } => OmicronZoneType::Crucible { - address, - dataset: dataset_request? - .to_omicron_zone_dataset(DatasetKind::Crucible, address)?, - }, - }; - - if zone_type.dataset_name().is_none() && has_dataset { - // This indicates that the legacy form specified a dataset for a - // zone type that we do not (today) believe should have one. This - // should be impossible. If it happens, we need to re-evaluate our - // assumptions in designing `OmicronZoneType`. - return Err(anyhow!("found dataset that went unused")) - .with_context(error_context); - } - - Ok(OmicronZoneConfig { id, underlay_address, zone_type }) - } -} - -/// Used to request that the Sled initialize a single service. -#[derive( - Clone, Debug, Deserialize, Serialize, JsonSchema, PartialEq, Eq, Hash, -)] -struct ServiceZoneService { - id: Uuid, - details: ServiceType, -} - -/// Describes service-specific parameters. -#[derive( - Clone, Debug, Deserialize, Serialize, JsonSchema, PartialEq, Eq, Hash, -)] -#[serde(tag = "type", rename_all = "snake_case")] -enum ServiceType { - Nexus { - /// The address at which the internal nexus server is reachable. - internal_address: SocketAddrV6, - /// The address at which the external nexus server is reachable. - external_ip: IpAddr, - /// The service vNIC providing external connectivity using OPTE. - nic: NetworkInterface, - /// Whether Nexus's external endpoint should use TLS - external_tls: bool, - /// External DNS servers Nexus can use to resolve external hosts. - external_dns_servers: Vec, - }, - ExternalDns { - /// The address at which the external DNS server API is reachable. - http_address: SocketAddrV6, - /// The address at which the external DNS server is reachable. - dns_address: SocketAddr, - /// The service vNIC providing external connectivity using OPTE. - nic: NetworkInterface, - }, - InternalDns { - http_address: SocketAddrV6, - dns_address: SocketAddrV6, - /// The addresses in the global zone which should be created - /// - /// For the DNS service, which exists outside the sleds's typical subnet - /// - adding an address in the GZ is necessary to allow inter-zone - /// traffic routing. - gz_address: Ipv6Addr, - - /// The address is also identified with an auxiliary bit of information - /// to ensure that the created global zone address can have a unique - /// name. - gz_address_index: u32, - }, - Oximeter { - address: SocketAddrV6, - }, - CruciblePantry { - address: SocketAddrV6, - }, - BoundaryNtp { - address: SocketAddrV6, - ntp_servers: Vec, - dns_servers: Vec, - domain: Option, - /// The service vNIC providing outbound connectivity using OPTE. - nic: NetworkInterface, - /// The SNAT configuration for outbound connections. - snat_cfg: SourceNatConfig, - }, - InternalNtp { - address: SocketAddrV6, - ntp_servers: Vec, - dns_servers: Vec, - domain: Option, - }, - Clickhouse { - address: SocketAddrV6, - }, - ClickhouseKeeper { - address: SocketAddrV6, - }, - CockroachDb { - address: SocketAddrV6, - }, - Crucible { - address: SocketAddrV6, - }, -} - -/// Describes a request to provision a specific dataset -#[derive( - Clone, Debug, Deserialize, Serialize, JsonSchema, PartialEq, Eq, Hash, -)] -struct DatasetRequest { - id: Uuid, - name: DatasetName, - service_address: SocketAddrV6, -} - -impl DatasetRequest { - fn to_omicron_zone_dataset( - self, - kind: DatasetKind, - service_address: SocketAddrV6, - ) -> Result { - ensure!( - kind == *self.name.dataset(), - "expected dataset kind {:?}, found {:?}", - kind, - self.name.dataset(), - ); - - ensure!( - self.service_address == service_address, - "expected dataset kind {:?} service address to be {}, found {}", - kind, - service_address, - self.service_address, - ); - - Ok(OmicronZoneDataset { pool_name: self.name.pool().clone() }) - } -} - -#[cfg(test)] -mod test { - use super::AllZoneRequests; - use crate::services::OmicronZonesConfigLocal; - use camino::Utf8PathBuf; - - /// Verifies that our understanding of this old-format ledger has not - /// changed. (If you need to change this for some reason, you must figure - /// out how that affects systems with old-format ledgers and update this - /// test accordingly.) - #[test] - fn test_all_services_requests_schema() { - let schema = schemars::schema_for!(AllZoneRequests); - expectorate::assert_contents( - "../schema/all-zone-requests.json", - &serde_json::to_string_pretty(&schema).unwrap(), - ); - } - - /// Verifies that we can successfully convert a corpus of known old-format - /// ledgers. These came from two racks operated by Oxide. In practice - /// there probably aren't many different configurations represented here but - /// it's easy enough to just check them all. - /// - /// In terms of verifying the output: all we have done by hand in - /// constructing this test is verify that the code successfully converts - /// them. The conversion code does some basic sanity checks as well, like - /// that we produced the same number of zones and datasets. - #[test] - fn test_convert_known_ledgers() { - let known_ledgers = &[ - /* rack2 */ - "rack2-sled8.json", - "rack2-sled9.json", - "rack2-sled10.json", - "rack2-sled11.json", - "rack2-sled12.json", - "rack2-sled14.json", - "rack2-sled16.json", - "rack2-sled17.json", - "rack2-sled21.json", - "rack2-sled23.json", - "rack2-sled25.json", - /* rack3 (no sled 10) */ - "rack3-sled0.json", - "rack3-sled1.json", - "rack3-sled2.json", - "rack3-sled3.json", - "rack3-sled4.json", - "rack3-sled5.json", - "rack3-sled6.json", - "rack3-sled7.json", - "rack3-sled8.json", - "rack3-sled9.json", - "rack3-sled11.json", - "rack3-sled12.json", - "rack3-sled13.json", - "rack3-sled14.json", - "rack3-sled15.json", - "rack3-sled16.json", - "rack3-sled17.json", - "rack3-sled18.json", - "rack3-sled19.json", - "rack3-sled20.json", - "rack3-sled21.json", - "rack3-sled22.json", - "rack3-sled23.json", - "rack3-sled24.json", - "rack3-sled25.json", - "rack3-sled26.json", - "rack3-sled27.json", - "rack3-sled28.json", - "rack3-sled29.json", - "rack3-sled30.json", - "rack3-sled31.json", - ]; - - let path = Utf8PathBuf::from("tests/old-service-ledgers"); - let out_path = Utf8PathBuf::from("tests/output/new-zones-ledgers"); - for ledger_basename in known_ledgers { - println!("checking {:?}", ledger_basename); - let contents = std::fs::read_to_string(path.join(ledger_basename)) - .expect("failed to read file"); - let parsed: AllZoneRequests = - serde_json::from_str(&contents).expect("failed to parse file"); - let converted = OmicronZonesConfigLocal::try_from(parsed) - .expect("failed to convert file"); - expectorate::assert_contents( - out_path.join(ledger_basename), - &serde_json::to_string_pretty(&converted).unwrap(), - ); - } - } -} From 38335492955197d4140e821a6a8d7437c0baeb3f Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 10:37:20 -0700 Subject: [PATCH 03/42] Plumbing through filesystem_pool, still need to make it optional --- Cargo.lock | 1 + clients/nexus-client/src/lib.rs | 1 + nexus/db-model/src/deployment.rs | 6 +- nexus/db-model/src/inventory.rs | 5 + nexus/db-model/src/omicron_zone_config.rs | 10 +- nexus/db-model/src/schema.rs | 2 + nexus/db-queries/src/db/datastore/rack.rs | 21 +++- nexus/inventory/Cargo.toml | 1 + nexus/inventory/src/collector.rs | 15 +++ .../reconfigurator/execution/src/datasets.rs | 1 + nexus/reconfigurator/execution/src/dns.rs | 3 + .../execution/src/external_networking.rs | 11 ++ .../execution/src/omicron_zones.rs | 11 +- .../planning/src/blueprint_builder/builder.rs | 112 +++++++++++++----- .../planning/src/blueprint_builder/zones.rs | 6 + .../src/app/background/blueprint_execution.rs | 6 +- .../app/background/crdb_node_id_collector.rs | 7 +- nexus/test-utils/src/lib.rs | 7 ++ nexus/types/src/deployment.rs | 3 + nexus/types/src/deployment/zone_type.rs | 8 +- openapi/sled-agent.json | 9 ++ schema/crdb/dbinit.sql | 2 + sled-agent/src/params.rs | 8 +- sled-agent/src/rack_setup/plan/service.rs | 4 +- sled-agent/src/sim/server.rs | 11 +- 25 files changed, 206 insertions(+), 65 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e1d3ca90c..91deb20726 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4713,6 +4713,7 @@ dependencies = [ "omicron-sled-agent", "omicron-uuid-kinds", "omicron-workspace-hack", + "rand 0.8.5", "regex", "reqwest", "serde_json", diff --git a/clients/nexus-client/src/lib.rs b/clients/nexus-client/src/lib.rs index 9043592414..fc64c48a63 100644 --- a/clients/nexus-client/src/lib.rs +++ b/clients/nexus-client/src/lib.rs @@ -43,6 +43,7 @@ progenitor::generate_api!( TypedUuidForUpstairsKind = omicron_uuid_kinds::TypedUuid, TypedUuidForUpstairsRepairKind = omicron_uuid_kinds::TypedUuid, TypedUuidForUpstairsSessionKind = omicron_uuid_kinds::TypedUuid, + TypedUuidForZpoolKind = omicron_uuid_kinds::TypedUuid, }, patch = { SledAgentInfo = { derives = [PartialEq, Eq] }, diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index e6a66543c7..7c6951e221 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -31,7 +31,7 @@ use omicron_common::disk::DiskIdentity; use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::SledUuid; use omicron_uuid_kinds::ZpoolUuid; -use omicron_uuid_kinds::{ExternalIpKind, SledKind}; +use omicron_uuid_kinds::{ExternalIpKind, SledKind, ZpoolKind}; use uuid::Uuid; /// See [`nexus_types::deployment::Blueprint`]. @@ -227,6 +227,7 @@ pub struct BpOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, + pub filesystem_pool: DbTypedUuid, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, @@ -264,6 +265,7 @@ impl BpOmicronZone { sled_id, blueprint_zone.id.into_untyped_uuid(), blueprint_zone.underlay_address, + blueprint_zone.filesystem_pool.id(), &blueprint_zone.zone_type.clone().into(), external_ip_id, )?; @@ -272,6 +274,7 @@ impl BpOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, + filesystem_pool: blueprint_zone.filesystem_pool.id().into(), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -302,6 +305,7 @@ impl BpOmicronZone { sled_id: self.sled_id.into(), id: self.id, underlay_address: self.underlay_address, + filesystem_pool: self.filesystem_pool.into(), zone_type: self.zone_type, primary_service_ip: self.primary_service_ip, primary_service_port: self.primary_service_port, diff --git a/nexus/db-model/src/inventory.rs b/nexus/db-model/src/inventory.rs index 4abd7fe927..77ba8e68a7 100644 --- a/nexus/db-model/src/inventory.rs +++ b/nexus/db-model/src/inventory.rs @@ -37,6 +37,7 @@ use omicron_uuid_kinds::CollectionUuid; use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::SledKind; use omicron_uuid_kinds::SledUuid; +use omicron_uuid_kinds::ZpoolKind; use omicron_uuid_kinds::ZpoolUuid; use uuid::Uuid; @@ -1008,6 +1009,7 @@ pub struct InvOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, + pub filesystem_pool: DbTypedUuid, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, @@ -1039,6 +1041,7 @@ impl InvOmicronZone { sled_id, zone.id, zone.underlay_address, + zone.filesystem_pool.id(), &zone.zone_type, external_ip_id, )?; @@ -1047,6 +1050,7 @@ impl InvOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, + filesystem_pool: zone.filesystem_pool.into(), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -1075,6 +1079,7 @@ impl InvOmicronZone { sled_id: self.sled_id.into(), id: self.id, underlay_address: self.underlay_address, + filesystem_pool: self.filesystem_pool.into(), zone_type: self.zone_type, primary_service_ip: self.primary_service_ip, primary_service_port: self.primary_service_port, diff --git a/nexus/db-model/src/omicron_zone_config.rs b/nexus/db-model/src/omicron_zone_config.rs index c2258dba6c..da40d2125f 100644 --- a/nexus/db-model/src/omicron_zone_config.rs +++ b/nexus/db-model/src/omicron_zone_config.rs @@ -23,8 +23,9 @@ use nexus_types::deployment::{ }; use nexus_types::inventory::{NetworkInterface, OmicronZoneType}; use omicron_common::api::internal::shared::NetworkInterfaceKind; +use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::{ - ExternalIpUuid, GenericUuid, OmicronZoneUuid, SledUuid, + ExternalIpUuid, GenericUuid, OmicronZoneUuid, SledUuid, ZpoolUuid, }; use std::net::{IpAddr, Ipv6Addr, SocketAddr, SocketAddrV6}; use uuid::Uuid; @@ -34,6 +35,7 @@ pub(crate) struct OmicronZone { pub(crate) sled_id: SledUuid, pub(crate) id: Uuid, pub(crate) underlay_address: ipv6::Ipv6Addr, + pub(crate) filesystem_pool: ZpoolUuid, pub(crate) zone_type: ZoneType, pub(crate) primary_service_ip: ipv6::Ipv6Addr, pub(crate) primary_service_port: SqlU16, @@ -60,6 +62,7 @@ impl OmicronZone { sled_id: SledUuid, zone_id: Uuid, zone_underlay_address: Ipv6Addr, + filesystem_pool: ZpoolUuid, zone_type: &nexus_types::inventory::OmicronZoneType, external_ip_id: Option, ) -> anyhow::Result { @@ -201,6 +204,7 @@ impl OmicronZone { sled_id, id, underlay_address, + filesystem_pool, zone_type, primary_service_ip, primary_service_port, @@ -365,6 +369,7 @@ impl OmicronZone { disposition, id: OmicronZoneUuid::from_untyped_uuid(common.id), underlay_address: std::net::Ipv6Addr::from(common.underlay_address), + filesystem_pool: ZpoolName::new_external(common.filesystem_pool), zone_type, }) } @@ -468,6 +473,7 @@ impl OmicronZone { Ok(nexus_types::inventory::OmicronZoneConfig { id: common.id, underlay_address: std::net::Ipv6Addr::from(common.underlay_address), + filesystem_pool: ZpoolName::new_external(common.filesystem_pool), zone_type, }) } @@ -558,6 +564,7 @@ impl OmicronZone { Ok(ZoneConfigCommon { id: self.id, underlay_address: self.underlay_address, + filesystem_pool: self.filesystem_pool, zone_type: self.zone_type, primary_service_address, snat_ip: self.snat_ip, @@ -582,6 +589,7 @@ impl OmicronZone { struct ZoneConfigCommon { id: Uuid, underlay_address: ipv6::Ipv6Addr, + filesystem_pool: ZpoolUuid, zone_type: ZoneType, primary_service_address: SocketAddrV6, snat_ip: Option, diff --git a/nexus/db-model/src/schema.rs b/nexus/db-model/src/schema.rs index d08a51edd4..68a252bf6d 100644 --- a/nexus/db-model/src/schema.rs +++ b/nexus/db-model/src/schema.rs @@ -1454,6 +1454,7 @@ table! { id -> Uuid, underlay_address -> Inet, + filesystem_pool -> Uuid, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, @@ -1568,6 +1569,7 @@ table! { id -> Uuid, underlay_address -> Inet, + filesystem_pool -> Uuid, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, diff --git a/nexus/db-queries/src/db/datastore/rack.rs b/nexus/db-queries/src/db/datastore/rack.rs index 4af6bf7263..1e382746cd 100644 --- a/nexus/db-queries/src/db/datastore/rack.rs +++ b/nexus/db-queries/src/db/datastore/rack.rs @@ -1035,6 +1035,7 @@ mod test { IdentityMetadataCreateParams, MacAddr, Vni, }; use omicron_common::api::internal::shared::SourceNatConfig; + use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev; use omicron_uuid_kinds::{ExternalIpUuid, OmicronZoneUuid}; use omicron_uuid_kinds::{GenericUuid, ZpoolUuid}; @@ -1287,6 +1288,10 @@ mod test { fn_to_get_all!(ip_pool_range, IpPoolRange); fn_to_get_all!(dataset, Dataset); + fn random_zpool() -> ZpoolName { + ZpoolName::new_external(ZpoolUuid::new_v4()) + } + fn random_dataset() -> OmicronZoneDataset { OmicronZoneDataset { pool_name: illumos_utils::zpool::ZpoolName::new_external( @@ -1361,6 +1366,7 @@ mod test { let mut macs = MacAddr::iter_system(); let mut blueprint_zones = BTreeMap::new(); + let dataset = random_dataset(); blueprint_zones.insert( SledUuid::from_untyped_uuid(sled1.id()), BlueprintZonesConfig { @@ -1370,9 +1376,10 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: external_dns_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: dataset.pool_name.clone(), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { - dataset: random_dataset(), + dataset, http_address: "[::1]:80".parse().unwrap(), dns_address: OmicronZoneExternalFloatingAddr { id: ExternalIpUuid::new_v4(), @@ -1398,6 +1405,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp1_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:80".parse().unwrap(), @@ -1439,6 +1447,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1470,6 +1479,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp2_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:80".parse().unwrap(), @@ -1510,6 +1520,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp3_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::InternalNtp( blueprint_zone_type::InternalNtp { address: "[::1]:80".parse().unwrap(), @@ -1692,6 +1703,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id1, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1723,6 +1735,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id2, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1963,6 +1976,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -2060,6 +2074,7 @@ mod test { let mut macs = MacAddr::iter_system(); let mut blueprint_zones = BTreeMap::new(); + let dataset = random_dataset(); blueprint_zones.insert( SledUuid::from_untyped_uuid(sled.id()), BlueprintZonesConfig { @@ -2069,9 +2084,10 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: external_dns_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: dataset.pool_name.clone(), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { - dataset: random_dataset(), + dataset, http_address: "[::1]:80".parse().unwrap(), dns_address: OmicronZoneExternalFloatingAddr { id: ExternalIpUuid::new_v4(), @@ -2097,6 +2113,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: random_zpool(), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), diff --git a/nexus/inventory/Cargo.toml b/nexus/inventory/Cargo.toml index e185808caa..2fbfbace21 100644 --- a/nexus/inventory/Cargo.toml +++ b/nexus/inventory/Cargo.toml @@ -31,5 +31,6 @@ omicron-workspace-hack.workspace = true expectorate.workspace = true gateway-test-utils.workspace = true omicron-sled-agent.workspace = true +rand.workspace = true regex.workspace = true tokio.workspace = true diff --git a/nexus/inventory/src/collector.rs b/nexus/inventory/src/collector.rs index a64d092e1c..62f9dbf39f 100644 --- a/nexus/inventory/src/collector.rs +++ b/nexus/inventory/src/collector.rs @@ -379,7 +379,11 @@ mod test { use gateway_messages::SpPort; use nexus_types::inventory::Collection; use omicron_common::api::external::Generation; + use omicron_common::zpool_name::ZpoolName; use omicron_sled_agent::sim; + use omicron_uuid_kinds::GenericUuid; + use omicron_uuid_kinds::ZpoolUuid; + use rand::prelude::SliceRandom; use std::fmt::Write; use std::net::Ipv6Addr; use std::net::SocketAddrV6; @@ -547,6 +551,16 @@ mod test { let sled_url = format!("http://{}/", agent.http_server.local_addr()); let client = sled_agent_client::Client::new(&sled_url, log); + let zpools = agent.sled_agent.get_zpools().await; + let filesystem_pool = zpools + .choose(&mut rand::thread_rng()) + .map(|request| { + ZpoolName::new_external(ZpoolUuid::from_untyped_uuid( + request.id, + )) + }) + .expect("No zpools for filesystem zpool"); + let zone_address = SocketAddrV6::new(Ipv6Addr::LOCALHOST, 123, 0, 0); client .omicron_zones_put(&sled_agent_client::types::OmicronZonesConfig { @@ -558,6 +572,7 @@ mod test { sled_agent_client::types::OmicronZoneType::Oximeter { address: zone_address.to_string(), }, + filesystem_pool, }], }) .await diff --git a/nexus/reconfigurator/execution/src/datasets.rs b/nexus/reconfigurator/execution/src/datasets.rs index c4f5cbae82..de0d4984e2 100644 --- a/nexus/reconfigurator/execution/src/datasets.rs +++ b/nexus/reconfigurator/execution/src/datasets.rs @@ -278,6 +278,7 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), + filesystem_pool: ZpoolName::new_external(new_zpool_id), zone_type: BlueprintZoneType::Crucible( blueprint_zone_type::Crucible { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index ef4996db54..107fe0ac33 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -499,9 +499,11 @@ mod test { use omicron_common::address::SLED_PREFIX; use omicron_common::api::external::Generation; use omicron_common::api::external::IdentityMetadataCreateParams; + use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev::test_setup_log; use omicron_uuid_kinds::ExternalIpUuid; use omicron_uuid_kinds::OmicronZoneUuid; + use omicron_uuid_kinds::ZpoolUuid; use sled_agent_client::ZoneKind; use std::collections::BTreeMap; use std::collections::BTreeSet; @@ -621,6 +623,7 @@ mod test { disposition: BlueprintZoneDisposition::Quiesced, id: out_of_service_id, underlay_address: out_of_service_addr, + filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), zone_type: BlueprintZoneType::Oximeter( blueprint_zone_type::Oximeter { address: SocketAddrV6::new( diff --git a/nexus/reconfigurator/execution/src/external_networking.rs b/nexus/reconfigurator/execution/src/external_networking.rs index 13cf601135..83c702fb65 100644 --- a/nexus/reconfigurator/execution/src/external_networking.rs +++ b/nexus/reconfigurator/execution/src/external_networking.rs @@ -445,7 +445,9 @@ mod tests { use omicron_common::address::NUM_SOURCE_NAT_PORTS; use omicron_common::api::external::MacAddr; use omicron_common::api::external::Vni; + use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::ExternalIpUuid; + use omicron_uuid_kinds::ZpoolUuid; use oxnet::IpNet; use std::net::IpAddr; use std::net::Ipv6Addr; @@ -590,6 +592,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.nexus_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: ZpoolName::new_external( + ZpoolUuid::new_v4(), + ), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:0".parse().unwrap(), @@ -604,6 +609,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.dns_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: ZpoolName::new_external( + ZpoolUuid::new_v4(), + ), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset: OmicronZoneDataset { @@ -621,6 +629,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.ntp_id, underlay_address: Ipv6Addr::LOCALHOST, + filesystem_pool: ZpoolName::new_external( + ZpoolUuid::new_v4(), + ), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/execution/src/omicron_zones.rs b/nexus/reconfigurator/execution/src/omicron_zones.rs index a40d65411b..401a2ef749 100644 --- a/nexus/reconfigurator/execution/src/omicron_zones.rs +++ b/nexus/reconfigurator/execution/src/omicron_zones.rs @@ -104,8 +104,10 @@ mod test { }; use nexus_types::inventory::OmicronZoneDataset; use omicron_common::api::external::Generation; + use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::OmicronZoneUuid; use omicron_uuid_kinds::SledUuid; + use omicron_uuid_kinds::ZpoolUuid; use std::collections::BTreeMap; use std::net::SocketAddr; use uuid::Uuid; @@ -183,19 +185,17 @@ mod test { // the full set of zones that must be running. // See `rack_setup::service::ServiceInner::run` for more details. fn make_zones() -> BlueprintZonesConfig { + let zpool = ZpoolName::new_external(ZpoolUuid::new_v4()); BlueprintZonesConfig { generation: Generation::new(), zones: vec![BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), + filesystem_pool: zpool.clone(), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { - dataset: OmicronZoneDataset { - pool_name: format!("oxp_{}", Uuid::new_v4()) - .parse() - .unwrap(), - }, + dataset: OmicronZoneDataset { pool_name: zpool }, dns_address: "[::1]:0".parse().unwrap(), gz_address: "::1".parse().unwrap(), gz_address_index: 0, @@ -295,6 +295,7 @@ mod test { disposition, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), + filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), zone_type: BlueprintZoneType::InternalNtp( blueprint_zone_type::InternalNtp { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index 9d7c542eda..ce6c8fe3b9 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -50,6 +50,7 @@ use omicron_uuid_kinds::OmicronZoneUuid; use omicron_uuid_kinds::PhysicalDiskUuid; use omicron_uuid_kinds::SledUuid; use omicron_uuid_kinds::ZpoolUuid; +use rand::prelude::IteratorRandom; use rand::rngs::StdRng; use rand::SeedableRng; use sled_agent_client::ZoneKind; @@ -631,7 +632,6 @@ impl<'a> BlueprintBuilder<'a> { let sled_subnet = sled_info.subnet; let ip = self.sled_alloc_ip(sled_id)?; let ntp_address = SocketAddrV6::new(ip, NTP_PORT, 0, 0); - // Construct the list of internal DNS servers. // // It'd be tempting to get this list from the other internal NTP @@ -659,18 +659,22 @@ impl<'a> BlueprintBuilder<'a> { }) .collect(); + let zone_type = + BlueprintZoneType::InternalNtp(blueprint_zone_type::InternalNtp { + address: ntp_address, + ntp_servers, + dns_servers, + domain: None, + }); + let filesystem_pool = + self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: self.rng.zone_rng.next(), underlay_address: ip, - zone_type: BlueprintZoneType::InternalNtp( - blueprint_zone_type::InternalNtp { - address: ntp_address, - ntp_servers, - dns_servers, - domain: None, - }, - ), + filesystem_pool, + zone_type, }; self.sled_add_zone(sled_id, zone)?; @@ -713,16 +717,20 @@ impl<'a> BlueprintBuilder<'a> { let ip = self.sled_alloc_ip(sled_id)?; let port = omicron_common::address::CRUCIBLE_PORT; let address = SocketAddrV6::new(ip, port, 0, 0); + let zone_type = + BlueprintZoneType::Crucible(blueprint_zone_type::Crucible { + address, + dataset: OmicronZoneDataset { pool_name }, + }); + let filesystem_pool = + self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: self.rng.zone_rng.next(), underlay_address: ip, - zone_type: BlueprintZoneType::Crucible( - blueprint_zone_type::Crucible { - address, - dataset: OmicronZoneDataset { pool_name }, - }, - ), + filesystem_pool, + zone_type, }; self.sled_add_zone(sled_id, zone)?; @@ -834,19 +842,23 @@ impl<'a> BlueprintBuilder<'a> { let ip = self.sled_alloc_ip(sled_id)?; let port = omicron_common::address::NEXUS_INTERNAL_PORT; let internal_address = SocketAddrV6::new(ip, port, 0, 0); + let zone_type = + BlueprintZoneType::Nexus(blueprint_zone_type::Nexus { + internal_address, + external_ip, + nic, + external_tls, + external_dns_servers: external_dns_servers.clone(), + }); + let filesystem_pool = + self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: ip, - zone_type: BlueprintZoneType::Nexus( - blueprint_zone_type::Nexus { - internal_address, - external_ip, - nic, - external_tls, - external_dns_servers: external_dns_servers.clone(), - }, - ), + filesystem_pool, + zone_type, }; self.sled_add_zone(sled_id, zone)?; } @@ -889,16 +901,21 @@ impl<'a> BlueprintBuilder<'a> { )?; let port = omicron_common::address::COCKROACH_PORT; let address = SocketAddrV6::new(underlay_ip, port, 0, 0); + let zone_type = BlueprintZoneType::CockroachDb( + blueprint_zone_type::CockroachDb { + address, + dataset: OmicronZoneDataset { pool_name }, + }, + ); + let filesystem_pool = + self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: underlay_ip, - zone_type: BlueprintZoneType::CockroachDb( - blueprint_zone_type::CockroachDb { - address, - dataset: OmicronZoneDataset { pool_name }, - }, - ), + filesystem_pool, + zone_type, }; self.sled_add_zone(sled_id, zone)?; } @@ -906,6 +923,37 @@ impl<'a> BlueprintBuilder<'a> { Ok(EnsureMultiple::Changed { added: num_crdb_to_add, removed: 0 }) } + // Selects a filesystem zpool for this zone type. + // + // For zones containing durable datasets, the filesystem pools are + // co-located, and determistic. + // + // For zones without durable datasets, the filesystem pools are randomly + // selected. This random choice makes this function not idempotent. + fn sled_select_filesystem_pool( + &self, + sled_id: SledUuid, + zone_type: &BlueprintZoneType, + ) -> Result { + let resources = self.sled_resources(sled_id)?; + + // Transient filesystem is co-located with durable dataset. + if let Some(dataset) = zone_type.durable_dataset() { + return Ok(dataset.pool_name.clone()); + } + + // No durable dataset exists; pick one randomly. + resources + .zpools + .keys() + .map(|id| ZpoolName::new_external(*id)) + .choose(&mut rand::thread_rng()) + .ok_or_else(|| Error::NoAvailableZpool { + sled_id, + kind: zone_type.kind(), + }) + } + fn sled_add_zone( &mut self, sled_id: SledUuid, @@ -1296,12 +1344,14 @@ pub mod test { // On any given zpool, we should have at most one zone of any given // kind. + // + // TODO: we may want a similar check for non-durable datasets? let mut kinds_by_zpool: BTreeMap< ZpoolUuid, BTreeMap, > = BTreeMap::new(); for (_, zone) in blueprint.all_omicron_zones(BlueprintZoneFilter::All) { - if let Some(dataset) = zone.zone_type.dataset() { + if let Some(dataset) = zone.zone_type.durable_dataset() { let kind = zone.zone_type.kind(); if let Some(previous) = kinds_by_zpool .entry(dataset.pool_name.id()) diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs index 68e2b9c2a2..f5ad2efe97 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs @@ -198,7 +198,9 @@ mod tests { external_api::views::{SledPolicy, SledState}, }; use omicron_common::address::Ipv6Subnet; + use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev::test_setup_log; + use omicron_uuid_kinds::ZpoolUuid; use crate::{ blueprint_builder::{ @@ -280,11 +282,15 @@ mod tests { let change = builder.zones.change_sled_zones(existing_sled_id); let new_zone_id = OmicronZoneUuid::new_v4(); + // NOTE: This pool doesn't actually exist on the sled, but nothing is + // checking for that in this test? + let filesystem_pool = ZpoolName::new_external(ZpoolUuid::new_v4()); change .add_zone(BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, id: new_zone_id, underlay_address: Ipv6Addr::UNSPECIFIED, + filesystem_pool, zone_type: BlueprintZoneType::Oximeter( blueprint_zone_type::Oximeter { address: SocketAddrV6::new( diff --git a/nexus/src/app/background/blueprint_execution.rs b/nexus/src/app/background/blueprint_execution.rs index b01d1213de..7a56897f97 100644 --- a/nexus/src/app/background/blueprint_execution.rs +++ b/nexus/src/app/background/blueprint_execution.rs @@ -129,9 +129,11 @@ mod test { use nexus_types::external_api::views::SledState; use nexus_types::inventory::OmicronZoneDataset; use omicron_common::api::external::Generation; + use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::OmicronZoneUuid; use omicron_uuid_kinds::SledUuid; + use omicron_uuid_kinds::ZpoolUuid; use serde::Deserialize; use serde_json::json; use std::collections::BTreeMap; @@ -260,16 +262,18 @@ mod test { fn make_zones( disposition: BlueprintZoneDisposition, ) -> BlueprintZonesConfig { + let pool_id = ZpoolUuid::new_v4(); BlueprintZonesConfig { generation: Generation::new(), zones: vec![BlueprintZoneConfig { disposition, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), + filesystem_pool: ZpoolName::new_external(pool_id), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { dataset: OmicronZoneDataset { - pool_name: format!("oxp_{}", Uuid::new_v4()) + pool_name: format!("oxp_{}", pool_id) .parse() .unwrap(), }, diff --git a/nexus/src/app/background/crdb_node_id_collector.rs b/nexus/src/app/background/crdb_node_id_collector.rs index 2736514021..eb9d4f3c3d 100644 --- a/nexus/src/app/background/crdb_node_id_collector.rs +++ b/nexus/src/app/background/crdb_node_id_collector.rs @@ -241,8 +241,10 @@ mod tests { use nexus_test_utils::db::test_setup_database; use nexus_types::deployment::BlueprintZoneConfig; use nexus_types::deployment::BlueprintZoneDisposition; + use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev; use omicron_uuid_kinds::SledUuid; + use omicron_uuid_kinds::ZpoolUuid; use std::collections::BTreeMap; use std::iter; use std::net::SocketAddr; @@ -265,16 +267,18 @@ mod tests { .get_mut(&sled_id) .expect("found entry for test sled"); + let zpool_id = ZpoolUuid::new_v4(); let make_crdb_zone_config = |disposition, id, addr: SocketAddrV6| BlueprintZoneConfig { disposition, id, underlay_address: *addr.ip(), + filesystem_pool: ZpoolName::new_external(zpool_id), zone_type: BlueprintZoneType::CockroachDb( blueprint_zone_type::CockroachDb { address: addr, dataset: nexus_types::inventory::OmicronZoneDataset { - pool_name: format!("oxp_{}", Uuid::new_v4()) + pool_name: format!("oxp_{}", zpool_id) .parse() .unwrap(), }, @@ -312,6 +316,7 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), + filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), zone_type: BlueprintZoneType::CruciblePantry( blueprint_zone_type::CruciblePantry { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/test-utils/src/lib.rs b/nexus/test-utils/src/lib.rs index 97fd66f949..3411eaa4e4 100644 --- a/nexus/test-utils/src/lib.rs +++ b/nexus/test-utils/src/lib.rs @@ -53,6 +53,7 @@ use omicron_common::api::internal::nexus::ProducerKind; use omicron_common::api::internal::shared::NetworkInterface; use omicron_common::api::internal::shared::NetworkInterfaceKind; use omicron_common::api::internal::shared::SwitchLocation; +use omicron_common::zpool_name::ZpoolName; use omicron_sled_agent::sim; use omicron_test_utils::dev; use omicron_uuid_kinds::ExternalIpUuid; @@ -421,6 +422,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::from_untyped_uuid(dataset_id), underlay_address: *address.ip(), + filesystem_pool: ZpoolName::new_external(zpool_id), zone_type: BlueprintZoneType::CockroachDb( blueprint_zone_type::CockroachDb { address, @@ -473,6 +475,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::from_untyped_uuid(dataset_id), underlay_address: *address.ip(), + filesystem_pool: ZpoolName::new_external(zpool_id), zone_type: BlueprintZoneType::Clickhouse( blueprint_zone_type::Clickhouse { address, @@ -661,6 +664,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: *address.ip(), + filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), zone_type: BlueprintZoneType::Nexus(blueprint_zone_type::Nexus { external_dns_servers: self .config @@ -982,6 +986,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *address.ip(), + filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), zone_type: BlueprintZoneType::CruciblePantry( blueprint_zone_type::CruciblePantry { address }, ), @@ -1023,6 +1028,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *dropshot_address.ip(), + filesystem_pool: ZpoolName::new_external(zpool_id), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset: OmicronZoneDataset { pool_name }, @@ -1084,6 +1090,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *http_address.ip(), + filesystem_pool: ZpoolName::new_external(zpool_id), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { dataset: OmicronZoneDataset { pool_name }, diff --git a/nexus/types/src/deployment.rs b/nexus/types/src/deployment.rs index d64cde2d06..822e819ff2 100644 --- a/nexus/types/src/deployment.rs +++ b/nexus/types/src/deployment.rs @@ -623,6 +623,7 @@ pub struct BlueprintZoneConfig { pub id: OmicronZoneUuid, pub underlay_address: Ipv6Addr, + pub filesystem_pool: ZpoolName, pub zone_type: BlueprintZoneType, } @@ -873,6 +874,7 @@ impl BlueprintZoneConfig { disposition, id: OmicronZoneUuid::from_untyped_uuid(config.id), underlay_address: config.underlay_address, + filesystem_pool: config.filesystem_pool, zone_type, }) } @@ -883,6 +885,7 @@ impl From for OmicronZoneConfig { Self { id: z.id.into_untyped_uuid(), underlay_address: z.underlay_address, + filesystem_pool: z.filesystem_pool, zone_type: z.zone_type.into(), } } diff --git a/nexus/types/src/deployment/zone_type.rs b/nexus/types/src/deployment/zone_type.rs index dc0fd98129..f2ac9d5a65 100644 --- a/nexus/types/src/deployment/zone_type.rs +++ b/nexus/types/src/deployment/zone_type.rs @@ -141,12 +141,8 @@ impl BlueprintZoneType { } } - // Returns the dataset associated with this zone. - // - // TODO-cleanup This currently returns `None` for zones that only have - // transient datasets. This should change to a non-optional value once Nexus - // is aware of them. - pub fn dataset(&self) -> Option<&OmicronZoneDataset> { + /// Returns a durable dataset associated with this zone, if any exists. + pub fn durable_dataset(&self) -> Option<&OmicronZoneDataset> { match self { BlueprintZoneType::Clickhouse( blueprint_zone_type::Clickhouse { dataset, .. }, diff --git a/openapi/sled-agent.json b/openapi/sled-agent.json index e1349c2b59..c56f4fb099 100644 --- a/openapi/sled-agent.json +++ b/openapi/sled-agent.json @@ -3657,6 +3657,14 @@ "description": "Describes one Omicron-managed zone running on a sled", "type": "object", "properties": { + "filesystem_pool": { + "description": "The pool on which we'll place this zone's filesystem.\n\nNote that this is transient -- the sled agent is permitted to destroy the zone's dataset on this pool each time the zone is initialized.", + "allOf": [ + { + "$ref": "#/components/schemas/ZpoolName" + } + ] + }, "id": { "type": "string", "format": "uuid" @@ -3670,6 +3678,7 @@ } }, "required": [ + "filesystem_pool", "id", "underlay_address", "zone_type" diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index 905fd111c1..0e75c90c04 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -3178,6 +3178,7 @@ CREATE TABLE IF NOT EXISTS omicron.public.inv_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, + filesystem_pool UUID NOT NULL, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone @@ -3412,6 +3413,7 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, + filesystem_pool UUID NOT NULL, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone diff --git a/sled-agent/src/params.rs b/sled-agent/src/params.rs index 730efccdf6..acbfac01eb 100644 --- a/sled-agent/src/params.rs +++ b/sled-agent/src/params.rs @@ -125,9 +125,6 @@ pub struct InstanceEnsureBody { /// Metadata used to track instance statistics. pub metadata: InstanceMetadata, - - /// The zpool which will hold this propolis zone's filesystem - pub filesystem_pool: ZpoolName, } /// The body of a request to move a previously-ensured instance into a specific @@ -359,10 +356,7 @@ impl From for sled_agent_client::types::OmicronZoneConfig { Self { id: local.id, underlay_address: local.underlay_address, -// filesystem_pool: sled_agent_client::ZpoolName::try_from( -// local.filesystem_pool.to_string(), -// ) -// .expect("Failed to convert pool name to progenitor type"), + filesystem_pool: local.filesystem_pool, zone_type: local.zone_type.into(), } } diff --git a/sled-agent/src/rack_setup/plan/service.rs b/sled-agent/src/rack_setup/plan/service.rs index 7446b1dc02..487bfcf0d5 100644 --- a/sled-agent/src/rack_setup/plan/service.rs +++ b/sled-agent/src/rack_setup/plan/service.rs @@ -898,9 +898,7 @@ impl SledInfo { } } - fn alloc_zpool_from_u2s( - &self, - ) -> Result { + fn alloc_zpool_from_u2s(&self) -> Result { self.u2_zpools .choose(&mut rand::thread_rng()) .map(|z| z.clone()) diff --git a/sled-agent/src/sim/server.rs b/sled-agent/src/sim/server.rs index dac1cac19b..2d48296644 100644 --- a/sled-agent/src/sim/server.rs +++ b/sled-agent/src/sim/server.rs @@ -359,7 +359,8 @@ pub async fn run_standalone_server( let all_u2_zpools = server.sled_agent.get_zpools().await; let get_random_zpool = || { use rand::seq::SliceRandom; - let pool = all_u2_zpools.choose(&mut rand::thread_rng()) + let pool = all_u2_zpools + .choose(&mut rand::thread_rng()) .expect("No external zpools found, but we need one"); ZpoolName::new_external(ZpoolUuid::from_untyped_uuid(pool.id)) }; @@ -375,9 +376,7 @@ pub async fn run_standalone_server( id: Uuid::new_v4(), underlay_address: *http_bound.ip(), zone_type: OmicronZoneType::InternalDns { - dataset: OmicronZoneDataset { - pool_name: pool_name.clone(), - }, + dataset: OmicronZoneDataset { pool_name: pool_name.clone() }, http_address: http_bound, dns_address: match dns.dns_server.local_address() { SocketAddr::V4(_) => panic!("did not expect v4 address"), @@ -448,9 +447,7 @@ pub async fn run_standalone_server( id, underlay_address: ip, zone_type: OmicronZoneType::ExternalDns { - dataset: OmicronZoneDataset { - pool_name: pool_name.clone(), - }, + dataset: OmicronZoneDataset { pool_name: pool_name.clone() }, http_address: external_dns_internal_addr, dns_address: SocketAddr::V6(external_dns_internal_addr), nic: nexus_types::inventory::NetworkInterface { From b58352fe2e7c6bfac1a95c60b72df5d4216a9596 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 11:08:39 -0700 Subject: [PATCH 04/42] review feedback --- schema/all-zone-requests.json | 801 ------------------ sled-agent/src/services.rs | 59 +- .../old-service-ledgers/rack2-sled10.json | 1 - .../old-service-ledgers/rack2-sled11.json | 1 - .../old-service-ledgers/rack2-sled12.json | 1 - .../old-service-ledgers/rack2-sled14.json | 1 - .../old-service-ledgers/rack2-sled16.json | 1 - .../old-service-ledgers/rack2-sled17.json | 1 - .../old-service-ledgers/rack2-sled21.json | 1 - .../old-service-ledgers/rack2-sled23.json | 1 - .../old-service-ledgers/rack2-sled25.json | 1 - .../old-service-ledgers/rack2-sled8.json | 1 - .../old-service-ledgers/rack2-sled9.json | 1 - .../old-service-ledgers/rack3-sled0.json | 1 - .../old-service-ledgers/rack3-sled1.json | 1 - .../old-service-ledgers/rack3-sled11.json | 1 - .../old-service-ledgers/rack3-sled12.json | 1 - .../old-service-ledgers/rack3-sled13.json | 1 - .../old-service-ledgers/rack3-sled14.json | 1 - .../old-service-ledgers/rack3-sled15.json | 1 - .../old-service-ledgers/rack3-sled16.json | 1 - .../old-service-ledgers/rack3-sled17.json | 1 - .../old-service-ledgers/rack3-sled18.json | 1 - .../old-service-ledgers/rack3-sled19.json | 1 - .../old-service-ledgers/rack3-sled2.json | 1 - .../old-service-ledgers/rack3-sled20.json | 1 - .../old-service-ledgers/rack3-sled21.json | 1 - .../old-service-ledgers/rack3-sled22.json | 1 - .../old-service-ledgers/rack3-sled23.json | 1 - .../old-service-ledgers/rack3-sled24.json | 1 - .../old-service-ledgers/rack3-sled25.json | 1 - .../old-service-ledgers/rack3-sled26.json | 1 - .../old-service-ledgers/rack3-sled27.json | 1 - .../old-service-ledgers/rack3-sled28.json | 1 - .../old-service-ledgers/rack3-sled29.json | 1 - .../old-service-ledgers/rack3-sled3.json | 1 - .../old-service-ledgers/rack3-sled30.json | 1 - .../old-service-ledgers/rack3-sled31.json | 1 - .../old-service-ledgers/rack3-sled4.json | 1 - .../old-service-ledgers/rack3-sled5.json | 1 - .../old-service-ledgers/rack3-sled6.json | 1 - .../old-service-ledgers/rack3-sled7.json | 1 - .../old-service-ledgers/rack3-sled8.json | 1 - .../old-service-ledgers/rack3-sled9.json | 1 - .../new-zones-ledgers/rack2-sled10.json | 195 ----- .../new-zones-ledgers/rack2-sled11.json | 196 ----- .../new-zones-ledgers/rack2-sled12.json | 232 ----- .../new-zones-ledgers/rack2-sled14.json | 192 ----- .../new-zones-ledgers/rack2-sled16.json | 192 ----- .../new-zones-ledgers/rack2-sled17.json | 181 ---- .../new-zones-ledgers/rack2-sled21.json | 232 ----- .../new-zones-ledgers/rack2-sled23.json | 195 ----- .../new-zones-ledgers/rack2-sled25.json | 196 ----- .../output/new-zones-ledgers/rack2-sled8.json | 198 ----- .../output/new-zones-ledgers/rack2-sled9.json | 192 ----- .../output/new-zones-ledgers/rack3-sled0.json | 181 ---- .../output/new-zones-ledgers/rack3-sled1.json | 167 ---- .../new-zones-ledgers/rack3-sled11.json | 201 ----- .../new-zones-ledgers/rack3-sled12.json | 181 ---- .../new-zones-ledgers/rack3-sled13.json | 201 ----- .../new-zones-ledgers/rack3-sled14.json | 198 ----- .../new-zones-ledgers/rack3-sled15.json | 196 ----- .../new-zones-ledgers/rack3-sled16.json | 167 ---- .../new-zones-ledgers/rack3-sled17.json | 167 ---- .../new-zones-ledgers/rack3-sled18.json | 167 ---- .../new-zones-ledgers/rack3-sled19.json | 181 ---- .../output/new-zones-ledgers/rack3-sled2.json | 167 ---- .../new-zones-ledgers/rack3-sled20.json | 198 ----- .../new-zones-ledgers/rack3-sled21.json | 167 ---- .../new-zones-ledgers/rack3-sled22.json | 167 ---- .../new-zones-ledgers/rack3-sled23.json | 181 ---- .../new-zones-ledgers/rack3-sled24.json | 167 ---- .../new-zones-ledgers/rack3-sled25.json | 196 ----- .../new-zones-ledgers/rack3-sled26.json | 178 ---- .../new-zones-ledgers/rack3-sled27.json | 167 ---- .../new-zones-ledgers/rack3-sled28.json | 167 ---- .../new-zones-ledgers/rack3-sled29.json | 184 ---- .../output/new-zones-ledgers/rack3-sled3.json | 178 ---- .../new-zones-ledgers/rack3-sled30.json | 167 ---- .../new-zones-ledgers/rack3-sled31.json | 181 ---- .../output/new-zones-ledgers/rack3-sled4.json | 167 ---- .../output/new-zones-ledgers/rack3-sled5.json | 178 ---- .../output/new-zones-ledgers/rack3-sled6.json | 167 ---- .../output/new-zones-ledgers/rack3-sled7.json | 167 ---- .../output/new-zones-ledgers/rack3-sled8.json | 198 ----- .../output/new-zones-ledgers/rack3-sled9.json | 178 ---- 86 files changed, 47 insertions(+), 8583 deletions(-) delete mode 100644 schema/all-zone-requests.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled10.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled11.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled12.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled14.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled16.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled17.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled21.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled23.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled25.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled8.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack2-sled9.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled0.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled1.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled11.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled12.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled13.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled14.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled15.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled16.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled17.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled18.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled19.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled2.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled20.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled21.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled22.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled23.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled24.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled25.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled26.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled27.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled28.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled29.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled3.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled30.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled31.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled4.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled5.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled6.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled7.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled8.json delete mode 100644 sled-agent/tests/old-service-ledgers/rack3-sled9.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled10.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled11.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled12.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled14.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled16.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled17.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled21.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled23.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled25.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled8.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack2-sled9.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled0.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled1.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled11.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled12.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled13.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled14.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled15.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled16.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled17.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled18.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled19.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled2.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled20.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled21.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled22.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled23.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled24.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled25.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled26.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled27.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled28.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled29.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled3.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled30.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled31.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled4.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled5.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled6.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled7.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled8.json delete mode 100644 sled-agent/tests/output/new-zones-ledgers/rack3-sled9.json diff --git a/schema/all-zone-requests.json b/schema/all-zone-requests.json deleted file mode 100644 index fde6ee18a4..0000000000 --- a/schema/all-zone-requests.json +++ /dev/null @@ -1,801 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "AllZoneRequests", - "description": "A wrapper around `ZoneRequest` that allows it to be serialized to a JSON file.", - "type": "object", - "required": [ - "generation", - "requests" - ], - "properties": { - "generation": { - "description": "ledger generation (not an Omicron-provided generation)", - "allOf": [ - { - "$ref": "#/definitions/Generation" - } - ] - }, - "requests": { - "type": "array", - "items": { - "$ref": "#/definitions/ZoneRequest" - } - } - }, - "definitions": { - "DatasetKind": { - "description": "The type of a dataset, and an auxiliary information necessary to successfully launch a zone managing the associated data.", - "oneOf": [ - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "cockroach_db" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "crucible" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "clickhouse" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "clickhouse_keeper" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "external_dns" - ] - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "internal_dns" - ] - } - } - } - ] - }, - "DatasetName": { - "type": "object", - "required": [ - "kind", - "pool_name" - ], - "properties": { - "kind": { - "$ref": "#/definitions/DatasetKind" - }, - "pool_name": { - "$ref": "#/definitions/ZpoolName" - } - } - }, - "DatasetRequest": { - "description": "Describes a request to provision a specific dataset", - "type": "object", - "required": [ - "id", - "name", - "service_address" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "name": { - "$ref": "#/definitions/DatasetName" - }, - "service_address": { - "type": "string" - } - } - }, - "Generation": { - "description": "Generation numbers stored in the database, used for optimistic concurrency control", - "type": "integer", - "format": "uint64", - "minimum": 0.0 - }, - "IpNet": { - "oneOf": [ - { - "title": "v4", - "allOf": [ - { - "$ref": "#/definitions/Ipv4Net" - } - ] - }, - { - "title": "v6", - "allOf": [ - { - "$ref": "#/definitions/Ipv6Net" - } - ] - } - ], - "x-rust-type": { - "crate": "oxnet", - "path": "oxnet::IpNet", - "version": "0.1.0" - } - }, - "Ipv4Net": { - "title": "An IPv4 subnet", - "description": "An IPv4 subnet, including prefix and prefix length", - "examples": [ - "192.168.1.0/24" - ], - "type": "string", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])/([0-9]|1[0-9]|2[0-9]|3[0-2])$", - "x-rust-type": { - "crate": "oxnet", - "path": "oxnet::Ipv4Net", - "version": "0.1.0" - } - }, - "Ipv6Net": { - "title": "An IPv6 subnet", - "description": "An IPv6 subnet, including prefix and subnet mask", - "examples": [ - "fd12:3456::/64" - ], - "type": "string", - "pattern": "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])$", - "x-rust-type": { - "crate": "oxnet", - "path": "oxnet::Ipv6Net", - "version": "0.1.0" - } - }, - "MacAddr": { - "title": "A MAC address", - "description": "A Media Access Control address, in EUI-48 format", - "examples": [ - "ff:ff:ff:ff:ff:ff" - ], - "type": "string", - "maxLength": 17, - "minLength": 5, - "pattern": "^([0-9a-fA-F]{0,2}:){5}[0-9a-fA-F]{0,2}$" - }, - "Name": { - "title": "A name unique within the parent collection", - "description": "Names must begin with a lower case ASCII letter, be composed exclusively of lowercase ASCII, uppercase ASCII, numbers, and '-', and may not end with a '-'. Names cannot be a UUID though they may contain a UUID.", - "type": "string", - "maxLength": 63, - "minLength": 1, - "pattern": "^(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)^[a-z]([a-zA-Z0-9-]*[a-zA-Z0-9]+)?$" - }, - "NetworkInterface": { - "description": "Information required to construct a virtual network interface", - "type": "object", - "required": [ - "id", - "ip", - "kind", - "mac", - "name", - "primary", - "slot", - "subnet", - "vni" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "ip": { - "type": "string", - "format": "ip" - }, - "kind": { - "$ref": "#/definitions/NetworkInterfaceKind" - }, - "mac": { - "$ref": "#/definitions/MacAddr" - }, - "name": { - "$ref": "#/definitions/Name" - }, - "primary": { - "type": "boolean" - }, - "slot": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "subnet": { - "$ref": "#/definitions/IpNet" - }, - "vni": { - "$ref": "#/definitions/Vni" - } - } - }, - "NetworkInterfaceKind": { - "description": "The type of network interface", - "oneOf": [ - { - "description": "A vNIC attached to a guest instance", - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "instance" - ] - } - } - }, - { - "description": "A vNIC associated with an internal service", - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "service" - ] - } - } - }, - { - "description": "A vNIC associated with a probe", - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "type": { - "type": "string", - "enum": [ - "probe" - ] - } - } - } - ] - }, - "ServiceType": { - "description": "Describes service-specific parameters.", - "oneOf": [ - { - "type": "object", - "required": [ - "external_dns_servers", - "external_ip", - "external_tls", - "internal_address", - "nic", - "type" - ], - "properties": { - "external_dns_servers": { - "description": "External DNS servers Nexus can use to resolve external hosts.", - "type": "array", - "items": { - "type": "string", - "format": "ip" - } - }, - "external_ip": { - "description": "The address at which the external nexus server is reachable.", - "type": "string", - "format": "ip" - }, - "external_tls": { - "description": "Whether Nexus's external endpoint should use TLS", - "type": "boolean" - }, - "internal_address": { - "description": "The address at which the internal nexus server is reachable.", - "type": "string" - }, - "nic": { - "description": "The service vNIC providing external connectivity using OPTE.", - "allOf": [ - { - "$ref": "#/definitions/NetworkInterface" - } - ] - }, - "type": { - "type": "string", - "enum": [ - "nexus" - ] - } - } - }, - { - "type": "object", - "required": [ - "dns_address", - "http_address", - "nic", - "type" - ], - "properties": { - "dns_address": { - "description": "The address at which the external DNS server is reachable.", - "type": "string" - }, - "http_address": { - "description": "The address at which the external DNS server API is reachable.", - "type": "string" - }, - "nic": { - "description": "The service vNIC providing external connectivity using OPTE.", - "allOf": [ - { - "$ref": "#/definitions/NetworkInterface" - } - ] - }, - "type": { - "type": "string", - "enum": [ - "external_dns" - ] - } - } - }, - { - "type": "object", - "required": [ - "dns_address", - "gz_address", - "gz_address_index", - "http_address", - "type" - ], - "properties": { - "dns_address": { - "type": "string" - }, - "gz_address": { - "description": "The addresses in the global zone which should be created\n\nFor the DNS service, which exists outside the sleds's typical subnet - adding an address in the GZ is necessary to allow inter-zone traffic routing.", - "type": "string", - "format": "ipv6" - }, - "gz_address_index": { - "description": "The address is also identified with an auxiliary bit of information to ensure that the created global zone address can have a unique name.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "http_address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "internal_dns" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "oximeter" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "crucible_pantry" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "dns_servers", - "nic", - "ntp_servers", - "snat_cfg", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "dns_servers": { - "type": "array", - "items": { - "type": "string", - "format": "ip" - } - }, - "domain": { - "type": [ - "string", - "null" - ] - }, - "nic": { - "description": "The service vNIC providing outbound connectivity using OPTE.", - "allOf": [ - { - "$ref": "#/definitions/NetworkInterface" - } - ] - }, - "ntp_servers": { - "type": "array", - "items": { - "type": "string" - } - }, - "snat_cfg": { - "description": "The SNAT configuration for outbound connections.", - "allOf": [ - { - "$ref": "#/definitions/SourceNatConfig" - } - ] - }, - "type": { - "type": "string", - "enum": [ - "boundary_ntp" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "dns_servers", - "ntp_servers", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "dns_servers": { - "type": "array", - "items": { - "type": "string", - "format": "ip" - } - }, - "domain": { - "type": [ - "string", - "null" - ] - }, - "ntp_servers": { - "type": "array", - "items": { - "type": "string" - } - }, - "type": { - "type": "string", - "enum": [ - "internal_ntp" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "clickhouse" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "clickhouse_keeper" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "cockroach_db" - ] - } - } - }, - { - "type": "object", - "required": [ - "address", - "type" - ], - "properties": { - "address": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "crucible" - ] - } - } - } - ] - }, - "ServiceZoneRequest": { - "description": "Describes a request to create a zone running one or more services.", - "type": "object", - "required": [ - "addresses", - "id", - "services", - "zone_type" - ], - "properties": { - "addresses": { - "type": "array", - "items": { - "type": "string", - "format": "ipv6" - } - }, - "dataset": { - "anyOf": [ - { - "$ref": "#/definitions/DatasetRequest" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string", - "format": "uuid" - }, - "services": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceZoneService" - } - }, - "zone_type": { - "$ref": "#/definitions/ZoneType" - } - } - }, - "ServiceZoneService": { - "description": "Used to request that the Sled initialize a single service.", - "type": "object", - "required": [ - "details", - "id" - ], - "properties": { - "details": { - "$ref": "#/definitions/ServiceType" - }, - "id": { - "type": "string", - "format": "uuid" - } - } - }, - "SourceNatConfig": { - "description": "An IP address and port range used for source NAT, i.e., making outbound network connections from guests or services.", - "type": "object", - "required": [ - "first_port", - "ip", - "last_port" - ], - "properties": { - "first_port": { - "description": "The first port used for source NAT, inclusive.", - "type": "integer", - "format": "uint16", - "minimum": 0.0 - }, - "ip": { - "description": "The external address provided to the instance or service.", - "type": "string", - "format": "ip" - }, - "last_port": { - "description": "The last port used for source NAT, also inclusive.", - "type": "integer", - "format": "uint16", - "minimum": 0.0 - } - } - }, - "Vni": { - "description": "A Geneve Virtual Network Identifier", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "ZoneRequest": { - "description": "This struct represents the combo of \"what zone did you ask for\" + \"where did we put it\".", - "type": "object", - "required": [ - "root", - "zone" - ], - "properties": { - "root": { - "type": "string" - }, - "zone": { - "$ref": "#/definitions/ServiceZoneRequest" - } - } - }, - "ZoneType": { - "description": "The type of zone that Sled Agent may run", - "type": "string", - "enum": [ - "clickhouse", - "clickhouse_keeper", - "cockroach_db", - "crucible_pantry", - "crucible", - "external_dns", - "internal_dns", - "nexus", - "ntp", - "oximeter", - "switch" - ] - }, - "ZpoolName": { - "title": "The name of a Zpool", - "description": "Zpool names are of the format ox{i,p}_. They are either Internal or External, and should be unique", - "type": "string", - "pattern": "^ox[ip]_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" - } - } -} \ No newline at end of file diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index ffe9d9faa5..d9122fcc57 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -758,6 +758,22 @@ impl ServiceManager { self.inner.switch_zone_bootstrap_address } + // TODO: This function refers to an old, deprecated format for storing + // service information. It is not deprecated for cleanup purposes, but + // should otherwise not be called in new code. + async fn all_service_ledgers(&self) -> Vec { + pub const SERVICES_LEDGER_FILENAME: &str = "services.json"; + if let Some(dir) = self.inner.ledger_directory_override.get() { + return vec![dir.join(SERVICES_LEDGER_FILENAME)]; + } + let resources = self.inner.storage.get_latest_disks().await; + resources + .all_m2_mountpoints(CONFIG_DATASET) + .into_iter() + .map(|p| p.join(SERVICES_LEDGER_FILENAME)) + .collect() + } + async fn all_omicron_zone_ledgers(&self) -> Vec { if let Some(dir) = self.inner.ledger_directory_override.get() { return vec![dir.join(ZONES_LEDGER_FILENAME)]; @@ -778,8 +794,27 @@ impl ServiceManager { // lock. _map: &MutexGuard<'_, ZoneMap>, ) -> Result>, Error> { - // First, try to load the current software's zone ledger. If that - // works, we're done. + // NOTE: This is a function where we used to access zones by "service + // ledgers". This format has since been deprecated, and these files, + // if they exist, should not be used. + // + // We try to clean them up at this spot. Deleting this "removal" code + // in the future should be a safe operation; this is a non-load-bearing + // cleanup. + for path in self.all_service_ledgers().await { + match tokio::fs::remove_file(&path).await { + Ok(_) => (), + Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => (), + Err(e) => { + return Err(Error::io( + "Failed to delete old service ledger", + e, + )) + } + } + } + + // Try to load the current software's zone ledger let log = &self.inner.log; let ledger_paths = self.all_omicron_zone_ledgers().await; info!(log, "Loading Omicron zones from: {ledger_paths:?}"); @@ -787,17 +822,17 @@ impl ServiceManager { Ledger::::new(log, ledger_paths.clone()) .await; - if let Some(ledger) = maybe_ledger { - info!( - log, - "Loaded Omicron zones"; - "zones_config" => ?ledger.data() - ); - return Ok(Some(ledger)); - } + let Some(ledger) = maybe_ledger else { + info!(log, "Loading Omicron zones - No zones detected"); + return Ok(None); + }; - info!(log, "Loading Omicron zones - No zones detected"); - Ok(None) + info!( + log, + "Loaded Omicron zones"; + "zones_config" => ?ledger.data() + ); + Ok(Some(ledger)) } // TODO(https://github.com/oxidecomputer/omicron/issues/2973): diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled10.json b/sled-agent/tests/old-service-ledgers/rack2-sled10.json deleted file mode 100644 index b92a2bf4a0..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled10.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"04eef8aa-055c-42ab-bdb6-c982f63c9be0","zone_type":"crucible","addresses":["fd00:1122:3344:107::d"],"dataset":{"id":"04eef8aa-055c-42ab-bdb6-c982f63c9be0","name":{"pool_name":"oxp_845ff39a-3205-416f-8bda-e35829107c8a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::d]:32345"},"services":[{"id":"04eef8aa-055c-42ab-bdb6-c982f63c9be0","details":{"type":"crucible","address":"[fd00:1122:3344:107::d]:32345"}}]},"root":"/pool/ext/43efdd6d-7419-437a-a282-fc45bfafd042/crypt/zone"},{"zone":{"id":"8568c997-fbbb-46a8-8549-b78284530ffc","zone_type":"crucible","addresses":["fd00:1122:3344:107::5"],"dataset":{"id":"8568c997-fbbb-46a8-8549-b78284530ffc","name":{"pool_name":"oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::5]:32345"},"services":[{"id":"8568c997-fbbb-46a8-8549-b78284530ffc","details":{"type":"crucible","address":"[fd00:1122:3344:107::5]:32345"}}]},"root":"/pool/ext/9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf/crypt/zone"},{"zone":{"id":"6cec1d60-5c1a-4c1b-9632-2b4bc76bd37c","zone_type":"crucible","addresses":["fd00:1122:3344:107::e"],"dataset":{"id":"6cec1d60-5c1a-4c1b-9632-2b4bc76bd37c","name":{"pool_name":"oxp_62a4c68a-2073-42d0-8e49-01f5e8b90cd4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::e]:32345"},"services":[{"id":"6cec1d60-5c1a-4c1b-9632-2b4bc76bd37c","details":{"type":"crucible","address":"[fd00:1122:3344:107::e]:32345"}}]},"root":"/pool/ext/845ff39a-3205-416f-8bda-e35829107c8a/crypt/zone"},{"zone":{"id":"aa646c82-c6d7-4d0c-8401-150130927759","zone_type":"clickhouse","addresses":["fd00:1122:3344:107::4"],"dataset":{"id":"aa646c82-c6d7-4d0c-8401-150130927759","name":{"pool_name":"oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae","kind":{"type":"clickhouse"}},"service_address":"[fd00:1122:3344:107::4]:8123"},"services":[{"id":"aa646c82-c6d7-4d0c-8401-150130927759","details":{"type":"clickhouse","address":"[fd00:1122:3344:107::4]:8123"}}]},"root":"/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone"},{"zone":{"id":"2f294ca1-7a4f-468f-8966-2b7915804729","zone_type":"crucible","addresses":["fd00:1122:3344:107::7"],"dataset":{"id":"2f294ca1-7a4f-468f-8966-2b7915804729","name":{"pool_name":"oxp_43efdd6d-7419-437a-a282-fc45bfafd042","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::7]:32345"},"services":[{"id":"2f294ca1-7a4f-468f-8966-2b7915804729","details":{"type":"crucible","address":"[fd00:1122:3344:107::7]:32345"}}]},"root":"/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone"},{"zone":{"id":"1a77bd1d-4fd4-4d6c-a105-17f942d94ba6","zone_type":"crucible","addresses":["fd00:1122:3344:107::c"],"dataset":{"id":"1a77bd1d-4fd4-4d6c-a105-17f942d94ba6","name":{"pool_name":"oxp_b6bdfdaf-9c0d-4b74-926c-49ff3ed05562","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::c]:32345"},"services":[{"id":"1a77bd1d-4fd4-4d6c-a105-17f942d94ba6","details":{"type":"crucible","address":"[fd00:1122:3344:107::c]:32345"}}]},"root":"/pool/ext/9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf/crypt/zone"},{"zone":{"id":"f65a6668-1aea-4deb-81ed-191fbe469328","zone_type":"crucible","addresses":["fd00:1122:3344:107::9"],"dataset":{"id":"f65a6668-1aea-4deb-81ed-191fbe469328","name":{"pool_name":"oxp_9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::9]:32345"},"services":[{"id":"f65a6668-1aea-4deb-81ed-191fbe469328","details":{"type":"crucible","address":"[fd00:1122:3344:107::9]:32345"}}]},"root":"/pool/ext/d0584f4a-20ba-436d-a75b-7709e80deb79/crypt/zone"},{"zone":{"id":"ee8bce67-8f8e-4221-97b0-85f1860d66d0","zone_type":"crucible","addresses":["fd00:1122:3344:107::8"],"dataset":{"id":"ee8bce67-8f8e-4221-97b0-85f1860d66d0","name":{"pool_name":"oxp_b252b176-3974-436a-915b-60382b21eb76","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::8]:32345"},"services":[{"id":"ee8bce67-8f8e-4221-97b0-85f1860d66d0","details":{"type":"crucible","address":"[fd00:1122:3344:107::8]:32345"}}]},"root":"/pool/ext/b6bdfdaf-9c0d-4b74-926c-49ff3ed05562/crypt/zone"},{"zone":{"id":"cf3b2d54-5e36-4c93-b44f-8bf36ac98071","zone_type":"crucible","addresses":["fd00:1122:3344:107::b"],"dataset":{"id":"cf3b2d54-5e36-4c93-b44f-8bf36ac98071","name":{"pool_name":"oxp_d0584f4a-20ba-436d-a75b-7709e80deb79","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::b]:32345"},"services":[{"id":"cf3b2d54-5e36-4c93-b44f-8bf36ac98071","details":{"type":"crucible","address":"[fd00:1122:3344:107::b]:32345"}}]},"root":"/pool/ext/4c157f35-865d-4310-9d81-c6259cb69293/crypt/zone"},{"zone":{"id":"5c8c244c-00dc-4b16-aa17-6d9eb4827fab","zone_type":"crucible","addresses":["fd00:1122:3344:107::a"],"dataset":{"id":"5c8c244c-00dc-4b16-aa17-6d9eb4827fab","name":{"pool_name":"oxp_4c157f35-865d-4310-9d81-c6259cb69293","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::a]:32345"},"services":[{"id":"5c8c244c-00dc-4b16-aa17-6d9eb4827fab","details":{"type":"crucible","address":"[fd00:1122:3344:107::a]:32345"}}]},"root":"/pool/ext/845ff39a-3205-416f-8bda-e35829107c8a/crypt/zone"},{"zone":{"id":"7d5e942b-926c-442d-937a-76cc4aa72bf3","zone_type":"crucible","addresses":["fd00:1122:3344:107::6"],"dataset":{"id":"7d5e942b-926c-442d-937a-76cc4aa72bf3","name":{"pool_name":"oxp_fd82dcc7-00dd-4d01-826a-937a7d8238fb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::6]:32345"},"services":[{"id":"7d5e942b-926c-442d-937a-76cc4aa72bf3","details":{"type":"crucible","address":"[fd00:1122:3344:107::6]:32345"}}]},"root":"/pool/ext/b252b176-3974-436a-915b-60382b21eb76/crypt/zone"},{"zone":{"id":"a3628a56-6f85-43b5-be50-71d8f0e04877","zone_type":"cockroach_db","addresses":["fd00:1122:3344:107::3"],"dataset":{"id":"a3628a56-6f85-43b5-be50-71d8f0e04877","name":{"pool_name":"oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:107::3]:32221"},"services":[{"id":"a3628a56-6f85-43b5-be50-71d8f0e04877","details":{"type":"cockroach_db","address":"[fd00:1122:3344:107::3]:32221"}}]},"root":"/pool/ext/4c157f35-865d-4310-9d81-c6259cb69293/crypt/zone"},{"zone":{"id":"7529be1c-ca8b-441a-89aa-37166cc450df","zone_type":"ntp","addresses":["fd00:1122:3344:107::f"],"dataset":null,"services":[{"id":"7529be1c-ca8b-441a-89aa-37166cc450df","details":{"type":"internal_ntp","address":"[fd00:1122:3344:107::f]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled11.json b/sled-agent/tests/old-service-ledgers/rack2-sled11.json deleted file mode 100644 index 3833bed5c9..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled11.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"605be8b9-c652-4a5f-94ca-068ec7a39472","zone_type":"crucible","addresses":["fd00:1122:3344:106::a"],"dataset":{"id":"605be8b9-c652-4a5f-94ca-068ec7a39472","name":{"pool_name":"oxp_cf14d1b9-b4db-4594-b3ab-a9957e770ce9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::a]:32345"},"services":[{"id":"605be8b9-c652-4a5f-94ca-068ec7a39472","details":{"type":"crucible","address":"[fd00:1122:3344:106::a]:32345"}}]},"root":"/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone"},{"zone":{"id":"af8a8712-457c-4ea7-a8b6-aecb04761c1b","zone_type":"crucible","addresses":["fd00:1122:3344:106::9"],"dataset":{"id":"af8a8712-457c-4ea7-a8b6-aecb04761c1b","name":{"pool_name":"oxp_cf5f8849-0c5a-475b-8683-6d17da88d1d1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::9]:32345"},"services":[{"id":"af8a8712-457c-4ea7-a8b6-aecb04761c1b","details":{"type":"crucible","address":"[fd00:1122:3344:106::9]:32345"}}]},"root":"/pool/ext/7f778610-7328-4554-98f6-b17f74f551c7/crypt/zone"},{"zone":{"id":"0022703b-dcfc-44d4-897a-b42f6f53b433","zone_type":"crucible","addresses":["fd00:1122:3344:106::c"],"dataset":{"id":"0022703b-dcfc-44d4-897a-b42f6f53b433","name":{"pool_name":"oxp_025725fa-9e40-4b46-b018-c420408394ef","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::c]:32345"},"services":[{"id":"0022703b-dcfc-44d4-897a-b42f6f53b433","details":{"type":"crucible","address":"[fd00:1122:3344:106::c]:32345"}}]},"root":"/pool/ext/025725fa-9e40-4b46-b018-c420408394ef/crypt/zone"},{"zone":{"id":"fffddf56-10ca-4b62-9be3-5b3764a5f682","zone_type":"crucible","addresses":["fd00:1122:3344:106::d"],"dataset":{"id":"fffddf56-10ca-4b62-9be3-5b3764a5f682","name":{"pool_name":"oxp_4d2f5aaf-eb14-4b1e-aa99-ae38ec844605","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::d]:32345"},"services":[{"id":"fffddf56-10ca-4b62-9be3-5b3764a5f682","details":{"type":"crucible","address":"[fd00:1122:3344:106::d]:32345"}}]},"root":"/pool/ext/834c9aad-c53b-4357-bc3f-f422efa63848/crypt/zone"},{"zone":{"id":"9b8194ee-917d-4abc-a55c-94cea6cdaea1","zone_type":"crucible","addresses":["fd00:1122:3344:106::6"],"dataset":{"id":"9b8194ee-917d-4abc-a55c-94cea6cdaea1","name":{"pool_name":"oxp_d7665e0d-9354-4341-a76f-965d7c49f277","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::6]:32345"},"services":[{"id":"9b8194ee-917d-4abc-a55c-94cea6cdaea1","details":{"type":"crucible","address":"[fd00:1122:3344:106::6]:32345"}}]},"root":"/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone"},{"zone":{"id":"b369e133-485c-4d98-8fee-83542d1fd94d","zone_type":"crucible","addresses":["fd00:1122:3344:106::4"],"dataset":{"id":"b369e133-485c-4d98-8fee-83542d1fd94d","name":{"pool_name":"oxp_4366f80d-3902-4b93-8f2d-380008e805fc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::4]:32345"},"services":[{"id":"b369e133-485c-4d98-8fee-83542d1fd94d","details":{"type":"crucible","address":"[fd00:1122:3344:106::4]:32345"}}]},"root":"/pool/ext/025725fa-9e40-4b46-b018-c420408394ef/crypt/zone"},{"zone":{"id":"edd99650-5df1-4241-815d-253e4ef2399c","zone_type":"external_dns","addresses":["fd00:1122:3344:106::3"],"dataset":{"id":"edd99650-5df1-4241-815d-253e4ef2399c","name":{"pool_name":"oxp_4366f80d-3902-4b93-8f2d-380008e805fc","kind":{"type":"external_dns"}},"service_address":"[fd00:1122:3344:106::3]:5353"},"services":[{"id":"edd99650-5df1-4241-815d-253e4ef2399c","details":{"type":"external_dns","http_address":"[fd00:1122:3344:106::3]:5353","dns_address":"172.20.26.1:53","nic":{"id":"99b759fc-8e2e-44b7-aca8-93c3b201974d","kind":{"type":"service","id":"edd99650-5df1-4241-815d-253e4ef2399c"},"name":"external-dns-edd99650-5df1-4241-815d-253e4ef2399c","ip":"172.30.1.5","mac":"A8:40:25:FF:B0:9C","subnet":"172.30.1.0/24","vni":100,"primary":true,"slot":0}}}]},"root":"/pool/ext/7f778610-7328-4554-98f6-b17f74f551c7/crypt/zone"},{"zone":{"id":"46d1afcc-cc3f-4b17-aafc-054dd4862d15","zone_type":"crucible","addresses":["fd00:1122:3344:106::5"],"dataset":{"id":"46d1afcc-cc3f-4b17-aafc-054dd4862d15","name":{"pool_name":"oxp_7f778610-7328-4554-98f6-b17f74f551c7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::5]:32345"},"services":[{"id":"46d1afcc-cc3f-4b17-aafc-054dd4862d15","details":{"type":"crucible","address":"[fd00:1122:3344:106::5]:32345"}}]},"root":"/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone"},{"zone":{"id":"12afe1c3-bfe6-4278-8240-91d401347d36","zone_type":"crucible","addresses":["fd00:1122:3344:106::8"],"dataset":{"id":"12afe1c3-bfe6-4278-8240-91d401347d36","name":{"pool_name":"oxp_534bcd4b-502f-4109-af6e-4b28a22c20f1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::8]:32345"},"services":[{"id":"12afe1c3-bfe6-4278-8240-91d401347d36","details":{"type":"crucible","address":"[fd00:1122:3344:106::8]:32345"}}]},"root":"/pool/ext/4366f80d-3902-4b93-8f2d-380008e805fc/crypt/zone"},{"zone":{"id":"c33b5912-9985-43ed-98f2-41297e2b796a","zone_type":"crucible","addresses":["fd00:1122:3344:106::b"],"dataset":{"id":"c33b5912-9985-43ed-98f2-41297e2b796a","name":{"pool_name":"oxp_834c9aad-c53b-4357-bc3f-f422efa63848","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::b]:32345"},"services":[{"id":"c33b5912-9985-43ed-98f2-41297e2b796a","details":{"type":"crucible","address":"[fd00:1122:3344:106::b]:32345"}}]},"root":"/pool/ext/d7665e0d-9354-4341-a76f-965d7c49f277/crypt/zone"},{"zone":{"id":"65b3db59-9361-4100-9cee-04e32a8c67d3","zone_type":"crucible","addresses":["fd00:1122:3344:106::7"],"dataset":{"id":"65b3db59-9361-4100-9cee-04e32a8c67d3","name":{"pool_name":"oxp_32b5303f-f667-4345-84d2-c7eec63b91b2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::7]:32345"},"services":[{"id":"65b3db59-9361-4100-9cee-04e32a8c67d3","details":{"type":"crucible","address":"[fd00:1122:3344:106::7]:32345"}}]},"root":"/pool/ext/d7665e0d-9354-4341-a76f-965d7c49f277/crypt/zone"},{"zone":{"id":"82500cc9-f33d-4d59-9e6e-d70ea6133077","zone_type":"ntp","addresses":["fd00:1122:3344:106::e"],"dataset":null,"services":[{"id":"82500cc9-f33d-4d59-9e6e-d70ea6133077","details":{"type":"internal_ntp","address":"[fd00:1122:3344:106::e]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/cf14d1b9-b4db-4594-b3ab-a9957e770ce9/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled12.json b/sled-agent/tests/old-service-ledgers/rack2-sled12.json deleted file mode 100644 index 5126c007f3..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled12.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"a76b3357-b690-43b8-8352-3300568ffc2b","zone_type":"crucible","addresses":["fd00:1122:3344:104::a"],"dataset":{"id":"a76b3357-b690-43b8-8352-3300568ffc2b","name":{"pool_name":"oxp_05715ad8-59a1-44ab-ad5f-0cdffb46baab","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::a]:32345"},"services":[{"id":"a76b3357-b690-43b8-8352-3300568ffc2b","details":{"type":"crucible","address":"[fd00:1122:3344:104::a]:32345"}}]},"root":"/pool/ext/2ec2a731-3340-4777-b1bb-4a906c598174/crypt/zone"},{"zone":{"id":"8d202759-ca06-4383-b50f-7f3ec4062bf7","zone_type":"crucible","addresses":["fd00:1122:3344:104::4"],"dataset":{"id":"8d202759-ca06-4383-b50f-7f3ec4062bf7","name":{"pool_name":"oxp_56e32a8f-0877-4437-9cab-94a4928b1495","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::4]:32345"},"services":[{"id":"8d202759-ca06-4383-b50f-7f3ec4062bf7","details":{"type":"crucible","address":"[fd00:1122:3344:104::4]:32345"}}]},"root":"/pool/ext/613b58fc-5a80-42dc-a61c-b143cf220fb5/crypt/zone"},{"zone":{"id":"fcdda266-fc6a-4518-89db-aec007a4b682","zone_type":"crucible","addresses":["fd00:1122:3344:104::b"],"dataset":{"id":"fcdda266-fc6a-4518-89db-aec007a4b682","name":{"pool_name":"oxp_7e1293ad-b903-4054-aeae-2182d5e4a785","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::b]:32345"},"services":[{"id":"fcdda266-fc6a-4518-89db-aec007a4b682","details":{"type":"crucible","address":"[fd00:1122:3344:104::b]:32345"}}]},"root":"/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone"},{"zone":{"id":"167cf6a2-ec51-4de2-bc6c-7785bbc0e436","zone_type":"crucible","addresses":["fd00:1122:3344:104::c"],"dataset":{"id":"167cf6a2-ec51-4de2-bc6c-7785bbc0e436","name":{"pool_name":"oxp_f96c8d49-fdf7-4bd6-84f6-c282202d1abc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::c]:32345"},"services":[{"id":"167cf6a2-ec51-4de2-bc6c-7785bbc0e436","details":{"type":"crucible","address":"[fd00:1122:3344:104::c]:32345"}}]},"root":"/pool/ext/56e32a8f-0877-4437-9cab-94a4928b1495/crypt/zone"},{"zone":{"id":"c6fde82d-8dae-4ef0-b557-6c3d094d9454","zone_type":"crucible","addresses":["fd00:1122:3344:104::9"],"dataset":{"id":"c6fde82d-8dae-4ef0-b557-6c3d094d9454","name":{"pool_name":"oxp_416fd29e-d3b5-4fdf-8101-d0d163fa0706","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::9]:32345"},"services":[{"id":"c6fde82d-8dae-4ef0-b557-6c3d094d9454","details":{"type":"crucible","address":"[fd00:1122:3344:104::9]:32345"}}]},"root":"/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone"},{"zone":{"id":"650f5da7-86a0-4ade-af0f-bc96e021ded0","zone_type":"crucible","addresses":["fd00:1122:3344:104::5"],"dataset":{"id":"650f5da7-86a0-4ade-af0f-bc96e021ded0","name":{"pool_name":"oxp_b4a71d3d-1ecd-418a-9a52-8d118f82082b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::5]:32345"},"services":[{"id":"650f5da7-86a0-4ade-af0f-bc96e021ded0","details":{"type":"crucible","address":"[fd00:1122:3344:104::5]:32345"}}]},"root":"/pool/ext/613b58fc-5a80-42dc-a61c-b143cf220fb5/crypt/zone"},{"zone":{"id":"7ce9a2c5-2d37-4188-b7b5-a9db819396c3","zone_type":"crucible","addresses":["fd00:1122:3344:104::d"],"dataset":{"id":"7ce9a2c5-2d37-4188-b7b5-a9db819396c3","name":{"pool_name":"oxp_c87d16b8-e814-4159-8562-f8d7fdd19d13","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::d]:32345"},"services":[{"id":"7ce9a2c5-2d37-4188-b7b5-a9db819396c3","details":{"type":"crucible","address":"[fd00:1122:3344:104::d]:32345"}}]},"root":"/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone"},{"zone":{"id":"23e1cf01-70ab-422f-997b-6216158965c3","zone_type":"crucible","addresses":["fd00:1122:3344:104::8"],"dataset":{"id":"23e1cf01-70ab-422f-997b-6216158965c3","name":{"pool_name":"oxp_3af01cc4-1f16-47d9-a489-abafcb91c2db","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::8]:32345"},"services":[{"id":"23e1cf01-70ab-422f-997b-6216158965c3","details":{"type":"crucible","address":"[fd00:1122:3344:104::8]:32345"}}]},"root":"/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone"},{"zone":{"id":"50209816-89fb-48ed-9595-16899d114844","zone_type":"crucible","addresses":["fd00:1122:3344:104::6"],"dataset":{"id":"50209816-89fb-48ed-9595-16899d114844","name":{"pool_name":"oxp_2ec2a731-3340-4777-b1bb-4a906c598174","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::6]:32345"},"services":[{"id":"50209816-89fb-48ed-9595-16899d114844","details":{"type":"crucible","address":"[fd00:1122:3344:104::6]:32345"}}]},"root":"/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone"},{"zone":{"id":"20b100d0-84c3-4119-aa9b-0c632b0b6a3a","zone_type":"nexus","addresses":["fd00:1122:3344:104::3"],"dataset":null,"services":[{"id":"20b100d0-84c3-4119-aa9b-0c632b0b6a3a","details":{"type":"nexus","internal_address":"[fd00:1122:3344:104::3]:12221","external_ip":"172.20.26.4","nic":{"id":"364b0ecd-bf08-4cac-a993-bbf4a70564c7","kind":{"type":"service","id":"20b100d0-84c3-4119-aa9b-0c632b0b6a3a"},"name":"nexus-20b100d0-84c3-4119-aa9b-0c632b0b6a3a","ip":"172.30.2.6","mac":"A8:40:25:FF:B4:C1","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","9.9.9.9"]}}]},"root":"/pool/ext/c87d16b8-e814-4159-8562-f8d7fdd19d13/crypt/zone"},{"zone":{"id":"8bc0f29e-0c20-437e-b8ca-7b9844acda22","zone_type":"crucible","addresses":["fd00:1122:3344:104::7"],"dataset":{"id":"8bc0f29e-0c20-437e-b8ca-7b9844acda22","name":{"pool_name":"oxp_613b58fc-5a80-42dc-a61c-b143cf220fb5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::7]:32345"},"services":[{"id":"8bc0f29e-0c20-437e-b8ca-7b9844acda22","details":{"type":"crucible","address":"[fd00:1122:3344:104::7]:32345"}}]},"root":"/pool/ext/56e32a8f-0877-4437-9cab-94a4928b1495/crypt/zone"},{"zone":{"id":"c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55","zone_type":"ntp","addresses":["fd00:1122:3344:104::e"],"dataset":null,"services":[{"id":"c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55","details":{"type":"boundary_ntp","address":"[fd00:1122:3344:104::e]:123","ntp_servers":["ntp.eng.oxide.computer"],"dns_servers":["1.1.1.1","9.9.9.9"],"domain":null,"nic":{"id":"a4b9bacf-6c04-431a-81ad-9bf0302af96e","kind":{"type":"service","id":"c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55"},"name":"ntp-c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55","ip":"172.30.3.5","mac":"A8:40:25:FF:B2:52","subnet":"172.30.3.0/24","vni":100,"primary":true,"slot":0},"snat_cfg":{"ip":"172.20.26.6","first_port":0,"last_port":16383}}}]},"root":"/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone"},{"zone":{"id":"51c9ad09-7814-4643-8ad4-689ccbe53fbd","zone_type":"internal_dns","addresses":["fd00:1122:3344:1::1"],"dataset":{"id":"51c9ad09-7814-4643-8ad4-689ccbe53fbd","name":{"pool_name":"oxp_56e32a8f-0877-4437-9cab-94a4928b1495","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:1::1]:5353"},"services":[{"id":"51c9ad09-7814-4643-8ad4-689ccbe53fbd","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:1::1]:5353","dns_address":"[fd00:1122:3344:1::1]:53","gz_address":"fd00:1122:3344:1::2","gz_address_index":0}}]},"root":"/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled14.json b/sled-agent/tests/old-service-ledgers/rack2-sled14.json deleted file mode 100644 index 421e21d84d..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled14.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"ee8b2cfa-87fe-46a6-98ef-23640b80a968","zone_type":"crucible","addresses":["fd00:1122:3344:10b::d"],"dataset":{"id":"ee8b2cfa-87fe-46a6-98ef-23640b80a968","name":{"pool_name":"oxp_4a624324-003a-4255-98e8-546a90b5b7fa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::d]:32345"},"services":[{"id":"ee8b2cfa-87fe-46a6-98ef-23640b80a968","details":{"type":"crucible","address":"[fd00:1122:3344:10b::d]:32345"}}]},"root":"/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone"},{"zone":{"id":"9228f8ca-2a83-439f-9cb7-f2801b5fea27","zone_type":"crucible","addresses":["fd00:1122:3344:10b::6"],"dataset":{"id":"9228f8ca-2a83-439f-9cb7-f2801b5fea27","name":{"pool_name":"oxp_6b9ec5f1-859f-459c-9c06-6a51ba87786f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::6]:32345"},"services":[{"id":"9228f8ca-2a83-439f-9cb7-f2801b5fea27","details":{"type":"crucible","address":"[fd00:1122:3344:10b::6]:32345"}}]},"root":"/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone"},{"zone":{"id":"ee44cdde-7ac9-4469-9f1d-e8bcfeb5cc46","zone_type":"crucible","addresses":["fd00:1122:3344:10b::e"],"dataset":{"id":"ee44cdde-7ac9-4469-9f1d-e8bcfeb5cc46","name":{"pool_name":"oxp_11b02ce7-7e50-486f-86c2-de8af9575a45","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::e]:32345"},"services":[{"id":"ee44cdde-7ac9-4469-9f1d-e8bcfeb5cc46","details":{"type":"crucible","address":"[fd00:1122:3344:10b::e]:32345"}}]},"root":"/pool/ext/11b02ce7-7e50-486f-86c2-de8af9575a45/crypt/zone"},{"zone":{"id":"96bac0b1-8b34-4c81-9e76-6404d2c37630","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:10b::4"],"dataset":null,"services":[{"id":"96bac0b1-8b34-4c81-9e76-6404d2c37630","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:10b::4]:17000"}}]},"root":"/pool/ext/350b2814-7b7f-40f1-9bf6-9818a1ef49bb/crypt/zone"},{"zone":{"id":"d4e1e554-7b98-4413-809e-4a42561c3d0c","zone_type":"crucible","addresses":["fd00:1122:3344:10b::a"],"dataset":{"id":"d4e1e554-7b98-4413-809e-4a42561c3d0c","name":{"pool_name":"oxp_e6d2fe1d-c74d-40cd-8fae-bc7d06bdaac8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::a]:32345"},"services":[{"id":"d4e1e554-7b98-4413-809e-4a42561c3d0c","details":{"type":"crucible","address":"[fd00:1122:3344:10b::a]:32345"}}]},"root":"/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone"},{"zone":{"id":"1dd69b02-a032-46c3-8e2a-5012e8314455","zone_type":"crucible","addresses":["fd00:1122:3344:10b::b"],"dataset":{"id":"1dd69b02-a032-46c3-8e2a-5012e8314455","name":{"pool_name":"oxp_350b2814-7b7f-40f1-9bf6-9818a1ef49bb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::b]:32345"},"services":[{"id":"1dd69b02-a032-46c3-8e2a-5012e8314455","details":{"type":"crucible","address":"[fd00:1122:3344:10b::b]:32345"}}]},"root":"/pool/ext/350b2814-7b7f-40f1-9bf6-9818a1ef49bb/crypt/zone"},{"zone":{"id":"921f7752-d2f3-40df-a739-5cb1390abc2c","zone_type":"crucible","addresses":["fd00:1122:3344:10b::8"],"dataset":{"id":"921f7752-d2f3-40df-a739-5cb1390abc2c","name":{"pool_name":"oxp_2d1ebe24-6deb-4f81-8450-6842de28126c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::8]:32345"},"services":[{"id":"921f7752-d2f3-40df-a739-5cb1390abc2c","details":{"type":"crucible","address":"[fd00:1122:3344:10b::8]:32345"}}]},"root":"/pool/ext/91ea7bb6-2be7-4498-9b0d-a0521509ec00/crypt/zone"},{"zone":{"id":"609b25e8-9750-4308-ae6f-7202907a3675","zone_type":"crucible","addresses":["fd00:1122:3344:10b::9"],"dataset":{"id":"609b25e8-9750-4308-ae6f-7202907a3675","name":{"pool_name":"oxp_91ea7bb6-2be7-4498-9b0d-a0521509ec00","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::9]:32345"},"services":[{"id":"609b25e8-9750-4308-ae6f-7202907a3675","details":{"type":"crucible","address":"[fd00:1122:3344:10b::9]:32345"}}]},"root":"/pool/ext/2d1ebe24-6deb-4f81-8450-6842de28126c/crypt/zone"},{"zone":{"id":"a232eba2-e94f-4592-a5a6-ec23f9be3296","zone_type":"crucible","addresses":["fd00:1122:3344:10b::5"],"dataset":{"id":"a232eba2-e94f-4592-a5a6-ec23f9be3296","name":{"pool_name":"oxp_e12f29b8-1ab8-431e-bc96-1c1298947980","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::5]:32345"},"services":[{"id":"a232eba2-e94f-4592-a5a6-ec23f9be3296","details":{"type":"crucible","address":"[fd00:1122:3344:10b::5]:32345"}}]},"root":"/pool/ext/021afd19-2f87-4def-9284-ab7add1dd6ae/crypt/zone"},{"zone":{"id":"800d1758-9312-4b1a-8f02-dc6d644c2a9b","zone_type":"crucible","addresses":["fd00:1122:3344:10b::c"],"dataset":{"id":"800d1758-9312-4b1a-8f02-dc6d644c2a9b","name":{"pool_name":"oxp_b6932bb0-bab8-4876-914a-9c75a600e794","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::c]:32345"},"services":[{"id":"800d1758-9312-4b1a-8f02-dc6d644c2a9b","details":{"type":"crucible","address":"[fd00:1122:3344:10b::c]:32345"}}]},"root":"/pool/ext/b6932bb0-bab8-4876-914a-9c75a600e794/crypt/zone"},{"zone":{"id":"668a4d4a-96dc-4b45-866b-bed3d64c26ec","zone_type":"crucible","addresses":["fd00:1122:3344:10b::7"],"dataset":{"id":"668a4d4a-96dc-4b45-866b-bed3d64c26ec","name":{"pool_name":"oxp_021afd19-2f87-4def-9284-ab7add1dd6ae","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::7]:32345"},"services":[{"id":"668a4d4a-96dc-4b45-866b-bed3d64c26ec","details":{"type":"crucible","address":"[fd00:1122:3344:10b::7]:32345"}}]},"root":"/pool/ext/91ea7bb6-2be7-4498-9b0d-a0521509ec00/crypt/zone"},{"zone":{"id":"8bbea076-ff60-4330-8302-383e18140ef3","zone_type":"cockroach_db","addresses":["fd00:1122:3344:10b::3"],"dataset":{"id":"8bbea076-ff60-4330-8302-383e18140ef3","name":{"pool_name":"oxp_e12f29b8-1ab8-431e-bc96-1c1298947980","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:10b::3]:32221"},"services":[{"id":"8bbea076-ff60-4330-8302-383e18140ef3","details":{"type":"cockroach_db","address":"[fd00:1122:3344:10b::3]:32221"}}]},"root":"/pool/ext/4a624324-003a-4255-98e8-546a90b5b7fa/crypt/zone"},{"zone":{"id":"3ccea933-89f2-4ce5-8367-efb0afeffe97","zone_type":"ntp","addresses":["fd00:1122:3344:10b::f"],"dataset":null,"services":[{"id":"3ccea933-89f2-4ce5-8367-efb0afeffe97","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10b::f]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/4a624324-003a-4255-98e8-546a90b5b7fa/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled16.json b/sled-agent/tests/old-service-ledgers/rack2-sled16.json deleted file mode 100644 index c928e004b2..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled16.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"b12aa520-a769-4eac-b56b-09960550a831","zone_type":"crucible","addresses":["fd00:1122:3344:108::7"],"dataset":{"id":"b12aa520-a769-4eac-b56b-09960550a831","name":{"pool_name":"oxp_34dadf3f-f60c-4acc-b82b-4b0c82224222","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::7]:32345"},"services":[{"id":"b12aa520-a769-4eac-b56b-09960550a831","details":{"type":"crucible","address":"[fd00:1122:3344:108::7]:32345"}}]},"root":"/pool/ext/8be8c577-23ac-452e-a205-6d9c95088f61/crypt/zone"},{"zone":{"id":"9bdc40ee-ccba-4d18-9efb-a30596e2d290","zone_type":"crucible","addresses":["fd00:1122:3344:108::d"],"dataset":{"id":"9bdc40ee-ccba-4d18-9efb-a30596e2d290","name":{"pool_name":"oxp_eb81728c-3b83-42fb-8133-ac32a0bdf70f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::d]:32345"},"services":[{"id":"9bdc40ee-ccba-4d18-9efb-a30596e2d290","details":{"type":"crucible","address":"[fd00:1122:3344:108::d]:32345"}}]},"root":"/pool/ext/8be8c577-23ac-452e-a205-6d9c95088f61/crypt/zone"},{"zone":{"id":"c9a367c7-64d7-48e4-b484-9ecb4e8faea7","zone_type":"crucible","addresses":["fd00:1122:3344:108::9"],"dataset":{"id":"c9a367c7-64d7-48e4-b484-9ecb4e8faea7","name":{"pool_name":"oxp_76ab5a67-e20f-4bf0-87b3-01fcc4144bd2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::9]:32345"},"services":[{"id":"c9a367c7-64d7-48e4-b484-9ecb4e8faea7","details":{"type":"crucible","address":"[fd00:1122:3344:108::9]:32345"}}]},"root":"/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone"},{"zone":{"id":"bc5124d8-65e8-4879-bfac-64d59003d482","zone_type":"crucible","addresses":["fd00:1122:3344:108::a"],"dataset":{"id":"bc5124d8-65e8-4879-bfac-64d59003d482","name":{"pool_name":"oxp_5fac7a1d-e855-46e1-b8c2-dd848ac4fee6","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::a]:32345"},"services":[{"id":"bc5124d8-65e8-4879-bfac-64d59003d482","details":{"type":"crucible","address":"[fd00:1122:3344:108::a]:32345"}}]},"root":"/pool/ext/0c4ef358-5533-43db-ad38-a8eff716e53a/crypt/zone"},{"zone":{"id":"5cc7c840-8e6b-48c8-ac4b-f4297f8cf61a","zone_type":"crucible","addresses":["fd00:1122:3344:108::c"],"dataset":{"id":"5cc7c840-8e6b-48c8-ac4b-f4297f8cf61a","name":{"pool_name":"oxp_0c4ef358-5533-43db-ad38-a8eff716e53a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::c]:32345"},"services":[{"id":"5cc7c840-8e6b-48c8-ac4b-f4297f8cf61a","details":{"type":"crucible","address":"[fd00:1122:3344:108::c]:32345"}}]},"root":"/pool/ext/6d3e9cc6-f03b-4055-9785-05711d5e4fdc/crypt/zone"},{"zone":{"id":"3b767edf-a72d-4d80-a0fc-65d6801ed0e0","zone_type":"crucible","addresses":["fd00:1122:3344:108::e"],"dataset":{"id":"3b767edf-a72d-4d80-a0fc-65d6801ed0e0","name":{"pool_name":"oxp_f522118c-5dcd-4116-8044-07f0cceec52e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::e]:32345"},"services":[{"id":"3b767edf-a72d-4d80-a0fc-65d6801ed0e0","details":{"type":"crucible","address":"[fd00:1122:3344:108::e]:32345"}}]},"root":"/pool/ext/5fac7a1d-e855-46e1-b8c2-dd848ac4fee6/crypt/zone"},{"zone":{"id":"f3c02ed6-fbc5-45c3-a030-409f74b450fd","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:108::4"],"dataset":null,"services":[{"id":"f3c02ed6-fbc5-45c3-a030-409f74b450fd","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:108::4]:17000"}}]},"root":"/pool/ext/eb81728c-3b83-42fb-8133-ac32a0bdf70f/crypt/zone"},{"zone":{"id":"85bd9bdb-1ec5-4a8d-badb-8b5d502546a1","zone_type":"crucible","addresses":["fd00:1122:3344:108::5"],"dataset":{"id":"85bd9bdb-1ec5-4a8d-badb-8b5d502546a1","name":{"pool_name":"oxp_416232c1-bc8f-403f-bacb-28403dd8fced","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::5]:32345"},"services":[{"id":"85bd9bdb-1ec5-4a8d-badb-8b5d502546a1","details":{"type":"crucible","address":"[fd00:1122:3344:108::5]:32345"}}]},"root":"/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone"},{"zone":{"id":"d2f1c3df-d4e0-4469-b50e-f1871da86ebf","zone_type":"crucible","addresses":["fd00:1122:3344:108::6"],"dataset":{"id":"d2f1c3df-d4e0-4469-b50e-f1871da86ebf","name":{"pool_name":"oxp_6d3e9cc6-f03b-4055-9785-05711d5e4fdc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::6]:32345"},"services":[{"id":"d2f1c3df-d4e0-4469-b50e-f1871da86ebf","details":{"type":"crucible","address":"[fd00:1122:3344:108::6]:32345"}}]},"root":"/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone"},{"zone":{"id":"88fe3c12-4c55-47df-b4ee-ed26b795439d","zone_type":"crucible","addresses":["fd00:1122:3344:108::8"],"dataset":{"id":"88fe3c12-4c55-47df-b4ee-ed26b795439d","name":{"pool_name":"oxp_8be8c577-23ac-452e-a205-6d9c95088f61","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::8]:32345"},"services":[{"id":"88fe3c12-4c55-47df-b4ee-ed26b795439d","details":{"type":"crucible","address":"[fd00:1122:3344:108::8]:32345"}}]},"root":"/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone"},{"zone":{"id":"4d20175a-588b-44b8-8b9c-b16c6c3a97a0","zone_type":"crucible","addresses":["fd00:1122:3344:108::b"],"dataset":{"id":"4d20175a-588b-44b8-8b9c-b16c6c3a97a0","name":{"pool_name":"oxp_a726cacd-fa35-4ed2-ade6-31ad928b24cb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::b]:32345"},"services":[{"id":"4d20175a-588b-44b8-8b9c-b16c6c3a97a0","details":{"type":"crucible","address":"[fd00:1122:3344:108::b]:32345"}}]},"root":"/pool/ext/0c4ef358-5533-43db-ad38-a8eff716e53a/crypt/zone"},{"zone":{"id":"e86845b5-eabd-49f5-9a10-6dfef9066209","zone_type":"cockroach_db","addresses":["fd00:1122:3344:108::3"],"dataset":{"id":"e86845b5-eabd-49f5-9a10-6dfef9066209","name":{"pool_name":"oxp_416232c1-bc8f-403f-bacb-28403dd8fced","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:108::3]:32221"},"services":[{"id":"e86845b5-eabd-49f5-9a10-6dfef9066209","details":{"type":"cockroach_db","address":"[fd00:1122:3344:108::3]:32221"}}]},"root":"/pool/ext/416232c1-bc8f-403f-bacb-28403dd8fced/crypt/zone"},{"zone":{"id":"209b6213-588b-43b6-a89b-19ee5c84ffba","zone_type":"ntp","addresses":["fd00:1122:3344:108::f"],"dataset":null,"services":[{"id":"209b6213-588b-43b6-a89b-19ee5c84ffba","details":{"type":"internal_ntp","address":"[fd00:1122:3344:108::f]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/416232c1-bc8f-403f-bacb-28403dd8fced/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled17.json b/sled-agent/tests/old-service-ledgers/rack2-sled17.json deleted file mode 100644 index 93872adf13..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled17.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"90b53c3d-42fa-4ca9-bbfc-96fff245b508","zone_type":"crucible","addresses":["fd00:1122:3344:109::4"],"dataset":{"id":"90b53c3d-42fa-4ca9-bbfc-96fff245b508","name":{"pool_name":"oxp_ae56280b-17ce-4266-8573-e1da9db6c6bb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::4]:32345"},"services":[{"id":"90b53c3d-42fa-4ca9-bbfc-96fff245b508","details":{"type":"crucible","address":"[fd00:1122:3344:109::4]:32345"}}]},"root":"/pool/ext/b0e1a261-b932-47c4-81e9-1977275ae9d9/crypt/zone"},{"zone":{"id":"4f9f2e1d-be04-4e8b-a50b-ffb18557a650","zone_type":"crucible","addresses":["fd00:1122:3344:109::5"],"dataset":{"id":"4f9f2e1d-be04-4e8b-a50b-ffb18557a650","name":{"pool_name":"oxp_d5b07362-64db-4b18-a3e9-8d7cbabae2d5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::5]:32345"},"services":[{"id":"4f9f2e1d-be04-4e8b-a50b-ffb18557a650","details":{"type":"crucible","address":"[fd00:1122:3344:109::5]:32345"}}]},"root":"/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone"},{"zone":{"id":"2fa5671d-3109-4f11-ae70-1280f4fa3b89","zone_type":"crucible","addresses":["fd00:1122:3344:109::6"],"dataset":{"id":"2fa5671d-3109-4f11-ae70-1280f4fa3b89","name":{"pool_name":"oxp_9ba7bfbf-b9a2-4237-a142-94c1e68de984","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::6]:32345"},"services":[{"id":"2fa5671d-3109-4f11-ae70-1280f4fa3b89","details":{"type":"crucible","address":"[fd00:1122:3344:109::6]:32345"}}]},"root":"/pool/ext/3cafbb47-c194-4a42-99ff-34dfeab999ed/crypt/zone"},{"zone":{"id":"b63c6882-ca90-4156-b561-4781ab4a0962","zone_type":"crucible","addresses":["fd00:1122:3344:109::7"],"dataset":{"id":"b63c6882-ca90-4156-b561-4781ab4a0962","name":{"pool_name":"oxp_b0e1a261-b932-47c4-81e9-1977275ae9d9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::7]:32345"},"services":[{"id":"b63c6882-ca90-4156-b561-4781ab4a0962","details":{"type":"crucible","address":"[fd00:1122:3344:109::7]:32345"}}]},"root":"/pool/ext/d5b07362-64db-4b18-a3e9-8d7cbabae2d5/crypt/zone"},{"zone":{"id":"f71344eb-f7e2-439d-82a0-9941e6868fb6","zone_type":"crucible","addresses":["fd00:1122:3344:109::9"],"dataset":{"id":"f71344eb-f7e2-439d-82a0-9941e6868fb6","name":{"pool_name":"oxp_027a82e8-daa3-4fa6-8205-ed03445e1086","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::9]:32345"},"services":[{"id":"f71344eb-f7e2-439d-82a0-9941e6868fb6","details":{"type":"crucible","address":"[fd00:1122:3344:109::9]:32345"}}]},"root":"/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone"},{"zone":{"id":"a60cf0d7-12d5-43cb-aa3f-7a9e84de08fb","zone_type":"crucible","addresses":["fd00:1122:3344:109::a"],"dataset":{"id":"a60cf0d7-12d5-43cb-aa3f-7a9e84de08fb","name":{"pool_name":"oxp_8736aaf9-4d72-42b1-8e4f-07644d999c8b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::a]:32345"},"services":[{"id":"a60cf0d7-12d5-43cb-aa3f-7a9e84de08fb","details":{"type":"crucible","address":"[fd00:1122:3344:109::a]:32345"}}]},"root":"/pool/ext/8736aaf9-4d72-42b1-8e4f-07644d999c8b/crypt/zone"},{"zone":{"id":"5d0e03b2-8958-4c43-8851-bf819f102958","zone_type":"crucible","addresses":["fd00:1122:3344:109::8"],"dataset":{"id":"5d0e03b2-8958-4c43-8851-bf819f102958","name":{"pool_name":"oxp_62426615-7832-49e7-9426-e39ffeb42c69","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::8]:32345"},"services":[{"id":"5d0e03b2-8958-4c43-8851-bf819f102958","details":{"type":"crucible","address":"[fd00:1122:3344:109::8]:32345"}}]},"root":"/pool/ext/07fc8ec9-1216-4d98-be34-c2970b585e61/crypt/zone"},{"zone":{"id":"accc05a2-ec80-4856-a825-ec6b7f700eaa","zone_type":"crucible","addresses":["fd00:1122:3344:109::d"],"dataset":{"id":"accc05a2-ec80-4856-a825-ec6b7f700eaa","name":{"pool_name":"oxp_dc083c53-7014-4482-8a79-f338ba2b0fb4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::d]:32345"},"services":[{"id":"accc05a2-ec80-4856-a825-ec6b7f700eaa","details":{"type":"crucible","address":"[fd00:1122:3344:109::d]:32345"}}]},"root":"/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone"},{"zone":{"id":"2e32fdcc-737a-4430-8290-cb7028ea4d50","zone_type":"crucible","addresses":["fd00:1122:3344:109::b"],"dataset":{"id":"2e32fdcc-737a-4430-8290-cb7028ea4d50","name":{"pool_name":"oxp_3cafbb47-c194-4a42-99ff-34dfeab999ed","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::b]:32345"},"services":[{"id":"2e32fdcc-737a-4430-8290-cb7028ea4d50","details":{"type":"crucible","address":"[fd00:1122:3344:109::b]:32345"}}]},"root":"/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone"},{"zone":{"id":"a97c6ae2-37f6-4d93-a66e-cb5cd3c6aaa2","zone_type":"crucible","addresses":["fd00:1122:3344:109::c"],"dataset":{"id":"a97c6ae2-37f6-4d93-a66e-cb5cd3c6aaa2","name":{"pool_name":"oxp_07fc8ec9-1216-4d98-be34-c2970b585e61","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::c]:32345"},"services":[{"id":"a97c6ae2-37f6-4d93-a66e-cb5cd3c6aaa2","details":{"type":"crucible","address":"[fd00:1122:3344:109::c]:32345"}}]},"root":"/pool/ext/07fc8ec9-1216-4d98-be34-c2970b585e61/crypt/zone"},{"zone":{"id":"3237a532-acaa-4ebe-bf11-dde794fea739","zone_type":"cockroach_db","addresses":["fd00:1122:3344:109::3"],"dataset":{"id":"3237a532-acaa-4ebe-bf11-dde794fea739","name":{"pool_name":"oxp_ae56280b-17ce-4266-8573-e1da9db6c6bb","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:109::3]:32221"},"services":[{"id":"3237a532-acaa-4ebe-bf11-dde794fea739","details":{"type":"cockroach_db","address":"[fd00:1122:3344:109::3]:32221"}}]},"root":"/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone"},{"zone":{"id":"83257100-5590-484a-b72a-a079389d8da6","zone_type":"ntp","addresses":["fd00:1122:3344:109::e"],"dataset":null,"services":[{"id":"83257100-5590-484a-b72a-a079389d8da6","details":{"type":"internal_ntp","address":"[fd00:1122:3344:109::e]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/3cafbb47-c194-4a42-99ff-34dfeab999ed/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled21.json b/sled-agent/tests/old-service-ledgers/rack2-sled21.json deleted file mode 100644 index 78e003f79e..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled21.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"0437b69d-73a8-4231-86f9-6b5556e7e7ef","zone_type":"crucible","addresses":["fd00:1122:3344:102::5"],"dataset":{"id":"0437b69d-73a8-4231-86f9-6b5556e7e7ef","name":{"pool_name":"oxp_aa0ffe35-76db-42ab-adf2-ceb072bdf811","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::5]:32345"},"services":[{"id":"0437b69d-73a8-4231-86f9-6b5556e7e7ef","details":{"type":"crucible","address":"[fd00:1122:3344:102::5]:32345"}}]},"root":"/pool/ext/0d2805da-6d24-4e57-a700-0c3865c05544/crypt/zone"},{"zone":{"id":"47234ca5-305f-436a-9e9a-36bca9667680","zone_type":"crucible","addresses":["fd00:1122:3344:102::b"],"dataset":{"id":"47234ca5-305f-436a-9e9a-36bca9667680","name":{"pool_name":"oxp_0d2805da-6d24-4e57-a700-0c3865c05544","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::b]:32345"},"services":[{"id":"47234ca5-305f-436a-9e9a-36bca9667680","details":{"type":"crucible","address":"[fd00:1122:3344:102::b]:32345"}}]},"root":"/pool/ext/160691d8-33a1-4d7d-a48a-c3fd27d76822/crypt/zone"},{"zone":{"id":"2898657e-4141-4c05-851b-147bffc6bbbd","zone_type":"nexus","addresses":["fd00:1122:3344:102::3"],"dataset":null,"services":[{"id":"2898657e-4141-4c05-851b-147bffc6bbbd","details":{"type":"nexus","internal_address":"[fd00:1122:3344:102::3]:12221","external_ip":"172.20.26.5","nic":{"id":"2e9a412e-c79a-48fe-8fa4-f5a6afed1040","kind":{"type":"service","id":"2898657e-4141-4c05-851b-147bffc6bbbd"},"name":"nexus-2898657e-4141-4c05-851b-147bffc6bbbd","ip":"172.30.2.7","mac":"A8:40:25:FF:C6:59","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","9.9.9.9"]}}]},"root":"/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone"},{"zone":{"id":"cf98c4d6-4a7b-49c0-9b14-48a8adf52ce9","zone_type":"crucible","addresses":["fd00:1122:3344:102::c"],"dataset":{"id":"cf98c4d6-4a7b-49c0-9b14-48a8adf52ce9","name":{"pool_name":"oxp_c0b4ecc1-a145-443f-90d1-2e8136b007bc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::c]:32345"},"services":[{"id":"cf98c4d6-4a7b-49c0-9b14-48a8adf52ce9","details":{"type":"crucible","address":"[fd00:1122:3344:102::c]:32345"}}]},"root":"/pool/ext/f6acd70a-d6cb-464d-a460-dd5c60301562/crypt/zone"},{"zone":{"id":"13c1e91e-bfcc-4eea-8185-412fc37fdea3","zone_type":"crucible","addresses":["fd00:1122:3344:102::9"],"dataset":{"id":"13c1e91e-bfcc-4eea-8185-412fc37fdea3","name":{"pool_name":"oxp_e9b0a2e4-8060-41bd-a3b5-d0642246d06d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::9]:32345"},"services":[{"id":"13c1e91e-bfcc-4eea-8185-412fc37fdea3","details":{"type":"crucible","address":"[fd00:1122:3344:102::9]:32345"}}]},"root":"/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone"},{"zone":{"id":"c9cb60af-9e0e-4b3b-b971-53138a9b8d27","zone_type":"crucible","addresses":["fd00:1122:3344:102::4"],"dataset":{"id":"c9cb60af-9e0e-4b3b-b971-53138a9b8d27","name":{"pool_name":"oxp_77749ec7-39a9-489d-904b-87f7223c4e3c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::4]:32345"},"services":[{"id":"c9cb60af-9e0e-4b3b-b971-53138a9b8d27","details":{"type":"crucible","address":"[fd00:1122:3344:102::4]:32345"}}]},"root":"/pool/ext/77749ec7-39a9-489d-904b-87f7223c4e3c/crypt/zone"},{"zone":{"id":"32995cfa-47ec-4b84-8514-7c1c8a86c19d","zone_type":"crucible","addresses":["fd00:1122:3344:102::8"],"dataset":{"id":"32995cfa-47ec-4b84-8514-7c1c8a86c19d","name":{"pool_name":"oxp_eac83f81-eb51-4f3e-874e-82f55dd952ba","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::8]:32345"},"services":[{"id":"32995cfa-47ec-4b84-8514-7c1c8a86c19d","details":{"type":"crucible","address":"[fd00:1122:3344:102::8]:32345"}}]},"root":"/pool/ext/0d2805da-6d24-4e57-a700-0c3865c05544/crypt/zone"},{"zone":{"id":"b93d2e2d-d54b-4503-85c3-9878e3cee9c7","zone_type":"crucible","addresses":["fd00:1122:3344:102::a"],"dataset":{"id":"b93d2e2d-d54b-4503-85c3-9878e3cee9c7","name":{"pool_name":"oxp_160691d8-33a1-4d7d-a48a-c3fd27d76822","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::a]:32345"},"services":[{"id":"b93d2e2d-d54b-4503-85c3-9878e3cee9c7","details":{"type":"crucible","address":"[fd00:1122:3344:102::a]:32345"}}]},"root":"/pool/ext/138663ad-a382-4595-baf0-08f6b0276a67/crypt/zone"},{"zone":{"id":"2ebbac4f-7b0f-43eb-99fd-dd6ff7f9e097","zone_type":"crucible","addresses":["fd00:1122:3344:102::6"],"dataset":{"id":"2ebbac4f-7b0f-43eb-99fd-dd6ff7f9e097","name":{"pool_name":"oxp_138663ad-a382-4595-baf0-08f6b0276a67","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::6]:32345"},"services":[{"id":"2ebbac4f-7b0f-43eb-99fd-dd6ff7f9e097","details":{"type":"crucible","address":"[fd00:1122:3344:102::6]:32345"}}]},"root":"/pool/ext/e9b0a2e4-8060-41bd-a3b5-d0642246d06d/crypt/zone"},{"zone":{"id":"d0eea3b2-e5ac-42bf-97b7-531b78fa06d1","zone_type":"crucible","addresses":["fd00:1122:3344:102::7"],"dataset":{"id":"d0eea3b2-e5ac-42bf-97b7-531b78fa06d1","name":{"pool_name":"oxp_69f0b863-f73f-42b2-9822-b2cb99f09003","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::7]:32345"},"services":[{"id":"d0eea3b2-e5ac-42bf-97b7-531b78fa06d1","details":{"type":"crucible","address":"[fd00:1122:3344:102::7]:32345"}}]},"root":"/pool/ext/138663ad-a382-4595-baf0-08f6b0276a67/crypt/zone"},{"zone":{"id":"2b34cd1d-ea7d-41a1-82b9-75550fdf6eb0","zone_type":"crucible","addresses":["fd00:1122:3344:102::d"],"dataset":{"id":"2b34cd1d-ea7d-41a1-82b9-75550fdf6eb0","name":{"pool_name":"oxp_f6acd70a-d6cb-464d-a460-dd5c60301562","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::d]:32345"},"services":[{"id":"2b34cd1d-ea7d-41a1-82b9-75550fdf6eb0","details":{"type":"crucible","address":"[fd00:1122:3344:102::d]:32345"}}]},"root":"/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone"},{"zone":{"id":"6ea2684c-115e-48a6-8453-ab52d1cecd73","zone_type":"ntp","addresses":["fd00:1122:3344:102::e"],"dataset":null,"services":[{"id":"6ea2684c-115e-48a6-8453-ab52d1cecd73","details":{"type":"boundary_ntp","address":"[fd00:1122:3344:102::e]:123","ntp_servers":["ntp.eng.oxide.computer"],"dns_servers":["1.1.1.1","9.9.9.9"],"domain":null,"nic":{"id":"4effd079-ed4e-4cf6-8545-bb9574f516d2","kind":{"type":"service","id":"6ea2684c-115e-48a6-8453-ab52d1cecd73"},"name":"ntp-6ea2684c-115e-48a6-8453-ab52d1cecd73","ip":"172.30.3.6","mac":"A8:40:25:FF:A0:F9","subnet":"172.30.3.0/24","vni":100,"primary":true,"slot":0},"snat_cfg":{"ip":"172.20.26.7","first_port":16384,"last_port":32767}}}]},"root":"/pool/ext/aa0ffe35-76db-42ab-adf2-ceb072bdf811/crypt/zone"},{"zone":{"id":"3a1ea15f-06a4-4afd-959a-c3a00b2bdd80","zone_type":"internal_dns","addresses":["fd00:1122:3344:2::1"],"dataset":{"id":"3a1ea15f-06a4-4afd-959a-c3a00b2bdd80","name":{"pool_name":"oxp_77749ec7-39a9-489d-904b-87f7223c4e3c","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:2::1]:5353"},"services":[{"id":"3a1ea15f-06a4-4afd-959a-c3a00b2bdd80","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:2::1]:5353","dns_address":"[fd00:1122:3344:2::1]:53","gz_address":"fd00:1122:3344:2::2","gz_address_index":1}}]},"root":"/pool/ext/69f0b863-f73f-42b2-9822-b2cb99f09003/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled23.json b/sled-agent/tests/old-service-ledgers/rack2-sled23.json deleted file mode 100644 index 29b8c455d3..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled23.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"1876cdcf-b2e7-4b79-ad2e-67df716e1860","zone_type":"crucible","addresses":["fd00:1122:3344:10a::8"],"dataset":{"id":"1876cdcf-b2e7-4b79-ad2e-67df716e1860","name":{"pool_name":"oxp_d4c6bdc6-5e99-4f6c-b57a-9bfcb9a76be4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::8]:32345"},"services":[{"id":"1876cdcf-b2e7-4b79-ad2e-67df716e1860","details":{"type":"crucible","address":"[fd00:1122:3344:10a::8]:32345"}}]},"root":"/pool/ext/86c58ea3-1413-4af3-9aff-9c0a3d758459/crypt/zone"},{"zone":{"id":"0e708ee3-b7a6-4993-a88a-4489add33e29","zone_type":"crucible","addresses":["fd00:1122:3344:10a::d"],"dataset":{"id":"0e708ee3-b7a6-4993-a88a-4489add33e29","name":{"pool_name":"oxp_718ad834-b415-4abb-934d-9f987cde0a96","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::d]:32345"},"services":[{"id":"0e708ee3-b7a6-4993-a88a-4489add33e29","details":{"type":"crucible","address":"[fd00:1122:3344:10a::d]:32345"}}]},"root":"/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone"},{"zone":{"id":"4e1b9a65-848f-4649-b360-1df0d135b44d","zone_type":"crucible","addresses":["fd00:1122:3344:10a::c"],"dataset":{"id":"4e1b9a65-848f-4649-b360-1df0d135b44d","name":{"pool_name":"oxp_88ee08c6-1c0f-44c2-9110-b8d5a7589ebb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::c]:32345"},"services":[{"id":"4e1b9a65-848f-4649-b360-1df0d135b44d","details":{"type":"crucible","address":"[fd00:1122:3344:10a::c]:32345"}}]},"root":"/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone"},{"zone":{"id":"da510a57-3af1-4d2b-b2ed-2e8849f27d8b","zone_type":"oximeter","addresses":["fd00:1122:3344:10a::3"],"dataset":null,"services":[{"id":"da510a57-3af1-4d2b-b2ed-2e8849f27d8b","details":{"type":"oximeter","address":"[fd00:1122:3344:10a::3]:12223"}}]},"root":"/pool/ext/718ad834-b415-4abb-934d-9f987cde0a96/crypt/zone"},{"zone":{"id":"d4d9acc8-3e0b-4fab-a0a2-d21920fabd7e","zone_type":"crucible","addresses":["fd00:1122:3344:10a::6"],"dataset":{"id":"d4d9acc8-3e0b-4fab-a0a2-d21920fabd7e","name":{"pool_name":"oxp_9dfe424f-cba6-4bfb-a3dd-e8bd7fdea57d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::6]:32345"},"services":[{"id":"d4d9acc8-3e0b-4fab-a0a2-d21920fabd7e","details":{"type":"crucible","address":"[fd00:1122:3344:10a::6]:32345"}}]},"root":"/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone"},{"zone":{"id":"fcb75972-836b-4f55-ba21-9722832cf5c2","zone_type":"crucible","addresses":["fd00:1122:3344:10a::7"],"dataset":{"id":"fcb75972-836b-4f55-ba21-9722832cf5c2","name":{"pool_name":"oxp_9005671f-3d90-4ed1-be15-ad65b9a65bd5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::7]:32345"},"services":[{"id":"fcb75972-836b-4f55-ba21-9722832cf5c2","details":{"type":"crucible","address":"[fd00:1122:3344:10a::7]:32345"}}]},"root":"/pool/ext/d4c6bdc6-5e99-4f6c-b57a-9bfcb9a76be4/crypt/zone"},{"zone":{"id":"624beba0-7dcd-4d55-af05-4670c6fcb1fb","zone_type":"crucible","addresses":["fd00:1122:3344:10a::4"],"dataset":{"id":"624beba0-7dcd-4d55-af05-4670c6fcb1fb","name":{"pool_name":"oxp_93867156-a43d-4c03-a899-1535e566c8bd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::4]:32345"},"services":[{"id":"624beba0-7dcd-4d55-af05-4670c6fcb1fb","details":{"type":"crucible","address":"[fd00:1122:3344:10a::4]:32345"}}]},"root":"/pool/ext/93867156-a43d-4c03-a899-1535e566c8bd/crypt/zone"},{"zone":{"id":"26fb3830-898e-4086-afaf-8f9654716b8c","zone_type":"crucible","addresses":["fd00:1122:3344:10a::b"],"dataset":{"id":"26fb3830-898e-4086-afaf-8f9654716b8c","name":{"pool_name":"oxp_86c58ea3-1413-4af3-9aff-9c0a3d758459","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::b]:32345"},"services":[{"id":"26fb3830-898e-4086-afaf-8f9654716b8c","details":{"type":"crucible","address":"[fd00:1122:3344:10a::b]:32345"}}]},"root":"/pool/ext/93867156-a43d-4c03-a899-1535e566c8bd/crypt/zone"},{"zone":{"id":"a3ef7eba-c08e-48ef-ae7a-89e2fcb49b66","zone_type":"crucible","addresses":["fd00:1122:3344:10a::a"],"dataset":{"id":"a3ef7eba-c08e-48ef-ae7a-89e2fcb49b66","name":{"pool_name":"oxp_cd3fdbae-a9d9-4db7-866a-bca36f6dd634","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::a]:32345"},"services":[{"id":"a3ef7eba-c08e-48ef-ae7a-89e2fcb49b66","details":{"type":"crucible","address":"[fd00:1122:3344:10a::a]:32345"}}]},"root":"/pool/ext/718ad834-b415-4abb-934d-9f987cde0a96/crypt/zone"},{"zone":{"id":"5c1d4a02-f33b-433a-81f5-5c149e3433bd","zone_type":"crucible","addresses":["fd00:1122:3344:10a::5"],"dataset":{"id":"5c1d4a02-f33b-433a-81f5-5c149e3433bd","name":{"pool_name":"oxp_9adfc865-2eef-4880-a6e3-9d2f88c8efd0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::5]:32345"},"services":[{"id":"5c1d4a02-f33b-433a-81f5-5c149e3433bd","details":{"type":"crucible","address":"[fd00:1122:3344:10a::5]:32345"}}]},"root":"/pool/ext/cd3fdbae-a9d9-4db7-866a-bca36f6dd634/crypt/zone"},{"zone":{"id":"ee77efe9-81d0-4395-a237-15e30c2c2d04","zone_type":"crucible","addresses":["fd00:1122:3344:10a::9"],"dataset":{"id":"ee77efe9-81d0-4395-a237-15e30c2c2d04","name":{"pool_name":"oxp_30f7d236-c835-46cc-bc27-9099a6826f67","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::9]:32345"},"services":[{"id":"ee77efe9-81d0-4395-a237-15e30c2c2d04","details":{"type":"crucible","address":"[fd00:1122:3344:10a::9]:32345"}}]},"root":"/pool/ext/88ee08c6-1c0f-44c2-9110-b8d5a7589ebb/crypt/zone"},{"zone":{"id":"71ab91b7-48d4-4d31-b47e-59f29f419116","zone_type":"ntp","addresses":["fd00:1122:3344:10a::e"],"dataset":null,"services":[{"id":"71ab91b7-48d4-4d31-b47e-59f29f419116","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10a::e]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/cd3fdbae-a9d9-4db7-866a-bca36f6dd634/crypt/zone"},{"zone":{"id":"46ccd8fe-4e3c-4307-97ae-1f7ac505082a","zone_type":"internal_dns","addresses":["fd00:1122:3344:3::1"],"dataset":{"id":"46ccd8fe-4e3c-4307-97ae-1f7ac505082a","name":{"pool_name":"oxp_93867156-a43d-4c03-a899-1535e566c8bd","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:3::1]:5353"},"services":[{"id":"46ccd8fe-4e3c-4307-97ae-1f7ac505082a","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:3::1]:5353","dns_address":"[fd00:1122:3344:3::1]:53","gz_address":"fd00:1122:3344:3::2","gz_address_index":2}}]},"root":"/pool/ext/9dfe424f-cba6-4bfb-a3dd-e8bd7fdea57d/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled25.json b/sled-agent/tests/old-service-ledgers/rack2-sled25.json deleted file mode 100644 index e48ef68faa..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled25.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"180d466d-eb36-4546-8922-e52c4c076823","zone_type":"crucible","addresses":["fd00:1122:3344:101::5"],"dataset":{"id":"180d466d-eb36-4546-8922-e52c4c076823","name":{"pool_name":"oxp_ac789935-fa42-4d00-8967-df0d96dbb74e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::5]:32345"},"services":[{"id":"180d466d-eb36-4546-8922-e52c4c076823","details":{"type":"crucible","address":"[fd00:1122:3344:101::5]:32345"}}]},"root":"/pool/ext/d732addc-cfe8-4c2c-8028-72eb4481b04e/crypt/zone"},{"zone":{"id":"b5af0303-bc03-40a3-b733-0396d705dfbf","zone_type":"crucible","addresses":["fd00:1122:3344:101::7"],"dataset":{"id":"b5af0303-bc03-40a3-b733-0396d705dfbf","name":{"pool_name":"oxp_d732addc-cfe8-4c2c-8028-72eb4481b04e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::7]:32345"},"services":[{"id":"b5af0303-bc03-40a3-b733-0396d705dfbf","details":{"type":"crucible","address":"[fd00:1122:3344:101::7]:32345"}}]},"root":"/pool/ext/677b0057-3a80-461b-aca8-c2cb501a7278/crypt/zone"},{"zone":{"id":"9c7c805a-f5ed-4e48-86e3-7aa81a718881","zone_type":"crucible","addresses":["fd00:1122:3344:101::c"],"dataset":{"id":"9c7c805a-f5ed-4e48-86e3-7aa81a718881","name":{"pool_name":"oxp_923c930c-80f8-448d-8321-cebfc6c41760","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::c]:32345"},"services":[{"id":"9c7c805a-f5ed-4e48-86e3-7aa81a718881","details":{"type":"crucible","address":"[fd00:1122:3344:101::c]:32345"}}]},"root":"/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone"},{"zone":{"id":"4e49c83c-2d4a-491a-91ac-4ab022026dcf","zone_type":"crucible","addresses":["fd00:1122:3344:101::4"],"dataset":{"id":"4e49c83c-2d4a-491a-91ac-4ab022026dcf","name":{"pool_name":"oxp_c99e6032-1d4f-47d2-9efe-ae2b2479554e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::4]:32345"},"services":[{"id":"4e49c83c-2d4a-491a-91ac-4ab022026dcf","details":{"type":"crucible","address":"[fd00:1122:3344:101::4]:32345"}}]},"root":"/pool/ext/653065d2-ab70-47c9-b832-34238fdc95ef/crypt/zone"},{"zone":{"id":"0e38475e-b8b2-4813-bf80-3c170081081a","zone_type":"crucible","addresses":["fd00:1122:3344:101::d"],"dataset":{"id":"0e38475e-b8b2-4813-bf80-3c170081081a","name":{"pool_name":"oxp_653065d2-ab70-47c9-b832-34238fdc95ef","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::d]:32345"},"services":[{"id":"0e38475e-b8b2-4813-bf80-3c170081081a","details":{"type":"crucible","address":"[fd00:1122:3344:101::d]:32345"}}]},"root":"/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone"},{"zone":{"id":"75123e60-1116-4b8d-a466-7302220127da","zone_type":"crucible","addresses":["fd00:1122:3344:101::8"],"dataset":{"id":"75123e60-1116-4b8d-a466-7302220127da","name":{"pool_name":"oxp_c764a8ae-6862-4eec-9db0-cc6ea478e4a7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::8]:32345"},"services":[{"id":"75123e60-1116-4b8d-a466-7302220127da","details":{"type":"crucible","address":"[fd00:1122:3344:101::8]:32345"}}]},"root":"/pool/ext/c764a8ae-6862-4eec-9db0-cc6ea478e4a7/crypt/zone"},{"zone":{"id":"fbd0379c-97fa-49ea-8980-17ae30ffff3c","zone_type":"crucible","addresses":["fd00:1122:3344:101::b"],"dataset":{"id":"fbd0379c-97fa-49ea-8980-17ae30ffff3c","name":{"pool_name":"oxp_fcb0e4c7-e046-4cf5-ad35-3ad90e1eb90c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::b]:32345"},"services":[{"id":"fbd0379c-97fa-49ea-8980-17ae30ffff3c","details":{"type":"crucible","address":"[fd00:1122:3344:101::b]:32345"}}]},"root":"/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone"},{"zone":{"id":"ec635326-cd1d-4f73-b8e6-c3a36a7020db","zone_type":"crucible","addresses":["fd00:1122:3344:101::a"],"dataset":{"id":"ec635326-cd1d-4f73-b8e6-c3a36a7020db","name":{"pool_name":"oxp_6bfb4120-488d-4f3d-90ef-e9bfa523b388","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::a]:32345"},"services":[{"id":"ec635326-cd1d-4f73-b8e6-c3a36a7020db","details":{"type":"crucible","address":"[fd00:1122:3344:101::a]:32345"}}]},"root":"/pool/ext/c99e6032-1d4f-47d2-9efe-ae2b2479554e/crypt/zone"},{"zone":{"id":"f500d564-c40a-4eca-ac8a-a26b435f2037","zone_type":"external_dns","addresses":["fd00:1122:3344:101::3"],"dataset":{"id":"f500d564-c40a-4eca-ac8a-a26b435f2037","name":{"pool_name":"oxp_c99e6032-1d4f-47d2-9efe-ae2b2479554e","kind":{"type":"external_dns"}},"service_address":"[fd00:1122:3344:101::3]:5353"},"services":[{"id":"f500d564-c40a-4eca-ac8a-a26b435f2037","details":{"type":"external_dns","http_address":"[fd00:1122:3344:101::3]:5353","dns_address":"172.20.26.2:53","nic":{"id":"b0b42776-3914-4a69-889f-4831dc72327c","kind":{"type":"service","id":"f500d564-c40a-4eca-ac8a-a26b435f2037"},"name":"external-dns-f500d564-c40a-4eca-ac8a-a26b435f2037","ip":"172.30.1.6","mac":"A8:40:25:FF:D0:B4","subnet":"172.30.1.0/24","vni":100,"primary":true,"slot":0}}}]},"root":"/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone"},{"zone":{"id":"56d4dbcc-3b4a-4ed0-8795-7734aadcc4c0","zone_type":"crucible","addresses":["fd00:1122:3344:101::9"],"dataset":{"id":"56d4dbcc-3b4a-4ed0-8795-7734aadcc4c0","name":{"pool_name":"oxp_4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::9]:32345"},"services":[{"id":"56d4dbcc-3b4a-4ed0-8795-7734aadcc4c0","details":{"type":"crucible","address":"[fd00:1122:3344:101::9]:32345"}}]},"root":"/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone"},{"zone":{"id":"0d3a1bd5-f6fe-49cb-807a-190dabc90103","zone_type":"crucible","addresses":["fd00:1122:3344:101::6"],"dataset":{"id":"0d3a1bd5-f6fe-49cb-807a-190dabc90103","name":{"pool_name":"oxp_677b0057-3a80-461b-aca8-c2cb501a7278","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::6]:32345"},"services":[{"id":"0d3a1bd5-f6fe-49cb-807a-190dabc90103","details":{"type":"crucible","address":"[fd00:1122:3344:101::6]:32345"}}]},"root":"/pool/ext/6bfb4120-488d-4f3d-90ef-e9bfa523b388/crypt/zone"},{"zone":{"id":"d34c7184-5d4e-4cb5-8f91-df74a343ffbc","zone_type":"ntp","addresses":["fd00:1122:3344:101::e"],"dataset":null,"services":[{"id":"d34c7184-5d4e-4cb5-8f91-df74a343ffbc","details":{"type":"internal_ntp","address":"[fd00:1122:3344:101::e]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled8.json b/sled-agent/tests/old-service-ledgers/rack2-sled8.json deleted file mode 100644 index 7d52980d9f..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled8.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"7153983f-8fd7-4fb9-92ac-0f07a07798b4","zone_type":"crucible","addresses":["fd00:1122:3344:103::a"],"dataset":{"id":"7153983f-8fd7-4fb9-92ac-0f07a07798b4","name":{"pool_name":"oxp_bf428719-1b16-4503-99f4-ad95846d916f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::a]:32345"},"services":[{"id":"7153983f-8fd7-4fb9-92ac-0f07a07798b4","details":{"type":"crucible","address":"[fd00:1122:3344:103::a]:32345"}}]},"root":"/pool/ext/26e698bb-006d-4208-94b9-d1bc279111fa/crypt/zone"},{"zone":{"id":"7d44ba36-4a69-490a-bc40-f6f90a4208d4","zone_type":"crucible","addresses":["fd00:1122:3344:103::c"],"dataset":{"id":"7d44ba36-4a69-490a-bc40-f6f90a4208d4","name":{"pool_name":"oxp_414e235b-55c3-4dc1-a568-8adf4ea1a052","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::c]:32345"},"services":[{"id":"7d44ba36-4a69-490a-bc40-f6f90a4208d4","details":{"type":"crucible","address":"[fd00:1122:3344:103::c]:32345"}}]},"root":"/pool/ext/cf940e15-dbc5-481b-866a-4de4b018898e/crypt/zone"},{"zone":{"id":"65a11c18-7f59-41ac-b9e7-680627f996e7","zone_type":"nexus","addresses":["fd00:1122:3344:103::3"],"dataset":null,"services":[{"id":"65a11c18-7f59-41ac-b9e7-680627f996e7","details":{"type":"nexus","internal_address":"[fd00:1122:3344:103::3]:12221","external_ip":"172.20.26.3","nic":{"id":"a3e13dde-a2bc-4170-ad84-aad8085b6034","kind":{"type":"service","id":"65a11c18-7f59-41ac-b9e7-680627f996e7"},"name":"nexus-65a11c18-7f59-41ac-b9e7-680627f996e7","ip":"172.30.2.5","mac":"A8:40:25:FF:A6:83","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","9.9.9.9"]}}]},"root":"/pool/ext/e126ddcc-8bee-46ba-8199-2a74df0ba040/crypt/zone"},{"zone":{"id":"072fdae8-2adf-4fd2-94ce-e9b0663b91e7","zone_type":"crucible","addresses":["fd00:1122:3344:103::b"],"dataset":{"id":"072fdae8-2adf-4fd2-94ce-e9b0663b91e7","name":{"pool_name":"oxp_26e698bb-006d-4208-94b9-d1bc279111fa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::b]:32345"},"services":[{"id":"072fdae8-2adf-4fd2-94ce-e9b0663b91e7","details":{"type":"crucible","address":"[fd00:1122:3344:103::b]:32345"}}]},"root":"/pool/ext/bf428719-1b16-4503-99f4-ad95846d916f/crypt/zone"},{"zone":{"id":"01f93020-7e7d-4185-93fb-6ca234056c82","zone_type":"crucible","addresses":["fd00:1122:3344:103::5"],"dataset":{"id":"01f93020-7e7d-4185-93fb-6ca234056c82","name":{"pool_name":"oxp_7b24095a-72df-45e3-984f-2b795e052ac7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::5]:32345"},"services":[{"id":"01f93020-7e7d-4185-93fb-6ca234056c82","details":{"type":"crucible","address":"[fd00:1122:3344:103::5]:32345"}}]},"root":"/pool/ext/7b24095a-72df-45e3-984f-2b795e052ac7/crypt/zone"},{"zone":{"id":"e238116d-e5cc-43d4-9c8a-6f138ae8a15d","zone_type":"crucible","addresses":["fd00:1122:3344:103::6"],"dataset":{"id":"e238116d-e5cc-43d4-9c8a-6f138ae8a15d","name":{"pool_name":"oxp_e126ddcc-8bee-46ba-8199-2a74df0ba040","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::6]:32345"},"services":[{"id":"e238116d-e5cc-43d4-9c8a-6f138ae8a15d","details":{"type":"crucible","address":"[fd00:1122:3344:103::6]:32345"}}]},"root":"/pool/ext/7b24095a-72df-45e3-984f-2b795e052ac7/crypt/zone"},{"zone":{"id":"585cd8c5-c41e-4be4-beb8-bfbef9b53856","zone_type":"crucible","addresses":["fd00:1122:3344:103::7"],"dataset":{"id":"585cd8c5-c41e-4be4-beb8-bfbef9b53856","name":{"pool_name":"oxp_6340805e-c5af-418d-8bd1-fc0085667f33","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::7]:32345"},"services":[{"id":"585cd8c5-c41e-4be4-beb8-bfbef9b53856","details":{"type":"crucible","address":"[fd00:1122:3344:103::7]:32345"}}]},"root":"/pool/ext/414e235b-55c3-4dc1-a568-8adf4ea1a052/crypt/zone"},{"zone":{"id":"0b41c560-3b20-42f4-82ad-92f5bb575d6b","zone_type":"crucible","addresses":["fd00:1122:3344:103::9"],"dataset":{"id":"0b41c560-3b20-42f4-82ad-92f5bb575d6b","name":{"pool_name":"oxp_b93f880e-c55b-4d6c-9a16-939d84b628fc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::9]:32345"},"services":[{"id":"0b41c560-3b20-42f4-82ad-92f5bb575d6b","details":{"type":"crucible","address":"[fd00:1122:3344:103::9]:32345"}}]},"root":"/pool/ext/6340805e-c5af-418d-8bd1-fc0085667f33/crypt/zone"},{"zone":{"id":"0ccf27c0-e32d-4b52-a2c5-6db0c64a26f9","zone_type":"crucible","addresses":["fd00:1122:3344:103::d"],"dataset":{"id":"0ccf27c0-e32d-4b52-a2c5-6db0c64a26f9","name":{"pool_name":"oxp_2115b084-be0f-4fba-941b-33a659798a9e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::d]:32345"},"services":[{"id":"0ccf27c0-e32d-4b52-a2c5-6db0c64a26f9","details":{"type":"crucible","address":"[fd00:1122:3344:103::d]:32345"}}]},"root":"/pool/ext/414e235b-55c3-4dc1-a568-8adf4ea1a052/crypt/zone"},{"zone":{"id":"a6ba8273-0320-4dab-b801-281f041b0c50","zone_type":"crucible","addresses":["fd00:1122:3344:103::4"],"dataset":{"id":"a6ba8273-0320-4dab-b801-281f041b0c50","name":{"pool_name":"oxp_8a199f12-4f5c-483a-8aca-f97856658a35","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::4]:32345"},"services":[{"id":"a6ba8273-0320-4dab-b801-281f041b0c50","details":{"type":"crucible","address":"[fd00:1122:3344:103::4]:32345"}}]},"root":"/pool/ext/b93f880e-c55b-4d6c-9a16-939d84b628fc/crypt/zone"},{"zone":{"id":"b9b7b4c2-284a-4ec1-80ea-75b7a43b71c4","zone_type":"crucible","addresses":["fd00:1122:3344:103::8"],"dataset":{"id":"b9b7b4c2-284a-4ec1-80ea-75b7a43b71c4","name":{"pool_name":"oxp_cf940e15-dbc5-481b-866a-4de4b018898e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::8]:32345"},"services":[{"id":"b9b7b4c2-284a-4ec1-80ea-75b7a43b71c4","details":{"type":"crucible","address":"[fd00:1122:3344:103::8]:32345"}}]},"root":"/pool/ext/cf940e15-dbc5-481b-866a-4de4b018898e/crypt/zone"},{"zone":{"id":"7a85d50e-b524-41c1-a052-118027eb77db","zone_type":"ntp","addresses":["fd00:1122:3344:103::e"],"dataset":null,"services":[{"id":"7a85d50e-b524-41c1-a052-118027eb77db","details":{"type":"internal_ntp","address":"[fd00:1122:3344:103::e]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/b93f880e-c55b-4d6c-9a16-939d84b628fc/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack2-sled9.json b/sled-agent/tests/old-service-ledgers/rack2-sled9.json deleted file mode 100644 index 36af68759b..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack2-sled9.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"912346a2-d7e6-427e-b373-e8dcbe4fcea9","zone_type":"crucible","addresses":["fd00:1122:3344:105::5"],"dataset":{"id":"912346a2-d7e6-427e-b373-e8dcbe4fcea9","name":{"pool_name":"oxp_b358fb1e-f52a-4a63-9aab-170225509b37","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::5]:32345"},"services":[{"id":"912346a2-d7e6-427e-b373-e8dcbe4fcea9","details":{"type":"crucible","address":"[fd00:1122:3344:105::5]:32345"}}]},"root":"/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone"},{"zone":{"id":"3d420dff-c616-4c7d-bab1-0f9c2b5396bf","zone_type":"crucible","addresses":["fd00:1122:3344:105::a"],"dataset":{"id":"3d420dff-c616-4c7d-bab1-0f9c2b5396bf","name":{"pool_name":"oxp_4eb2e4eb-41d8-496c-9a5a-687d7e004aa4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::a]:32345"},"services":[{"id":"3d420dff-c616-4c7d-bab1-0f9c2b5396bf","details":{"type":"crucible","address":"[fd00:1122:3344:105::a]:32345"}}]},"root":"/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone"},{"zone":{"id":"9c5d88c9-8ff1-4f23-9438-7b81322eaf68","zone_type":"crucible","addresses":["fd00:1122:3344:105::b"],"dataset":{"id":"9c5d88c9-8ff1-4f23-9438-7b81322eaf68","name":{"pool_name":"oxp_aadf48eb-6ff0-40b5-a092-1fdd06c03e11","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::b]:32345"},"services":[{"id":"9c5d88c9-8ff1-4f23-9438-7b81322eaf68","details":{"type":"crucible","address":"[fd00:1122:3344:105::b]:32345"}}]},"root":"/pool/ext/4358f47f-f21e-4cc8-829e-0c7fc2400a59/crypt/zone"},{"zone":{"id":"f9c1deca-1898-429e-8c93-254c7aa7bae6","zone_type":"crucible","addresses":["fd00:1122:3344:105::8"],"dataset":{"id":"f9c1deca-1898-429e-8c93-254c7aa7bae6","name":{"pool_name":"oxp_d1cb6b7d-2b92-4b7d-8a4d-551987f0277e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::8]:32345"},"services":[{"id":"f9c1deca-1898-429e-8c93-254c7aa7bae6","details":{"type":"crucible","address":"[fd00:1122:3344:105::8]:32345"}}]},"root":"/pool/ext/f8b11629-ced6-412a-9c3f-d169b99ee996/crypt/zone"},{"zone":{"id":"ce8563f3-4a93-45ff-b727-cbfbee6aa413","zone_type":"crucible","addresses":["fd00:1122:3344:105::9"],"dataset":{"id":"ce8563f3-4a93-45ff-b727-cbfbee6aa413","name":{"pool_name":"oxp_4358f47f-f21e-4cc8-829e-0c7fc2400a59","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::9]:32345"},"services":[{"id":"ce8563f3-4a93-45ff-b727-cbfbee6aa413","details":{"type":"crucible","address":"[fd00:1122:3344:105::9]:32345"}}]},"root":"/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone"},{"zone":{"id":"9470ea7d-1920-4b4b-8fca-e7659a1ef733","zone_type":"crucible","addresses":["fd00:1122:3344:105::c"],"dataset":{"id":"9470ea7d-1920-4b4b-8fca-e7659a1ef733","name":{"pool_name":"oxp_17eff217-f0b1-4353-b133-0f68bbd5ceaa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::c]:32345"},"services":[{"id":"9470ea7d-1920-4b4b-8fca-e7659a1ef733","details":{"type":"crucible","address":"[fd00:1122:3344:105::c]:32345"}}]},"root":"/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone"},{"zone":{"id":"375296e5-0a23-466c-b605-4204080f8103","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:105::4"],"dataset":null,"services":[{"id":"375296e5-0a23-466c-b605-4204080f8103","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:105::4]:17000"}}]},"root":"/pool/ext/4eb2e4eb-41d8-496c-9a5a-687d7e004aa4/crypt/zone"},{"zone":{"id":"f9940969-b0e8-4e8c-86c7-4bc49cd15a5f","zone_type":"crucible","addresses":["fd00:1122:3344:105::7"],"dataset":{"id":"f9940969-b0e8-4e8c-86c7-4bc49cd15a5f","name":{"pool_name":"oxp_f8b11629-ced6-412a-9c3f-d169b99ee996","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::7]:32345"},"services":[{"id":"f9940969-b0e8-4e8c-86c7-4bc49cd15a5f","details":{"type":"crucible","address":"[fd00:1122:3344:105::7]:32345"}}]},"root":"/pool/ext/17eff217-f0b1-4353-b133-0f68bbd5ceaa/crypt/zone"},{"zone":{"id":"23dca27d-c79b-4930-a817-392e8aeaa4c1","zone_type":"crucible","addresses":["fd00:1122:3344:105::e"],"dataset":{"id":"23dca27d-c79b-4930-a817-392e8aeaa4c1","name":{"pool_name":"oxp_57650e05-36ff-4de8-865f-b9562bdb67f5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::e]:32345"},"services":[{"id":"23dca27d-c79b-4930-a817-392e8aeaa4c1","details":{"type":"crucible","address":"[fd00:1122:3344:105::e]:32345"}}]},"root":"/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone"},{"zone":{"id":"92d3e4e9-0768-4772-83c1-23cce52190e9","zone_type":"crucible","addresses":["fd00:1122:3344:105::6"],"dataset":{"id":"92d3e4e9-0768-4772-83c1-23cce52190e9","name":{"pool_name":"oxp_eb1234a5-fdf7-4977-94d5-2eef25ce56a1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::6]:32345"},"services":[{"id":"92d3e4e9-0768-4772-83c1-23cce52190e9","details":{"type":"crucible","address":"[fd00:1122:3344:105::6]:32345"}}]},"root":"/pool/ext/b358fb1e-f52a-4a63-9aab-170225509b37/crypt/zone"},{"zone":{"id":"b3e9fee2-24d2-44e7-8539-a6918e85cf2b","zone_type":"crucible","addresses":["fd00:1122:3344:105::d"],"dataset":{"id":"b3e9fee2-24d2-44e7-8539-a6918e85cf2b","name":{"pool_name":"oxp_0ae29053-29a2-489e-a1e6-6aec0ecd05f8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::d]:32345"},"services":[{"id":"b3e9fee2-24d2-44e7-8539-a6918e85cf2b","details":{"type":"crucible","address":"[fd00:1122:3344:105::d]:32345"}}]},"root":"/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone"},{"zone":{"id":"4c3ef132-ec83-4b1b-9574-7c7d3035f9e9","zone_type":"cockroach_db","addresses":["fd00:1122:3344:105::3"],"dataset":{"id":"4c3ef132-ec83-4b1b-9574-7c7d3035f9e9","name":{"pool_name":"oxp_b358fb1e-f52a-4a63-9aab-170225509b37","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:105::3]:32221"},"services":[{"id":"4c3ef132-ec83-4b1b-9574-7c7d3035f9e9","details":{"type":"cockroach_db","address":"[fd00:1122:3344:105::3]:32221"}}]},"root":"/pool/ext/d1cb6b7d-2b92-4b7d-8a4d-551987f0277e/crypt/zone"},{"zone":{"id":"76b79b96-eaa2-4341-9aba-e77cfc92e0a9","zone_type":"ntp","addresses":["fd00:1122:3344:105::f"],"dataset":null,"services":[{"id":"76b79b96-eaa2-4341-9aba-e77cfc92e0a9","details":{"type":"internal_ntp","address":"[fd00:1122:3344:105::f]:123","ntp_servers":["c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal","6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled0.json b/sled-agent/tests/old-service-ledgers/rack3-sled0.json deleted file mode 100644 index a853a525bc..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled0.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"0710ecea-dbc4-417f-a6f7-1b97c3045db1","zone_type":"crucible","addresses":["fd00:1122:3344:116::6"],"dataset":{"id":"0710ecea-dbc4-417f-a6f7-1b97c3045db1","name":{"pool_name":"oxp_d5313ef5-019c-4c47-bc5e-63794107a1bb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::6]:32345"},"services":[{"id":"0710ecea-dbc4-417f-a6f7-1b97c3045db1","details":{"type":"crucible","address":"[fd00:1122:3344:116::6]:32345"}}]},"root":"/pool/ext/904e93a9-d175-4a20-9006-8c1e847aecf7/crypt/zone"},{"zone":{"id":"28b29d14-d55f-4b55-bbc1-f66e46ae3e70","zone_type":"crucible","addresses":["fd00:1122:3344:116::9"],"dataset":{"id":"28b29d14-d55f-4b55-bbc1-f66e46ae3e70","name":{"pool_name":"oxp_60755ffe-e9ee-4619-a751-8b3ea6405e67","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::9]:32345"},"services":[{"id":"28b29d14-d55f-4b55-bbc1-f66e46ae3e70","details":{"type":"crucible","address":"[fd00:1122:3344:116::9]:32345"}}]},"root":"/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone"},{"zone":{"id":"6f8f9fd2-b139-4069-a7e2-8d40efd58f6c","zone_type":"crucible","addresses":["fd00:1122:3344:116::d"],"dataset":{"id":"6f8f9fd2-b139-4069-a7e2-8d40efd58f6c","name":{"pool_name":"oxp_ccd2cb0b-782f-4026-a160-6d1192f04ca3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::d]:32345"},"services":[{"id":"6f8f9fd2-b139-4069-a7e2-8d40efd58f6c","details":{"type":"crucible","address":"[fd00:1122:3344:116::d]:32345"}}]},"root":"/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone"},{"zone":{"id":"450308ad-bf4d-40ff-ba62-f3290f7fffaf","zone_type":"crucible","addresses":["fd00:1122:3344:116::4"],"dataset":{"id":"450308ad-bf4d-40ff-ba62-f3290f7fffaf","name":{"pool_name":"oxp_46b09442-65ba-4d59-9121-9803fe3b724b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::4]:32345"},"services":[{"id":"450308ad-bf4d-40ff-ba62-f3290f7fffaf","details":{"type":"crucible","address":"[fd00:1122:3344:116::4]:32345"}}]},"root":"/pool/ext/54d901cc-f75e-417d-8a9f-24363136d0ef/crypt/zone"},{"zone":{"id":"9a22bbaa-eab4-4a32-8546-9882dc029483","zone_type":"crucible","addresses":["fd00:1122:3344:116::8"],"dataset":{"id":"9a22bbaa-eab4-4a32-8546-9882dc029483","name":{"pool_name":"oxp_93e3f350-75a0-4af0-bdac-baf9b423926f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::8]:32345"},"services":[{"id":"9a22bbaa-eab4-4a32-8546-9882dc029483","details":{"type":"crucible","address":"[fd00:1122:3344:116::8]:32345"}}]},"root":"/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone"},{"zone":{"id":"63a9dc49-0b5b-4483-95ed-553b545dc202","zone_type":"crucible","addresses":["fd00:1122:3344:116::a"],"dataset":{"id":"63a9dc49-0b5b-4483-95ed-553b545dc202","name":{"pool_name":"oxp_e3532845-76c0-42a9-903b-a07f7992e937","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::a]:32345"},"services":[{"id":"63a9dc49-0b5b-4483-95ed-553b545dc202","details":{"type":"crucible","address":"[fd00:1122:3344:116::a]:32345"}}]},"root":"/pool/ext/60755ffe-e9ee-4619-a751-8b3ea6405e67/crypt/zone"},{"zone":{"id":"1fef5b6c-78e4-4ad9-9973-9d8c78f1e232","zone_type":"crucible","addresses":["fd00:1122:3344:116::7"],"dataset":{"id":"1fef5b6c-78e4-4ad9-9973-9d8c78f1e232","name":{"pool_name":"oxp_54d901cc-f75e-417d-8a9f-24363136d0ef","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::7]:32345"},"services":[{"id":"1fef5b6c-78e4-4ad9-9973-9d8c78f1e232","details":{"type":"crucible","address":"[fd00:1122:3344:116::7]:32345"}}]},"root":"/pool/ext/90d7b6f9-3e28-48b0-86ac-0486728075cf/crypt/zone"},{"zone":{"id":"b2aab21a-cccd-4aa9-977f-a32090e6eaa7","zone_type":"crucible","addresses":["fd00:1122:3344:116::5"],"dataset":{"id":"b2aab21a-cccd-4aa9-977f-a32090e6eaa7","name":{"pool_name":"oxp_90d7b6f9-3e28-48b0-86ac-0486728075cf","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::5]:32345"},"services":[{"id":"b2aab21a-cccd-4aa9-977f-a32090e6eaa7","details":{"type":"crucible","address":"[fd00:1122:3344:116::5]:32345"}}]},"root":"/pool/ext/46b09442-65ba-4d59-9121-9803fe3b724b/crypt/zone"},{"zone":{"id":"fc1bbf28-24f3-4c1f-b367-2bc8231eb7d4","zone_type":"crucible","addresses":["fd00:1122:3344:116::b"],"dataset":{"id":"fc1bbf28-24f3-4c1f-b367-2bc8231eb7d4","name":{"pool_name":"oxp_0a7bb0d3-408b-42b1-8846-76cf106a9580","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::b]:32345"},"services":[{"id":"fc1bbf28-24f3-4c1f-b367-2bc8231eb7d4","details":{"type":"crucible","address":"[fd00:1122:3344:116::b]:32345"}}]},"root":"/pool/ext/e3532845-76c0-42a9-903b-a07f7992e937/crypt/zone"},{"zone":{"id":"bcb7617a-f76a-4912-8ccc-802d2a697e3c","zone_type":"crucible","addresses":["fd00:1122:3344:116::c"],"dataset":{"id":"bcb7617a-f76a-4912-8ccc-802d2a697e3c","name":{"pool_name":"oxp_904e93a9-d175-4a20-9006-8c1e847aecf7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:116::c]:32345"},"services":[{"id":"bcb7617a-f76a-4912-8ccc-802d2a697e3c","details":{"type":"crucible","address":"[fd00:1122:3344:116::c]:32345"}}]},"root":"/pool/ext/ccd2cb0b-782f-4026-a160-6d1192f04ca3/crypt/zone"},{"zone":{"id":"371fba3a-658b-469b-b675-c90cc0d39254","zone_type":"cockroach_db","addresses":["fd00:1122:3344:116::3"],"dataset":{"id":"371fba3a-658b-469b-b675-c90cc0d39254","name":{"pool_name":"oxp_46b09442-65ba-4d59-9121-9803fe3b724b","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:116::3]:32221"},"services":[{"id":"371fba3a-658b-469b-b675-c90cc0d39254","details":{"type":"cockroach_db","address":"[fd00:1122:3344:116::3]:32221"}}]},"root":"/pool/ext/46b09442-65ba-4d59-9121-9803fe3b724b/crypt/zone"},{"zone":{"id":"5a4d89f5-49e0-4566-a99c-342d1bb26b1c","zone_type":"ntp","addresses":["fd00:1122:3344:116::e"],"dataset":null,"services":[{"id":"5a4d89f5-49e0-4566-a99c-342d1bb26b1c","details":{"type":"internal_ntp","address":"[fd00:1122:3344:116::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/60755ffe-e9ee-4619-a751-8b3ea6405e67/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled1.json b/sled-agent/tests/old-service-ledgers/rack3-sled1.json deleted file mode 100644 index bd735e5e64..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled1.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"f401d06c-46fc-42f8-aa51-7515a51355ce","zone_type":"crucible","addresses":["fd00:1122:3344:11c::8"],"dataset":{"id":"f401d06c-46fc-42f8-aa51-7515a51355ce","name":{"pool_name":"oxp_8a88768a-2dd5-43b7-bd40-0db77be4d3a8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::8]:32345"},"services":[{"id":"f401d06c-46fc-42f8-aa51-7515a51355ce","details":{"type":"crucible","address":"[fd00:1122:3344:11c::8]:32345"}}]},"root":"/pool/ext/19d23d27-6a33-4203-b8c1-4b0df4ac791f/crypt/zone"},{"zone":{"id":"721c96ea-08d4-4c89-828f-600e7e344916","zone_type":"crucible","addresses":["fd00:1122:3344:11c::6"],"dataset":{"id":"721c96ea-08d4-4c89-828f-600e7e344916","name":{"pool_name":"oxp_15259003-fb04-4547-b4a9-b4511893c0fd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::6]:32345"},"services":[{"id":"721c96ea-08d4-4c89-828f-600e7e344916","details":{"type":"crucible","address":"[fd00:1122:3344:11c::6]:32345"}}]},"root":"/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone"},{"zone":{"id":"ca17bdf9-51c5-4e1e-b822-856609070ec6","zone_type":"crucible","addresses":["fd00:1122:3344:11c::5"],"dataset":{"id":"ca17bdf9-51c5-4e1e-b822-856609070ec6","name":{"pool_name":"oxp_d2a8ed82-22ef-46d8-ad40-e1cb2cecebee","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::5]:32345"},"services":[{"id":"ca17bdf9-51c5-4e1e-b822-856609070ec6","details":{"type":"crucible","address":"[fd00:1122:3344:11c::5]:32345"}}]},"root":"/pool/ext/15259003-fb04-4547-b4a9-b4511893c0fd/crypt/zone"},{"zone":{"id":"5825447e-1b5b-4960-b202-e75853d3d250","zone_type":"crucible","addresses":["fd00:1122:3344:11c::9"],"dataset":{"id":"5825447e-1b5b-4960-b202-e75853d3d250","name":{"pool_name":"oxp_04e94454-cbd4-4cee-ad69-42372bcbabd5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::9]:32345"},"services":[{"id":"5825447e-1b5b-4960-b202-e75853d3d250","details":{"type":"crucible","address":"[fd00:1122:3344:11c::9]:32345"}}]},"root":"/pool/ext/542e0fb3-552c-4d3b-b853-da1f13b581a0/crypt/zone"},{"zone":{"id":"b937d3f0-1352-47a2-b9d1-a9ccf9c82b16","zone_type":"crucible","addresses":["fd00:1122:3344:11c::c"],"dataset":{"id":"b937d3f0-1352-47a2-b9d1-a9ccf9c82b16","name":{"pool_name":"oxp_542e0fb3-552c-4d3b-b853-da1f13b581a0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::c]:32345"},"services":[{"id":"b937d3f0-1352-47a2-b9d1-a9ccf9c82b16","details":{"type":"crucible","address":"[fd00:1122:3344:11c::c]:32345"}}]},"root":"/pool/ext/eedd1d58-4892-456f-aaf7-9d650c7921ca/crypt/zone"},{"zone":{"id":"d63a677b-8dac-44ee-89a2-cc4cb151254d","zone_type":"crucible","addresses":["fd00:1122:3344:11c::3"],"dataset":{"id":"d63a677b-8dac-44ee-89a2-cc4cb151254d","name":{"pool_name":"oxp_45b5f1ee-7b66-4d74-8364-54fa0c73775f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::3]:32345"},"services":[{"id":"d63a677b-8dac-44ee-89a2-cc4cb151254d","details":{"type":"crucible","address":"[fd00:1122:3344:11c::3]:32345"}}]},"root":"/pool/ext/8a88768a-2dd5-43b7-bd40-0db77be4d3a8/crypt/zone"},{"zone":{"id":"abcb92ea-9f17-4cd8-897b-9d0d1ef7903a","zone_type":"crucible","addresses":["fd00:1122:3344:11c::4"],"dataset":{"id":"abcb92ea-9f17-4cd8-897b-9d0d1ef7903a","name":{"pool_name":"oxp_341d49db-c06a-416d-90e1-b0a3426ed02e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::4]:32345"},"services":[{"id":"abcb92ea-9f17-4cd8-897b-9d0d1ef7903a","details":{"type":"crucible","address":"[fd00:1122:3344:11c::4]:32345"}}]},"root":"/pool/ext/eedd1d58-4892-456f-aaf7-9d650c7921ca/crypt/zone"},{"zone":{"id":"000ac89d-db07-47ae-83cf-d9cafef013de","zone_type":"crucible","addresses":["fd00:1122:3344:11c::b"],"dataset":{"id":"000ac89d-db07-47ae-83cf-d9cafef013de","name":{"pool_name":"oxp_eedd1d58-4892-456f-aaf7-9d650c7921ca","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::b]:32345"},"services":[{"id":"000ac89d-db07-47ae-83cf-d9cafef013de","details":{"type":"crucible","address":"[fd00:1122:3344:11c::b]:32345"}}]},"root":"/pool/ext/04e94454-cbd4-4cee-ad69-42372bcbabd5/crypt/zone"},{"zone":{"id":"29e1e2e4-695e-4c05-8f0c-c16a0a61d390","zone_type":"crucible","addresses":["fd00:1122:3344:11c::7"],"dataset":{"id":"29e1e2e4-695e-4c05-8f0c-c16a0a61d390","name":{"pool_name":"oxp_19d23d27-6a33-4203-b8c1-4b0df4ac791f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::7]:32345"},"services":[{"id":"29e1e2e4-695e-4c05-8f0c-c16a0a61d390","details":{"type":"crucible","address":"[fd00:1122:3344:11c::7]:32345"}}]},"root":"/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone"},{"zone":{"id":"9fa7d7be-a6de-4d36-b56b-d1cc5ca7c82c","zone_type":"crucible","addresses":["fd00:1122:3344:11c::a"],"dataset":{"id":"9fa7d7be-a6de-4d36-b56b-d1cc5ca7c82c","name":{"pool_name":"oxp_0fd7a0b1-ed4b-4dc6-8c44-a49c9628c7e1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11c::a]:32345"},"services":[{"id":"9fa7d7be-a6de-4d36-b56b-d1cc5ca7c82c","details":{"type":"crucible","address":"[fd00:1122:3344:11c::a]:32345"}}]},"root":"/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone"},{"zone":{"id":"249db5f1-45e2-4a5c-a91f-cc51dbd87040","zone_type":"ntp","addresses":["fd00:1122:3344:11c::d"],"dataset":null,"services":[{"id":"249db5f1-45e2-4a5c-a91f-cc51dbd87040","details":{"type":"internal_ntp","address":"[fd00:1122:3344:11c::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/542e0fb3-552c-4d3b-b853-da1f13b581a0/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled11.json b/sled-agent/tests/old-service-ledgers/rack3-sled11.json deleted file mode 100644 index 2918c74c4b..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled11.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"7ddd0738-59df-4b67-a41e-7f0de9827187","zone_type":"crucible","addresses":["fd00:1122:3344:11e::4"],"dataset":{"id":"7ddd0738-59df-4b67-a41e-7f0de9827187","name":{"pool_name":"oxp_09af632a-6b1b-4a18-8c91-d392da38b02f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::4]:32345"},"services":[{"id":"7ddd0738-59df-4b67-a41e-7f0de9827187","details":{"type":"crucible","address":"[fd00:1122:3344:11e::4]:32345"}}]},"root":"/pool/ext/09af632a-6b1b-4a18-8c91-d392da38b02f/crypt/zone"},{"zone":{"id":"9706189f-713a-4394-b5dc-45dcf67dc46e","zone_type":"crucible","addresses":["fd00:1122:3344:11e::9"],"dataset":{"id":"9706189f-713a-4394-b5dc-45dcf67dc46e","name":{"pool_name":"oxp_4e1837c8-91ab-4d1d-abfd-f5144d88535e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::9]:32345"},"services":[{"id":"9706189f-713a-4394-b5dc-45dcf67dc46e","details":{"type":"crucible","address":"[fd00:1122:3344:11e::9]:32345"}}]},"root":"/pool/ext/2f0d47cb-28d1-4350-8656-60c6121f773b/crypt/zone"},{"zone":{"id":"7bdd841b-5e34-4c19-9066-b12578651446","zone_type":"crucible","addresses":["fd00:1122:3344:11e::a"],"dataset":{"id":"7bdd841b-5e34-4c19-9066-b12578651446","name":{"pool_name":"oxp_78d1e7f7-8d11-4fed-8b1e-be58908aea2f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::a]:32345"},"services":[{"id":"7bdd841b-5e34-4c19-9066-b12578651446","details":{"type":"crucible","address":"[fd00:1122:3344:11e::a]:32345"}}]},"root":"/pool/ext/62c23f4b-8e7b-4cd8-9055-19c1d8bd5ac8/crypt/zone"},{"zone":{"id":"74c0f60b-de5f-4456-a85f-f992a6e10424","zone_type":"crucible","addresses":["fd00:1122:3344:11e::b"],"dataset":{"id":"74c0f60b-de5f-4456-a85f-f992a6e10424","name":{"pool_name":"oxp_3b81d709-bf10-4dd7-a2c0-759d8acc2da0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::b]:32345"},"services":[{"id":"74c0f60b-de5f-4456-a85f-f992a6e10424","details":{"type":"crucible","address":"[fd00:1122:3344:11e::b]:32345"}}]},"root":"/pool/ext/09af632a-6b1b-4a18-8c91-d392da38b02f/crypt/zone"},{"zone":{"id":"da81ce6f-bd38-440e-b966-8a743092fa21","zone_type":"crucible","addresses":["fd00:1122:3344:11e::6"],"dataset":{"id":"da81ce6f-bd38-440e-b966-8a743092fa21","name":{"pool_name":"oxp_62c23f4b-8e7b-4cd8-9055-19c1d8bd5ac8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::6]:32345"},"services":[{"id":"da81ce6f-bd38-440e-b966-8a743092fa21","details":{"type":"crucible","address":"[fd00:1122:3344:11e::6]:32345"}}]},"root":"/pool/ext/215dd02b-0de6-488a-9e65-5e588cd079fb/crypt/zone"},{"zone":{"id":"febbca37-5279-400f-a2e9-6b5271b2d2fc","zone_type":"crucible","addresses":["fd00:1122:3344:11e::7"],"dataset":{"id":"febbca37-5279-400f-a2e9-6b5271b2d2fc","name":{"pool_name":"oxp_fb33e773-fb93-41a0-8078-b653b9078dda","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::7]:32345"},"services":[{"id":"febbca37-5279-400f-a2e9-6b5271b2d2fc","details":{"type":"crucible","address":"[fd00:1122:3344:11e::7]:32345"}}]},"root":"/pool/ext/2f0d47cb-28d1-4350-8656-60c6121f773b/crypt/zone"},{"zone":{"id":"5100e222-5ea4-4e67-9040-679137e666c8","zone_type":"crucible","addresses":["fd00:1122:3344:11e::5"],"dataset":{"id":"5100e222-5ea4-4e67-9040-679137e666c8","name":{"pool_name":"oxp_23767587-2253-431b-8944-18b9bfefcb3d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::5]:32345"},"services":[{"id":"5100e222-5ea4-4e67-9040-679137e666c8","details":{"type":"crucible","address":"[fd00:1122:3344:11e::5]:32345"}}]},"root":"/pool/ext/3b81d709-bf10-4dd7-a2c0-759d8acc2da0/crypt/zone"},{"zone":{"id":"c7ec3bc8-08ca-4901-a45e-0d68db72c6a7","zone_type":"crucible","addresses":["fd00:1122:3344:11e::3"],"dataset":{"id":"c7ec3bc8-08ca-4901-a45e-0d68db72c6a7","name":{"pool_name":"oxp_2f0d47cb-28d1-4350-8656-60c6121f773b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::3]:32345"},"services":[{"id":"c7ec3bc8-08ca-4901-a45e-0d68db72c6a7","details":{"type":"crucible","address":"[fd00:1122:3344:11e::3]:32345"}}]},"root":"/pool/ext/215dd02b-0de6-488a-9e65-5e588cd079fb/crypt/zone"},{"zone":{"id":"1fc80dd3-0fd9-4403-96bd-5bbf9eb0f15a","zone_type":"crucible","addresses":["fd00:1122:3344:11e::c"],"dataset":{"id":"1fc80dd3-0fd9-4403-96bd-5bbf9eb0f15a","name":{"pool_name":"oxp_2c932d54-41fb-4ffe-a57f-0479b9e5841e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::c]:32345"},"services":[{"id":"1fc80dd3-0fd9-4403-96bd-5bbf9eb0f15a","details":{"type":"crucible","address":"[fd00:1122:3344:11e::c]:32345"}}]},"root":"/pool/ext/3b81d709-bf10-4dd7-a2c0-759d8acc2da0/crypt/zone"},{"zone":{"id":"4eacc68d-5699-440a-ab33-c75f259e4cc3","zone_type":"crucible","addresses":["fd00:1122:3344:11e::8"],"dataset":{"id":"4eacc68d-5699-440a-ab33-c75f259e4cc3","name":{"pool_name":"oxp_215dd02b-0de6-488a-9e65-5e588cd079fb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11e::8]:32345"},"services":[{"id":"4eacc68d-5699-440a-ab33-c75f259e4cc3","details":{"type":"crucible","address":"[fd00:1122:3344:11e::8]:32345"}}]},"root":"/pool/ext/4e1837c8-91ab-4d1d-abfd-f5144d88535e/crypt/zone"},{"zone":{"id":"cb901d3e-8811-4c4c-a274-a44130501ecf","zone_type":"ntp","addresses":["fd00:1122:3344:11e::d"],"dataset":null,"services":[{"id":"cb901d3e-8811-4c4c-a274-a44130501ecf","details":{"type":"boundary_ntp","address":"[fd00:1122:3344:11e::d]:123","ntp_servers":["time.cloudflare.com"],"dns_servers":["1.1.1.1","8.8.8.8"],"domain":null,"nic":{"id":"bcf9d9eb-b4ba-4fd5-91e0-55a3414ae049","kind":{"type":"service","id":"cb901d3e-8811-4c4c-a274-a44130501ecf"},"name":"ntp-cb901d3e-8811-4c4c-a274-a44130501ecf","ip":"172.30.3.6","mac":"A8:40:25:FF:D5:2F","subnet":"172.30.3.0/24","vni":100,"primary":true,"slot":0},"snat_cfg":{"ip":"45.154.216.39","first_port":16384,"last_port":32767}}}]},"root":"/pool/ext/23767587-2253-431b-8944-18b9bfefcb3d/crypt/zone"},{"zone":{"id":"be4aada9-d160-401d-a630-a0764c039702","zone_type":"internal_dns","addresses":["fd00:1122:3344:2::1"],"dataset":{"id":"be4aada9-d160-401d-a630-a0764c039702","name":{"pool_name":"oxp_2f0d47cb-28d1-4350-8656-60c6121f773b","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:2::1]:5353"},"services":[{"id":"be4aada9-d160-401d-a630-a0764c039702","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:2::1]:5353","dns_address":"[fd00:1122:3344:2::1]:53","gz_address":"fd00:1122:3344:2::2","gz_address_index":1}}]},"root":"/pool/ext/78d1e7f7-8d11-4fed-8b1e-be58908aea2f/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled12.json b/sled-agent/tests/old-service-ledgers/rack3-sled12.json deleted file mode 100644 index c81f586e01..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled12.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"d8f1b9d2-fa2e-4f03-bbea-2039448d7792","zone_type":"crucible","addresses":["fd00:1122:3344:112::5"],"dataset":{"id":"d8f1b9d2-fa2e-4f03-bbea-2039448d7792","name":{"pool_name":"oxp_7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::5]:32345"},"services":[{"id":"d8f1b9d2-fa2e-4f03-bbea-2039448d7792","details":{"type":"crucible","address":"[fd00:1122:3344:112::5]:32345"}}]},"root":"/pool/ext/78d9f0ae-8e7f-450e-abc2-76b983efa5cd/crypt/zone"},{"zone":{"id":"2074a935-c0b3-4c4f-aae5-a29adae3e1ac","zone_type":"crucible","addresses":["fd00:1122:3344:112::8"],"dataset":{"id":"2074a935-c0b3-4c4f-aae5-a29adae3e1ac","name":{"pool_name":"oxp_ac663368-45fb-447c-811e-561c68e37bdd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::8]:32345"},"services":[{"id":"2074a935-c0b3-4c4f-aae5-a29adae3e1ac","details":{"type":"crucible","address":"[fd00:1122:3344:112::8]:32345"}}]},"root":"/pool/ext/ac663368-45fb-447c-811e-561c68e37bdd/crypt/zone"},{"zone":{"id":"2885d3c7-ad7d-445c-8630-dc6c81f8caa0","zone_type":"crucible","addresses":["fd00:1122:3344:112::a"],"dataset":{"id":"2885d3c7-ad7d-445c-8630-dc6c81f8caa0","name":{"pool_name":"oxp_8e82e8da-e1c5-4867-bc1c-b5441f9c1010","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::a]:32345"},"services":[{"id":"2885d3c7-ad7d-445c-8630-dc6c81f8caa0","details":{"type":"crucible","address":"[fd00:1122:3344:112::a]:32345"}}]},"root":"/pool/ext/8e82e8da-e1c5-4867-bc1c-b5441f9c1010/crypt/zone"},{"zone":{"id":"1eca241b-6868-4c59-876b-58356654f3b5","zone_type":"crucible","addresses":["fd00:1122:3344:112::c"],"dataset":{"id":"1eca241b-6868-4c59-876b-58356654f3b5","name":{"pool_name":"oxp_fde16c69-aa47-4a15-bb3f-3a5861ae45bd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::c]:32345"},"services":[{"id":"1eca241b-6868-4c59-876b-58356654f3b5","details":{"type":"crucible","address":"[fd00:1122:3344:112::c]:32345"}}]},"root":"/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone"},{"zone":{"id":"cc656f2e-8542-4986-8524-2f55984939c1","zone_type":"crucible","addresses":["fd00:1122:3344:112::d"],"dataset":{"id":"cc656f2e-8542-4986-8524-2f55984939c1","name":{"pool_name":"oxp_21e6d0f9-887e-4d6f-9a00-4cd61139eea6","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::d]:32345"},"services":[{"id":"cc656f2e-8542-4986-8524-2f55984939c1","details":{"type":"crucible","address":"[fd00:1122:3344:112::d]:32345"}}]},"root":"/pool/ext/21e6d0f9-887e-4d6f-9a00-4cd61139eea6/crypt/zone"},{"zone":{"id":"dfb1ebce-a4c7-4b50-9435-9a79b884c1af","zone_type":"clickhouse","addresses":["fd00:1122:3344:112::3"],"dataset":{"id":"dfb1ebce-a4c7-4b50-9435-9a79b884c1af","name":{"pool_name":"oxp_4f045315-de51-46ed-a011-16496615278f","kind":{"type":"clickhouse"}},"service_address":"[fd00:1122:3344:112::3]:8123"},"services":[{"id":"dfb1ebce-a4c7-4b50-9435-9a79b884c1af","details":{"type":"clickhouse","address":"[fd00:1122:3344:112::3]:8123"}}]},"root":"/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone"},{"zone":{"id":"a95d90ed-b2b1-4a5d-8d0d-4195b34bc764","zone_type":"crucible","addresses":["fd00:1122:3344:112::6"],"dataset":{"id":"a95d90ed-b2b1-4a5d-8d0d-4195b34bc764","name":{"pool_name":"oxp_d2c77c69-14d7-442e-8b47-a0d7af5a0e7e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::6]:32345"},"services":[{"id":"a95d90ed-b2b1-4a5d-8d0d-4195b34bc764","details":{"type":"crucible","address":"[fd00:1122:3344:112::6]:32345"}}]},"root":"/pool/ext/fad56ff1-ad9f-4215-b584-522eab18cf7b/crypt/zone"},{"zone":{"id":"1d3ebc90-d5a5-4cb0-ae90-50bb2163ae13","zone_type":"crucible","addresses":["fd00:1122:3344:112::b"],"dataset":{"id":"1d3ebc90-d5a5-4cb0-ae90-50bb2163ae13","name":{"pool_name":"oxp_fad56ff1-ad9f-4215-b584-522eab18cf7b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::b]:32345"},"services":[{"id":"1d3ebc90-d5a5-4cb0-ae90-50bb2163ae13","details":{"type":"crucible","address":"[fd00:1122:3344:112::b]:32345"}}]},"root":"/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone"},{"zone":{"id":"7af9f38b-0c7a-402e-8db3-7c7fb50b4665","zone_type":"crucible","addresses":["fd00:1122:3344:112::9"],"dataset":{"id":"7af9f38b-0c7a-402e-8db3-7c7fb50b4665","name":{"pool_name":"oxp_d0693580-5c5a-449f-803f-ce7188ebc580","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::9]:32345"},"services":[{"id":"7af9f38b-0c7a-402e-8db3-7c7fb50b4665","details":{"type":"crucible","address":"[fd00:1122:3344:112::9]:32345"}}]},"root":"/pool/ext/d2c77c69-14d7-442e-8b47-a0d7af5a0e7e/crypt/zone"},{"zone":{"id":"94d9bb0a-ecd2-4501-b960-60982f55ad12","zone_type":"crucible","addresses":["fd00:1122:3344:112::7"],"dataset":{"id":"94d9bb0a-ecd2-4501-b960-60982f55ad12","name":{"pool_name":"oxp_78d9f0ae-8e7f-450e-abc2-76b983efa5cd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::7]:32345"},"services":[{"id":"94d9bb0a-ecd2-4501-b960-60982f55ad12","details":{"type":"crucible","address":"[fd00:1122:3344:112::7]:32345"}}]},"root":"/pool/ext/ac663368-45fb-447c-811e-561c68e37bdd/crypt/zone"},{"zone":{"id":"277c1105-576e-4ec1-8e2c-cbae2f5ac9f6","zone_type":"crucible","addresses":["fd00:1122:3344:112::4"],"dataset":{"id":"277c1105-576e-4ec1-8e2c-cbae2f5ac9f6","name":{"pool_name":"oxp_4f045315-de51-46ed-a011-16496615278f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:112::4]:32345"},"services":[{"id":"277c1105-576e-4ec1-8e2c-cbae2f5ac9f6","details":{"type":"crucible","address":"[fd00:1122:3344:112::4]:32345"}}]},"root":"/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone"},{"zone":{"id":"555c3407-a76c-4ea4-a17a-a670d85a59b0","zone_type":"ntp","addresses":["fd00:1122:3344:112::e"],"dataset":null,"services":[{"id":"555c3407-a76c-4ea4-a17a-a670d85a59b0","details":{"type":"internal_ntp","address":"[fd00:1122:3344:112::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/8e82e8da-e1c5-4867-bc1c-b5441f9c1010/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled13.json b/sled-agent/tests/old-service-ledgers/rack3-sled13.json deleted file mode 100644 index ab151a828e..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled13.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"fbcf51c9-a732-4a03-8c19-cfb5b819cb7a","zone_type":"crucible","addresses":["fd00:1122:3344:104::5"],"dataset":{"id":"fbcf51c9-a732-4a03-8c19-cfb5b819cb7a","name":{"pool_name":"oxp_382a2961-cd27-4a9c-901d-468a45ff5708","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::5]:32345"},"services":[{"id":"fbcf51c9-a732-4a03-8c19-cfb5b819cb7a","details":{"type":"crucible","address":"[fd00:1122:3344:104::5]:32345"}}]},"root":"/pool/ext/e99994ae-61ca-4742-a02c-eb0a8a5b69ff/crypt/zone"},{"zone":{"id":"7f8a5026-1f1d-4ab3-8c04-077bfda2f815","zone_type":"crucible","addresses":["fd00:1122:3344:104::4"],"dataset":{"id":"7f8a5026-1f1d-4ab3-8c04-077bfda2f815","name":{"pool_name":"oxp_9c99b9b6-8018-455e-a58a-c048ddd3e11b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::4]:32345"},"services":[{"id":"7f8a5026-1f1d-4ab3-8c04-077bfda2f815","details":{"type":"crucible","address":"[fd00:1122:3344:104::4]:32345"}}]},"root":"/pool/ext/22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167/crypt/zone"},{"zone":{"id":"6d45d856-0e49-4eb7-ad76-989a9ae636a2","zone_type":"crucible","addresses":["fd00:1122:3344:104::3"],"dataset":{"id":"6d45d856-0e49-4eb7-ad76-989a9ae636a2","name":{"pool_name":"oxp_b74a84fa-b4c8-4c5f-92f4-f4e62a0a311d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::3]:32345"},"services":[{"id":"6d45d856-0e49-4eb7-ad76-989a9ae636a2","details":{"type":"crucible","address":"[fd00:1122:3344:104::3]:32345"}}]},"root":"/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone"},{"zone":{"id":"c8dc7fff-72c8-49eb-a552-d605f8655134","zone_type":"crucible","addresses":["fd00:1122:3344:104::6"],"dataset":{"id":"c8dc7fff-72c8-49eb-a552-d605f8655134","name":{"pool_name":"oxp_22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::6]:32345"},"services":[{"id":"c8dc7fff-72c8-49eb-a552-d605f8655134","details":{"type":"crucible","address":"[fd00:1122:3344:104::6]:32345"}}]},"root":"/pool/ext/22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167/crypt/zone"},{"zone":{"id":"128a90f5-8889-4665-8343-2c7098f2922c","zone_type":"crucible","addresses":["fd00:1122:3344:104::7"],"dataset":{"id":"128a90f5-8889-4665-8343-2c7098f2922c","name":{"pool_name":"oxp_8b3d0b51-c6a5-4d2c-827a-0d0d1471136d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::7]:32345"},"services":[{"id":"128a90f5-8889-4665-8343-2c7098f2922c","details":{"type":"crucible","address":"[fd00:1122:3344:104::7]:32345"}}]},"root":"/pool/ext/29cd042b-e772-4d26-ac85-ef16009950bd/crypt/zone"},{"zone":{"id":"a72f1878-3b03-4267-9024-5df5ebae69de","zone_type":"crucible","addresses":["fd00:1122:3344:104::a"],"dataset":{"id":"a72f1878-3b03-4267-9024-5df5ebae69de","name":{"pool_name":"oxp_e99994ae-61ca-4742-a02c-eb0a8a5b69ff","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::a]:32345"},"services":[{"id":"a72f1878-3b03-4267-9024-5df5ebae69de","details":{"type":"crucible","address":"[fd00:1122:3344:104::a]:32345"}}]},"root":"/pool/ext/8b3d0b51-c6a5-4d2c-827a-0d0d1471136d/crypt/zone"},{"zone":{"id":"6a9165a2-9b66-485a-aaf0-70d89d60bb6c","zone_type":"crucible","addresses":["fd00:1122:3344:104::b"],"dataset":{"id":"6a9165a2-9b66-485a-aaf0-70d89d60bb6c","name":{"pool_name":"oxp_6a02f05f-e400-4c80-8df8-89aaecb6c12b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::b]:32345"},"services":[{"id":"6a9165a2-9b66-485a-aaf0-70d89d60bb6c","details":{"type":"crucible","address":"[fd00:1122:3344:104::b]:32345"}}]},"root":"/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone"},{"zone":{"id":"9677c4ed-96bc-4dcb-ae74-f7a3e9d2b5e2","zone_type":"crucible","addresses":["fd00:1122:3344:104::c"],"dataset":{"id":"9677c4ed-96bc-4dcb-ae74-f7a3e9d2b5e2","name":{"pool_name":"oxp_7c30978f-ee87-4e53-8fdf-3455e5e851b7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::c]:32345"},"services":[{"id":"9677c4ed-96bc-4dcb-ae74-f7a3e9d2b5e2","details":{"type":"crucible","address":"[fd00:1122:3344:104::c]:32345"}}]},"root":"/pool/ext/29cd042b-e772-4d26-ac85-ef16009950bd/crypt/zone"},{"zone":{"id":"179039e7-3ffd-4b76-9379-bef41d42a5ff","zone_type":"crucible","addresses":["fd00:1122:3344:104::8"],"dataset":{"id":"179039e7-3ffd-4b76-9379-bef41d42a5ff","name":{"pool_name":"oxp_4db7e002-e112-4bfc-a41e-8ae26991b01e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::8]:32345"},"services":[{"id":"179039e7-3ffd-4b76-9379-bef41d42a5ff","details":{"type":"crucible","address":"[fd00:1122:3344:104::8]:32345"}}]},"root":"/pool/ext/8b3d0b51-c6a5-4d2c-827a-0d0d1471136d/crypt/zone"},{"zone":{"id":"6067e31e-b6a3-4114-9e49-0296adc8e7af","zone_type":"crucible","addresses":["fd00:1122:3344:104::9"],"dataset":{"id":"6067e31e-b6a3-4114-9e49-0296adc8e7af","name":{"pool_name":"oxp_29cd042b-e772-4d26-ac85-ef16009950bd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:104::9]:32345"},"services":[{"id":"6067e31e-b6a3-4114-9e49-0296adc8e7af","details":{"type":"crucible","address":"[fd00:1122:3344:104::9]:32345"}}]},"root":"/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone"},{"zone":{"id":"440dd615-e11f-4a5d-aeb4-dcf88bb314de","zone_type":"ntp","addresses":["fd00:1122:3344:104::d"],"dataset":null,"services":[{"id":"440dd615-e11f-4a5d-aeb4-dcf88bb314de","details":{"type":"boundary_ntp","address":"[fd00:1122:3344:104::d]:123","ntp_servers":["time.cloudflare.com"],"dns_servers":["1.1.1.1","8.8.8.8"],"domain":null,"nic":{"id":"0b52fe1b-f4cc-43b1-9ac3-4ebb4ab60133","kind":{"type":"service","id":"440dd615-e11f-4a5d-aeb4-dcf88bb314de"},"name":"ntp-440dd615-e11f-4a5d-aeb4-dcf88bb314de","ip":"172.30.3.5","mac":"A8:40:25:FF:85:1E","subnet":"172.30.3.0/24","vni":100,"primary":true,"slot":0},"snat_cfg":{"ip":"45.154.216.38","first_port":0,"last_port":16383}}}]},"root":"/pool/ext/382a2961-cd27-4a9c-901d-468a45ff5708/crypt/zone"},{"zone":{"id":"06e2de03-bd92-404c-a8ea-a13185539d24","zone_type":"internal_dns","addresses":["fd00:1122:3344:1::1"],"dataset":{"id":"06e2de03-bd92-404c-a8ea-a13185539d24","name":{"pool_name":"oxp_b74a84fa-b4c8-4c5f-92f4-f4e62a0a311d","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:1::1]:5353"},"services":[{"id":"06e2de03-bd92-404c-a8ea-a13185539d24","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:1::1]:5353","dns_address":"[fd00:1122:3344:1::1]:53","gz_address":"fd00:1122:3344:1::2","gz_address_index":0}}]},"root":"/pool/ext/e99994ae-61ca-4742-a02c-eb0a8a5b69ff/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled14.json b/sled-agent/tests/old-service-ledgers/rack3-sled14.json deleted file mode 100644 index 89c12a015f..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled14.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"ac35afab-a312-43c3-a42d-04b8e99fcbde","zone_type":"crucible","addresses":["fd00:1122:3344:111::4"],"dataset":{"id":"ac35afab-a312-43c3-a42d-04b8e99fcbde","name":{"pool_name":"oxp_6601065c-c172-4118-81b4-16adde7e9401","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::4]:32345"},"services":[{"id":"ac35afab-a312-43c3-a42d-04b8e99fcbde","details":{"type":"crucible","address":"[fd00:1122:3344:111::4]:32345"}}]},"root":"/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone"},{"zone":{"id":"6cd94da2-35b9-4683-a931-29ad4a5ed0ef","zone_type":"crucible","addresses":["fd00:1122:3344:111::c"],"dataset":{"id":"6cd94da2-35b9-4683-a931-29ad4a5ed0ef","name":{"pool_name":"oxp_58276eba-a53c-4ef3-b374-4cdcde4d6e12","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::c]:32345"},"services":[{"id":"6cd94da2-35b9-4683-a931-29ad4a5ed0ef","details":{"type":"crucible","address":"[fd00:1122:3344:111::c]:32345"}}]},"root":"/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone"},{"zone":{"id":"41f07d39-fcc0-4796-8b7c-7cfcd9135f78","zone_type":"crucible","addresses":["fd00:1122:3344:111::9"],"dataset":{"id":"41f07d39-fcc0-4796-8b7c-7cfcd9135f78","name":{"pool_name":"oxp_4b90abdc-3348-4158-bedc-5bcd56e281d8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::9]:32345"},"services":[{"id":"41f07d39-fcc0-4796-8b7c-7cfcd9135f78","details":{"type":"crucible","address":"[fd00:1122:3344:111::9]:32345"}}]},"root":"/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone"},{"zone":{"id":"44c35566-dd64-4e4a-896e-c50aaa3df14f","zone_type":"nexus","addresses":["fd00:1122:3344:111::3"],"dataset":null,"services":[{"id":"44c35566-dd64-4e4a-896e-c50aaa3df14f","details":{"type":"nexus","internal_address":"[fd00:1122:3344:111::3]:12221","external_ip":"45.154.216.37","nic":{"id":"6f824d20-6ce0-4e8b-9ce3-b12dd2b59913","kind":{"type":"service","id":"44c35566-dd64-4e4a-896e-c50aaa3df14f"},"name":"nexus-44c35566-dd64-4e4a-896e-c50aaa3df14f","ip":"172.30.2.7","mac":"A8:40:25:FF:E8:5F","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","8.8.8.8"]}}]},"root":"/pool/ext/435d7a1b-2865-4d49-903f-a68f464ade4d/crypt/zone"},{"zone":{"id":"e5020d24-8652-456b-bf92-cd7d255a34c5","zone_type":"crucible","addresses":["fd00:1122:3344:111::6"],"dataset":{"id":"e5020d24-8652-456b-bf92-cd7d255a34c5","name":{"pool_name":"oxp_f6925045-363d-4e18-9bde-ee2987b33d21","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::6]:32345"},"services":[{"id":"e5020d24-8652-456b-bf92-cd7d255a34c5","details":{"type":"crucible","address":"[fd00:1122:3344:111::6]:32345"}}]},"root":"/pool/ext/6601065c-c172-4118-81b4-16adde7e9401/crypt/zone"},{"zone":{"id":"8f25f258-afd7-4351-83e4-24220ec0c251","zone_type":"crucible","addresses":["fd00:1122:3344:111::8"],"dataset":{"id":"8f25f258-afd7-4351-83e4-24220ec0c251","name":{"pool_name":"oxp_8e955f54-fbef-4021-9eec-457825468813","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::8]:32345"},"services":[{"id":"8f25f258-afd7-4351-83e4-24220ec0c251","details":{"type":"crucible","address":"[fd00:1122:3344:111::8]:32345"}}]},"root":"/pool/ext/6601065c-c172-4118-81b4-16adde7e9401/crypt/zone"},{"zone":{"id":"26aa50ec-d70a-47ea-85fc-e55c62a2e0c6","zone_type":"crucible","addresses":["fd00:1122:3344:111::5"],"dataset":{"id":"26aa50ec-d70a-47ea-85fc-e55c62a2e0c6","name":{"pool_name":"oxp_24d7e250-9fc6-459e-8155-30f8e8ccb28c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::5]:32345"},"services":[{"id":"26aa50ec-d70a-47ea-85fc-e55c62a2e0c6","details":{"type":"crucible","address":"[fd00:1122:3344:111::5]:32345"}}]},"root":"/pool/ext/435d7a1b-2865-4d49-903f-a68f464ade4d/crypt/zone"},{"zone":{"id":"68dc212f-a96a-420f-8334-b11ee5d7cb95","zone_type":"crucible","addresses":["fd00:1122:3344:111::7"],"dataset":{"id":"68dc212f-a96a-420f-8334-b11ee5d7cb95","name":{"pool_name":"oxp_4353b00b-937e-4d07-aea6-014c57b6f12c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::7]:32345"},"services":[{"id":"68dc212f-a96a-420f-8334-b11ee5d7cb95","details":{"type":"crucible","address":"[fd00:1122:3344:111::7]:32345"}}]},"root":"/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone"},{"zone":{"id":"475140fa-a5dc-4ec1-876d-751c48adfc37","zone_type":"crucible","addresses":["fd00:1122:3344:111::a"],"dataset":{"id":"475140fa-a5dc-4ec1-876d-751c48adfc37","name":{"pool_name":"oxp_ee55b053-6874-4e20-86b5-2e105e64c068","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::a]:32345"},"services":[{"id":"475140fa-a5dc-4ec1-876d-751c48adfc37","details":{"type":"crucible","address":"[fd00:1122:3344:111::a]:32345"}}]},"root":"/pool/ext/ee55b053-6874-4e20-86b5-2e105e64c068/crypt/zone"},{"zone":{"id":"09d5a8c9-00db-4914-a2c6-7ae3d2da4558","zone_type":"crucible","addresses":["fd00:1122:3344:111::d"],"dataset":{"id":"09d5a8c9-00db-4914-a2c6-7ae3d2da4558","name":{"pool_name":"oxp_9ab5aba5-47dc-4bc4-8f6d-7cbe0f98a9a2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::d]:32345"},"services":[{"id":"09d5a8c9-00db-4914-a2c6-7ae3d2da4558","details":{"type":"crucible","address":"[fd00:1122:3344:111::d]:32345"}}]},"root":"/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone"},{"zone":{"id":"014f6a39-ad64-4f0a-9fef-01ca0d184cbf","zone_type":"crucible","addresses":["fd00:1122:3344:111::b"],"dataset":{"id":"014f6a39-ad64-4f0a-9fef-01ca0d184cbf","name":{"pool_name":"oxp_435d7a1b-2865-4d49-903f-a68f464ade4d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:111::b]:32345"},"services":[{"id":"014f6a39-ad64-4f0a-9fef-01ca0d184cbf","details":{"type":"crucible","address":"[fd00:1122:3344:111::b]:32345"}}]},"root":"/pool/ext/f6925045-363d-4e18-9bde-ee2987b33d21/crypt/zone"},{"zone":{"id":"aceaf348-ba07-4965-a543-63a800826fe8","zone_type":"ntp","addresses":["fd00:1122:3344:111::e"],"dataset":null,"services":[{"id":"aceaf348-ba07-4965-a543-63a800826fe8","details":{"type":"internal_ntp","address":"[fd00:1122:3344:111::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled15.json b/sled-agent/tests/old-service-ledgers/rack3-sled15.json deleted file mode 100644 index 880f29409e..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled15.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"09a9ecee-1e7c-4819-b27a-73bb61099ce7","zone_type":"external_dns","addresses":["fd00:1122:3344:114::3"],"dataset":{"id":"09a9ecee-1e7c-4819-b27a-73bb61099ce7","name":{"pool_name":"oxp_b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e","kind":{"type":"external_dns"}},"service_address":"[fd00:1122:3344:114::3]:5353"},"services":[{"id":"09a9ecee-1e7c-4819-b27a-73bb61099ce7","details":{"type":"external_dns","http_address":"[fd00:1122:3344:114::3]:5353","dns_address":"45.154.216.33:53","nic":{"id":"400ca77b-7fee-47d5-8f17-1f4b9c729f27","kind":{"type":"service","id":"09a9ecee-1e7c-4819-b27a-73bb61099ce7"},"name":"external-dns-09a9ecee-1e7c-4819-b27a-73bb61099ce7","ip":"172.30.1.5","mac":"A8:40:25:FF:B7:C7","subnet":"172.30.1.0/24","vni":100,"primary":true,"slot":0}}}]},"root":"/pool/ext/9e878b1e-bf92-4155-8162-640851c2f5d5/crypt/zone"},{"zone":{"id":"1792e003-55f7-49b8-906c-4160db91bc23","zone_type":"crucible","addresses":["fd00:1122:3344:114::5"],"dataset":{"id":"1792e003-55f7-49b8-906c-4160db91bc23","name":{"pool_name":"oxp_7f3a760f-a4c0-456f-8a22-2d06ecac1022","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::5]:32345"},"services":[{"id":"1792e003-55f7-49b8-906c-4160db91bc23","details":{"type":"crucible","address":"[fd00:1122:3344:114::5]:32345"}}]},"root":"/pool/ext/76f09ad5-c96c-4748-bbe4-71afaea7bc5e/crypt/zone"},{"zone":{"id":"73bc7c0e-1034-449f-8920-4a1f418653ff","zone_type":"crucible","addresses":["fd00:1122:3344:114::8"],"dataset":{"id":"73bc7c0e-1034-449f-8920-4a1f418653ff","name":{"pool_name":"oxp_e87037be-1cdf-4c6e-a8a3-c27b830eaef9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::8]:32345"},"services":[{"id":"73bc7c0e-1034-449f-8920-4a1f418653ff","details":{"type":"crucible","address":"[fd00:1122:3344:114::8]:32345"}}]},"root":"/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone"},{"zone":{"id":"06dc6619-6251-4543-9a10-da1698af49d5","zone_type":"crucible","addresses":["fd00:1122:3344:114::9"],"dataset":{"id":"06dc6619-6251-4543-9a10-da1698af49d5","name":{"pool_name":"oxp_ee34c530-ce70-4f1a-8c97-d0ebb77ccfc8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::9]:32345"},"services":[{"id":"06dc6619-6251-4543-9a10-da1698af49d5","details":{"type":"crucible","address":"[fd00:1122:3344:114::9]:32345"}}]},"root":"/pool/ext/9e878b1e-bf92-4155-8162-640851c2f5d5/crypt/zone"},{"zone":{"id":"0d796c52-37ca-490d-b42f-dcc22fe5fd6b","zone_type":"crucible","addresses":["fd00:1122:3344:114::c"],"dataset":{"id":"0d796c52-37ca-490d-b42f-dcc22fe5fd6b","name":{"pool_name":"oxp_9ec2b893-d486-4b24-a077-1a297f9eb15f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::c]:32345"},"services":[{"id":"0d796c52-37ca-490d-b42f-dcc22fe5fd6b","details":{"type":"crucible","address":"[fd00:1122:3344:114::c]:32345"}}]},"root":"/pool/ext/9e72c0e2-4895-4791-b606-2f18e432fb69/crypt/zone"},{"zone":{"id":"91d0011f-de44-4823-bc26-a447affa39bc","zone_type":"crucible","addresses":["fd00:1122:3344:114::a"],"dataset":{"id":"91d0011f-de44-4823-bc26-a447affa39bc","name":{"pool_name":"oxp_85e81a14-031d-4a63-a91f-981c64e91f60","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::a]:32345"},"services":[{"id":"91d0011f-de44-4823-bc26-a447affa39bc","details":{"type":"crucible","address":"[fd00:1122:3344:114::a]:32345"}}]},"root":"/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone"},{"zone":{"id":"0c44a2f1-559a-459c-9931-e0e7964d41c6","zone_type":"crucible","addresses":["fd00:1122:3344:114::b"],"dataset":{"id":"0c44a2f1-559a-459c-9931-e0e7964d41c6","name":{"pool_name":"oxp_76f09ad5-c96c-4748-bbe4-71afaea7bc5e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::b]:32345"},"services":[{"id":"0c44a2f1-559a-459c-9931-e0e7964d41c6","details":{"type":"crucible","address":"[fd00:1122:3344:114::b]:32345"}}]},"root":"/pool/ext/e87037be-1cdf-4c6e-a8a3-c27b830eaef9/crypt/zone"},{"zone":{"id":"ea363819-96f6-4fb6-a203-f18414f1c60e","zone_type":"crucible","addresses":["fd00:1122:3344:114::4"],"dataset":{"id":"ea363819-96f6-4fb6-a203-f18414f1c60e","name":{"pool_name":"oxp_b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::4]:32345"},"services":[{"id":"ea363819-96f6-4fb6-a203-f18414f1c60e","details":{"type":"crucible","address":"[fd00:1122:3344:114::4]:32345"}}]},"root":"/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone"},{"zone":{"id":"21592c39-da6b-4527-842e-edeeceffafa1","zone_type":"crucible","addresses":["fd00:1122:3344:114::6"],"dataset":{"id":"21592c39-da6b-4527-842e-edeeceffafa1","name":{"pool_name":"oxp_9e72c0e2-4895-4791-b606-2f18e432fb69","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::6]:32345"},"services":[{"id":"21592c39-da6b-4527-842e-edeeceffafa1","details":{"type":"crucible","address":"[fd00:1122:3344:114::6]:32345"}}]},"root":"/pool/ext/7aff8429-b65d-4a53-a796-7221ac7581a9/crypt/zone"},{"zone":{"id":"f33b1263-f1b2-43a6-a8aa-5f8570dd4e72","zone_type":"crucible","addresses":["fd00:1122:3344:114::7"],"dataset":{"id":"f33b1263-f1b2-43a6-a8aa-5f8570dd4e72","name":{"pool_name":"oxp_9e878b1e-bf92-4155-8162-640851c2f5d5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::7]:32345"},"services":[{"id":"f33b1263-f1b2-43a6-a8aa-5f8570dd4e72","details":{"type":"crucible","address":"[fd00:1122:3344:114::7]:32345"}}]},"root":"/pool/ext/7f3a760f-a4c0-456f-8a22-2d06ecac1022/crypt/zone"},{"zone":{"id":"6f42b469-5a36-4048-a152-e884f7e8a206","zone_type":"crucible","addresses":["fd00:1122:3344:114::d"],"dataset":{"id":"6f42b469-5a36-4048-a152-e884f7e8a206","name":{"pool_name":"oxp_7aff8429-b65d-4a53-a796-7221ac7581a9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:114::d]:32345"},"services":[{"id":"6f42b469-5a36-4048-a152-e884f7e8a206","details":{"type":"crucible","address":"[fd00:1122:3344:114::d]:32345"}}]},"root":"/pool/ext/9e72c0e2-4895-4791-b606-2f18e432fb69/crypt/zone"},{"zone":{"id":"ad77d594-8f78-4d33-a5e4-59887060178e","zone_type":"ntp","addresses":["fd00:1122:3344:114::e"],"dataset":null,"services":[{"id":"ad77d594-8f78-4d33-a5e4-59887060178e","details":{"type":"internal_ntp","address":"[fd00:1122:3344:114::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/85e81a14-031d-4a63-a91f-981c64e91f60/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled16.json b/sled-agent/tests/old-service-ledgers/rack3-sled16.json deleted file mode 100644 index 3a1cbeb411..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled16.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"dcb9a4ae-2c89-4a74-905b-b7936ff49c19","zone_type":"crucible","addresses":["fd00:1122:3344:11f::9"],"dataset":{"id":"dcb9a4ae-2c89-4a74-905b-b7936ff49c19","name":{"pool_name":"oxp_af509039-d27f-4095-bc9d-cecbc5c606db","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::9]:32345"},"services":[{"id":"dcb9a4ae-2c89-4a74-905b-b7936ff49c19","details":{"type":"crucible","address":"[fd00:1122:3344:11f::9]:32345"}}]},"root":"/pool/ext/44ee0fb4-6034-44e8-b3de-b3a44457ffca/crypt/zone"},{"zone":{"id":"dbd46f71-ec39-4b72-a77d-9d281ccb37e0","zone_type":"crucible","addresses":["fd00:1122:3344:11f::b"],"dataset":{"id":"dbd46f71-ec39-4b72-a77d-9d281ccb37e0","name":{"pool_name":"oxp_44ee0fb4-6034-44e8-b3de-b3a44457ffca","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::b]:32345"},"services":[{"id":"dbd46f71-ec39-4b72-a77d-9d281ccb37e0","details":{"type":"crucible","address":"[fd00:1122:3344:11f::b]:32345"}}]},"root":"/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone"},{"zone":{"id":"a1f30569-a5c6-4a6d-922e-241966aea142","zone_type":"crucible","addresses":["fd00:1122:3344:11f::6"],"dataset":{"id":"a1f30569-a5c6-4a6d-922e-241966aea142","name":{"pool_name":"oxp_d2133e8b-51cc-455e-89d0-5454fd4fe109","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::6]:32345"},"services":[{"id":"a1f30569-a5c6-4a6d-922e-241966aea142","details":{"type":"crucible","address":"[fd00:1122:3344:11f::6]:32345"}}]},"root":"/pool/ext/3f57835b-1469-499a-8757-7cc56acc5d49/crypt/zone"},{"zone":{"id":"a33e25ae-4e41-40f4-843d-3d12f62d8cb6","zone_type":"crucible","addresses":["fd00:1122:3344:11f::8"],"dataset":{"id":"a33e25ae-4e41-40f4-843d-3d12f62d8cb6","name":{"pool_name":"oxp_c8e4a7f4-1ae6-4683-8397-ea53475a53e8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::8]:32345"},"services":[{"id":"a33e25ae-4e41-40f4-843d-3d12f62d8cb6","details":{"type":"crucible","address":"[fd00:1122:3344:11f::8]:32345"}}]},"root":"/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone"},{"zone":{"id":"65ed75c2-2d80-4de5-a6f6-adfa6516c7cf","zone_type":"crucible","addresses":["fd00:1122:3344:11f::c"],"dataset":{"id":"65ed75c2-2d80-4de5-a6f6-adfa6516c7cf","name":{"pool_name":"oxp_3f57835b-1469-499a-8757-7cc56acc5d49","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::c]:32345"},"services":[{"id":"65ed75c2-2d80-4de5-a6f6-adfa6516c7cf","details":{"type":"crucible","address":"[fd00:1122:3344:11f::c]:32345"}}]},"root":"/pool/ext/cd8cd75c-632b-4527-889a-7ca0c080fe2c/crypt/zone"},{"zone":{"id":"bc6ccf18-6b9b-4687-8b70-c7917d972ae0","zone_type":"crucible","addresses":["fd00:1122:3344:11f::a"],"dataset":{"id":"bc6ccf18-6b9b-4687-8b70-c7917d972ae0","name":{"pool_name":"oxp_cd8cd75c-632b-4527-889a-7ca0c080fe2c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::a]:32345"},"services":[{"id":"bc6ccf18-6b9b-4687-8b70-c7917d972ae0","details":{"type":"crucible","address":"[fd00:1122:3344:11f::a]:32345"}}]},"root":"/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone"},{"zone":{"id":"06233bfe-a857-4819-aefe-212af9eeb90f","zone_type":"crucible","addresses":["fd00:1122:3344:11f::5"],"dataset":{"id":"06233bfe-a857-4819-aefe-212af9eeb90f","name":{"pool_name":"oxp_c8a1aaf1-d27c-45fd-9f8d-80ac6bf6865d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::5]:32345"},"services":[{"id":"06233bfe-a857-4819-aefe-212af9eeb90f","details":{"type":"crucible","address":"[fd00:1122:3344:11f::5]:32345"}}]},"root":"/pool/ext/af509039-d27f-4095-bc9d-cecbc5c606db/crypt/zone"},{"zone":{"id":"0bbfef71-9eae-43b6-b5e7-0060ce9269dd","zone_type":"crucible","addresses":["fd00:1122:3344:11f::4"],"dataset":{"id":"0bbfef71-9eae-43b6-b5e7-0060ce9269dd","name":{"pool_name":"oxp_5e32c0a3-1210-402b-91fb-256946eeac2b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::4]:32345"},"services":[{"id":"0bbfef71-9eae-43b6-b5e7-0060ce9269dd","details":{"type":"crucible","address":"[fd00:1122:3344:11f::4]:32345"}}]},"root":"/pool/ext/af509039-d27f-4095-bc9d-cecbc5c606db/crypt/zone"},{"zone":{"id":"550e10ee-24d1-444f-80be-2744dd321e0f","zone_type":"crucible","addresses":["fd00:1122:3344:11f::7"],"dataset":{"id":"550e10ee-24d1-444f-80be-2744dd321e0f","name":{"pool_name":"oxp_f437ce0e-eb45-4be8-b1fe-33ed2656eb01","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11f::7]:32345"},"services":[{"id":"550e10ee-24d1-444f-80be-2744dd321e0f","details":{"type":"crucible","address":"[fd00:1122:3344:11f::7]:32345"}}]},"root":"/pool/ext/44ee0fb4-6034-44e8-b3de-b3a44457ffca/crypt/zone"},{"zone":{"id":"86d768f3-ece2-4956-983f-999bdb23a983","zone_type":"cockroach_db","addresses":["fd00:1122:3344:11f::3"],"dataset":{"id":"86d768f3-ece2-4956-983f-999bdb23a983","name":{"pool_name":"oxp_5e32c0a3-1210-402b-91fb-256946eeac2b","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:11f::3]:32221"},"services":[{"id":"86d768f3-ece2-4956-983f-999bdb23a983","details":{"type":"cockroach_db","address":"[fd00:1122:3344:11f::3]:32221"}}]},"root":"/pool/ext/c8a1aaf1-d27c-45fd-9f8d-80ac6bf6865d/crypt/zone"},{"zone":{"id":"2f358812-f72c-4838-a5ea-7d78d0954be0","zone_type":"ntp","addresses":["fd00:1122:3344:11f::d"],"dataset":null,"services":[{"id":"2f358812-f72c-4838-a5ea-7d78d0954be0","details":{"type":"internal_ntp","address":"[fd00:1122:3344:11f::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/f437ce0e-eb45-4be8-b1fe-33ed2656eb01/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled17.json b/sled-agent/tests/old-service-ledgers/rack3-sled17.json deleted file mode 100644 index 4063fed2e2..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled17.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"525a19a2-d4ac-418d-bdcf-2ce26e7abe70","zone_type":"crucible","addresses":["fd00:1122:3344:107::a"],"dataset":{"id":"525a19a2-d4ac-418d-bdcf-2ce26e7abe70","name":{"pool_name":"oxp_cb774d2f-ff86-4fd7-866b-17a6b10e61f0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::a]:32345"},"services":[{"id":"525a19a2-d4ac-418d-bdcf-2ce26e7abe70","details":{"type":"crucible","address":"[fd00:1122:3344:107::a]:32345"}}]},"root":"/pool/ext/e17b68b5-f50c-4fc3-b55a-80d284c6c32d/crypt/zone"},{"zone":{"id":"7af188e1-6175-4769-9e4f-2ca7a98b76f6","zone_type":"crucible","addresses":["fd00:1122:3344:107::4"],"dataset":{"id":"7af188e1-6175-4769-9e4f-2ca7a98b76f6","name":{"pool_name":"oxp_0cbbcf22-770d-4e75-9148-e6109b129093","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::4]:32345"},"services":[{"id":"7af188e1-6175-4769-9e4f-2ca7a98b76f6","details":{"type":"crucible","address":"[fd00:1122:3344:107::4]:32345"}}]},"root":"/pool/ext/b998e8df-ea69-4bdd-84cb-b7f17075b060/crypt/zone"},{"zone":{"id":"2544540f-6ffc-46c0-84bf-f42a110c02d7","zone_type":"crucible","addresses":["fd00:1122:3344:107::6"],"dataset":{"id":"2544540f-6ffc-46c0-84bf-f42a110c02d7","name":{"pool_name":"oxp_e17b68b5-f50c-4fc3-b55a-80d284c6c32d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::6]:32345"},"services":[{"id":"2544540f-6ffc-46c0-84bf-f42a110c02d7","details":{"type":"crucible","address":"[fd00:1122:3344:107::6]:32345"}}]},"root":"/pool/ext/521fa477-4d83-49a8-a5cf-c267b7f0c409/crypt/zone"},{"zone":{"id":"cfc20f72-cac2-4681-a6d8-e5a0accafbb7","zone_type":"crucible","addresses":["fd00:1122:3344:107::7"],"dataset":{"id":"cfc20f72-cac2-4681-a6d8-e5a0accafbb7","name":{"pool_name":"oxp_b998e8df-ea69-4bdd-84cb-b7f17075b060","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::7]:32345"},"services":[{"id":"cfc20f72-cac2-4681-a6d8-e5a0accafbb7","details":{"type":"crucible","address":"[fd00:1122:3344:107::7]:32345"}}]},"root":"/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone"},{"zone":{"id":"e24be791-5773-425e-a3df-e35ca81570c7","zone_type":"crucible","addresses":["fd00:1122:3344:107::9"],"dataset":{"id":"e24be791-5773-425e-a3df-e35ca81570c7","name":{"pool_name":"oxp_7849c221-dc7f-43ac-ac47-bc51864e083b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::9]:32345"},"services":[{"id":"e24be791-5773-425e-a3df-e35ca81570c7","details":{"type":"crucible","address":"[fd00:1122:3344:107::9]:32345"}}]},"root":"/pool/ext/7849c221-dc7f-43ac-ac47-bc51864e083b/crypt/zone"},{"zone":{"id":"170856ee-21cf-4780-8903-175d558bc7cc","zone_type":"crucible","addresses":["fd00:1122:3344:107::3"],"dataset":{"id":"170856ee-21cf-4780-8903-175d558bc7cc","name":{"pool_name":"oxp_618e21e5-77d4-40ba-9f8e-7960e9ad92e2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::3]:32345"},"services":[{"id":"170856ee-21cf-4780-8903-175d558bc7cc","details":{"type":"crucible","address":"[fd00:1122:3344:107::3]:32345"}}]},"root":"/pool/ext/aa7a37fb-2f03-4d5c-916b-db3a4fc269ac/crypt/zone"},{"zone":{"id":"604278ff-525a-4d41-82ff-07aef3174d38","zone_type":"crucible","addresses":["fd00:1122:3344:107::5"],"dataset":{"id":"604278ff-525a-4d41-82ff-07aef3174d38","name":{"pool_name":"oxp_521fa477-4d83-49a8-a5cf-c267b7f0c409","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::5]:32345"},"services":[{"id":"604278ff-525a-4d41-82ff-07aef3174d38","details":{"type":"crucible","address":"[fd00:1122:3344:107::5]:32345"}}]},"root":"/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone"},{"zone":{"id":"d0d4fcc0-6ed0-410a-99c7-5daf34014421","zone_type":"crucible","addresses":["fd00:1122:3344:107::b"],"dataset":{"id":"d0d4fcc0-6ed0-410a-99c7-5daf34014421","name":{"pool_name":"oxp_aa7a37fb-2f03-4d5c-916b-db3a4fc269ac","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::b]:32345"},"services":[{"id":"d0d4fcc0-6ed0-410a-99c7-5daf34014421","details":{"type":"crucible","address":"[fd00:1122:3344:107::b]:32345"}}]},"root":"/pool/ext/aa7a37fb-2f03-4d5c-916b-db3a4fc269ac/crypt/zone"},{"zone":{"id":"c935df7b-2629-48ee-bc10-20508301905d","zone_type":"crucible","addresses":["fd00:1122:3344:107::c"],"dataset":{"id":"c935df7b-2629-48ee-bc10-20508301905d","name":{"pool_name":"oxp_793fd018-5fdc-4e54-9c45-f8023fa3ea18","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::c]:32345"},"services":[{"id":"c935df7b-2629-48ee-bc10-20508301905d","details":{"type":"crucible","address":"[fd00:1122:3344:107::c]:32345"}}]},"root":"/pool/ext/7849c221-dc7f-43ac-ac47-bc51864e083b/crypt/zone"},{"zone":{"id":"4ba5f3b6-8be5-4a85-bc57-a5e3b0b867d8","zone_type":"crucible","addresses":["fd00:1122:3344:107::8"],"dataset":{"id":"4ba5f3b6-8be5-4a85-bc57-a5e3b0b867d8","name":{"pool_name":"oxp_e80e7996-c572-481e-8c22-61c16c6e47f4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:107::8]:32345"},"services":[{"id":"4ba5f3b6-8be5-4a85-bc57-a5e3b0b867d8","details":{"type":"crucible","address":"[fd00:1122:3344:107::8]:32345"}}]},"root":"/pool/ext/e17b68b5-f50c-4fc3-b55a-80d284c6c32d/crypt/zone"},{"zone":{"id":"395c9d6e-3bd0-445e-9269-46c3260edb83","zone_type":"ntp","addresses":["fd00:1122:3344:107::d"],"dataset":null,"services":[{"id":"395c9d6e-3bd0-445e-9269-46c3260edb83","details":{"type":"internal_ntp","address":"[fd00:1122:3344:107::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled18.json b/sled-agent/tests/old-service-ledgers/rack3-sled18.json deleted file mode 100644 index f47e912424..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled18.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"c7096dd4-e429-4a6f-9725-041a77ef2513","zone_type":"crucible","addresses":["fd00:1122:3344:11a::6"],"dataset":{"id":"c7096dd4-e429-4a6f-9725-041a77ef2513","name":{"pool_name":"oxp_dcf62af6-c0f9-4eb5-9b23-9424ef8f3d32","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::6]:32345"},"services":[{"id":"c7096dd4-e429-4a6f-9725-041a77ef2513","details":{"type":"crucible","address":"[fd00:1122:3344:11a::6]:32345"}}]},"root":"/pool/ext/b869e463-c8b9-4c12-a6b9-13175b3896dd/crypt/zone"},{"zone":{"id":"09dd367f-b32f-43f3-aa53-11ccec1cd0c9","zone_type":"crucible","addresses":["fd00:1122:3344:11a::9"],"dataset":{"id":"09dd367f-b32f-43f3-aa53-11ccec1cd0c9","name":{"pool_name":"oxp_d7d00317-42c7-4d1e-a04c-85491fb230cd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::9]:32345"},"services":[{"id":"09dd367f-b32f-43f3-aa53-11ccec1cd0c9","details":{"type":"crucible","address":"[fd00:1122:3344:11a::9]:32345"}}]},"root":"/pool/ext/d7d00317-42c7-4d1e-a04c-85491fb230cd/crypt/zone"},{"zone":{"id":"fb2f85f1-05b3-432f-9bb5-63fb27a762b1","zone_type":"crucible","addresses":["fd00:1122:3344:11a::5"],"dataset":{"id":"fb2f85f1-05b3-432f-9bb5-63fb27a762b1","name":{"pool_name":"oxp_db4a9949-68da-4c1c-9a1c-49083eba14fe","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::5]:32345"},"services":[{"id":"fb2f85f1-05b3-432f-9bb5-63fb27a762b1","details":{"type":"crucible","address":"[fd00:1122:3344:11a::5]:32345"}}]},"root":"/pool/ext/db4a9949-68da-4c1c-9a1c-49083eba14fe/crypt/zone"},{"zone":{"id":"5b89425e-69e4-4305-8f33-dc5768a1849e","zone_type":"crucible","addresses":["fd00:1122:3344:11a::a"],"dataset":{"id":"5b89425e-69e4-4305-8f33-dc5768a1849e","name":{"pool_name":"oxp_64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::a]:32345"},"services":[{"id":"5b89425e-69e4-4305-8f33-dc5768a1849e","details":{"type":"crucible","address":"[fd00:1122:3344:11a::a]:32345"}}]},"root":"/pool/ext/64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e/crypt/zone"},{"zone":{"id":"a5156db4-273a-4f8b-b8d8-df77062a6c63","zone_type":"crucible","addresses":["fd00:1122:3344:11a::4"],"dataset":{"id":"a5156db4-273a-4f8b-b8d8-df77062a6c63","name":{"pool_name":"oxp_b869e463-c8b9-4c12-a6b9-13175b3896dd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::4]:32345"},"services":[{"id":"a5156db4-273a-4f8b-b8d8-df77062a6c63","details":{"type":"crucible","address":"[fd00:1122:3344:11a::4]:32345"}}]},"root":"/pool/ext/dcf62af6-c0f9-4eb5-9b23-9424ef8f3d32/crypt/zone"},{"zone":{"id":"1f2d2f86-b69b-4130-bb9b-e62ba0cb6802","zone_type":"crucible","addresses":["fd00:1122:3344:11a::b"],"dataset":{"id":"1f2d2f86-b69b-4130-bb9b-e62ba0cb6802","name":{"pool_name":"oxp_153ffee4-5d7a-4786-ad33-d5567b434fe0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::b]:32345"},"services":[{"id":"1f2d2f86-b69b-4130-bb9b-e62ba0cb6802","details":{"type":"crucible","address":"[fd00:1122:3344:11a::b]:32345"}}]},"root":"/pool/ext/174a067d-1c5a-49f7-a29f-1e62ab1c3796/crypt/zone"},{"zone":{"id":"1e249cc9-52e7-4d66-b713-8ace1392e991","zone_type":"crucible","addresses":["fd00:1122:3344:11a::7"],"dataset":{"id":"1e249cc9-52e7-4d66-b713-8ace1392e991","name":{"pool_name":"oxp_04b6215e-9651-4a3c-ba1b-b8a1e67b3d89","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::7]:32345"},"services":[{"id":"1e249cc9-52e7-4d66-b713-8ace1392e991","details":{"type":"crucible","address":"[fd00:1122:3344:11a::7]:32345"}}]},"root":"/pool/ext/db4a9949-68da-4c1c-9a1c-49083eba14fe/crypt/zone"},{"zone":{"id":"eb779538-2b1b-4d1d-8c7e-b15f04db6e53","zone_type":"crucible","addresses":["fd00:1122:3344:11a::3"],"dataset":{"id":"eb779538-2b1b-4d1d-8c7e-b15f04db6e53","name":{"pool_name":"oxp_aacb8524-3562-4f97-a616-9023230d6efa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::3]:32345"},"services":[{"id":"eb779538-2b1b-4d1d-8c7e-b15f04db6e53","details":{"type":"crucible","address":"[fd00:1122:3344:11a::3]:32345"}}]},"root":"/pool/ext/174a067d-1c5a-49f7-a29f-1e62ab1c3796/crypt/zone"},{"zone":{"id":"b575d52d-be7d-46af-814b-91e6d18f3464","zone_type":"crucible","addresses":["fd00:1122:3344:11a::8"],"dataset":{"id":"b575d52d-be7d-46af-814b-91e6d18f3464","name":{"pool_name":"oxp_174a067d-1c5a-49f7-a29f-1e62ab1c3796","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::8]:32345"},"services":[{"id":"b575d52d-be7d-46af-814b-91e6d18f3464","details":{"type":"crucible","address":"[fd00:1122:3344:11a::8]:32345"}}]},"root":"/pool/ext/64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e/crypt/zone"},{"zone":{"id":"274200bc-eac7-47d7-8a57-4b7be794caba","zone_type":"crucible","addresses":["fd00:1122:3344:11a::c"],"dataset":{"id":"274200bc-eac7-47d7-8a57-4b7be794caba","name":{"pool_name":"oxp_2e7644e4-7d46-42bf-8e7a-9c3f39085b3f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11a::c]:32345"},"services":[{"id":"274200bc-eac7-47d7-8a57-4b7be794caba","details":{"type":"crucible","address":"[fd00:1122:3344:11a::c]:32345"}}]},"root":"/pool/ext/2e7644e4-7d46-42bf-8e7a-9c3f39085b3f/crypt/zone"},{"zone":{"id":"bc20ba3a-df62-4a62-97c2-75b5653f84b4","zone_type":"ntp","addresses":["fd00:1122:3344:11a::d"],"dataset":null,"services":[{"id":"bc20ba3a-df62-4a62-97c2-75b5653f84b4","details":{"type":"internal_ntp","address":"[fd00:1122:3344:11a::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/04b6215e-9651-4a3c-ba1b-b8a1e67b3d89/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled19.json b/sled-agent/tests/old-service-ledgers/rack3-sled19.json deleted file mode 100644 index c450320a73..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled19.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"9c73abb9-edb8-4aa2-835b-c25ebe4466d9","zone_type":"crucible","addresses":["fd00:1122:3344:109::7"],"dataset":{"id":"9c73abb9-edb8-4aa2-835b-c25ebe4466d9","name":{"pool_name":"oxp_b7a3032f-7b8c-4a6a-9fa2-e5773bfdbc94","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::7]:32345"},"services":[{"id":"9c73abb9-edb8-4aa2-835b-c25ebe4466d9","details":{"type":"crucible","address":"[fd00:1122:3344:109::7]:32345"}}]},"root":"/pool/ext/46d21f3d-23be-4361-b5c5-9d0f6ece5b8c/crypt/zone"},{"zone":{"id":"ca576bda-cbdd-4bb9-9d75-ce06d569e926","zone_type":"crucible","addresses":["fd00:1122:3344:109::a"],"dataset":{"id":"ca576bda-cbdd-4bb9-9d75-ce06d569e926","name":{"pool_name":"oxp_863c4bc4-9c7e-453c-99d8-a3d509f49f3e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::a]:32345"},"services":[{"id":"ca576bda-cbdd-4bb9-9d75-ce06d569e926","details":{"type":"crucible","address":"[fd00:1122:3344:109::a]:32345"}}]},"root":"/pool/ext/7e67cb32-0c00-4090-9647-eb7bae75deeb/crypt/zone"},{"zone":{"id":"f010978d-346e-49cd-b265-7607a25685f9","zone_type":"crucible","addresses":["fd00:1122:3344:109::c"],"dataset":{"id":"f010978d-346e-49cd-b265-7607a25685f9","name":{"pool_name":"oxp_9bc1dab8-2d2a-4f92-bdfb-94ebca7881f1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::c]:32345"},"services":[{"id":"f010978d-346e-49cd-b265-7607a25685f9","details":{"type":"crucible","address":"[fd00:1122:3344:109::c]:32345"}}]},"root":"/pool/ext/9bc1dab8-2d2a-4f92-bdfb-94ebca7881f1/crypt/zone"},{"zone":{"id":"daff4162-cc81-4586-a457-91d767b8f1d9","zone_type":"crucible","addresses":["fd00:1122:3344:109::6"],"dataset":{"id":"daff4162-cc81-4586-a457-91d767b8f1d9","name":{"pool_name":"oxp_b9b5b50c-e823-41ae-9585-01b818883521","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::6]:32345"},"services":[{"id":"daff4162-cc81-4586-a457-91d767b8f1d9","details":{"type":"crucible","address":"[fd00:1122:3344:109::6]:32345"}}]},"root":"/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone"},{"zone":{"id":"9f300d3d-e698-4cc8-be4c-1f81ac8c927f","zone_type":"crucible","addresses":["fd00:1122:3344:109::d"],"dataset":{"id":"9f300d3d-e698-4cc8-be4c-1f81ac8c927f","name":{"pool_name":"oxp_f1d82c22-ad7d-4cda-9ab0-8f5f496d90ce","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::d]:32345"},"services":[{"id":"9f300d3d-e698-4cc8-be4c-1f81ac8c927f","details":{"type":"crucible","address":"[fd00:1122:3344:109::d]:32345"}}]},"root":"/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone"},{"zone":{"id":"8db7c7be-da40-4a1c-9681-4d02606a7eb7","zone_type":"crucible","addresses":["fd00:1122:3344:109::9"],"dataset":{"id":"8db7c7be-da40-4a1c-9681-4d02606a7eb7","name":{"pool_name":"oxp_46d21f3d-23be-4361-b5c5-9d0f6ece5b8c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::9]:32345"},"services":[{"id":"8db7c7be-da40-4a1c-9681-4d02606a7eb7","details":{"type":"crucible","address":"[fd00:1122:3344:109::9]:32345"}}]},"root":"/pool/ext/b7a3032f-7b8c-4a6a-9fa2-e5773bfdbc94/crypt/zone"},{"zone":{"id":"b990911b-805a-4f9d-bd83-e977f5b19a35","zone_type":"crucible","addresses":["fd00:1122:3344:109::4"],"dataset":{"id":"b990911b-805a-4f9d-bd83-e977f5b19a35","name":{"pool_name":"oxp_7e67cb32-0c00-4090-9647-eb7bae75deeb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::4]:32345"},"services":[{"id":"b990911b-805a-4f9d-bd83-e977f5b19a35","details":{"type":"crucible","address":"[fd00:1122:3344:109::4]:32345"}}]},"root":"/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone"},{"zone":{"id":"c99392f5-8f30-41ac-9eeb-12d7f4b707f1","zone_type":"crucible","addresses":["fd00:1122:3344:109::b"],"dataset":{"id":"c99392f5-8f30-41ac-9eeb-12d7f4b707f1","name":{"pool_name":"oxp_de682b18-afaf-4d53-b62e-934f6bd4a1f8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::b]:32345"},"services":[{"id":"c99392f5-8f30-41ac-9eeb-12d7f4b707f1","details":{"type":"crucible","address":"[fd00:1122:3344:109::b]:32345"}}]},"root":"/pool/ext/46d21f3d-23be-4361-b5c5-9d0f6ece5b8c/crypt/zone"},{"zone":{"id":"7f6cb339-9eb1-4866-8a4f-383bad25b36f","zone_type":"crucible","addresses":["fd00:1122:3344:109::5"],"dataset":{"id":"7f6cb339-9eb1-4866-8a4f-383bad25b36f","name":{"pool_name":"oxp_458cbfa3-3752-415d-8a3b-fb64e88468e1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::5]:32345"},"services":[{"id":"7f6cb339-9eb1-4866-8a4f-383bad25b36f","details":{"type":"crucible","address":"[fd00:1122:3344:109::5]:32345"}}]},"root":"/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone"},{"zone":{"id":"11946372-f253-4648-b00c-c7874a7b2888","zone_type":"crucible","addresses":["fd00:1122:3344:109::8"],"dataset":{"id":"11946372-f253-4648-b00c-c7874a7b2888","name":{"pool_name":"oxp_d73332f5-b2a5-46c0-94cf-c5c5712abfe8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:109::8]:32345"},"services":[{"id":"11946372-f253-4648-b00c-c7874a7b2888","details":{"type":"crucible","address":"[fd00:1122:3344:109::8]:32345"}}]},"root":"/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone"},{"zone":{"id":"58ece9e1-387f-4d2f-a42f-69cd34f9f380","zone_type":"cockroach_db","addresses":["fd00:1122:3344:109::3"],"dataset":{"id":"58ece9e1-387f-4d2f-a42f-69cd34f9f380","name":{"pool_name":"oxp_7e67cb32-0c00-4090-9647-eb7bae75deeb","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:109::3]:32221"},"services":[{"id":"58ece9e1-387f-4d2f-a42f-69cd34f9f380","details":{"type":"cockroach_db","address":"[fd00:1122:3344:109::3]:32221"}}]},"root":"/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone"},{"zone":{"id":"f016a25a-deb5-4f20-bdb0-2425c00d41a6","zone_type":"ntp","addresses":["fd00:1122:3344:109::e"],"dataset":null,"services":[{"id":"f016a25a-deb5-4f20-bdb0-2425c00d41a6","details":{"type":"internal_ntp","address":"[fd00:1122:3344:109::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled2.json b/sled-agent/tests/old-service-ledgers/rack3-sled2.json deleted file mode 100644 index 6c420c989d..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled2.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"dd799dd4-03f9-451d-85e2-844155753a03","zone_type":"crucible","addresses":["fd00:1122:3344:10a::7"],"dataset":{"id":"dd799dd4-03f9-451d-85e2-844155753a03","name":{"pool_name":"oxp_7dcf3acc-bde9-4306-bb46-4c6a6cbbb7ba","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::7]:32345"},"services":[{"id":"dd799dd4-03f9-451d-85e2-844155753a03","details":{"type":"crucible","address":"[fd00:1122:3344:10a::7]:32345"}}]},"root":"/pool/ext/7dcf3acc-bde9-4306-bb46-4c6a6cbbb7ba/crypt/zone"},{"zone":{"id":"dbf9346d-b46d-4402-bb44-92ce20fb5290","zone_type":"crucible","addresses":["fd00:1122:3344:10a::9"],"dataset":{"id":"dbf9346d-b46d-4402-bb44-92ce20fb5290","name":{"pool_name":"oxp_9275d50f-da2c-4f84-9775-598a364309ad","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::9]:32345"},"services":[{"id":"dbf9346d-b46d-4402-bb44-92ce20fb5290","details":{"type":"crucible","address":"[fd00:1122:3344:10a::9]:32345"}}]},"root":"/pool/ext/d83e36ef-dd7a-4cc2-be19-379b1114c031/crypt/zone"},{"zone":{"id":"9a55ebdd-eeef-4954-b0a1-e32b04837f14","zone_type":"crucible","addresses":["fd00:1122:3344:10a::4"],"dataset":{"id":"9a55ebdd-eeef-4954-b0a1-e32b04837f14","name":{"pool_name":"oxp_7f30f77e-5998-4676-a226-b433b5940e77","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::4]:32345"},"services":[{"id":"9a55ebdd-eeef-4954-b0a1-e32b04837f14","details":{"type":"crucible","address":"[fd00:1122:3344:10a::4]:32345"}}]},"root":"/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone"},{"zone":{"id":"bc2935f8-e4fa-4015-968e-f90985533a6a","zone_type":"crucible","addresses":["fd00:1122:3344:10a::6"],"dataset":{"id":"bc2935f8-e4fa-4015-968e-f90985533a6a","name":{"pool_name":"oxp_022c9d58-e91f-480d-bda6-0cf32ce3b1f5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::6]:32345"},"services":[{"id":"bc2935f8-e4fa-4015-968e-f90985533a6a","details":{"type":"crucible","address":"[fd00:1122:3344:10a::6]:32345"}}]},"root":"/pool/ext/c395dcc3-6ece-4b3f-b143-e111a54ef7da/crypt/zone"},{"zone":{"id":"63f8c861-fa1d-4121-92d9-7efa5ef7f5a0","zone_type":"crucible","addresses":["fd00:1122:3344:10a::a"],"dataset":{"id":"63f8c861-fa1d-4121-92d9-7efa5ef7f5a0","name":{"pool_name":"oxp_3c805784-f403-4d01-9eb0-4f77d0821980","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::a]:32345"},"services":[{"id":"63f8c861-fa1d-4121-92d9-7efa5ef7f5a0","details":{"type":"crucible","address":"[fd00:1122:3344:10a::a]:32345"}}]},"root":"/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone"},{"zone":{"id":"4996dcf9-78de-4f69-94fa-c09cc86a8d3c","zone_type":"crucible","addresses":["fd00:1122:3344:10a::b"],"dataset":{"id":"4996dcf9-78de-4f69-94fa-c09cc86a8d3c","name":{"pool_name":"oxp_f9fe9ce6-be0d-4974-bc30-78a8f1330496","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::b]:32345"},"services":[{"id":"4996dcf9-78de-4f69-94fa-c09cc86a8d3c","details":{"type":"crucible","address":"[fd00:1122:3344:10a::b]:32345"}}]},"root":"/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone"},{"zone":{"id":"36b9a4bf-7b30-4fe7-903d-3b722c79fa86","zone_type":"crucible","addresses":["fd00:1122:3344:10a::c"],"dataset":{"id":"36b9a4bf-7b30-4fe7-903d-3b722c79fa86","name":{"pool_name":"oxp_cb1052e0-4c70-4d37-b979-dd55e6a25f08","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::c]:32345"},"services":[{"id":"36b9a4bf-7b30-4fe7-903d-3b722c79fa86","details":{"type":"crucible","address":"[fd00:1122:3344:10a::c]:32345"}}]},"root":"/pool/ext/3c805784-f403-4d01-9eb0-4f77d0821980/crypt/zone"},{"zone":{"id":"a109a902-6a27-41b6-a881-c353e28e5389","zone_type":"crucible","addresses":["fd00:1122:3344:10a::8"],"dataset":{"id":"a109a902-6a27-41b6-a881-c353e28e5389","name":{"pool_name":"oxp_d83e36ef-dd7a-4cc2-be19-379b1114c031","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::8]:32345"},"services":[{"id":"a109a902-6a27-41b6-a881-c353e28e5389","details":{"type":"crucible","address":"[fd00:1122:3344:10a::8]:32345"}}]},"root":"/pool/ext/d83e36ef-dd7a-4cc2-be19-379b1114c031/crypt/zone"},{"zone":{"id":"d2a9a0bc-ea12-44e3-ac4a-904c76120d11","zone_type":"crucible","addresses":["fd00:1122:3344:10a::3"],"dataset":{"id":"d2a9a0bc-ea12-44e3-ac4a-904c76120d11","name":{"pool_name":"oxp_c395dcc3-6ece-4b3f-b143-e111a54ef7da","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::3]:32345"},"services":[{"id":"d2a9a0bc-ea12-44e3-ac4a-904c76120d11","details":{"type":"crucible","address":"[fd00:1122:3344:10a::3]:32345"}}]},"root":"/pool/ext/9898a289-2f0d-43a6-b053-850f6e784e9a/crypt/zone"},{"zone":{"id":"b3c3e53b-d9ec-4dd8-bd2c-bd811319aa44","zone_type":"crucible","addresses":["fd00:1122:3344:10a::5"],"dataset":{"id":"b3c3e53b-d9ec-4dd8-bd2c-bd811319aa44","name":{"pool_name":"oxp_9898a289-2f0d-43a6-b053-850f6e784e9a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10a::5]:32345"},"services":[{"id":"b3c3e53b-d9ec-4dd8-bd2c-bd811319aa44","details":{"type":"crucible","address":"[fd00:1122:3344:10a::5]:32345"}}]},"root":"/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone"},{"zone":{"id":"7b445d3b-fd25-4538-ac3f-f439c66d1223","zone_type":"ntp","addresses":["fd00:1122:3344:10a::d"],"dataset":null,"services":[{"id":"7b445d3b-fd25-4538-ac3f-f439c66d1223","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10a::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/f9fe9ce6-be0d-4974-bc30-78a8f1330496/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled20.json b/sled-agent/tests/old-service-ledgers/rack3-sled20.json deleted file mode 100644 index 20c9d60624..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled20.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"4b49e669-264d-4bfb-8ab1-555b520b679c","zone_type":"crucible","addresses":["fd00:1122:3344:108::c"],"dataset":{"id":"4b49e669-264d-4bfb-8ab1-555b520b679c","name":{"pool_name":"oxp_799a1c86-9e1a-4626-91e2-a19f7ff5356e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::c]:32345"},"services":[{"id":"4b49e669-264d-4bfb-8ab1-555b520b679c","details":{"type":"crucible","address":"[fd00:1122:3344:108::c]:32345"}}]},"root":"/pool/ext/d2478613-b7c9-4bd3-856f-1fe8e9c903c2/crypt/zone"},{"zone":{"id":"d802baae-9c3f-437a-85fe-cd72653b6db1","zone_type":"crucible","addresses":["fd00:1122:3344:108::5"],"dataset":{"id":"d802baae-9c3f-437a-85fe-cd72653b6db1","name":{"pool_name":"oxp_d2478613-b7c9-4bd3-856f-1fe8e9c903c2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::5]:32345"},"services":[{"id":"d802baae-9c3f-437a-85fe-cd72653b6db1","details":{"type":"crucible","address":"[fd00:1122:3344:108::5]:32345"}}]},"root":"/pool/ext/116f216c-e151-410f-82bf-8913904cf7b4/crypt/zone"},{"zone":{"id":"e5f69e60-3421-49a4-8c1d-2db8cbb6a5e9","zone_type":"crucible","addresses":["fd00:1122:3344:108::b"],"dataset":{"id":"e5f69e60-3421-49a4-8c1d-2db8cbb6a5e9","name":{"pool_name":"oxp_116f216c-e151-410f-82bf-8913904cf7b4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::b]:32345"},"services":[{"id":"e5f69e60-3421-49a4-8c1d-2db8cbb6a5e9","details":{"type":"crucible","address":"[fd00:1122:3344:108::b]:32345"}}]},"root":"/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone"},{"zone":{"id":"3e598962-ef8c-4cb6-bdfe-ec8563939d6a","zone_type":"crucible","addresses":["fd00:1122:3344:108::4"],"dataset":{"id":"3e598962-ef8c-4cb6-bdfe-ec8563939d6a","name":{"pool_name":"oxp_ababce44-01d1-4c50-b389-f60464c5dde9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::4]:32345"},"services":[{"id":"3e598962-ef8c-4cb6-bdfe-ec8563939d6a","details":{"type":"crucible","address":"[fd00:1122:3344:108::4]:32345"}}]},"root":"/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone"},{"zone":{"id":"25355c9f-cc2b-4b24-8eaa-65190f8936a8","zone_type":"crucible","addresses":["fd00:1122:3344:108::d"],"dataset":{"id":"25355c9f-cc2b-4b24-8eaa-65190f8936a8","name":{"pool_name":"oxp_fed46d41-136d-4462-8782-359014efba59","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::d]:32345"},"services":[{"id":"25355c9f-cc2b-4b24-8eaa-65190f8936a8","details":{"type":"crucible","address":"[fd00:1122:3344:108::d]:32345"}}]},"root":"/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone"},{"zone":{"id":"efb2f16c-ebad-4192-b575-dcb4d9b1d5cd","zone_type":"crucible","addresses":["fd00:1122:3344:108::a"],"dataset":{"id":"efb2f16c-ebad-4192-b575-dcb4d9b1d5cd","name":{"pool_name":"oxp_bf509067-0165-456d-98ae-72c86378e626","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::a]:32345"},"services":[{"id":"efb2f16c-ebad-4192-b575-dcb4d9b1d5cd","details":{"type":"crucible","address":"[fd00:1122:3344:108::a]:32345"}}]},"root":"/pool/ext/95220093-e3b8-4f7f-9f5a-cb32cb75180a/crypt/zone"},{"zone":{"id":"89191f0d-4e0b-47fa-9a9e-fbe2a6db1385","zone_type":"crucible","addresses":["fd00:1122:3344:108::8"],"dataset":{"id":"89191f0d-4e0b-47fa-9a9e-fbe2a6db1385","name":{"pool_name":"oxp_eea15142-4635-4e40-b0b4-b0c4f13eca3c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::8]:32345"},"services":[{"id":"89191f0d-4e0b-47fa-9a9e-fbe2a6db1385","details":{"type":"crucible","address":"[fd00:1122:3344:108::8]:32345"}}]},"root":"/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone"},{"zone":{"id":"e4589324-c528-49c7-9141-35e0a7af6947","zone_type":"crucible","addresses":["fd00:1122:3344:108::6"],"dataset":{"id":"e4589324-c528-49c7-9141-35e0a7af6947","name":{"pool_name":"oxp_95220093-e3b8-4f7f-9f5a-cb32cb75180a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::6]:32345"},"services":[{"id":"e4589324-c528-49c7-9141-35e0a7af6947","details":{"type":"crucible","address":"[fd00:1122:3344:108::6]:32345"}}]},"root":"/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone"},{"zone":{"id":"95ebe94d-0e68-421d-9260-c30bd7fe4bd6","zone_type":"nexus","addresses":["fd00:1122:3344:108::3"],"dataset":null,"services":[{"id":"95ebe94d-0e68-421d-9260-c30bd7fe4bd6","details":{"type":"nexus","internal_address":"[fd00:1122:3344:108::3]:12221","external_ip":"45.154.216.35","nic":{"id":"301aa595-f072-4da3-a533-99647b44a66a","kind":{"type":"service","id":"95ebe94d-0e68-421d-9260-c30bd7fe4bd6"},"name":"nexus-95ebe94d-0e68-421d-9260-c30bd7fe4bd6","ip":"172.30.2.5","mac":"A8:40:25:FF:F1:30","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","8.8.8.8"]}}]},"root":"/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone"},{"zone":{"id":"4b7a7052-f8e8-4196-8d6b-315943986ce6","zone_type":"crucible","addresses":["fd00:1122:3344:108::7"],"dataset":{"id":"4b7a7052-f8e8-4196-8d6b-315943986ce6","name":{"pool_name":"oxp_a549421c-2f12-45cc-b691-202f0a9bfa8b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::7]:32345"},"services":[{"id":"4b7a7052-f8e8-4196-8d6b-315943986ce6","details":{"type":"crucible","address":"[fd00:1122:3344:108::7]:32345"}}]},"root":"/pool/ext/bf509067-0165-456d-98ae-72c86378e626/crypt/zone"},{"zone":{"id":"71b8ff53-c781-47bb-8ddc-2c7129680542","zone_type":"crucible","addresses":["fd00:1122:3344:108::9"],"dataset":{"id":"71b8ff53-c781-47bb-8ddc-2c7129680542","name":{"pool_name":"oxp_9d19f891-a3d9-4c6e-b1e1-6b0b085a9440","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:108::9]:32345"},"services":[{"id":"71b8ff53-c781-47bb-8ddc-2c7129680542","details":{"type":"crucible","address":"[fd00:1122:3344:108::9]:32345"}}]},"root":"/pool/ext/fed46d41-136d-4462-8782-359014efba59/crypt/zone"},{"zone":{"id":"eaf7bf77-f4c2-4016-9909-4b88a27e9d9a","zone_type":"ntp","addresses":["fd00:1122:3344:108::e"],"dataset":null,"services":[{"id":"eaf7bf77-f4c2-4016-9909-4b88a27e9d9a","details":{"type":"internal_ntp","address":"[fd00:1122:3344:108::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled21.json b/sled-agent/tests/old-service-ledgers/rack3-sled21.json deleted file mode 100644 index 4f69e01c7f..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled21.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"a91e4af3-5d18-4b08-8cb6-0583db8f8842","zone_type":"crucible","addresses":["fd00:1122:3344:117::a"],"dataset":{"id":"a91e4af3-5d18-4b08-8cb6-0583db8f8842","name":{"pool_name":"oxp_4b2896b8-5f0e-42fb-a474-658b28421e65","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::a]:32345"},"services":[{"id":"a91e4af3-5d18-4b08-8cb6-0583db8f8842","details":{"type":"crucible","address":"[fd00:1122:3344:117::a]:32345"}}]},"root":"/pool/ext/23393ed9-acee-4686-861f-7fc825af1249/crypt/zone"},{"zone":{"id":"1ce74512-ce3a-4125-95f1-12c86e0275d5","zone_type":"crucible","addresses":["fd00:1122:3344:117::8"],"dataset":{"id":"1ce74512-ce3a-4125-95f1-12c86e0275d5","name":{"pool_name":"oxp_46ece76f-ef00-4dd0-9f73-326c63959470","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::8]:32345"},"services":[{"id":"1ce74512-ce3a-4125-95f1-12c86e0275d5","details":{"type":"crucible","address":"[fd00:1122:3344:117::8]:32345"}}]},"root":"/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone"},{"zone":{"id":"fef5d35f-9622-4dee-8635-d26e9f7f6869","zone_type":"crucible","addresses":["fd00:1122:3344:117::4"],"dataset":{"id":"fef5d35f-9622-4dee-8635-d26e9f7f6869","name":{"pool_name":"oxp_e4d7c2e8-016b-4617-afb5-38a2d9c1b508","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::4]:32345"},"services":[{"id":"fef5d35f-9622-4dee-8635-d26e9f7f6869","details":{"type":"crucible","address":"[fd00:1122:3344:117::4]:32345"}}]},"root":"/pool/ext/e372bba3-ef60-466f-b819-a3d5b9acbe77/crypt/zone"},{"zone":{"id":"4f024a31-cd38-4219-8381-9f1af70d1d54","zone_type":"crucible","addresses":["fd00:1122:3344:117::c"],"dataset":{"id":"4f024a31-cd38-4219-8381-9f1af70d1d54","name":{"pool_name":"oxp_7cb2a3c2-9d33-4c6a-af57-669f251cf4cf","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::c]:32345"},"services":[{"id":"4f024a31-cd38-4219-8381-9f1af70d1d54","details":{"type":"crucible","address":"[fd00:1122:3344:117::c]:32345"}}]},"root":"/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone"},{"zone":{"id":"d00e1d0b-e12f-420a-a4df-21e4cac176f6","zone_type":"crucible","addresses":["fd00:1122:3344:117::b"],"dataset":{"id":"d00e1d0b-e12f-420a-a4df-21e4cac176f6","name":{"pool_name":"oxp_e372bba3-ef60-466f-b819-a3d5b9acbe77","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::b]:32345"},"services":[{"id":"d00e1d0b-e12f-420a-a4df-21e4cac176f6","details":{"type":"crucible","address":"[fd00:1122:3344:117::b]:32345"}}]},"root":"/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone"},{"zone":{"id":"1598058a-6064-449e-b39c-1e3d345ed793","zone_type":"crucible","addresses":["fd00:1122:3344:117::5"],"dataset":{"id":"1598058a-6064-449e-b39c-1e3d345ed793","name":{"pool_name":"oxp_022a8d67-1e00-49f3-81ed-a0a1bc187cfa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::5]:32345"},"services":[{"id":"1598058a-6064-449e-b39c-1e3d345ed793","details":{"type":"crucible","address":"[fd00:1122:3344:117::5]:32345"}}]},"root":"/pool/ext/022a8d67-1e00-49f3-81ed-a0a1bc187cfa/crypt/zone"},{"zone":{"id":"c723c4b8-3031-4b25-8c16-fe08bc0b5f00","zone_type":"crucible","addresses":["fd00:1122:3344:117::7"],"dataset":{"id":"c723c4b8-3031-4b25-8c16-fe08bc0b5f00","name":{"pool_name":"oxp_23393ed9-acee-4686-861f-7fc825af1249","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::7]:32345"},"services":[{"id":"c723c4b8-3031-4b25-8c16-fe08bc0b5f00","details":{"type":"crucible","address":"[fd00:1122:3344:117::7]:32345"}}]},"root":"/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone"},{"zone":{"id":"7751b307-888f-46c8-8787-75d2f3fdaef3","zone_type":"crucible","addresses":["fd00:1122:3344:117::9"],"dataset":{"id":"7751b307-888f-46c8-8787-75d2f3fdaef3","name":{"pool_name":"oxp_e54e53d4-f68f-4b19-b8c1-9d5ab42e51c1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::9]:32345"},"services":[{"id":"7751b307-888f-46c8-8787-75d2f3fdaef3","details":{"type":"crucible","address":"[fd00:1122:3344:117::9]:32345"}}]},"root":"/pool/ext/e372bba3-ef60-466f-b819-a3d5b9acbe77/crypt/zone"},{"zone":{"id":"89413ff1-d5de-4931-8389-e84e7ea321af","zone_type":"crucible","addresses":["fd00:1122:3344:117::6"],"dataset":{"id":"89413ff1-d5de-4931-8389-e84e7ea321af","name":{"pool_name":"oxp_1bd5955e-14a9-463f-adeb-f12bcb45a6c1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::6]:32345"},"services":[{"id":"89413ff1-d5de-4931-8389-e84e7ea321af","details":{"type":"crucible","address":"[fd00:1122:3344:117::6]:32345"}}]},"root":"/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone"},{"zone":{"id":"287b0b24-72aa-41b5-a597-8523d84225ef","zone_type":"crucible","addresses":["fd00:1122:3344:117::3"],"dataset":{"id":"287b0b24-72aa-41b5-a597-8523d84225ef","name":{"pool_name":"oxp_cfbd185d-e185-4aaa-a598-9216124ceec4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:117::3]:32345"},"services":[{"id":"287b0b24-72aa-41b5-a597-8523d84225ef","details":{"type":"crucible","address":"[fd00:1122:3344:117::3]:32345"}}]},"root":"/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone"},{"zone":{"id":"4728253e-c534-4a5b-b707-c64ac9a8eb8c","zone_type":"ntp","addresses":["fd00:1122:3344:117::d"],"dataset":null,"services":[{"id":"4728253e-c534-4a5b-b707-c64ac9a8eb8c","details":{"type":"internal_ntp","address":"[fd00:1122:3344:117::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled22.json b/sled-agent/tests/old-service-ledgers/rack3-sled22.json deleted file mode 100644 index dc98c0390c..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled22.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"49f20cd1-a8a3-4fa8-9209-59da60cd8f9b","zone_type":"crucible","addresses":["fd00:1122:3344:103::5"],"dataset":{"id":"49f20cd1-a8a3-4fa8-9209-59da60cd8f9b","name":{"pool_name":"oxp_13a9ef4a-f33a-4781-8f83-712c07a79b1f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::5]:32345"},"services":[{"id":"49f20cd1-a8a3-4fa8-9209-59da60cd8f9b","details":{"type":"crucible","address":"[fd00:1122:3344:103::5]:32345"}}]},"root":"/pool/ext/711eff4e-736c-478e-83aa-ae86f5efbf1d/crypt/zone"},{"zone":{"id":"896fd564-f94e-496b-9fcf-ddfbfcfac9f7","zone_type":"crucible","addresses":["fd00:1122:3344:103::c"],"dataset":{"id":"896fd564-f94e-496b-9fcf-ddfbfcfac9f7","name":{"pool_name":"oxp_0944c0a2-0fb7-4f51-bced-52cc257cd2f6","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::c]:32345"},"services":[{"id":"896fd564-f94e-496b-9fcf-ddfbfcfac9f7","details":{"type":"crucible","address":"[fd00:1122:3344:103::c]:32345"}}]},"root":"/pool/ext/bc54d8c5-955d-429d-84e0-a20a4e5e27a3/crypt/zone"},{"zone":{"id":"911fb8b3-05c2-4af7-8974-6c74a61d94ad","zone_type":"crucible","addresses":["fd00:1122:3344:103::9"],"dataset":{"id":"911fb8b3-05c2-4af7-8974-6c74a61d94ad","name":{"pool_name":"oxp_29f59fce-a867-4571-9d2e-b03fa5c13510","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::9]:32345"},"services":[{"id":"911fb8b3-05c2-4af7-8974-6c74a61d94ad","details":{"type":"crucible","address":"[fd00:1122:3344:103::9]:32345"}}]},"root":"/pool/ext/711eff4e-736c-478e-83aa-ae86f5efbf1d/crypt/zone"},{"zone":{"id":"682b34db-0b06-4770-a8fe-74437cf184d6","zone_type":"crucible","addresses":["fd00:1122:3344:103::6"],"dataset":{"id":"682b34db-0b06-4770-a8fe-74437cf184d6","name":{"pool_name":"oxp_094d11d2-8049-4138-bcf4-562f5f8e77c0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::6]:32345"},"services":[{"id":"682b34db-0b06-4770-a8fe-74437cf184d6","details":{"type":"crucible","address":"[fd00:1122:3344:103::6]:32345"}}]},"root":"/pool/ext/0944c0a2-0fb7-4f51-bced-52cc257cd2f6/crypt/zone"},{"zone":{"id":"d8d20365-ecd3-4fd5-9495-c0670e3bd5d9","zone_type":"crucible","addresses":["fd00:1122:3344:103::a"],"dataset":{"id":"d8d20365-ecd3-4fd5-9495-c0670e3bd5d9","name":{"pool_name":"oxp_fb97ff7b-0225-400c-a137-3b38a786c0a0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::a]:32345"},"services":[{"id":"d8d20365-ecd3-4fd5-9495-c0670e3bd5d9","details":{"type":"crucible","address":"[fd00:1122:3344:103::a]:32345"}}]},"root":"/pool/ext/094d11d2-8049-4138-bcf4-562f5f8e77c0/crypt/zone"},{"zone":{"id":"673620b6-44d9-4310-8e17-3024ac84e708","zone_type":"crucible","addresses":["fd00:1122:3344:103::7"],"dataset":{"id":"673620b6-44d9-4310-8e17-3024ac84e708","name":{"pool_name":"oxp_711eff4e-736c-478e-83aa-ae86f5efbf1d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::7]:32345"},"services":[{"id":"673620b6-44d9-4310-8e17-3024ac84e708","details":{"type":"crucible","address":"[fd00:1122:3344:103::7]:32345"}}]},"root":"/pool/ext/fb97ff7b-0225-400c-a137-3b38a786c0a0/crypt/zone"},{"zone":{"id":"bf6dfc04-4d4c-41b6-a011-40ffc3bc5080","zone_type":"crucible","addresses":["fd00:1122:3344:103::8"],"dataset":{"id":"bf6dfc04-4d4c-41b6-a011-40ffc3bc5080","name":{"pool_name":"oxp_f815f1b6-48ef-436d-8768-eb08227e2386","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::8]:32345"},"services":[{"id":"bf6dfc04-4d4c-41b6-a011-40ffc3bc5080","details":{"type":"crucible","address":"[fd00:1122:3344:103::8]:32345"}}]},"root":"/pool/ext/13a9ef4a-f33a-4781-8f83-712c07a79b1f/crypt/zone"},{"zone":{"id":"ac8a82a8-fb6f-4635-a9a9-d98617eab390","zone_type":"crucible","addresses":["fd00:1122:3344:103::3"],"dataset":{"id":"ac8a82a8-fb6f-4635-a9a9-d98617eab390","name":{"pool_name":"oxp_97d6c860-4e2f-496e-974b-2e293fee6af9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::3]:32345"},"services":[{"id":"ac8a82a8-fb6f-4635-a9a9-d98617eab390","details":{"type":"crucible","address":"[fd00:1122:3344:103::3]:32345"}}]},"root":"/pool/ext/0944c0a2-0fb7-4f51-bced-52cc257cd2f6/crypt/zone"},{"zone":{"id":"4ed66558-4815-4b85-9b94-9edf3ee69ead","zone_type":"crucible","addresses":["fd00:1122:3344:103::4"],"dataset":{"id":"4ed66558-4815-4b85-9b94-9edf3ee69ead","name":{"pool_name":"oxp_bc54d8c5-955d-429d-84e0-a20a4e5e27a3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::4]:32345"},"services":[{"id":"4ed66558-4815-4b85-9b94-9edf3ee69ead","details":{"type":"crucible","address":"[fd00:1122:3344:103::4]:32345"}}]},"root":"/pool/ext/13a9ef4a-f33a-4781-8f83-712c07a79b1f/crypt/zone"},{"zone":{"id":"8a71c6ee-b08d-4c3d-b13c-c9cebc4c328a","zone_type":"crucible","addresses":["fd00:1122:3344:103::b"],"dataset":{"id":"8a71c6ee-b08d-4c3d-b13c-c9cebc4c328a","name":{"pool_name":"oxp_2bdfa429-09bd-4fa1-aa20-eea99f0d2b85","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:103::b]:32345"},"services":[{"id":"8a71c6ee-b08d-4c3d-b13c-c9cebc4c328a","details":{"type":"crucible","address":"[fd00:1122:3344:103::b]:32345"}}]},"root":"/pool/ext/29f59fce-a867-4571-9d2e-b03fa5c13510/crypt/zone"},{"zone":{"id":"7e6b8962-7a1e-4d7b-b7ea-49e64a51d98d","zone_type":"ntp","addresses":["fd00:1122:3344:103::d"],"dataset":null,"services":[{"id":"7e6b8962-7a1e-4d7b-b7ea-49e64a51d98d","details":{"type":"internal_ntp","address":"[fd00:1122:3344:103::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/2bdfa429-09bd-4fa1-aa20-eea99f0d2b85/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled23.json b/sled-agent/tests/old-service-ledgers/rack3-sled23.json deleted file mode 100644 index ade2144287..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled23.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"6b7e931d-4b91-4dc6-9a7b-4c19ac669e5d","zone_type":"crucible","addresses":["fd00:1122:3344:105::4"],"dataset":{"id":"6b7e931d-4b91-4dc6-9a7b-4c19ac669e5d","name":{"pool_name":"oxp_24dab7f5-164a-47f3-a878-f32ab1e68cce","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::4]:32345"},"services":[{"id":"6b7e931d-4b91-4dc6-9a7b-4c19ac669e5d","details":{"type":"crucible","address":"[fd00:1122:3344:105::4]:32345"}}]},"root":"/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone"},{"zone":{"id":"6c58e7aa-71e1-4868-9d4b-e12c7ef40303","zone_type":"crucible","addresses":["fd00:1122:3344:105::a"],"dataset":{"id":"6c58e7aa-71e1-4868-9d4b-e12c7ef40303","name":{"pool_name":"oxp_d664c9e8-bc81-4225-a618-a8ae2d057186","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::a]:32345"},"services":[{"id":"6c58e7aa-71e1-4868-9d4b-e12c7ef40303","details":{"type":"crucible","address":"[fd00:1122:3344:105::a]:32345"}}]},"root":"/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone"},{"zone":{"id":"51c6dc8d-b1a4-454a-9b19-01e45eb0b599","zone_type":"crucible","addresses":["fd00:1122:3344:105::d"],"dataset":{"id":"51c6dc8d-b1a4-454a-9b19-01e45eb0b599","name":{"pool_name":"oxp_f5f85537-eb25-4d0e-8e94-b775c41abd73","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::d]:32345"},"services":[{"id":"51c6dc8d-b1a4-454a-9b19-01e45eb0b599","details":{"type":"crucible","address":"[fd00:1122:3344:105::d]:32345"}}]},"root":"/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone"},{"zone":{"id":"8cbffa61-0bd0-4ad2-bd7d-30fe0dd57469","zone_type":"crucible","addresses":["fd00:1122:3344:105::9"],"dataset":{"id":"8cbffa61-0bd0-4ad2-bd7d-30fe0dd57469","name":{"pool_name":"oxp_88abca38-3f61-4d4b-80a1-4ea3e4827f84","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::9]:32345"},"services":[{"id":"8cbffa61-0bd0-4ad2-bd7d-30fe0dd57469","details":{"type":"crucible","address":"[fd00:1122:3344:105::9]:32345"}}]},"root":"/pool/ext/88abca38-3f61-4d4b-80a1-4ea3e4827f84/crypt/zone"},{"zone":{"id":"2177f37f-2ac9-4e66-bf74-a10bd91f4d33","zone_type":"crucible","addresses":["fd00:1122:3344:105::6"],"dataset":{"id":"2177f37f-2ac9-4e66-bf74-a10bd91f4d33","name":{"pool_name":"oxp_59e20871-4670-40d6-8ff4-aa97899fc991","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::6]:32345"},"services":[{"id":"2177f37f-2ac9-4e66-bf74-a10bd91f4d33","details":{"type":"crucible","address":"[fd00:1122:3344:105::6]:32345"}}]},"root":"/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone"},{"zone":{"id":"e4e43855-4879-4910-a2ba-40f625c1cc2d","zone_type":"crucible","addresses":["fd00:1122:3344:105::b"],"dataset":{"id":"e4e43855-4879-4910-a2ba-40f625c1cc2d","name":{"pool_name":"oxp_967d2f05-b141-44f5-837d-9b2aa67ee128","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::b]:32345"},"services":[{"id":"e4e43855-4879-4910-a2ba-40f625c1cc2d","details":{"type":"crucible","address":"[fd00:1122:3344:105::b]:32345"}}]},"root":"/pool/ext/6b6f34cd-6d3d-4832-a4e6-3df112c97133/crypt/zone"},{"zone":{"id":"8d2517e1-f9ad-40f2-abb9-2f5122839910","zone_type":"crucible","addresses":["fd00:1122:3344:105::7"],"dataset":{"id":"8d2517e1-f9ad-40f2-abb9-2f5122839910","name":{"pool_name":"oxp_ad493851-2d11-4c2d-8d75-989579d9616a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::7]:32345"},"services":[{"id":"8d2517e1-f9ad-40f2-abb9-2f5122839910","details":{"type":"crucible","address":"[fd00:1122:3344:105::7]:32345"}}]},"root":"/pool/ext/88abca38-3f61-4d4b-80a1-4ea3e4827f84/crypt/zone"},{"zone":{"id":"44cb3698-a7b1-4388-9165-ac76082ec8bc","zone_type":"crucible","addresses":["fd00:1122:3344:105::5"],"dataset":{"id":"44cb3698-a7b1-4388-9165-ac76082ec8bc","name":{"pool_name":"oxp_4292a83c-8c1f-4b2e-9120-72e0c510bf3c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::5]:32345"},"services":[{"id":"44cb3698-a7b1-4388-9165-ac76082ec8bc","details":{"type":"crucible","address":"[fd00:1122:3344:105::5]:32345"}}]},"root":"/pool/ext/24dab7f5-164a-47f3-a878-f32ab1e68cce/crypt/zone"},{"zone":{"id":"931b5c86-9d72-4518-bfd6-97863152ac65","zone_type":"crucible","addresses":["fd00:1122:3344:105::c"],"dataset":{"id":"931b5c86-9d72-4518-bfd6-97863152ac65","name":{"pool_name":"oxp_6b6f34cd-6d3d-4832-a4e6-3df112c97133","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::c]:32345"},"services":[{"id":"931b5c86-9d72-4518-bfd6-97863152ac65","details":{"type":"crucible","address":"[fd00:1122:3344:105::c]:32345"}}]},"root":"/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone"},{"zone":{"id":"ac568073-1889-463e-8cc4-cfed16ce2a34","zone_type":"crucible","addresses":["fd00:1122:3344:105::8"],"dataset":{"id":"ac568073-1889-463e-8cc4-cfed16ce2a34","name":{"pool_name":"oxp_4f1eafe9-b28d-49d3-83e2-ceac8721d6b5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:105::8]:32345"},"services":[{"id":"ac568073-1889-463e-8cc4-cfed16ce2a34","details":{"type":"crucible","address":"[fd00:1122:3344:105::8]:32345"}}]},"root":"/pool/ext/4292a83c-8c1f-4b2e-9120-72e0c510bf3c/crypt/zone"},{"zone":{"id":"e8f86fbb-864e-4d5a-961c-b50b54ae853e","zone_type":"cockroach_db","addresses":["fd00:1122:3344:105::3"],"dataset":{"id":"e8f86fbb-864e-4d5a-961c-b50b54ae853e","name":{"pool_name":"oxp_24dab7f5-164a-47f3-a878-f32ab1e68cce","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:105::3]:32221"},"services":[{"id":"e8f86fbb-864e-4d5a-961c-b50b54ae853e","details":{"type":"cockroach_db","address":"[fd00:1122:3344:105::3]:32221"}}]},"root":"/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone"},{"zone":{"id":"c79caea0-37b1-49d6-ae6e-8cf849d91374","zone_type":"ntp","addresses":["fd00:1122:3344:105::e"],"dataset":null,"services":[{"id":"c79caea0-37b1-49d6-ae6e-8cf849d91374","details":{"type":"internal_ntp","address":"[fd00:1122:3344:105::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/24dab7f5-164a-47f3-a878-f32ab1e68cce/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled24.json b/sled-agent/tests/old-service-ledgers/rack3-sled24.json deleted file mode 100644 index e7bd3050d6..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled24.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"d2b1e468-bc3c-4d08-b855-ae3327465375","zone_type":"crucible","addresses":["fd00:1122:3344:106::3"],"dataset":{"id":"d2b1e468-bc3c-4d08-b855-ae3327465375","name":{"pool_name":"oxp_9db196bf-828d-4e55-a2c1-dd9d579d3908","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::3]:32345"},"services":[{"id":"d2b1e468-bc3c-4d08-b855-ae3327465375","details":{"type":"crucible","address":"[fd00:1122:3344:106::3]:32345"}}]},"root":"/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone"},{"zone":{"id":"61f94a16-79fd-42e3-b225-a4dc67228437","zone_type":"crucible","addresses":["fd00:1122:3344:106::6"],"dataset":{"id":"61f94a16-79fd-42e3-b225-a4dc67228437","name":{"pool_name":"oxp_d77d5b08-5f70-496a-997b-b38804dc3b8a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::6]:32345"},"services":[{"id":"61f94a16-79fd-42e3-b225-a4dc67228437","details":{"type":"crucible","address":"[fd00:1122:3344:106::6]:32345"}}]},"root":"/pool/ext/daf9e3cd-5a40-4eba-a0f6-4f94dab37dae/crypt/zone"},{"zone":{"id":"7d32ef34-dec5-4fd8-899e-20bbc473a3ee","zone_type":"crucible","addresses":["fd00:1122:3344:106::7"],"dataset":{"id":"7d32ef34-dec5-4fd8-899e-20bbc473a3ee","name":{"pool_name":"oxp_50c1b653-6231-41fe-b3cf-b7ba709a0746","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::7]:32345"},"services":[{"id":"7d32ef34-dec5-4fd8-899e-20bbc473a3ee","details":{"type":"crucible","address":"[fd00:1122:3344:106::7]:32345"}}]},"root":"/pool/ext/9db196bf-828d-4e55-a2c1-dd9d579d3908/crypt/zone"},{"zone":{"id":"c34b7ae5-26b9-4651-a3c4-20bba2bd0d2c","zone_type":"crucible","addresses":["fd00:1122:3344:106::5"],"dataset":{"id":"c34b7ae5-26b9-4651-a3c4-20bba2bd0d2c","name":{"pool_name":"oxp_88aea92c-ab92-44c1-9471-eb8e30e075d3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::5]:32345"},"services":[{"id":"c34b7ae5-26b9-4651-a3c4-20bba2bd0d2c","details":{"type":"crucible","address":"[fd00:1122:3344:106::5]:32345"}}]},"root":"/pool/ext/8da316d4-6b18-4980-a0a8-6e76e72cc40d/crypt/zone"},{"zone":{"id":"36472be8-9a70-4c14-bd02-439b725cec1a","zone_type":"crucible","addresses":["fd00:1122:3344:106::8"],"dataset":{"id":"36472be8-9a70-4c14-bd02-439b725cec1a","name":{"pool_name":"oxp_54544b3a-1513-4db2-911e-7c1eb4b12385","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::8]:32345"},"services":[{"id":"36472be8-9a70-4c14-bd02-439b725cec1a","details":{"type":"crucible","address":"[fd00:1122:3344:106::8]:32345"}}]},"root":"/pool/ext/54544b3a-1513-4db2-911e-7c1eb4b12385/crypt/zone"},{"zone":{"id":"2548f8ab-5255-4334-a1fb-5d7d95213129","zone_type":"crucible","addresses":["fd00:1122:3344:106::9"],"dataset":{"id":"2548f8ab-5255-4334-a1fb-5d7d95213129","name":{"pool_name":"oxp_08050450-967f-431c-9a12-0d051aff020e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::9]:32345"},"services":[{"id":"2548f8ab-5255-4334-a1fb-5d7d95213129","details":{"type":"crucible","address":"[fd00:1122:3344:106::9]:32345"}}]},"root":"/pool/ext/08050450-967f-431c-9a12-0d051aff020e/crypt/zone"},{"zone":{"id":"1455c069-853c-49cd-853a-3ea81b89acd4","zone_type":"crucible","addresses":["fd00:1122:3344:106::c"],"dataset":{"id":"1455c069-853c-49cd-853a-3ea81b89acd4","name":{"pool_name":"oxp_8da316d4-6b18-4980-a0a8-6e76e72cc40d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::c]:32345"},"services":[{"id":"1455c069-853c-49cd-853a-3ea81b89acd4","details":{"type":"crucible","address":"[fd00:1122:3344:106::c]:32345"}}]},"root":"/pool/ext/08050450-967f-431c-9a12-0d051aff020e/crypt/zone"},{"zone":{"id":"27c0244b-f91a-46c3-bc96-e8eec009371e","zone_type":"crucible","addresses":["fd00:1122:3344:106::b"],"dataset":{"id":"27c0244b-f91a-46c3-bc96-e8eec009371e","name":{"pool_name":"oxp_daf9e3cd-5a40-4eba-a0f6-4f94dab37dae","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::b]:32345"},"services":[{"id":"27c0244b-f91a-46c3-bc96-e8eec009371e","details":{"type":"crucible","address":"[fd00:1122:3344:106::b]:32345"}}]},"root":"/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone"},{"zone":{"id":"9e46d837-1e0f-42b6-a352-84e6946b8734","zone_type":"crucible","addresses":["fd00:1122:3344:106::4"],"dataset":{"id":"9e46d837-1e0f-42b6-a352-84e6946b8734","name":{"pool_name":"oxp_74df4c92-edbb-4431-a770-1d015110e66b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::4]:32345"},"services":[{"id":"9e46d837-1e0f-42b6-a352-84e6946b8734","details":{"type":"crucible","address":"[fd00:1122:3344:106::4]:32345"}}]},"root":"/pool/ext/15f94c39-d48c-41f6-a913-cc1d04aef1a2/crypt/zone"},{"zone":{"id":"b972fcd4-c1b3-4b3c-9e24-f59c7a7cb192","zone_type":"crucible","addresses":["fd00:1122:3344:106::a"],"dataset":{"id":"b972fcd4-c1b3-4b3c-9e24-f59c7a7cb192","name":{"pool_name":"oxp_15f94c39-d48c-41f6-a913-cc1d04aef1a2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:106::a]:32345"},"services":[{"id":"b972fcd4-c1b3-4b3c-9e24-f59c7a7cb192","details":{"type":"crucible","address":"[fd00:1122:3344:106::a]:32345"}}]},"root":"/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone"},{"zone":{"id":"e1c8c655-1950-42d5-ae1f-a4ce84854bbc","zone_type":"ntp","addresses":["fd00:1122:3344:106::d"],"dataset":null,"services":[{"id":"e1c8c655-1950-42d5-ae1f-a4ce84854bbc","details":{"type":"internal_ntp","address":"[fd00:1122:3344:106::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/15f94c39-d48c-41f6-a913-cc1d04aef1a2/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled25.json b/sled-agent/tests/old-service-ledgers/rack3-sled25.json deleted file mode 100644 index 642657bbce..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled25.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"10b80058-9b2e-4d6c-8a1a-a61a8258c12f","zone_type":"crucible","addresses":["fd00:1122:3344:118::9"],"dataset":{"id":"10b80058-9b2e-4d6c-8a1a-a61a8258c12f","name":{"pool_name":"oxp_953c19bb-9fff-4488-8a7b-29de9994a948","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::9]:32345"},"services":[{"id":"10b80058-9b2e-4d6c-8a1a-a61a8258c12f","details":{"type":"crucible","address":"[fd00:1122:3344:118::9]:32345"}}]},"root":"/pool/ext/a78caf97-6145-4908-83b5-a03a6d2e0ac4/crypt/zone"},{"zone":{"id":"f58fef96-7b5e-40c2-9482-669088a19209","zone_type":"crucible","addresses":["fd00:1122:3344:118::d"],"dataset":{"id":"f58fef96-7b5e-40c2-9482-669088a19209","name":{"pool_name":"oxp_d7976706-d6ed-4465-8b04-450c96d8feec","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::d]:32345"},"services":[{"id":"f58fef96-7b5e-40c2-9482-669088a19209","details":{"type":"crucible","address":"[fd00:1122:3344:118::d]:32345"}}]},"root":"/pool/ext/d7976706-d6ed-4465-8b04-450c96d8feec/crypt/zone"},{"zone":{"id":"624f1168-47b6-4aa1-84da-e20a0d74d783","zone_type":"crucible","addresses":["fd00:1122:3344:118::b"],"dataset":{"id":"624f1168-47b6-4aa1-84da-e20a0d74d783","name":{"pool_name":"oxp_a78caf97-6145-4908-83b5-a03a6d2e0ac4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::b]:32345"},"services":[{"id":"624f1168-47b6-4aa1-84da-e20a0d74d783","details":{"type":"crucible","address":"[fd00:1122:3344:118::b]:32345"}}]},"root":"/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone"},{"zone":{"id":"8ea85412-19b4-45c1-a53c-027ddd629296","zone_type":"crucible","addresses":["fd00:1122:3344:118::6"],"dataset":{"id":"8ea85412-19b4-45c1-a53c-027ddd629296","name":{"pool_name":"oxp_d5f4c903-155a-4c91-aadd-6039a4f64821","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::6]:32345"},"services":[{"id":"8ea85412-19b4-45c1-a53c-027ddd629296","details":{"type":"crucible","address":"[fd00:1122:3344:118::6]:32345"}}]},"root":"/pool/ext/7d2a7685-c1c9-4d2d-a2bb-df65d96ea3e2/crypt/zone"},{"zone":{"id":"fd226b82-71d7-4719-b32c-a6c7abe28a2a","zone_type":"external_dns","addresses":["fd00:1122:3344:118::3"],"dataset":{"id":"fd226b82-71d7-4719-b32c-a6c7abe28a2a","name":{"pool_name":"oxp_84a80b58-70e9-439c-9558-5b343d9a4b53","kind":{"type":"external_dns"}},"service_address":"[fd00:1122:3344:118::3]:5353"},"services":[{"id":"fd226b82-71d7-4719-b32c-a6c7abe28a2a","details":{"type":"external_dns","http_address":"[fd00:1122:3344:118::3]:5353","dns_address":"45.154.216.34:53","nic":{"id":"7f72b6fd-1120-44dc-b3a7-f727502ba47c","kind":{"type":"service","id":"fd226b82-71d7-4719-b32c-a6c7abe28a2a"},"name":"external-dns-fd226b82-71d7-4719-b32c-a6c7abe28a2a","ip":"172.30.1.6","mac":"A8:40:25:FF:9E:D1","subnet":"172.30.1.0/24","vni":100,"primary":true,"slot":0}}}]},"root":"/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone"},{"zone":{"id":"08d0c38d-f0d9-45b9-856d-b85059fe5f07","zone_type":"crucible","addresses":["fd00:1122:3344:118::4"],"dataset":{"id":"08d0c38d-f0d9-45b9-856d-b85059fe5f07","name":{"pool_name":"oxp_84a80b58-70e9-439c-9558-5b343d9a4b53","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::4]:32345"},"services":[{"id":"08d0c38d-f0d9-45b9-856d-b85059fe5f07","details":{"type":"crucible","address":"[fd00:1122:3344:118::4]:32345"}}]},"root":"/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone"},{"zone":{"id":"5de7d3fd-4a3f-4fdd-b6b2-d1186e16dce5","zone_type":"crucible","addresses":["fd00:1122:3344:118::7"],"dataset":{"id":"5de7d3fd-4a3f-4fdd-b6b2-d1186e16dce5","name":{"pool_name":"oxp_d76e058f-2d1e-4b15-b3a0-e5509a246876","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::7]:32345"},"services":[{"id":"5de7d3fd-4a3f-4fdd-b6b2-d1186e16dce5","details":{"type":"crucible","address":"[fd00:1122:3344:118::7]:32345"}}]},"root":"/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone"},{"zone":{"id":"5d0f5cad-10b3-497c-903b-eeeabce920e2","zone_type":"crucible","addresses":["fd00:1122:3344:118::8"],"dataset":{"id":"5d0f5cad-10b3-497c-903b-eeeabce920e2","name":{"pool_name":"oxp_3a3ad639-8800-4951-bc2a-201d269e47a2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::8]:32345"},"services":[{"id":"5d0f5cad-10b3-497c-903b-eeeabce920e2","details":{"type":"crucible","address":"[fd00:1122:3344:118::8]:32345"}}]},"root":"/pool/ext/3a3ad639-8800-4951-bc2a-201d269e47a2/crypt/zone"},{"zone":{"id":"39f9cefa-801c-4843-9fb9-05446ffbdd1a","zone_type":"crucible","addresses":["fd00:1122:3344:118::a"],"dataset":{"id":"39f9cefa-801c-4843-9fb9-05446ffbdd1a","name":{"pool_name":"oxp_7d2a7685-c1c9-4d2d-a2bb-df65d96ea3e2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::a]:32345"},"services":[{"id":"39f9cefa-801c-4843-9fb9-05446ffbdd1a","details":{"type":"crucible","address":"[fd00:1122:3344:118::a]:32345"}}]},"root":"/pool/ext/a78caf97-6145-4908-83b5-a03a6d2e0ac4/crypt/zone"},{"zone":{"id":"0711e710-7fdd-4e68-94c8-294b8677e804","zone_type":"crucible","addresses":["fd00:1122:3344:118::5"],"dataset":{"id":"0711e710-7fdd-4e68-94c8-294b8677e804","name":{"pool_name":"oxp_a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::5]:32345"},"services":[{"id":"0711e710-7fdd-4e68-94c8-294b8677e804","details":{"type":"crucible","address":"[fd00:1122:3344:118::5]:32345"}}]},"root":"/pool/ext/3a3ad639-8800-4951-bc2a-201d269e47a2/crypt/zone"},{"zone":{"id":"318a62cc-5c6c-4805-9fb6-c0f6a75ce31c","zone_type":"crucible","addresses":["fd00:1122:3344:118::c"],"dataset":{"id":"318a62cc-5c6c-4805-9fb6-c0f6a75ce31c","name":{"pool_name":"oxp_1d5f0ba3-6b31-4cea-a9a9-2065a538887d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:118::c]:32345"},"services":[{"id":"318a62cc-5c6c-4805-9fb6-c0f6a75ce31c","details":{"type":"crucible","address":"[fd00:1122:3344:118::c]:32345"}}]},"root":"/pool/ext/d7976706-d6ed-4465-8b04-450c96d8feec/crypt/zone"},{"zone":{"id":"463d0498-85b9-40eb-af96-d99af58a587c","zone_type":"ntp","addresses":["fd00:1122:3344:118::e"],"dataset":null,"services":[{"id":"463d0498-85b9-40eb-af96-d99af58a587c","details":{"type":"internal_ntp","address":"[fd00:1122:3344:118::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/d5f4c903-155a-4c91-aadd-6039a4f64821/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled26.json b/sled-agent/tests/old-service-ledgers/rack3-sled26.json deleted file mode 100644 index 0978cb9e45..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled26.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"d8b3de97-cc79-48f6-83ad-02017c21223b","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:119::3"],"dataset":null,"services":[{"id":"d8b3de97-cc79-48f6-83ad-02017c21223b","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:119::3]:17000"}}]},"root":"/pool/ext/e0faea44-8b5c-40b0-bb75-a1aec1a10377/crypt/zone"},{"zone":{"id":"adba1a3b-5bac-44d5-aa5a-879dc6eadb5f","zone_type":"crucible","addresses":["fd00:1122:3344:119::c"],"dataset":{"id":"adba1a3b-5bac-44d5-aa5a-879dc6eadb5f","name":{"pool_name":"oxp_21c339c3-6461-4bdb-8b0e-c0f9f08ee10b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::c]:32345"},"services":[{"id":"adba1a3b-5bac-44d5-aa5a-879dc6eadb5f","details":{"type":"crucible","address":"[fd00:1122:3344:119::c]:32345"}}]},"root":"/pool/ext/f5c73c28-2168-4321-b737-4ca6663155c9/crypt/zone"},{"zone":{"id":"42bb9833-5c39-4aba-b2c4-da2ca1287728","zone_type":"crucible","addresses":["fd00:1122:3344:119::a"],"dataset":{"id":"42bb9833-5c39-4aba-b2c4-da2ca1287728","name":{"pool_name":"oxp_1f91451d-a466-4c9a-a6e6-0abd7985595f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::a]:32345"},"services":[{"id":"42bb9833-5c39-4aba-b2c4-da2ca1287728","details":{"type":"crucible","address":"[fd00:1122:3344:119::a]:32345"}}]},"root":"/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone"},{"zone":{"id":"197695e1-d949-4982-b679-6e5c9ab4bcc7","zone_type":"crucible","addresses":["fd00:1122:3344:119::b"],"dataset":{"id":"197695e1-d949-4982-b679-6e5c9ab4bcc7","name":{"pool_name":"oxp_e0faea44-8b5c-40b0-bb75-a1aec1a10377","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::b]:32345"},"services":[{"id":"197695e1-d949-4982-b679-6e5c9ab4bcc7","details":{"type":"crucible","address":"[fd00:1122:3344:119::b]:32345"}}]},"root":"/pool/ext/b31e1815-cae0-4145-940c-874fff63bdd5/crypt/zone"},{"zone":{"id":"bf99d4f8-edf1-4de5-98d4-8e6a24965005","zone_type":"crucible","addresses":["fd00:1122:3344:119::8"],"dataset":{"id":"bf99d4f8-edf1-4de5-98d4-8e6a24965005","name":{"pool_name":"oxp_ef2c3afb-6962-4f6b-b567-14766bbd9ec0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::8]:32345"},"services":[{"id":"bf99d4f8-edf1-4de5-98d4-8e6a24965005","details":{"type":"crucible","address":"[fd00:1122:3344:119::8]:32345"}}]},"root":"/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone"},{"zone":{"id":"390d1853-8be9-4987-b8b6-f022999bf4e7","zone_type":"crucible","addresses":["fd00:1122:3344:119::7"],"dataset":{"id":"390d1853-8be9-4987-b8b6-f022999bf4e7","name":{"pool_name":"oxp_06eed00a-d8d3-4b9d-84c9-23fce535f63e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::7]:32345"},"services":[{"id":"390d1853-8be9-4987-b8b6-f022999bf4e7","details":{"type":"crucible","address":"[fd00:1122:3344:119::7]:32345"}}]},"root":"/pool/ext/ef2c3afb-6962-4f6b-b567-14766bbd9ec0/crypt/zone"},{"zone":{"id":"76fe2161-90df-41b5-9c94-067de9c29db1","zone_type":"crucible","addresses":["fd00:1122:3344:119::4"],"dataset":{"id":"76fe2161-90df-41b5-9c94-067de9c29db1","name":{"pool_name":"oxp_f5c73c28-2168-4321-b737-4ca6663155c9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::4]:32345"},"services":[{"id":"76fe2161-90df-41b5-9c94-067de9c29db1","details":{"type":"crucible","address":"[fd00:1122:3344:119::4]:32345"}}]},"root":"/pool/ext/ef2c3afb-6962-4f6b-b567-14766bbd9ec0/crypt/zone"},{"zone":{"id":"f49dc522-2b13-4055-964c-8315671096aa","zone_type":"crucible","addresses":["fd00:1122:3344:119::d"],"dataset":{"id":"f49dc522-2b13-4055-964c-8315671096aa","name":{"pool_name":"oxp_662c278b-7f5f-4c7e-91ff-70207e8a307b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::d]:32345"},"services":[{"id":"f49dc522-2b13-4055-964c-8315671096aa","details":{"type":"crucible","address":"[fd00:1122:3344:119::d]:32345"}}]},"root":"/pool/ext/1f91451d-a466-4c9a-a6e6-0abd7985595f/crypt/zone"},{"zone":{"id":"08cc7bd6-368e-4d16-a619-28b17eff35af","zone_type":"crucible","addresses":["fd00:1122:3344:119::9"],"dataset":{"id":"08cc7bd6-368e-4d16-a619-28b17eff35af","name":{"pool_name":"oxp_5516b9ac-b139-40da-aa3b-f094568ba095","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::9]:32345"},"services":[{"id":"08cc7bd6-368e-4d16-a619-28b17eff35af","details":{"type":"crucible","address":"[fd00:1122:3344:119::9]:32345"}}]},"root":"/pool/ext/06eed00a-d8d3-4b9d-84c9-23fce535f63e/crypt/zone"},{"zone":{"id":"74b0613f-bce8-4922-93e0-b5bfccfc8443","zone_type":"crucible","addresses":["fd00:1122:3344:119::5"],"dataset":{"id":"74b0613f-bce8-4922-93e0-b5bfccfc8443","name":{"pool_name":"oxp_b31e1815-cae0-4145-940c-874fff63bdd5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::5]:32345"},"services":[{"id":"74b0613f-bce8-4922-93e0-b5bfccfc8443","details":{"type":"crucible","address":"[fd00:1122:3344:119::5]:32345"}}]},"root":"/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone"},{"zone":{"id":"55fcfc62-8435-475f-a2aa-29373901b993","zone_type":"crucible","addresses":["fd00:1122:3344:119::6"],"dataset":{"id":"55fcfc62-8435-475f-a2aa-29373901b993","name":{"pool_name":"oxp_eadf6a03-1028-4d48-ac0d-0d27ef2c8c0f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:119::6]:32345"},"services":[{"id":"55fcfc62-8435-475f-a2aa-29373901b993","details":{"type":"crucible","address":"[fd00:1122:3344:119::6]:32345"}}]},"root":"/pool/ext/1f91451d-a466-4c9a-a6e6-0abd7985595f/crypt/zone"},{"zone":{"id":"d52ccea3-6d7f-43a6-a19f-e0409f4e9cdc","zone_type":"ntp","addresses":["fd00:1122:3344:119::e"],"dataset":null,"services":[{"id":"d52ccea3-6d7f-43a6-a19f-e0409f4e9cdc","details":{"type":"internal_ntp","address":"[fd00:1122:3344:119::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/f5c73c28-2168-4321-b737-4ca6663155c9/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled27.json b/sled-agent/tests/old-service-ledgers/rack3-sled27.json deleted file mode 100644 index 0b2db29c4a..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled27.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"095e612f-e218-4a16-aa6e-98c3d69a470a","zone_type":"crucible","addresses":["fd00:1122:3344:10d::a"],"dataset":{"id":"095e612f-e218-4a16-aa6e-98c3d69a470a","name":{"pool_name":"oxp_9f657858-623f-4d78-9841-6e620b5ede30","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::a]:32345"},"services":[{"id":"095e612f-e218-4a16-aa6e-98c3d69a470a","details":{"type":"crucible","address":"[fd00:1122:3344:10d::a]:32345"}}]},"root":"/pool/ext/2d086b51-2b77-4bc7-adc6-43586ea38ce9/crypt/zone"},{"zone":{"id":"de818730-0e3b-4567-94e7-344bd9b6f564","zone_type":"crucible","addresses":["fd00:1122:3344:10d::3"],"dataset":{"id":"de818730-0e3b-4567-94e7-344bd9b6f564","name":{"pool_name":"oxp_ba6ab301-07e1-4d35-80ac-59612f2c2bdb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::3]:32345"},"services":[{"id":"de818730-0e3b-4567-94e7-344bd9b6f564","details":{"type":"crucible","address":"[fd00:1122:3344:10d::3]:32345"}}]},"root":"/pool/ext/7cee2806-e898-47d8-b568-e276a6e271f8/crypt/zone"},{"zone":{"id":"6a21dc3c-3a9d-4520-9a91-7d8f2737bcd4","zone_type":"crucible","addresses":["fd00:1122:3344:10d::4"],"dataset":{"id":"6a21dc3c-3a9d-4520-9a91-7d8f2737bcd4","name":{"pool_name":"oxp_7cee2806-e898-47d8-b568-e276a6e271f8","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::4]:32345"},"services":[{"id":"6a21dc3c-3a9d-4520-9a91-7d8f2737bcd4","details":{"type":"crucible","address":"[fd00:1122:3344:10d::4]:32345"}}]},"root":"/pool/ext/cef23d87-31ed-40d5-99b8-12d7be8e46e7/crypt/zone"},{"zone":{"id":"e01b7f45-b8d7-4944-ba5b-41fb699889a9","zone_type":"crucible","addresses":["fd00:1122:3344:10d::b"],"dataset":{"id":"e01b7f45-b8d7-4944-ba5b-41fb699889a9","name":{"pool_name":"oxp_d9af8878-50bd-4425-95d9-e6556ce92cfa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::b]:32345"},"services":[{"id":"e01b7f45-b8d7-4944-ba5b-41fb699889a9","details":{"type":"crucible","address":"[fd00:1122:3344:10d::b]:32345"}}]},"root":"/pool/ext/6fe9bcaa-88cb-451d-b086-24a3ad53fa22/crypt/zone"},{"zone":{"id":"4271ef62-d319-4e80-b157-915321cec8c7","zone_type":"crucible","addresses":["fd00:1122:3344:10d::c"],"dataset":{"id":"4271ef62-d319-4e80-b157-915321cec8c7","name":{"pool_name":"oxp_ba8ee7dd-cdfb-48bd-92ce-4dc45e070930","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::c]:32345"},"services":[{"id":"4271ef62-d319-4e80-b157-915321cec8c7","details":{"type":"crucible","address":"[fd00:1122:3344:10d::c]:32345"}}]},"root":"/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone"},{"zone":{"id":"6bdcc159-aeb9-4903-9486-dd8b43a3dc16","zone_type":"crucible","addresses":["fd00:1122:3344:10d::8"],"dataset":{"id":"6bdcc159-aeb9-4903-9486-dd8b43a3dc16","name":{"pool_name":"oxp_5b03a5dc-bb5a-4bf4-bc21-0af849cd1dab","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::8]:32345"},"services":[{"id":"6bdcc159-aeb9-4903-9486-dd8b43a3dc16","details":{"type":"crucible","address":"[fd00:1122:3344:10d::8]:32345"}}]},"root":"/pool/ext/d9af8878-50bd-4425-95d9-e6556ce92cfa/crypt/zone"},{"zone":{"id":"85540e54-cdd7-4baa-920c-5cf54cbc1f83","zone_type":"crucible","addresses":["fd00:1122:3344:10d::7"],"dataset":{"id":"85540e54-cdd7-4baa-920c-5cf54cbc1f83","name":{"pool_name":"oxp_ee24f9a6-84ab-49a5-a28f-e394abfcaa95","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::7]:32345"},"services":[{"id":"85540e54-cdd7-4baa-920c-5cf54cbc1f83","details":{"type":"crucible","address":"[fd00:1122:3344:10d::7]:32345"}}]},"root":"/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone"},{"zone":{"id":"750d1a0b-6a14-46c5-9a0b-a504caefb198","zone_type":"crucible","addresses":["fd00:1122:3344:10d::9"],"dataset":{"id":"750d1a0b-6a14-46c5-9a0b-a504caefb198","name":{"pool_name":"oxp_cef23d87-31ed-40d5-99b8-12d7be8e46e7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::9]:32345"},"services":[{"id":"750d1a0b-6a14-46c5-9a0b-a504caefb198","details":{"type":"crucible","address":"[fd00:1122:3344:10d::9]:32345"}}]},"root":"/pool/ext/ba8ee7dd-cdfb-48bd-92ce-4dc45e070930/crypt/zone"},{"zone":{"id":"b5996893-1a9a-434e-a257-d702694f058b","zone_type":"crucible","addresses":["fd00:1122:3344:10d::6"],"dataset":{"id":"b5996893-1a9a-434e-a257-d702694f058b","name":{"pool_name":"oxp_2d086b51-2b77-4bc7-adc6-43586ea38ce9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::6]:32345"},"services":[{"id":"b5996893-1a9a-434e-a257-d702694f058b","details":{"type":"crucible","address":"[fd00:1122:3344:10d::6]:32345"}}]},"root":"/pool/ext/7cee2806-e898-47d8-b568-e276a6e271f8/crypt/zone"},{"zone":{"id":"8b36686a-b98d-451a-9124-a3583000a83a","zone_type":"crucible","addresses":["fd00:1122:3344:10d::5"],"dataset":{"id":"8b36686a-b98d-451a-9124-a3583000a83a","name":{"pool_name":"oxp_6fe9bcaa-88cb-451d-b086-24a3ad53fa22","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10d::5]:32345"},"services":[{"id":"8b36686a-b98d-451a-9124-a3583000a83a","details":{"type":"crucible","address":"[fd00:1122:3344:10d::5]:32345"}}]},"root":"/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone"},{"zone":{"id":"88d695a2-c8c1-41af-85b0-77424f4d650d","zone_type":"ntp","addresses":["fd00:1122:3344:10d::d"],"dataset":null,"services":[{"id":"88d695a2-c8c1-41af-85b0-77424f4d650d","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10d::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/ba6ab301-07e1-4d35-80ac-59612f2c2bdb/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled28.json b/sled-agent/tests/old-service-ledgers/rack3-sled28.json deleted file mode 100644 index ec137c18fa..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled28.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"a126365d-f459-43bf-9f99-dbe1c4cdecf8","zone_type":"crucible","addresses":["fd00:1122:3344:113::4"],"dataset":{"id":"a126365d-f459-43bf-9f99-dbe1c4cdecf8","name":{"pool_name":"oxp_c99eabb2-6815-416a-9660-87e2609b357a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::4]:32345"},"services":[{"id":"a126365d-f459-43bf-9f99-dbe1c4cdecf8","details":{"type":"crucible","address":"[fd00:1122:3344:113::4]:32345"}}]},"root":"/pool/ext/6461a450-f043-4d1e-bc03-4a68ed5fe94a/crypt/zone"},{"zone":{"id":"52f57ef8-546a-43bd-a0f3-8c42b99c37a6","zone_type":"crucible","addresses":["fd00:1122:3344:113::3"],"dataset":{"id":"52f57ef8-546a-43bd-a0f3-8c42b99c37a6","name":{"pool_name":"oxp_f6530e9c-6d64-44fa-93d5-ae427916fbf1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::3]:32345"},"services":[{"id":"52f57ef8-546a-43bd-a0f3-8c42b99c37a6","details":{"type":"crucible","address":"[fd00:1122:3344:113::3]:32345"}}]},"root":"/pool/ext/97662260-6b62-450f-9d7e-42f7dee5d568/crypt/zone"},{"zone":{"id":"3ee87855-9423-43ff-800a-fa4fdbf1d956","zone_type":"crucible","addresses":["fd00:1122:3344:113::a"],"dataset":{"id":"3ee87855-9423-43ff-800a-fa4fdbf1d956","name":{"pool_name":"oxp_6461a450-f043-4d1e-bc03-4a68ed5fe94a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::a]:32345"},"services":[{"id":"3ee87855-9423-43ff-800a-fa4fdbf1d956","details":{"type":"crucible","address":"[fd00:1122:3344:113::a]:32345"}}]},"root":"/pool/ext/9515dc86-fe62-4d4f-b38d-b3461cc042fc/crypt/zone"},{"zone":{"id":"55d0ddf9-9b24-4a7a-b97f-248e240f9ba6","zone_type":"crucible","addresses":["fd00:1122:3344:113::5"],"dataset":{"id":"55d0ddf9-9b24-4a7a-b97f-248e240f9ba6","name":{"pool_name":"oxp_97662260-6b62-450f-9d7e-42f7dee5d568","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::5]:32345"},"services":[{"id":"55d0ddf9-9b24-4a7a-b97f-248e240f9ba6","details":{"type":"crucible","address":"[fd00:1122:3344:113::5]:32345"}}]},"root":"/pool/ext/9515dc86-fe62-4d4f-b38d-b3461cc042fc/crypt/zone"},{"zone":{"id":"014cad37-56a7-4b2a-9c9e-505b15b4de85","zone_type":"crucible","addresses":["fd00:1122:3344:113::b"],"dataset":{"id":"014cad37-56a7-4b2a-9c9e-505b15b4de85","name":{"pool_name":"oxp_8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::b]:32345"},"services":[{"id":"014cad37-56a7-4b2a-9c9e-505b15b4de85","details":{"type":"crucible","address":"[fd00:1122:3344:113::b]:32345"}}]},"root":"/pool/ext/6461a450-f043-4d1e-bc03-4a68ed5fe94a/crypt/zone"},{"zone":{"id":"e14fb192-aaab-42ab-aa86-c85f13955940","zone_type":"crucible","addresses":["fd00:1122:3344:113::6"],"dataset":{"id":"e14fb192-aaab-42ab-aa86-c85f13955940","name":{"pool_name":"oxp_5a9455ca-fb01-4549-9a70-7579c031779d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::6]:32345"},"services":[{"id":"e14fb192-aaab-42ab-aa86-c85f13955940","details":{"type":"crucible","address":"[fd00:1122:3344:113::6]:32345"}}]},"root":"/pool/ext/f6530e9c-6d64-44fa-93d5-ae427916fbf1/crypt/zone"},{"zone":{"id":"14540609-9371-442b-8486-88c244e97cd4","zone_type":"crucible","addresses":["fd00:1122:3344:113::8"],"dataset":{"id":"14540609-9371-442b-8486-88c244e97cd4","name":{"pool_name":"oxp_2916d6f3-8775-4887-a6d3-f9723982756f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::8]:32345"},"services":[{"id":"14540609-9371-442b-8486-88c244e97cd4","details":{"type":"crucible","address":"[fd00:1122:3344:113::8]:32345"}}]},"root":"/pool/ext/8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90/crypt/zone"},{"zone":{"id":"97a6b35f-0af9-41eb-93a1-f8bc5dbba357","zone_type":"crucible","addresses":["fd00:1122:3344:113::7"],"dataset":{"id":"97a6b35f-0af9-41eb-93a1-f8bc5dbba357","name":{"pool_name":"oxp_9515dc86-fe62-4d4f-b38d-b3461cc042fc","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::7]:32345"},"services":[{"id":"97a6b35f-0af9-41eb-93a1-f8bc5dbba357","details":{"type":"crucible","address":"[fd00:1122:3344:113::7]:32345"}}]},"root":"/pool/ext/8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90/crypt/zone"},{"zone":{"id":"5734aa24-cb66-4b0a-9eb2-564646f8d729","zone_type":"crucible","addresses":["fd00:1122:3344:113::9"],"dataset":{"id":"5734aa24-cb66-4b0a-9eb2-564646f8d729","name":{"pool_name":"oxp_9f889a6c-17b1-4edd-9659-458d91439dc1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::9]:32345"},"services":[{"id":"5734aa24-cb66-4b0a-9eb2-564646f8d729","details":{"type":"crucible","address":"[fd00:1122:3344:113::9]:32345"}}]},"root":"/pool/ext/a5074e7f-8d3b-40e0-a79e-dbd9af9d5693/crypt/zone"},{"zone":{"id":"ba86eca1-1427-4540-b4a6-1d9a0e1bc656","zone_type":"crucible","addresses":["fd00:1122:3344:113::c"],"dataset":{"id":"ba86eca1-1427-4540-b4a6-1d9a0e1bc656","name":{"pool_name":"oxp_a5074e7f-8d3b-40e0-a79e-dbd9af9d5693","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:113::c]:32345"},"services":[{"id":"ba86eca1-1427-4540-b4a6-1d9a0e1bc656","details":{"type":"crucible","address":"[fd00:1122:3344:113::c]:32345"}}]},"root":"/pool/ext/2916d6f3-8775-4887-a6d3-f9723982756f/crypt/zone"},{"zone":{"id":"6634dbc4-d22f-40a4-8cd3-4f271d781fa1","zone_type":"ntp","addresses":["fd00:1122:3344:113::d"],"dataset":null,"services":[{"id":"6634dbc4-d22f-40a4-8cd3-4f271d781fa1","details":{"type":"internal_ntp","address":"[fd00:1122:3344:113::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/a5074e7f-8d3b-40e0-a79e-dbd9af9d5693/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled29.json b/sled-agent/tests/old-service-ledgers/rack3-sled29.json deleted file mode 100644 index 2618364e4f..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled29.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":5,"requests":[{"zone":{"id":"1cdd1ebf-9321-4f2d-914c-1e617f60b41a","zone_type":"crucible","addresses":["fd00:1122:3344:120::8"],"dataset":{"id":"1cdd1ebf-9321-4f2d-914c-1e617f60b41a","name":{"pool_name":"oxp_74046573-78a2-46b4-86dc-40bb2ee29dd5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::8]:32345"},"services":[{"id":"1cdd1ebf-9321-4f2d-914c-1e617f60b41a","details":{"type":"crucible","address":"[fd00:1122:3344:120::8]:32345"}}]},"root":"/pool/ext/c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e/crypt/zone"},{"zone":{"id":"720a0d08-d1c0-43ba-af86-f2dac1a53639","zone_type":"crucible","addresses":["fd00:1122:3344:120::c"],"dataset":{"id":"720a0d08-d1c0-43ba-af86-f2dac1a53639","name":{"pool_name":"oxp_068d2790-1044-41ed-97a5-b493490b14d1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::c]:32345"},"services":[{"id":"720a0d08-d1c0-43ba-af86-f2dac1a53639","details":{"type":"crucible","address":"[fd00:1122:3344:120::c]:32345"}}]},"root":"/pool/ext/86cd16cf-d00d-40bc-b14a-8220b1e11476/crypt/zone"},{"zone":{"id":"d9f0b97b-2cef-4155-b45f-7db89263e4cf","zone_type":"crucible","addresses":["fd00:1122:3344:120::9"],"dataset":{"id":"d9f0b97b-2cef-4155-b45f-7db89263e4cf","name":{"pool_name":"oxp_8171bf0d-e61e-43f9-87d6-ec8833b80102","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::9]:32345"},"services":[{"id":"d9f0b97b-2cef-4155-b45f-7db89263e4cf","details":{"type":"crucible","address":"[fd00:1122:3344:120::9]:32345"}}]},"root":"/pool/ext/86cd16cf-d00d-40bc-b14a-8220b1e11476/crypt/zone"},{"zone":{"id":"018edff1-0d95-45a3-9a01-39c419bec55a","zone_type":"crucible","addresses":["fd00:1122:3344:120::b"],"dataset":{"id":"018edff1-0d95-45a3-9a01-39c419bec55a","name":{"pool_name":"oxp_0b11e026-f265-49a0-935f-7b234c19c789","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::b]:32345"},"services":[{"id":"018edff1-0d95-45a3-9a01-39c419bec55a","details":{"type":"crucible","address":"[fd00:1122:3344:120::b]:32345"}}]},"root":"/pool/ext/35db8700-d6a7-498c-9d2c-08eb9ab41b7c/crypt/zone"},{"zone":{"id":"f8cc1c1e-a556-436c-836d-42052101c38a","zone_type":"crucible","addresses":["fd00:1122:3344:120::3"],"dataset":{"id":"f8cc1c1e-a556-436c-836d-42052101c38a","name":{"pool_name":"oxp_ed8e5a26-5591-405a-b792-408f5b16e444","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::3]:32345"},"services":[{"id":"f8cc1c1e-a556-436c-836d-42052101c38a","details":{"type":"crucible","address":"[fd00:1122:3344:120::3]:32345"}}]},"root":"/pool/ext/1069bdee-fe5a-4164-a856-ff8ae56c07fb/crypt/zone"},{"zone":{"id":"f9600313-fac0-45a1-a1b5-02dd6af468b9","zone_type":"crucible","addresses":["fd00:1122:3344:120::4"],"dataset":{"id":"f9600313-fac0-45a1-a1b5-02dd6af468b9","name":{"pool_name":"oxp_c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::4]:32345"},"services":[{"id":"f9600313-fac0-45a1-a1b5-02dd6af468b9","details":{"type":"crucible","address":"[fd00:1122:3344:120::4]:32345"}}]},"root":"/pool/ext/74046573-78a2-46b4-86dc-40bb2ee29dd5/crypt/zone"},{"zone":{"id":"869e4f7c-5312-4b98-bacc-1508f236bf5a","zone_type":"crucible","addresses":["fd00:1122:3344:120::6"],"dataset":{"id":"869e4f7c-5312-4b98-bacc-1508f236bf5a","name":{"pool_name":"oxp_04aea8dc-4316-432f-a13a-d7d9b2efa3f2","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::6]:32345"},"services":[{"id":"869e4f7c-5312-4b98-bacc-1508f236bf5a","details":{"type":"crucible","address":"[fd00:1122:3344:120::6]:32345"}}]},"root":"/pool/ext/0b11e026-f265-49a0-935f-7b234c19c789/crypt/zone"},{"zone":{"id":"31ed5a0c-7caf-4825-b730-85ee94fe27f1","zone_type":"crucible","addresses":["fd00:1122:3344:120::a"],"dataset":{"id":"31ed5a0c-7caf-4825-b730-85ee94fe27f1","name":{"pool_name":"oxp_86cd16cf-d00d-40bc-b14a-8220b1e11476","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::a]:32345"},"services":[{"id":"31ed5a0c-7caf-4825-b730-85ee94fe27f1","details":{"type":"crucible","address":"[fd00:1122:3344:120::a]:32345"}}]},"root":"/pool/ext/04aea8dc-4316-432f-a13a-d7d9b2efa3f2/crypt/zone"},{"zone":{"id":"7e5a3c39-152a-4270-b01e-9e144cca4aaa","zone_type":"crucible","addresses":["fd00:1122:3344:120::5"],"dataset":{"id":"7e5a3c39-152a-4270-b01e-9e144cca4aaa","name":{"pool_name":"oxp_1069bdee-fe5a-4164-a856-ff8ae56c07fb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::5]:32345"},"services":[{"id":"7e5a3c39-152a-4270-b01e-9e144cca4aaa","details":{"type":"crucible","address":"[fd00:1122:3344:120::5]:32345"}}]},"root":"/pool/ext/04aea8dc-4316-432f-a13a-d7d9b2efa3f2/crypt/zone"},{"zone":{"id":"9a03a386-7304-4a86-bee8-153ef643195e","zone_type":"crucible","addresses":["fd00:1122:3344:120::7"],"dataset":{"id":"9a03a386-7304-4a86-bee8-153ef643195e","name":{"pool_name":"oxp_35db8700-d6a7-498c-9d2c-08eb9ab41b7c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:120::7]:32345"},"services":[{"id":"9a03a386-7304-4a86-bee8-153ef643195e","details":{"type":"crucible","address":"[fd00:1122:3344:120::7]:32345"}}]},"root":"/pool/ext/068d2790-1044-41ed-97a5-b493490b14d1/crypt/zone"},{"zone":{"id":"a800d0a7-1020-481c-8be8-ecfd28b7a2be","zone_type":"ntp","addresses":["fd00:1122:3344:120::d"],"dataset":null,"services":[{"id":"a800d0a7-1020-481c-8be8-ecfd28b7a2be","details":{"type":"internal_ntp","address":"[fd00:1122:3344:120::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e/crypt/zone"},{"zone":{"id":"be469efd-8e07-4b8e-bcee-6fd33373cdef","zone_type":"internal_dns","addresses":["fd00:1122:3344:3::1"],"dataset":{"id":"be469efd-8e07-4b8e-bcee-6fd33373cdef","name":{"pool_name":"oxp_ed8e5a26-5591-405a-b792-408f5b16e444","kind":{"type":"internal_dns"}},"service_address":"[fd00:1122:3344:3::1]:5353"},"services":[{"id":"be469efd-8e07-4b8e-bcee-6fd33373cdef","details":{"type":"internal_dns","http_address":"[fd00:1122:3344:3::1]:5353","dns_address":"[fd00:1122:3344:3::1]:53","gz_address":"fd00:1122:3344:3::2","gz_address_index":2}}]},"root":"/pool/ext/068d2790-1044-41ed-97a5-b493490b14d1/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled3.json b/sled-agent/tests/old-service-ledgers/rack3-sled3.json deleted file mode 100644 index 6bcb626cf6..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled3.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"19d091b8-e005-4ff4-97e1-026de95e3667","zone_type":"crucible","addresses":["fd00:1122:3344:10f::c"],"dataset":{"id":"19d091b8-e005-4ff4-97e1-026de95e3667","name":{"pool_name":"oxp_11a63469-4f57-4976-8620-0055bf82dc97","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::c]:32345"},"services":[{"id":"19d091b8-e005-4ff4-97e1-026de95e3667","details":{"type":"crucible","address":"[fd00:1122:3344:10f::c]:32345"}}]},"root":"/pool/ext/6a73a62c-c636-4557-af45-042cb287aee6/crypt/zone"},{"zone":{"id":"57d77171-104e-4977-b2f9-9b529ee7f8a0","zone_type":"crucible","addresses":["fd00:1122:3344:10f::8"],"dataset":{"id":"57d77171-104e-4977-b2f9-9b529ee7f8a0","name":{"pool_name":"oxp_7f3060af-058f-4f52-ab80-902bd13e7ef4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::8]:32345"},"services":[{"id":"57d77171-104e-4977-b2f9-9b529ee7f8a0","details":{"type":"crucible","address":"[fd00:1122:3344:10f::8]:32345"}}]},"root":"/pool/ext/7f3060af-058f-4f52-ab80-902bd13e7ef4/crypt/zone"},{"zone":{"id":"b0371ccf-67da-4562-baf2-eaabe5243e9b","zone_type":"crucible","addresses":["fd00:1122:3344:10f::7"],"dataset":{"id":"b0371ccf-67da-4562-baf2-eaabe5243e9b","name":{"pool_name":"oxp_58ae04cb-26ff-4e30-a20d-9f847bafba4d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::7]:32345"},"services":[{"id":"b0371ccf-67da-4562-baf2-eaabe5243e9b","details":{"type":"crucible","address":"[fd00:1122:3344:10f::7]:32345"}}]},"root":"/pool/ext/125ddcda-f94b-46bc-a10a-94e9acf40265/crypt/zone"},{"zone":{"id":"ae3791ff-2657-4252-bd61-58ec5dc237cd","zone_type":"crucible","addresses":["fd00:1122:3344:10f::9"],"dataset":{"id":"ae3791ff-2657-4252-bd61-58ec5dc237cd","name":{"pool_name":"oxp_125ddcda-f94b-46bc-a10a-94e9acf40265","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::9]:32345"},"services":[{"id":"ae3791ff-2657-4252-bd61-58ec5dc237cd","details":{"type":"crucible","address":"[fd00:1122:3344:10f::9]:32345"}}]},"root":"/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone"},{"zone":{"id":"73f865dc-5db7-48c6-9dc4-dff56dd8c045","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:10f::3"],"dataset":null,"services":[{"id":"73f865dc-5db7-48c6-9dc4-dff56dd8c045","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:10f::3]:17000"}}]},"root":"/pool/ext/11a63469-4f57-4976-8620-0055bf82dc97/crypt/zone"},{"zone":{"id":"e5d0170a-0d60-4c51-8f72-4c301979690e","zone_type":"crucible","addresses":["fd00:1122:3344:10f::6"],"dataset":{"id":"e5d0170a-0d60-4c51-8f72-4c301979690e","name":{"pool_name":"oxp_efe4cbab-2a39-4d7d-ae6c-83eb3ab8d4b5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::6]:32345"},"services":[{"id":"e5d0170a-0d60-4c51-8f72-4c301979690e","details":{"type":"crucible","address":"[fd00:1122:3344:10f::6]:32345"}}]},"root":"/pool/ext/6a73a62c-c636-4557-af45-042cb287aee6/crypt/zone"},{"zone":{"id":"ea6894de-c575-43bc-86e9-65b8a58499ff","zone_type":"crucible","addresses":["fd00:1122:3344:10f::a"],"dataset":{"id":"ea6894de-c575-43bc-86e9-65b8a58499ff","name":{"pool_name":"oxp_a87dc882-8b88-4a99-9628-5db79072cffa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::a]:32345"},"services":[{"id":"ea6894de-c575-43bc-86e9-65b8a58499ff","details":{"type":"crucible","address":"[fd00:1122:3344:10f::a]:32345"}}]},"root":"/pool/ext/11a63469-4f57-4976-8620-0055bf82dc97/crypt/zone"},{"zone":{"id":"3081dc99-4fa9-4238-adfa-b9ca381c1f7b","zone_type":"crucible","addresses":["fd00:1122:3344:10f::b"],"dataset":{"id":"3081dc99-4fa9-4238-adfa-b9ca381c1f7b","name":{"pool_name":"oxp_6a73a62c-c636-4557-af45-042cb287aee6","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::b]:32345"},"services":[{"id":"3081dc99-4fa9-4238-adfa-b9ca381c1f7b","details":{"type":"crucible","address":"[fd00:1122:3344:10f::b]:32345"}}]},"root":"/pool/ext/a87dc882-8b88-4a99-9628-5db79072cffa/crypt/zone"},{"zone":{"id":"b4a3d7c8-487d-4d76-ae4e-a6a51595a5a6","zone_type":"crucible","addresses":["fd00:1122:3344:10f::d"],"dataset":{"id":"b4a3d7c8-487d-4d76-ae4e-a6a51595a5a6","name":{"pool_name":"oxp_a12f87ee-9918-4269-9de4-4bad4fb41caa","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::d]:32345"},"services":[{"id":"b4a3d7c8-487d-4d76-ae4e-a6a51595a5a6","details":{"type":"crucible","address":"[fd00:1122:3344:10f::d]:32345"}}]},"root":"/pool/ext/a12f87ee-9918-4269-9de4-4bad4fb41caa/crypt/zone"},{"zone":{"id":"5ebcee26-f76c-4206-8d81-584ac138d3b9","zone_type":"crucible","addresses":["fd00:1122:3344:10f::4"],"dataset":{"id":"5ebcee26-f76c-4206-8d81-584ac138d3b9","name":{"pool_name":"oxp_27f1917e-fb69-496a-9d40-8ef0d0c0ee55","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::4]:32345"},"services":[{"id":"5ebcee26-f76c-4206-8d81-584ac138d3b9","details":{"type":"crucible","address":"[fd00:1122:3344:10f::4]:32345"}}]},"root":"/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone"},{"zone":{"id":"90b2bc57-3a2a-4117-bb6d-7eda7542329a","zone_type":"crucible","addresses":["fd00:1122:3344:10f::5"],"dataset":{"id":"90b2bc57-3a2a-4117-bb6d-7eda7542329a","name":{"pool_name":"oxp_a222e405-40f6-4fdd-9146-94f7d94ed08a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10f::5]:32345"},"services":[{"id":"90b2bc57-3a2a-4117-bb6d-7eda7542329a","details":{"type":"crucible","address":"[fd00:1122:3344:10f::5]:32345"}}]},"root":"/pool/ext/a12f87ee-9918-4269-9de4-4bad4fb41caa/crypt/zone"},{"zone":{"id":"0fb540af-58d3-4abc-bfad-e49765c2b1ee","zone_type":"ntp","addresses":["fd00:1122:3344:10f::e"],"dataset":null,"services":[{"id":"0fb540af-58d3-4abc-bfad-e49765c2b1ee","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10f::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled30.json b/sled-agent/tests/old-service-ledgers/rack3-sled30.json deleted file mode 100644 index e919de3488..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled30.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"dda0f1c6-84a5-472c-b350-a799c8d3d0eb","zone_type":"crucible","addresses":["fd00:1122:3344:115::8"],"dataset":{"id":"dda0f1c6-84a5-472c-b350-a799c8d3d0eb","name":{"pool_name":"oxp_028b6c9e-5a0e-43d2-a8ed-a5946cf62924","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::8]:32345"},"services":[{"id":"dda0f1c6-84a5-472c-b350-a799c8d3d0eb","details":{"type":"crucible","address":"[fd00:1122:3344:115::8]:32345"}}]},"root":"/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone"},{"zone":{"id":"157672f9-113f-48b7-9808-dff3c3e67dcd","zone_type":"crucible","addresses":["fd00:1122:3344:115::a"],"dataset":{"id":"157672f9-113f-48b7-9808-dff3c3e67dcd","name":{"pool_name":"oxp_4fdca201-b37e-4072-a1cc-3cb7705954eb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::a]:32345"},"services":[{"id":"157672f9-113f-48b7-9808-dff3c3e67dcd","details":{"type":"crucible","address":"[fd00:1122:3344:115::a]:32345"}}]},"root":"/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone"},{"zone":{"id":"5a7d4f67-a70f-4d8b-8d35-4dc600991fb5","zone_type":"crucible","addresses":["fd00:1122:3344:115::5"],"dataset":{"id":"5a7d4f67-a70f-4d8b-8d35-4dc600991fb5","name":{"pool_name":"oxp_11a991e5-19a9-48b0-8186-34249ef67957","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::5]:32345"},"services":[{"id":"5a7d4f67-a70f-4d8b-8d35-4dc600991fb5","details":{"type":"crucible","address":"[fd00:1122:3344:115::5]:32345"}}]},"root":"/pool/ext/1e9c9764-aaa4-4681-b110-a937b4c52748/crypt/zone"},{"zone":{"id":"c7036645-b680-4816-834f-8ae1af24c159","zone_type":"crucible","addresses":["fd00:1122:3344:115::b"],"dataset":{"id":"c7036645-b680-4816-834f-8ae1af24c159","name":{"pool_name":"oxp_0780be56-c13d-4c6a-a1ac-37753a0da820","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::b]:32345"},"services":[{"id":"c7036645-b680-4816-834f-8ae1af24c159","details":{"type":"crucible","address":"[fd00:1122:3344:115::b]:32345"}}]},"root":"/pool/ext/80a8d756-ee22-4c88-8b5b-4a46f7eca249/crypt/zone"},{"zone":{"id":"45e47e4b-708f-40b5-a8c8-fbfd73696d45","zone_type":"crucible","addresses":["fd00:1122:3344:115::7"],"dataset":{"id":"45e47e4b-708f-40b5-a8c8-fbfd73696d45","name":{"pool_name":"oxp_80a8d756-ee22-4c88-8b5b-4a46f7eca249","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::7]:32345"},"services":[{"id":"45e47e4b-708f-40b5-a8c8-fbfd73696d45","details":{"type":"crucible","address":"[fd00:1122:3344:115::7]:32345"}}]},"root":"/pool/ext/4fdca201-b37e-4072-a1cc-3cb7705954eb/crypt/zone"},{"zone":{"id":"e805b0c1-3f80-49da-8dc1-caaf843e5003","zone_type":"crucible","addresses":["fd00:1122:3344:115::c"],"dataset":{"id":"e805b0c1-3f80-49da-8dc1-caaf843e5003","name":{"pool_name":"oxp_d54e1ed7-e589-4413-a487-6e9a257104e7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::c]:32345"},"services":[{"id":"e805b0c1-3f80-49da-8dc1-caaf843e5003","details":{"type":"crucible","address":"[fd00:1122:3344:115::c]:32345"}}]},"root":"/pool/ext/d54e1ed7-e589-4413-a487-6e9a257104e7/crypt/zone"},{"zone":{"id":"e47d3f81-3df6-4c35-bec6-41277bc74c07","zone_type":"crucible","addresses":["fd00:1122:3344:115::4"],"dataset":{"id":"e47d3f81-3df6-4c35-bec6-41277bc74c07","name":{"pool_name":"oxp_b8d84b9c-a65e-4c86-8196-69da5317ae63","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::4]:32345"},"services":[{"id":"e47d3f81-3df6-4c35-bec6-41277bc74c07","details":{"type":"crucible","address":"[fd00:1122:3344:115::4]:32345"}}]},"root":"/pool/ext/772b3aaa-3501-4dc7-9b3d-048b8b1f7970/crypt/zone"},{"zone":{"id":"2a796a69-b061-44c7-b2df-35bc611f10f5","zone_type":"crucible","addresses":["fd00:1122:3344:115::6"],"dataset":{"id":"2a796a69-b061-44c7-b2df-35bc611f10f5","name":{"pool_name":"oxp_73abe9e0-d38e-48fc-bdec-b094bfa5670d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::6]:32345"},"services":[{"id":"2a796a69-b061-44c7-b2df-35bc611f10f5","details":{"type":"crucible","address":"[fd00:1122:3344:115::6]:32345"}}]},"root":"/pool/ext/028b6c9e-5a0e-43d2-a8ed-a5946cf62924/crypt/zone"},{"zone":{"id":"4e1d2af1-8ef4-4762-aa80-b08da08b45bb","zone_type":"crucible","addresses":["fd00:1122:3344:115::3"],"dataset":{"id":"4e1d2af1-8ef4-4762-aa80-b08da08b45bb","name":{"pool_name":"oxp_772b3aaa-3501-4dc7-9b3d-048b8b1f7970","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::3]:32345"},"services":[{"id":"4e1d2af1-8ef4-4762-aa80-b08da08b45bb","details":{"type":"crucible","address":"[fd00:1122:3344:115::3]:32345"}}]},"root":"/pool/ext/d54e1ed7-e589-4413-a487-6e9a257104e7/crypt/zone"},{"zone":{"id":"fb1b10d5-b7cb-416d-98fc-b5d3bc02d495","zone_type":"crucible","addresses":["fd00:1122:3344:115::9"],"dataset":{"id":"fb1b10d5-b7cb-416d-98fc-b5d3bc02d495","name":{"pool_name":"oxp_1e9c9764-aaa4-4681-b110-a937b4c52748","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:115::9]:32345"},"services":[{"id":"fb1b10d5-b7cb-416d-98fc-b5d3bc02d495","details":{"type":"crucible","address":"[fd00:1122:3344:115::9]:32345"}}]},"root":"/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone"},{"zone":{"id":"5155463c-8a09-45a5-ad1b-817f2e93b284","zone_type":"ntp","addresses":["fd00:1122:3344:115::d"],"dataset":null,"services":[{"id":"5155463c-8a09-45a5-ad1b-817f2e93b284","details":{"type":"internal_ntp","address":"[fd00:1122:3344:115::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/772b3aaa-3501-4dc7-9b3d-048b8b1f7970/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled31.json b/sled-agent/tests/old-service-ledgers/rack3-sled31.json deleted file mode 100644 index d984227227..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled31.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"a0eae689-8e6b-4297-bb3d-8b7ffc5c4a07","zone_type":"crucible","addresses":["fd00:1122:3344:102::c"],"dataset":{"id":"a0eae689-8e6b-4297-bb3d-8b7ffc5c4a07","name":{"pool_name":"oxp_274cb567-fd74-4e00-b9c7-6ca367b3fda4","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::c]:32345"},"services":[{"id":"a0eae689-8e6b-4297-bb3d-8b7ffc5c4a07","details":{"type":"crucible","address":"[fd00:1122:3344:102::c]:32345"}}]},"root":"/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone"},{"zone":{"id":"9cea406d-451e-4328-9052-b58487f799a5","zone_type":"crucible","addresses":["fd00:1122:3344:102::b"],"dataset":{"id":"9cea406d-451e-4328-9052-b58487f799a5","name":{"pool_name":"oxp_89c7f72e-632c-462b-a515-01cd80683711","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::b]:32345"},"services":[{"id":"9cea406d-451e-4328-9052-b58487f799a5","details":{"type":"crucible","address":"[fd00:1122:3344:102::b]:32345"}}]},"root":"/pool/ext/274cb567-fd74-4e00-b9c7-6ca367b3fda4/crypt/zone"},{"zone":{"id":"9c7dad7e-7f60-4bf4-8efc-0883a17e7cf6","zone_type":"crucible","addresses":["fd00:1122:3344:102::6"],"dataset":{"id":"9c7dad7e-7f60-4bf4-8efc-0883a17e7cf6","name":{"pool_name":"oxp_2c8e5637-b989-4b8f-82ac-ff2e9102b560","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::6]:32345"},"services":[{"id":"9c7dad7e-7f60-4bf4-8efc-0883a17e7cf6","details":{"type":"crucible","address":"[fd00:1122:3344:102::6]:32345"}}]},"root":"/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone"},{"zone":{"id":"73015cba-79c6-4a67-97d8-fa0819cbf750","zone_type":"crucible","addresses":["fd00:1122:3344:102::a"],"dataset":{"id":"73015cba-79c6-4a67-97d8-fa0819cbf750","name":{"pool_name":"oxp_fa62108e-f7bb-4f6d-86f3-8094a1ea8352","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::a]:32345"},"services":[{"id":"73015cba-79c6-4a67-97d8-fa0819cbf750","details":{"type":"crucible","address":"[fd00:1122:3344:102::a]:32345"}}]},"root":"/pool/ext/2c8e5637-b989-4b8f-82ac-ff2e9102b560/crypt/zone"},{"zone":{"id":"f9ca3097-072e-4e7f-9f50-eb7c7ae39b6f","zone_type":"crucible","addresses":["fd00:1122:3344:102::5"],"dataset":{"id":"f9ca3097-072e-4e7f-9f50-eb7c7ae39b6f","name":{"pool_name":"oxp_42c6602c-2ccf-48ce-8344-693c832fd693","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::5]:32345"},"services":[{"id":"f9ca3097-072e-4e7f-9f50-eb7c7ae39b6f","details":{"type":"crucible","address":"[fd00:1122:3344:102::5]:32345"}}]},"root":"/pool/ext/2c8e5637-b989-4b8f-82ac-ff2e9102b560/crypt/zone"},{"zone":{"id":"e7855e05-a125-4a80-ac2c-8a2db96e1bf8","zone_type":"crucible","addresses":["fd00:1122:3344:102::7"],"dataset":{"id":"e7855e05-a125-4a80-ac2c-8a2db96e1bf8","name":{"pool_name":"oxp_1f72afd3-d2aa-46a8-b81a-54dbcc2f6317","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::7]:32345"},"services":[{"id":"e7855e05-a125-4a80-ac2c-8a2db96e1bf8","details":{"type":"crucible","address":"[fd00:1122:3344:102::7]:32345"}}]},"root":"/pool/ext/42c6602c-2ccf-48ce-8344-693c832fd693/crypt/zone"},{"zone":{"id":"e5de9bc9-e996-4fea-8318-ad7a8a6be4a3","zone_type":"crucible","addresses":["fd00:1122:3344:102::4"],"dataset":{"id":"e5de9bc9-e996-4fea-8318-ad7a8a6be4a3","name":{"pool_name":"oxp_1443b190-de16-42b0-b881-e87e875dd507","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::4]:32345"},"services":[{"id":"e5de9bc9-e996-4fea-8318-ad7a8a6be4a3","details":{"type":"crucible","address":"[fd00:1122:3344:102::4]:32345"}}]},"root":"/pool/ext/89c7f72e-632c-462b-a515-01cd80683711/crypt/zone"},{"zone":{"id":"cd0d0aac-44ff-4566-9260-a64ae6cecef4","zone_type":"crucible","addresses":["fd00:1122:3344:102::8"],"dataset":{"id":"cd0d0aac-44ff-4566-9260-a64ae6cecef4","name":{"pool_name":"oxp_92c0d1f6-cb4d-4ddb-b5ba-979fb3491812","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::8]:32345"},"services":[{"id":"cd0d0aac-44ff-4566-9260-a64ae6cecef4","details":{"type":"crucible","address":"[fd00:1122:3344:102::8]:32345"}}]},"root":"/pool/ext/89c7f72e-632c-462b-a515-01cd80683711/crypt/zone"},{"zone":{"id":"a8230592-0e7a-46c8-a653-7587a27f05bf","zone_type":"crucible","addresses":["fd00:1122:3344:102::9"],"dataset":{"id":"a8230592-0e7a-46c8-a653-7587a27f05bf","name":{"pool_name":"oxp_1b7873de-99fd-454f-b576-bff695524133","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::9]:32345"},"services":[{"id":"a8230592-0e7a-46c8-a653-7587a27f05bf","details":{"type":"crucible","address":"[fd00:1122:3344:102::9]:32345"}}]},"root":"/pool/ext/92c0d1f6-cb4d-4ddb-b5ba-979fb3491812/crypt/zone"},{"zone":{"id":"c19ffbb1-4dc1-4825-a3cf-080e9b543b16","zone_type":"crucible","addresses":["fd00:1122:3344:102::d"],"dataset":{"id":"c19ffbb1-4dc1-4825-a3cf-080e9b543b16","name":{"pool_name":"oxp_67823df7-511c-4984-b98c-7a8f5c40c22d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:102::d]:32345"},"services":[{"id":"c19ffbb1-4dc1-4825-a3cf-080e9b543b16","details":{"type":"crucible","address":"[fd00:1122:3344:102::d]:32345"}}]},"root":"/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone"},{"zone":{"id":"ff30fe7c-51f3-43b9-a788-d8f94a7bb028","zone_type":"cockroach_db","addresses":["fd00:1122:3344:102::3"],"dataset":{"id":"ff30fe7c-51f3-43b9-a788-d8f94a7bb028","name":{"pool_name":"oxp_1443b190-de16-42b0-b881-e87e875dd507","kind":{"type":"cockroach_db"}},"service_address":"[fd00:1122:3344:102::3]:32221"},"services":[{"id":"ff30fe7c-51f3-43b9-a788-d8f94a7bb028","details":{"type":"cockroach_db","address":"[fd00:1122:3344:102::3]:32221"}}]},"root":"/pool/ext/fa62108e-f7bb-4f6d-86f3-8094a1ea8352/crypt/zone"},{"zone":{"id":"16b50c55-8117-4efd-aabf-0273677b89d5","zone_type":"ntp","addresses":["fd00:1122:3344:102::e"],"dataset":null,"services":[{"id":"16b50c55-8117-4efd-aabf-0273677b89d5","details":{"type":"internal_ntp","address":"[fd00:1122:3344:102::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/fa62108e-f7bb-4f6d-86f3-8094a1ea8352/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled4.json b/sled-agent/tests/old-service-ledgers/rack3-sled4.json deleted file mode 100644 index e9e5ce5569..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled4.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"22452953-ee80-4659-a555-8e027bf205b0","zone_type":"crucible","addresses":["fd00:1122:3344:10c::4"],"dataset":{"id":"22452953-ee80-4659-a555-8e027bf205b0","name":{"pool_name":"oxp_92ba1667-a6f7-4913-9b00-14825384c7bf","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::4]:32345"},"services":[{"id":"22452953-ee80-4659-a555-8e027bf205b0","details":{"type":"crucible","address":"[fd00:1122:3344:10c::4]:32345"}}]},"root":"/pool/ext/ab62b941-5f84-42c7-929d-295b20efffe7/crypt/zone"},{"zone":{"id":"9a5a2fcf-44a0-4468-979a-a71686cef627","zone_type":"crucible","addresses":["fd00:1122:3344:10c::3"],"dataset":{"id":"9a5a2fcf-44a0-4468-979a-a71686cef627","name":{"pool_name":"oxp_dbfdc981-1b81-4d7d-9449-9530890b199a","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::3]:32345"},"services":[{"id":"9a5a2fcf-44a0-4468-979a-a71686cef627","details":{"type":"crucible","address":"[fd00:1122:3344:10c::3]:32345"}}]},"root":"/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone"},{"zone":{"id":"a014f12e-2636-4258-af76-e01d9b8d1c1f","zone_type":"crucible","addresses":["fd00:1122:3344:10c::b"],"dataset":{"id":"a014f12e-2636-4258-af76-e01d9b8d1c1f","name":{"pool_name":"oxp_ab62b941-5f84-42c7-929d-295b20efffe7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::b]:32345"},"services":[{"id":"a014f12e-2636-4258-af76-e01d9b8d1c1f","details":{"type":"crucible","address":"[fd00:1122:3344:10c::b]:32345"}}]},"root":"/pool/ext/a624a843-1c4e-41c3-a1d2-4be7a6c57e9b/crypt/zone"},{"zone":{"id":"431768b8-26ba-4ab4-b616-9e183bb79b8b","zone_type":"crucible","addresses":["fd00:1122:3344:10c::7"],"dataset":{"id":"431768b8-26ba-4ab4-b616-9e183bb79b8b","name":{"pool_name":"oxp_7c121177-3210-4457-9b42-3657add6e166","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::7]:32345"},"services":[{"id":"431768b8-26ba-4ab4-b616-9e183bb79b8b","details":{"type":"crucible","address":"[fd00:1122:3344:10c::7]:32345"}}]},"root":"/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone"},{"zone":{"id":"22992c56-bd5a-4d0f-86c5-d6f8e87b7bbb","zone_type":"crucible","addresses":["fd00:1122:3344:10c::9"],"dataset":{"id":"22992c56-bd5a-4d0f-86c5-d6f8e87b7bbb","name":{"pool_name":"oxp_842bdd28-196e-4b18-83db-68bd81176a44","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::9]:32345"},"services":[{"id":"22992c56-bd5a-4d0f-86c5-d6f8e87b7bbb","details":{"type":"crucible","address":"[fd00:1122:3344:10c::9]:32345"}}]},"root":"/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone"},{"zone":{"id":"de376149-aa45-4660-9ae6-15e8ba4a4233","zone_type":"crucible","addresses":["fd00:1122:3344:10c::5"],"dataset":{"id":"de376149-aa45-4660-9ae6-15e8ba4a4233","name":{"pool_name":"oxp_25856a84-6707-4b94-81d1-b43d5bc990d7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::5]:32345"},"services":[{"id":"de376149-aa45-4660-9ae6-15e8ba4a4233","details":{"type":"crucible","address":"[fd00:1122:3344:10c::5]:32345"}}]},"root":"/pool/ext/7c121177-3210-4457-9b42-3657add6e166/crypt/zone"},{"zone":{"id":"ceeba69d-8c0a-47df-a37b-7f1b90f23016","zone_type":"crucible","addresses":["fd00:1122:3344:10c::a"],"dataset":{"id":"ceeba69d-8c0a-47df-a37b-7f1b90f23016","name":{"pool_name":"oxp_a624a843-1c4e-41c3-a1d2-4be7a6c57e9b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::a]:32345"},"services":[{"id":"ceeba69d-8c0a-47df-a37b-7f1b90f23016","details":{"type":"crucible","address":"[fd00:1122:3344:10c::a]:32345"}}]},"root":"/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone"},{"zone":{"id":"65293ce4-2e63-4336-9207-3c61f58667f9","zone_type":"crucible","addresses":["fd00:1122:3344:10c::c"],"dataset":{"id":"65293ce4-2e63-4336-9207-3c61f58667f9","name":{"pool_name":"oxp_74ac4da9-cdae-4c08-8431-11211184aa09","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::c]:32345"},"services":[{"id":"65293ce4-2e63-4336-9207-3c61f58667f9","details":{"type":"crucible","address":"[fd00:1122:3344:10c::c]:32345"}}]},"root":"/pool/ext/842bdd28-196e-4b18-83db-68bd81176a44/crypt/zone"},{"zone":{"id":"e8f55a5d-65f9-436c-bc25-1d1a7070e876","zone_type":"crucible","addresses":["fd00:1122:3344:10c::6"],"dataset":{"id":"e8f55a5d-65f9-436c-bc25-1d1a7070e876","name":{"pool_name":"oxp_9bfe385c-16dd-4209-bc0b-f28ae75d58e3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::6]:32345"},"services":[{"id":"e8f55a5d-65f9-436c-bc25-1d1a7070e876","details":{"type":"crucible","address":"[fd00:1122:3344:10c::6]:32345"}}]},"root":"/pool/ext/92ba1667-a6f7-4913-9b00-14825384c7bf/crypt/zone"},{"zone":{"id":"2dfbd4c6-afbf-4c8c-bf40-764f02727852","zone_type":"crucible","addresses":["fd00:1122:3344:10c::8"],"dataset":{"id":"2dfbd4c6-afbf-4c8c-bf40-764f02727852","name":{"pool_name":"oxp_55eb093d-6b6f-418c-9767-09afe4c51fff","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10c::8]:32345"},"services":[{"id":"2dfbd4c6-afbf-4c8c-bf40-764f02727852","details":{"type":"crucible","address":"[fd00:1122:3344:10c::8]:32345"}}]},"root":"/pool/ext/dbfdc981-1b81-4d7d-9449-9530890b199a/crypt/zone"},{"zone":{"id":"8c73baf7-1a58-4e2c-b4d1-966c89a18d03","zone_type":"ntp","addresses":["fd00:1122:3344:10c::d"],"dataset":null,"services":[{"id":"8c73baf7-1a58-4e2c-b4d1-966c89a18d03","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10c::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/842bdd28-196e-4b18-83db-68bd81176a44/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled5.json b/sled-agent/tests/old-service-ledgers/rack3-sled5.json deleted file mode 100644 index ea7b5ec40a..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled5.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"2f488e7b-fd93-48a6-8b2b-61f6e8336268","zone_type":"crucible","addresses":["fd00:1122:3344:101::b"],"dataset":{"id":"2f488e7b-fd93-48a6-8b2b-61f6e8336268","name":{"pool_name":"oxp_5840a3b7-f765-45d3-8a41-7f543f936bee","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::b]:32345"},"services":[{"id":"2f488e7b-fd93-48a6-8b2b-61f6e8336268","details":{"type":"crucible","address":"[fd00:1122:3344:101::b]:32345"}}]},"root":"/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone"},{"zone":{"id":"1ed5fd3f-933a-4921-a91f-5c286823f8d4","zone_type":"crucible","addresses":["fd00:1122:3344:101::a"],"dataset":{"id":"1ed5fd3f-933a-4921-a91f-5c286823f8d4","name":{"pool_name":"oxp_c1e807e7-b64a-4dbd-b845-ffed0b9a54f1","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::a]:32345"},"services":[{"id":"1ed5fd3f-933a-4921-a91f-5c286823f8d4","details":{"type":"crucible","address":"[fd00:1122:3344:101::a]:32345"}}]},"root":"/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone"},{"zone":{"id":"0f8f1013-465d-4b49-b55d-f0b9bf6f789a","zone_type":"crucible","addresses":["fd00:1122:3344:101::6"],"dataset":{"id":"0f8f1013-465d-4b49-b55d-f0b9bf6f789a","name":{"pool_name":"oxp_4dfa7003-0305-47f5-b23d-88a228c1e12e","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::6]:32345"},"services":[{"id":"0f8f1013-465d-4b49-b55d-f0b9bf6f789a","details":{"type":"crucible","address":"[fd00:1122:3344:101::6]:32345"}}]},"root":"/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone"},{"zone":{"id":"2e4ef017-6c62-40bc-bab5-f2e01addad22","zone_type":"crucible","addresses":["fd00:1122:3344:101::7"],"dataset":{"id":"2e4ef017-6c62-40bc-bab5-f2e01addad22","name":{"pool_name":"oxp_d94e9c58-e6d1-444b-b7d8-19ac17dea042","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::7]:32345"},"services":[{"id":"2e4ef017-6c62-40bc-bab5-f2e01addad22","details":{"type":"crucible","address":"[fd00:1122:3344:101::7]:32345"}}]},"root":"/pool/ext/c1e807e7-b64a-4dbd-b845-ffed0b9a54f1/crypt/zone"},{"zone":{"id":"6a0baf13-a80b-4778-a0ab-a69cd851de2d","zone_type":"crucible","addresses":["fd00:1122:3344:101::9"],"dataset":{"id":"6a0baf13-a80b-4778-a0ab-a69cd851de2d","name":{"pool_name":"oxp_be06ea9c-df86-4fec-b5dd-8809710893af","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::9]:32345"},"services":[{"id":"6a0baf13-a80b-4778-a0ab-a69cd851de2d","details":{"type":"crucible","address":"[fd00:1122:3344:101::9]:32345"}}]},"root":"/pool/ext/a9d419d4-5915-4a40-baa3-3512785de034/crypt/zone"},{"zone":{"id":"391ec257-fd47-4cc8-9bfa-49a0747a9a67","zone_type":"crucible","addresses":["fd00:1122:3344:101::8"],"dataset":{"id":"391ec257-fd47-4cc8-9bfa-49a0747a9a67","name":{"pool_name":"oxp_a9d419d4-5915-4a40-baa3-3512785de034","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::8]:32345"},"services":[{"id":"391ec257-fd47-4cc8-9bfa-49a0747a9a67","details":{"type":"crucible","address":"[fd00:1122:3344:101::8]:32345"}}]},"root":"/pool/ext/709d5d04-5dff-4558-8b5d-fbc2a7d83036/crypt/zone"},{"zone":{"id":"fd8e615a-f170-4da9-b8d0-2a5a123d8682","zone_type":"crucible_pantry","addresses":["fd00:1122:3344:101::3"],"dataset":null,"services":[{"id":"fd8e615a-f170-4da9-b8d0-2a5a123d8682","details":{"type":"crucible_pantry","address":"[fd00:1122:3344:101::3]:17000"}}]},"root":"/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone"},{"zone":{"id":"f8a793f4-cd08-49ec-8fee-6bcd37092fdc","zone_type":"crucible","addresses":["fd00:1122:3344:101::c"],"dataset":{"id":"f8a793f4-cd08-49ec-8fee-6bcd37092fdc","name":{"pool_name":"oxp_709d5d04-5dff-4558-8b5d-fbc2a7d83036","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::c]:32345"},"services":[{"id":"f8a793f4-cd08-49ec-8fee-6bcd37092fdc","details":{"type":"crucible","address":"[fd00:1122:3344:101::c]:32345"}}]},"root":"/pool/ext/d94e9c58-e6d1-444b-b7d8-19ac17dea042/crypt/zone"},{"zone":{"id":"c67d44be-d6b8-4a08-a7e0-3ab300749ad6","zone_type":"crucible","addresses":["fd00:1122:3344:101::4"],"dataset":{"id":"c67d44be-d6b8-4a08-a7e0-3ab300749ad6","name":{"pool_name":"oxp_231cd696-2839-4a9a-ae42-6d875a98a797","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::4]:32345"},"services":[{"id":"c67d44be-d6b8-4a08-a7e0-3ab300749ad6","details":{"type":"crucible","address":"[fd00:1122:3344:101::4]:32345"}}]},"root":"/pool/ext/709d5d04-5dff-4558-8b5d-fbc2a7d83036/crypt/zone"},{"zone":{"id":"e91b4957-8165-451d-9fa5-090c3a39f199","zone_type":"crucible","addresses":["fd00:1122:3344:101::d"],"dataset":{"id":"e91b4957-8165-451d-9fa5-090c3a39f199","name":{"pool_name":"oxp_dd084b76-1130-4ad3-9196-6b02be607fe9","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::d]:32345"},"services":[{"id":"e91b4957-8165-451d-9fa5-090c3a39f199","details":{"type":"crucible","address":"[fd00:1122:3344:101::d]:32345"}}]},"root":"/pool/ext/5840a3b7-f765-45d3-8a41-7f543f936bee/crypt/zone"},{"zone":{"id":"5e737b6e-d33d-4a2c-b8c0-3cad9d05a68f","zone_type":"crucible","addresses":["fd00:1122:3344:101::5"],"dataset":{"id":"5e737b6e-d33d-4a2c-b8c0-3cad9d05a68f","name":{"pool_name":"oxp_8fa4f837-c6f3-4c65-88d4-21eb3cd7ffee","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:101::5]:32345"},"services":[{"id":"5e737b6e-d33d-4a2c-b8c0-3cad9d05a68f","details":{"type":"crucible","address":"[fd00:1122:3344:101::5]:32345"}}]},"root":"/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone"},{"zone":{"id":"7e6b7816-b1a6-40f3-894a-a5d5c0571dbb","zone_type":"ntp","addresses":["fd00:1122:3344:101::e"],"dataset":null,"services":[{"id":"7e6b7816-b1a6-40f3-894a-a5d5c0571dbb","details":{"type":"internal_ntp","address":"[fd00:1122:3344:101::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled6.json b/sled-agent/tests/old-service-ledgers/rack3-sled6.json deleted file mode 100644 index 2c499813cd..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled6.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"eafffae7-69fd-49e1-9541-7cf237ab12b3","zone_type":"crucible","addresses":["fd00:1122:3344:110::3"],"dataset":{"id":"eafffae7-69fd-49e1-9541-7cf237ab12b3","name":{"pool_name":"oxp_929404cd-2522-4440-b21c-91d466a9a7e0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::3]:32345"},"services":[{"id":"eafffae7-69fd-49e1-9541-7cf237ab12b3","details":{"type":"crucible","address":"[fd00:1122:3344:110::3]:32345"}}]},"root":"/pool/ext/aff390ed-8d70-49fa-9000-5420b54ab118/crypt/zone"},{"zone":{"id":"f4bccf15-d69f-402d-9bd2-7959a4cb2823","zone_type":"crucible","addresses":["fd00:1122:3344:110::9"],"dataset":{"id":"f4bccf15-d69f-402d-9bd2-7959a4cb2823","name":{"pool_name":"oxp_f80f96be-a3d7-490a-96a7-faf7da80a579","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::9]:32345"},"services":[{"id":"f4bccf15-d69f-402d-9bd2-7959a4cb2823","details":{"type":"crucible","address":"[fd00:1122:3344:110::9]:32345"}}]},"root":"/pool/ext/6bcd54c8-d4a8-429d-8f17-cf02615eb063/crypt/zone"},{"zone":{"id":"82e51c9d-c187-4baa-8307-e46eeafc5ff2","zone_type":"crucible","addresses":["fd00:1122:3344:110::5"],"dataset":{"id":"82e51c9d-c187-4baa-8307-e46eeafc5ff2","name":{"pool_name":"oxp_37d86199-6834-49d9-888a-88ff6f281b29","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::5]:32345"},"services":[{"id":"82e51c9d-c187-4baa-8307-e46eeafc5ff2","details":{"type":"crucible","address":"[fd00:1122:3344:110::5]:32345"}}]},"root":"/pool/ext/d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f/crypt/zone"},{"zone":{"id":"cf667caf-304c-40c4-acce-f0eb05d011ef","zone_type":"crucible","addresses":["fd00:1122:3344:110::8"],"dataset":{"id":"cf667caf-304c-40c4-acce-f0eb05d011ef","name":{"pool_name":"oxp_625c0110-644e-4d63-8321-b85ab5642260","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::8]:32345"},"services":[{"id":"cf667caf-304c-40c4-acce-f0eb05d011ef","details":{"type":"crucible","address":"[fd00:1122:3344:110::8]:32345"}}]},"root":"/pool/ext/d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f/crypt/zone"},{"zone":{"id":"14e60912-108e-4dd3-984e-2332a183b346","zone_type":"crucible","addresses":["fd00:1122:3344:110::b"],"dataset":{"id":"14e60912-108e-4dd3-984e-2332a183b346","name":{"pool_name":"oxp_fa6470f5-0a4c-4fef-b0b1-57c8749c6cca","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::b]:32345"},"services":[{"id":"14e60912-108e-4dd3-984e-2332a183b346","details":{"type":"crucible","address":"[fd00:1122:3344:110::b]:32345"}}]},"root":"/pool/ext/6c5ab641-3bd4-4d8c-96f4-4f56c1045142/crypt/zone"},{"zone":{"id":"1aacf923-c96f-4bab-acb0-63f28e86eef6","zone_type":"crucible","addresses":["fd00:1122:3344:110::c"],"dataset":{"id":"1aacf923-c96f-4bab-acb0-63f28e86eef6","name":{"pool_name":"oxp_21b0f3ed-d27f-4996-968b-bf2b494d9308","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::c]:32345"},"services":[{"id":"1aacf923-c96f-4bab-acb0-63f28e86eef6","details":{"type":"crucible","address":"[fd00:1122:3344:110::c]:32345"}}]},"root":"/pool/ext/625c0110-644e-4d63-8321-b85ab5642260/crypt/zone"},{"zone":{"id":"b9db0845-04d3-4dc1-84ba-224749562a6c","zone_type":"crucible","addresses":["fd00:1122:3344:110::6"],"dataset":{"id":"b9db0845-04d3-4dc1-84ba-224749562a6c","name":{"pool_name":"oxp_d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::6]:32345"},"services":[{"id":"b9db0845-04d3-4dc1-84ba-224749562a6c","details":{"type":"crucible","address":"[fd00:1122:3344:110::6]:32345"}}]},"root":"/pool/ext/aff390ed-8d70-49fa-9000-5420b54ab118/crypt/zone"},{"zone":{"id":"38b51865-ee80-4e1b-a40b-3452951f9022","zone_type":"crucible","addresses":["fd00:1122:3344:110::7"],"dataset":{"id":"38b51865-ee80-4e1b-a40b-3452951f9022","name":{"pool_name":"oxp_6bcd54c8-d4a8-429d-8f17-cf02615eb063","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::7]:32345"},"services":[{"id":"38b51865-ee80-4e1b-a40b-3452951f9022","details":{"type":"crucible","address":"[fd00:1122:3344:110::7]:32345"}}]},"root":"/pool/ext/37d86199-6834-49d9-888a-88ff6f281b29/crypt/zone"},{"zone":{"id":"4bc441f6-f7e5-4d68-8751-53ef1e251c47","zone_type":"crucible","addresses":["fd00:1122:3344:110::a"],"dataset":{"id":"4bc441f6-f7e5-4d68-8751-53ef1e251c47","name":{"pool_name":"oxp_6c5ab641-3bd4-4d8c-96f4-4f56c1045142","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::a]:32345"},"services":[{"id":"4bc441f6-f7e5-4d68-8751-53ef1e251c47","details":{"type":"crucible","address":"[fd00:1122:3344:110::a]:32345"}}]},"root":"/pool/ext/21b0f3ed-d27f-4996-968b-bf2b494d9308/crypt/zone"},{"zone":{"id":"d2c20cf8-ed4c-4815-add9-45996364f721","zone_type":"crucible","addresses":["fd00:1122:3344:110::4"],"dataset":{"id":"d2c20cf8-ed4c-4815-add9-45996364f721","name":{"pool_name":"oxp_aff390ed-8d70-49fa-9000-5420b54ab118","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:110::4]:32345"},"services":[{"id":"d2c20cf8-ed4c-4815-add9-45996364f721","details":{"type":"crucible","address":"[fd00:1122:3344:110::4]:32345"}}]},"root":"/pool/ext/6c5ab641-3bd4-4d8c-96f4-4f56c1045142/crypt/zone"},{"zone":{"id":"1bb548cb-889a-411e-8c67-d1b785225180","zone_type":"ntp","addresses":["fd00:1122:3344:110::d"],"dataset":null,"services":[{"id":"1bb548cb-889a-411e-8c67-d1b785225180","details":{"type":"internal_ntp","address":"[fd00:1122:3344:110::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/6bcd54c8-d4a8-429d-8f17-cf02615eb063/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled7.json b/sled-agent/tests/old-service-ledgers/rack3-sled7.json deleted file mode 100644 index fb701a2bdb..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled7.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"2eb74fa3-71ec-484c-8ffa-3daeab0e4c78","zone_type":"crucible","addresses":["fd00:1122:3344:11d::3"],"dataset":{"id":"2eb74fa3-71ec-484c-8ffa-3daeab0e4c78","name":{"pool_name":"oxp_c6b63fea-e3e2-4806-b8dc-bdfe7b5c3d89","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::3]:32345"},"services":[{"id":"2eb74fa3-71ec-484c-8ffa-3daeab0e4c78","details":{"type":"crucible","address":"[fd00:1122:3344:11d::3]:32345"}}]},"root":"/pool/ext/9f20cbae-7a63-4c31-9386-2ac3cbe12030/crypt/zone"},{"zone":{"id":"9f92bfcf-7435-44a6-8e77-0597f93cd0b4","zone_type":"crucible","addresses":["fd00:1122:3344:11d::7"],"dataset":{"id":"9f92bfcf-7435-44a6-8e77-0597f93cd0b4","name":{"pool_name":"oxp_9fa336f1-2b69-4ebf-9553-e3bab7e3e6ef","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::7]:32345"},"services":[{"id":"9f92bfcf-7435-44a6-8e77-0597f93cd0b4","details":{"type":"crucible","address":"[fd00:1122:3344:11d::7]:32345"}}]},"root":"/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone"},{"zone":{"id":"1bf9aed4-9fd3-4d87-b8e7-7f066d25ec1d","zone_type":"crucible","addresses":["fd00:1122:3344:11d::b"],"dataset":{"id":"1bf9aed4-9fd3-4d87-b8e7-7f066d25ec1d","name":{"pool_name":"oxp_a5a52f47-9c9a-4519-83dc-abc56619495d","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::b]:32345"},"services":[{"id":"1bf9aed4-9fd3-4d87-b8e7-7f066d25ec1d","details":{"type":"crucible","address":"[fd00:1122:3344:11d::b]:32345"}}]},"root":"/pool/ext/cbcad26e-5e52-41b7-9875-1a84d30d8a15/crypt/zone"},{"zone":{"id":"2a722aa7-cd8a-445d-83fe-57fc9b9a8249","zone_type":"crucible","addresses":["fd00:1122:3344:11d::8"],"dataset":{"id":"2a722aa7-cd8a-445d-83fe-57fc9b9a8249","name":{"pool_name":"oxp_1f4b71eb-505f-4706-912c-b13dd3f2eafb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::8]:32345"},"services":[{"id":"2a722aa7-cd8a-445d-83fe-57fc9b9a8249","details":{"type":"crucible","address":"[fd00:1122:3344:11d::8]:32345"}}]},"root":"/pool/ext/a5a52f47-9c9a-4519-83dc-abc56619495d/crypt/zone"},{"zone":{"id":"76af5b23-d833-435c-b848-2a09d9fad9a1","zone_type":"crucible","addresses":["fd00:1122:3344:11d::c"],"dataset":{"id":"76af5b23-d833-435c-b848-2a09d9fad9a1","name":{"pool_name":"oxp_cbcad26e-5e52-41b7-9875-1a84d30d8a15","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::c]:32345"},"services":[{"id":"76af5b23-d833-435c-b848-2a09d9fad9a1","details":{"type":"crucible","address":"[fd00:1122:3344:11d::c]:32345"}}]},"root":"/pool/ext/9f20cbae-7a63-4c31-9386-2ac3cbe12030/crypt/zone"},{"zone":{"id":"3a412bf4-a385-4e66-9ada-a87f6536d6ca","zone_type":"crucible","addresses":["fd00:1122:3344:11d::4"],"dataset":{"id":"3a412bf4-a385-4e66-9ada-a87f6536d6ca","name":{"pool_name":"oxp_e05a6264-63f2-4961-bc14-57b4f65614c0","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::4]:32345"},"services":[{"id":"3a412bf4-a385-4e66-9ada-a87f6536d6ca","details":{"type":"crucible","address":"[fd00:1122:3344:11d::4]:32345"}}]},"root":"/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone"},{"zone":{"id":"99a25fa7-8231-4a46-a6ec-ffc5281db1f8","zone_type":"crucible","addresses":["fd00:1122:3344:11d::5"],"dataset":{"id":"99a25fa7-8231-4a46-a6ec-ffc5281db1f8","name":{"pool_name":"oxp_722494ab-9a2b-481b-ac11-292fded682a5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::5]:32345"},"services":[{"id":"99a25fa7-8231-4a46-a6ec-ffc5281db1f8","details":{"type":"crucible","address":"[fd00:1122:3344:11d::5]:32345"}}]},"root":"/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone"},{"zone":{"id":"06c7ddc8-9b3e-48ef-9874-0c40874e9877","zone_type":"crucible","addresses":["fd00:1122:3344:11d::a"],"dataset":{"id":"06c7ddc8-9b3e-48ef-9874-0c40874e9877","name":{"pool_name":"oxp_8c3972d1-5b17-4479-88cc-1c33e4344160","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::a]:32345"},"services":[{"id":"06c7ddc8-9b3e-48ef-9874-0c40874e9877","details":{"type":"crucible","address":"[fd00:1122:3344:11d::a]:32345"}}]},"root":"/pool/ext/8c3972d1-5b17-4479-88cc-1c33e4344160/crypt/zone"},{"zone":{"id":"1212b2dc-157d-4bd3-94af-fb5db1d91f24","zone_type":"crucible","addresses":["fd00:1122:3344:11d::9"],"dataset":{"id":"1212b2dc-157d-4bd3-94af-fb5db1d91f24","name":{"pool_name":"oxp_9f20cbae-7a63-4c31-9386-2ac3cbe12030","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::9]:32345"},"services":[{"id":"1212b2dc-157d-4bd3-94af-fb5db1d91f24","details":{"type":"crucible","address":"[fd00:1122:3344:11d::9]:32345"}}]},"root":"/pool/ext/977aa6c3-2026-4178-9948-e09f78008575/crypt/zone"},{"zone":{"id":"b1fb5f2e-b20d-4f4c-9f6f-bbeb1a98dd50","zone_type":"crucible","addresses":["fd00:1122:3344:11d::6"],"dataset":{"id":"b1fb5f2e-b20d-4f4c-9f6f-bbeb1a98dd50","name":{"pool_name":"oxp_977aa6c3-2026-4178-9948-e09f78008575","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:11d::6]:32345"},"services":[{"id":"b1fb5f2e-b20d-4f4c-9f6f-bbeb1a98dd50","details":{"type":"crucible","address":"[fd00:1122:3344:11d::6]:32345"}}]},"root":"/pool/ext/722494ab-9a2b-481b-ac11-292fded682a5/crypt/zone"},{"zone":{"id":"e68dde0f-0647-46db-ae1c-711835c13e25","zone_type":"ntp","addresses":["fd00:1122:3344:11d::d"],"dataset":null,"services":[{"id":"e68dde0f-0647-46db-ae1c-711835c13e25","details":{"type":"internal_ntp","address":"[fd00:1122:3344:11d::d]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/1f4b71eb-505f-4706-912c-b13dd3f2eafb/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled8.json b/sled-agent/tests/old-service-ledgers/rack3-sled8.json deleted file mode 100644 index cf96f8ae81..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled8.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"85c18b7c-a100-458c-b18d-ecfdacaefac4","zone_type":"crucible","addresses":["fd00:1122:3344:10e::5"],"dataset":{"id":"85c18b7c-a100-458c-b18d-ecfdacaefac4","name":{"pool_name":"oxp_07b266bc-86c3-4a76-9522-8b34ba1ae78c","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::5]:32345"},"services":[{"id":"85c18b7c-a100-458c-b18d-ecfdacaefac4","details":{"type":"crucible","address":"[fd00:1122:3344:10e::5]:32345"}}]},"root":"/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone"},{"zone":{"id":"db303465-7879-4d86-8da8-a0c7162e5184","zone_type":"crucible","addresses":["fd00:1122:3344:10e::4"],"dataset":{"id":"db303465-7879-4d86-8da8-a0c7162e5184","name":{"pool_name":"oxp_e9488a32-880d-44a2-8948-db0b7e3a35b5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::4]:32345"},"services":[{"id":"db303465-7879-4d86-8da8-a0c7162e5184","details":{"type":"crucible","address":"[fd00:1122:3344:10e::4]:32345"}}]},"root":"/pool/ext/8d798756-7200-4db4-9faf-f41b75106a63/crypt/zone"},{"zone":{"id":"c44ce6be-512d-4104-9260-a5b8fe373937","zone_type":"crucible","addresses":["fd00:1122:3344:10e::9"],"dataset":{"id":"c44ce6be-512d-4104-9260-a5b8fe373937","name":{"pool_name":"oxp_025dfc06-5aeb-407f-adc8-ba18dc9bba35","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::9]:32345"},"services":[{"id":"c44ce6be-512d-4104-9260-a5b8fe373937","details":{"type":"crucible","address":"[fd00:1122:3344:10e::9]:32345"}}]},"root":"/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone"},{"zone":{"id":"1cfdb5b6-e568-436a-a85f-7fecf1b8eef2","zone_type":"nexus","addresses":["fd00:1122:3344:10e::3"],"dataset":null,"services":[{"id":"1cfdb5b6-e568-436a-a85f-7fecf1b8eef2","details":{"type":"nexus","internal_address":"[fd00:1122:3344:10e::3]:12221","external_ip":"45.154.216.36","nic":{"id":"569754a2-a5e0-4aa8-90a7-2fa65f43b667","kind":{"type":"service","id":"1cfdb5b6-e568-436a-a85f-7fecf1b8eef2"},"name":"nexus-1cfdb5b6-e568-436a-a85f-7fecf1b8eef2","ip":"172.30.2.6","mac":"A8:40:25:FF:EC:6B","subnet":"172.30.2.0/24","vni":100,"primary":true,"slot":0},"external_tls":true,"external_dns_servers":["1.1.1.1","8.8.8.8"]}}]},"root":"/pool/ext/025dfc06-5aeb-407f-adc8-ba18dc9bba35/crypt/zone"},{"zone":{"id":"44a68792-ca14-442e-b7a9-11970d50ba0e","zone_type":"crucible","addresses":["fd00:1122:3344:10e::a"],"dataset":{"id":"44a68792-ca14-442e-b7a9-11970d50ba0e","name":{"pool_name":"oxp_2a492098-7df3-4409-9466-561edb7aa99b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::a]:32345"},"services":[{"id":"44a68792-ca14-442e-b7a9-11970d50ba0e","details":{"type":"crucible","address":"[fd00:1122:3344:10e::a]:32345"}}]},"root":"/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone"},{"zone":{"id":"514cf0ca-6d23-434e-9785-446b83b2f029","zone_type":"crucible","addresses":["fd00:1122:3344:10e::7"],"dataset":{"id":"514cf0ca-6d23-434e-9785-446b83b2f029","name":{"pool_name":"oxp_5b88e44e-f886-4de8-8a6b-48ea5ed9d70b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::7]:32345"},"services":[{"id":"514cf0ca-6d23-434e-9785-446b83b2f029","details":{"type":"crucible","address":"[fd00:1122:3344:10e::7]:32345"}}]},"root":"/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone"},{"zone":{"id":"bc6d8347-8f64-4031-912c-932349df07fe","zone_type":"crucible","addresses":["fd00:1122:3344:10e::6"],"dataset":{"id":"bc6d8347-8f64-4031-912c-932349df07fe","name":{"pool_name":"oxp_1544ce68-3544-4cba-b3b6-1927d08b78a5","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::6]:32345"},"services":[{"id":"bc6d8347-8f64-4031-912c-932349df07fe","details":{"type":"crucible","address":"[fd00:1122:3344:10e::6]:32345"}}]},"root":"/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone"},{"zone":{"id":"1ab0a4f5-99ad-4341-8c89-7fd03e5ccb08","zone_type":"crucible","addresses":["fd00:1122:3344:10e::b"],"dataset":{"id":"1ab0a4f5-99ad-4341-8c89-7fd03e5ccb08","name":{"pool_name":"oxp_033eb462-968f-42ce-9c29-377bd40a3014","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::b]:32345"},"services":[{"id":"1ab0a4f5-99ad-4341-8c89-7fd03e5ccb08","details":{"type":"crucible","address":"[fd00:1122:3344:10e::b]:32345"}}]},"root":"/pool/ext/9e1a0803-7453-4eac-91c9-d7891ecd634f/crypt/zone"},{"zone":{"id":"d6f2520b-3d04-44d9-bd46-6ffccfcb46d2","zone_type":"crucible","addresses":["fd00:1122:3344:10e::8"],"dataset":{"id":"d6f2520b-3d04-44d9-bd46-6ffccfcb46d2","name":{"pool_name":"oxp_36e8d29c-1e88-4c2b-8f59-f312201067c3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::8]:32345"},"services":[{"id":"d6f2520b-3d04-44d9-bd46-6ffccfcb46d2","details":{"type":"crucible","address":"[fd00:1122:3344:10e::8]:32345"}}]},"root":"/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone"},{"zone":{"id":"d6da9d13-bfcf-469d-a99e-faeb5e30be32","zone_type":"crucible","addresses":["fd00:1122:3344:10e::c"],"dataset":{"id":"d6da9d13-bfcf-469d-a99e-faeb5e30be32","name":{"pool_name":"oxp_9e1a0803-7453-4eac-91c9-d7891ecd634f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::c]:32345"},"services":[{"id":"d6da9d13-bfcf-469d-a99e-faeb5e30be32","details":{"type":"crucible","address":"[fd00:1122:3344:10e::c]:32345"}}]},"root":"/pool/ext/8d798756-7200-4db4-9faf-f41b75106a63/crypt/zone"},{"zone":{"id":"a1dc59c2-5883-4fb8-83be-ac2d95d255d1","zone_type":"crucible","addresses":["fd00:1122:3344:10e::d"],"dataset":{"id":"a1dc59c2-5883-4fb8-83be-ac2d95d255d1","name":{"pool_name":"oxp_8d798756-7200-4db4-9faf-f41b75106a63","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10e::d]:32345"},"services":[{"id":"a1dc59c2-5883-4fb8-83be-ac2d95d255d1","details":{"type":"crucible","address":"[fd00:1122:3344:10e::d]:32345"}}]},"root":"/pool/ext/36e8d29c-1e88-4c2b-8f59-f312201067c3/crypt/zone"},{"zone":{"id":"48f25dba-7392-44ce-9bb0-28489ebc44bc","zone_type":"ntp","addresses":["fd00:1122:3344:10e::e"],"dataset":null,"services":[{"id":"48f25dba-7392-44ce-9bb0-28489ebc44bc","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10e::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/old-service-ledgers/rack3-sled9.json b/sled-agent/tests/old-service-ledgers/rack3-sled9.json deleted file mode 100644 index c225f50081..0000000000 --- a/sled-agent/tests/old-service-ledgers/rack3-sled9.json +++ /dev/null @@ -1 +0,0 @@ -{"generation":4,"requests":[{"zone":{"id":"b452e5e1-ab4c-4994-9679-ef21b3b4fee9","zone_type":"crucible","addresses":["fd00:1122:3344:10b::6"],"dataset":{"id":"b452e5e1-ab4c-4994-9679-ef21b3b4fee9","name":{"pool_name":"oxp_d63a297d-ae6a-4072-9dca-dda404044989","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::6]:32345"},"services":[{"id":"b452e5e1-ab4c-4994-9679-ef21b3b4fee9","details":{"type":"crucible","address":"[fd00:1122:3344:10b::6]:32345"}}]},"root":"/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone"},{"zone":{"id":"e9826cdc-6d3a-4eff-b1b5-ec4364ebe6b9","zone_type":"oximeter","addresses":["fd00:1122:3344:10b::3"],"dataset":null,"services":[{"id":"e9826cdc-6d3a-4eff-b1b5-ec4364ebe6b9","details":{"type":"oximeter","address":"[fd00:1122:3344:10b::3]:12223"}}]},"root":"/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone"},{"zone":{"id":"b0cde4a8-f27c-46e8-8355-756be9045afc","zone_type":"crucible","addresses":["fd00:1122:3344:10b::b"],"dataset":{"id":"b0cde4a8-f27c-46e8-8355-756be9045afc","name":{"pool_name":"oxp_07c1a8e7-51f5-4f12-a43d-734719fef92b","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::b]:32345"},"services":[{"id":"b0cde4a8-f27c-46e8-8355-756be9045afc","details":{"type":"crucible","address":"[fd00:1122:3344:10b::b]:32345"}}]},"root":"/pool/ext/1f6adf64-c9b9-4ed7-b3e2-37fb25624646/crypt/zone"},{"zone":{"id":"e2f70cf6-e285-4212-9b01-77ebf2ca9219","zone_type":"crucible","addresses":["fd00:1122:3344:10b::d"],"dataset":{"id":"e2f70cf6-e285-4212-9b01-77ebf2ca9219","name":{"pool_name":"oxp_a809f28a-7f25-4362-bc56-0cbdd72af2cb","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::d]:32345"},"services":[{"id":"e2f70cf6-e285-4212-9b01-77ebf2ca9219","details":{"type":"crucible","address":"[fd00:1122:3344:10b::d]:32345"}}]},"root":"/pool/ext/92a1bd39-6e8a-4226-b9d0-e3e8a9b8504f/crypt/zone"},{"zone":{"id":"b0949c9d-4aa1-4bc4-9cb3-5875b9166885","zone_type":"crucible","addresses":["fd00:1122:3344:10b::a"],"dataset":{"id":"b0949c9d-4aa1-4bc4-9cb3-5875b9166885","name":{"pool_name":"oxp_af0cc12b-43c5-473a-89a7-28351fbbb430","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::a]:32345"},"services":[{"id":"b0949c9d-4aa1-4bc4-9cb3-5875b9166885","details":{"type":"crucible","address":"[fd00:1122:3344:10b::a]:32345"}}]},"root":"/pool/ext/cf1594ed-7c0c-467c-b0af-a689dcb427a3/crypt/zone"},{"zone":{"id":"7cea4d59-a8ca-4826-901d-8d5bd935dc09","zone_type":"crucible","addresses":["fd00:1122:3344:10b::9"],"dataset":{"id":"7cea4d59-a8ca-4826-901d-8d5bd935dc09","name":{"pool_name":"oxp_d75dae09-4992-4a61-ab7d-5ae1d2b068ba","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::9]:32345"},"services":[{"id":"7cea4d59-a8ca-4826-901d-8d5bd935dc09","details":{"type":"crucible","address":"[fd00:1122:3344:10b::9]:32345"}}]},"root":"/pool/ext/a809f28a-7f25-4362-bc56-0cbdd72af2cb/crypt/zone"},{"zone":{"id":"08adaeee-c3b5-4cd8-8fbd-ac371b3101c9","zone_type":"crucible","addresses":["fd00:1122:3344:10b::4"],"dataset":{"id":"08adaeee-c3b5-4cd8-8fbd-ac371b3101c9","name":{"pool_name":"oxp_d9f23187-fbf9-4ea5-a103-bc112263a9a7","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::4]:32345"},"services":[{"id":"08adaeee-c3b5-4cd8-8fbd-ac371b3101c9","details":{"type":"crucible","address":"[fd00:1122:3344:10b::4]:32345"}}]},"root":"/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone"},{"zone":{"id":"3da1ade5-3fcb-4e64-aa08-81ee8a9ef723","zone_type":"crucible","addresses":["fd00:1122:3344:10b::8"],"dataset":{"id":"3da1ade5-3fcb-4e64-aa08-81ee8a9ef723","name":{"pool_name":"oxp_1f6adf64-c9b9-4ed7-b3e2-37fb25624646","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::8]:32345"},"services":[{"id":"3da1ade5-3fcb-4e64-aa08-81ee8a9ef723","details":{"type":"crucible","address":"[fd00:1122:3344:10b::8]:32345"}}]},"root":"/pool/ext/07c1a8e7-51f5-4f12-a43d-734719fef92b/crypt/zone"},{"zone":{"id":"816f26a7-4c28-4a39-b9ad-a036678520ab","zone_type":"crucible","addresses":["fd00:1122:3344:10b::7"],"dataset":{"id":"816f26a7-4c28-4a39-b9ad-a036678520ab","name":{"pool_name":"oxp_92a1bd39-6e8a-4226-b9d0-e3e8a9b8504f","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::7]:32345"},"services":[{"id":"816f26a7-4c28-4a39-b9ad-a036678520ab","details":{"type":"crucible","address":"[fd00:1122:3344:10b::7]:32345"}}]},"root":"/pool/ext/d9f23187-fbf9-4ea5-a103-bc112263a9a7/crypt/zone"},{"zone":{"id":"839f9839-409f-45d3-b8a6-7085507b90f6","zone_type":"crucible","addresses":["fd00:1122:3344:10b::c"],"dataset":{"id":"839f9839-409f-45d3-b8a6-7085507b90f6","name":{"pool_name":"oxp_7c204111-31df-4c32-9a3e-780411f700fd","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::c]:32345"},"services":[{"id":"839f9839-409f-45d3-b8a6-7085507b90f6","details":{"type":"crucible","address":"[fd00:1122:3344:10b::c]:32345"}}]},"root":"/pool/ext/af0cc12b-43c5-473a-89a7-28351fbbb430/crypt/zone"},{"zone":{"id":"c717c81f-a228-4412-a34e-90f8c491d847","zone_type":"crucible","addresses":["fd00:1122:3344:10b::5"],"dataset":{"id":"c717c81f-a228-4412-a34e-90f8c491d847","name":{"pool_name":"oxp_cf1594ed-7c0c-467c-b0af-a689dcb427a3","kind":{"type":"crucible"}},"service_address":"[fd00:1122:3344:10b::5]:32345"},"services":[{"id":"c717c81f-a228-4412-a34e-90f8c491d847","details":{"type":"crucible","address":"[fd00:1122:3344:10b::5]:32345"}}]},"root":"/pool/ext/d63a297d-ae6a-4072-9dca-dda404044989/crypt/zone"},{"zone":{"id":"e1fa2023-6c86-40a4-ae59-a0de112cf7a9","zone_type":"ntp","addresses":["fd00:1122:3344:10b::e"],"dataset":null,"services":[{"id":"e1fa2023-6c86-40a4-ae59-a0de112cf7a9","details":{"type":"internal_ntp","address":"[fd00:1122:3344:10b::e]:123","ntp_servers":["440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal","cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal"],"dns_servers":["fd00:1122:3344:1::1","fd00:1122:3344:2::1","fd00:1122:3344:3::1"],"domain":null}}]},"root":"/pool/ext/d9f23187-fbf9-4ea5-a103-bc112263a9a7/crypt/zone"}]} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled10.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled10.json deleted file mode 100644 index c00a65e8ea..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled10.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "04eef8aa-055c-42ab-bdb6-c982f63c9be0", - "underlay_address": "fd00:1122:3344:107::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::d]:32345", - "dataset": { - "pool_name": "oxp_845ff39a-3205-416f-8bda-e35829107c8a" - } - } - }, - "root": "/pool/ext/43efdd6d-7419-437a-a282-fc45bfafd042/crypt/zone" - }, - { - "zone": { - "id": "8568c997-fbbb-46a8-8549-b78284530ffc", - "underlay_address": "fd00:1122:3344:107::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::5]:32345", - "dataset": { - "pool_name": "oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae" - } - } - }, - "root": "/pool/ext/9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf/crypt/zone" - }, - { - "zone": { - "id": "6cec1d60-5c1a-4c1b-9632-2b4bc76bd37c", - "underlay_address": "fd00:1122:3344:107::e", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::e]:32345", - "dataset": { - "pool_name": "oxp_62a4c68a-2073-42d0-8e49-01f5e8b90cd4" - } - } - }, - "root": "/pool/ext/845ff39a-3205-416f-8bda-e35829107c8a/crypt/zone" - }, - { - "zone": { - "id": "aa646c82-c6d7-4d0c-8401-150130927759", - "underlay_address": "fd00:1122:3344:107::4", - "zone_type": { - "type": "clickhouse", - "address": "[fd00:1122:3344:107::4]:8123", - "dataset": { - "pool_name": "oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae" - } - } - }, - "root": "/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone" - }, - { - "zone": { - "id": "2f294ca1-7a4f-468f-8966-2b7915804729", - "underlay_address": "fd00:1122:3344:107::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::7]:32345", - "dataset": { - "pool_name": "oxp_43efdd6d-7419-437a-a282-fc45bfafd042" - } - } - }, - "root": "/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone" - }, - { - "zone": { - "id": "1a77bd1d-4fd4-4d6c-a105-17f942d94ba6", - "underlay_address": "fd00:1122:3344:107::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::c]:32345", - "dataset": { - "pool_name": "oxp_b6bdfdaf-9c0d-4b74-926c-49ff3ed05562" - } - } - }, - "root": "/pool/ext/9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf/crypt/zone" - }, - { - "zone": { - "id": "f65a6668-1aea-4deb-81ed-191fbe469328", - "underlay_address": "fd00:1122:3344:107::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::9]:32345", - "dataset": { - "pool_name": "oxp_9b61d4b2-66f6-459f-86f4-13d0b8c5d6cf" - } - } - }, - "root": "/pool/ext/d0584f4a-20ba-436d-a75b-7709e80deb79/crypt/zone" - }, - { - "zone": { - "id": "ee8bce67-8f8e-4221-97b0-85f1860d66d0", - "underlay_address": "fd00:1122:3344:107::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::8]:32345", - "dataset": { - "pool_name": "oxp_b252b176-3974-436a-915b-60382b21eb76" - } - } - }, - "root": "/pool/ext/b6bdfdaf-9c0d-4b74-926c-49ff3ed05562/crypt/zone" - }, - { - "zone": { - "id": "cf3b2d54-5e36-4c93-b44f-8bf36ac98071", - "underlay_address": "fd00:1122:3344:107::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::b]:32345", - "dataset": { - "pool_name": "oxp_d0584f4a-20ba-436d-a75b-7709e80deb79" - } - } - }, - "root": "/pool/ext/4c157f35-865d-4310-9d81-c6259cb69293/crypt/zone" - }, - { - "zone": { - "id": "5c8c244c-00dc-4b16-aa17-6d9eb4827fab", - "underlay_address": "fd00:1122:3344:107::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::a]:32345", - "dataset": { - "pool_name": "oxp_4c157f35-865d-4310-9d81-c6259cb69293" - } - } - }, - "root": "/pool/ext/845ff39a-3205-416f-8bda-e35829107c8a/crypt/zone" - }, - { - "zone": { - "id": "7d5e942b-926c-442d-937a-76cc4aa72bf3", - "underlay_address": "fd00:1122:3344:107::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::6]:32345", - "dataset": { - "pool_name": "oxp_fd82dcc7-00dd-4d01-826a-937a7d8238fb" - } - } - }, - "root": "/pool/ext/b252b176-3974-436a-915b-60382b21eb76/crypt/zone" - }, - { - "zone": { - "id": "a3628a56-6f85-43b5-be50-71d8f0e04877", - "underlay_address": "fd00:1122:3344:107::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:107::3]:32221", - "dataset": { - "pool_name": "oxp_0e485ad3-04e6-404b-b619-87d4fea9f5ae" - } - } - }, - "root": "/pool/ext/4c157f35-865d-4310-9d81-c6259cb69293/crypt/zone" - }, - { - "zone": { - "id": "7529be1c-ca8b-441a-89aa-37166cc450df", - "underlay_address": "fd00:1122:3344:107::f", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:107::f]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/fd82dcc7-00dd-4d01-826a-937a7d8238fb/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled11.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled11.json deleted file mode 100644 index 79aae3e8c1..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled11.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "605be8b9-c652-4a5f-94ca-068ec7a39472", - "underlay_address": "fd00:1122:3344:106::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::a]:32345", - "dataset": { - "pool_name": "oxp_cf14d1b9-b4db-4594-b3ab-a9957e770ce9" - } - } - }, - "root": "/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone" - }, - { - "zone": { - "id": "af8a8712-457c-4ea7-a8b6-aecb04761c1b", - "underlay_address": "fd00:1122:3344:106::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::9]:32345", - "dataset": { - "pool_name": "oxp_cf5f8849-0c5a-475b-8683-6d17da88d1d1" - } - } - }, - "root": "/pool/ext/7f778610-7328-4554-98f6-b17f74f551c7/crypt/zone" - }, - { - "zone": { - "id": "0022703b-dcfc-44d4-897a-b42f6f53b433", - "underlay_address": "fd00:1122:3344:106::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::c]:32345", - "dataset": { - "pool_name": "oxp_025725fa-9e40-4b46-b018-c420408394ef" - } - } - }, - "root": "/pool/ext/025725fa-9e40-4b46-b018-c420408394ef/crypt/zone" - }, - { - "zone": { - "id": "fffddf56-10ca-4b62-9be3-5b3764a5f682", - "underlay_address": "fd00:1122:3344:106::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::d]:32345", - "dataset": { - "pool_name": "oxp_4d2f5aaf-eb14-4b1e-aa99-ae38ec844605" - } - } - }, - "root": "/pool/ext/834c9aad-c53b-4357-bc3f-f422efa63848/crypt/zone" - }, - { - "zone": { - "id": "9b8194ee-917d-4abc-a55c-94cea6cdaea1", - "underlay_address": "fd00:1122:3344:106::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::6]:32345", - "dataset": { - "pool_name": "oxp_d7665e0d-9354-4341-a76f-965d7c49f277" - } - } - }, - "root": "/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone" - }, - { - "zone": { - "id": "b369e133-485c-4d98-8fee-83542d1fd94d", - "underlay_address": "fd00:1122:3344:106::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::4]:32345", - "dataset": { - "pool_name": "oxp_4366f80d-3902-4b93-8f2d-380008e805fc" - } - } - }, - "root": "/pool/ext/025725fa-9e40-4b46-b018-c420408394ef/crypt/zone" - }, - { - "zone": { - "id": "edd99650-5df1-4241-815d-253e4ef2399c", - "underlay_address": "fd00:1122:3344:106::3", - "zone_type": { - "type": "external_dns", - "dataset": { - "pool_name": "oxp_4366f80d-3902-4b93-8f2d-380008e805fc" - }, - "http_address": "[fd00:1122:3344:106::3]:5353", - "dns_address": "172.20.26.1:53", - "nic": { - "id": "99b759fc-8e2e-44b7-aca8-93c3b201974d", - "kind": { - "type": "service", - "id": "edd99650-5df1-4241-815d-253e4ef2399c" - }, - "name": "external-dns-edd99650-5df1-4241-815d-253e4ef2399c", - "ip": "172.30.1.5", - "mac": "A8:40:25:FF:B0:9C", - "subnet": "172.30.1.0/24", - "vni": 100, - "primary": true, - "slot": 0 - } - } - }, - "root": "/pool/ext/7f778610-7328-4554-98f6-b17f74f551c7/crypt/zone" - }, - { - "zone": { - "id": "46d1afcc-cc3f-4b17-aafc-054dd4862d15", - "underlay_address": "fd00:1122:3344:106::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::5]:32345", - "dataset": { - "pool_name": "oxp_7f778610-7328-4554-98f6-b17f74f551c7" - } - } - }, - "root": "/pool/ext/cf5f8849-0c5a-475b-8683-6d17da88d1d1/crypt/zone" - }, - { - "zone": { - "id": "12afe1c3-bfe6-4278-8240-91d401347d36", - "underlay_address": "fd00:1122:3344:106::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::8]:32345", - "dataset": { - "pool_name": "oxp_534bcd4b-502f-4109-af6e-4b28a22c20f1" - } - } - }, - "root": "/pool/ext/4366f80d-3902-4b93-8f2d-380008e805fc/crypt/zone" - }, - { - "zone": { - "id": "c33b5912-9985-43ed-98f2-41297e2b796a", - "underlay_address": "fd00:1122:3344:106::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::b]:32345", - "dataset": { - "pool_name": "oxp_834c9aad-c53b-4357-bc3f-f422efa63848" - } - } - }, - "root": "/pool/ext/d7665e0d-9354-4341-a76f-965d7c49f277/crypt/zone" - }, - { - "zone": { - "id": "65b3db59-9361-4100-9cee-04e32a8c67d3", - "underlay_address": "fd00:1122:3344:106::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::7]:32345", - "dataset": { - "pool_name": "oxp_32b5303f-f667-4345-84d2-c7eec63b91b2" - } - } - }, - "root": "/pool/ext/d7665e0d-9354-4341-a76f-965d7c49f277/crypt/zone" - }, - { - "zone": { - "id": "82500cc9-f33d-4d59-9e6e-d70ea6133077", - "underlay_address": "fd00:1122:3344:106::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:106::e]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/cf14d1b9-b4db-4594-b3ab-a9957e770ce9/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled12.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled12.json deleted file mode 100644 index 39ebad3183..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled12.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "a76b3357-b690-43b8-8352-3300568ffc2b", - "underlay_address": "fd00:1122:3344:104::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::a]:32345", - "dataset": { - "pool_name": "oxp_05715ad8-59a1-44ab-ad5f-0cdffb46baab" - } - } - }, - "root": "/pool/ext/2ec2a731-3340-4777-b1bb-4a906c598174/crypt/zone" - }, - { - "zone": { - "id": "8d202759-ca06-4383-b50f-7f3ec4062bf7", - "underlay_address": "fd00:1122:3344:104::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::4]:32345", - "dataset": { - "pool_name": "oxp_56e32a8f-0877-4437-9cab-94a4928b1495" - } - } - }, - "root": "/pool/ext/613b58fc-5a80-42dc-a61c-b143cf220fb5/crypt/zone" - }, - { - "zone": { - "id": "fcdda266-fc6a-4518-89db-aec007a4b682", - "underlay_address": "fd00:1122:3344:104::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::b]:32345", - "dataset": { - "pool_name": "oxp_7e1293ad-b903-4054-aeae-2182d5e4a785" - } - } - }, - "root": "/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone" - }, - { - "zone": { - "id": "167cf6a2-ec51-4de2-bc6c-7785bbc0e436", - "underlay_address": "fd00:1122:3344:104::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::c]:32345", - "dataset": { - "pool_name": "oxp_f96c8d49-fdf7-4bd6-84f6-c282202d1abc" - } - } - }, - "root": "/pool/ext/56e32a8f-0877-4437-9cab-94a4928b1495/crypt/zone" - }, - { - "zone": { - "id": "c6fde82d-8dae-4ef0-b557-6c3d094d9454", - "underlay_address": "fd00:1122:3344:104::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::9]:32345", - "dataset": { - "pool_name": "oxp_416fd29e-d3b5-4fdf-8101-d0d163fa0706" - } - } - }, - "root": "/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone" - }, - { - "zone": { - "id": "650f5da7-86a0-4ade-af0f-bc96e021ded0", - "underlay_address": "fd00:1122:3344:104::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::5]:32345", - "dataset": { - "pool_name": "oxp_b4a71d3d-1ecd-418a-9a52-8d118f82082b" - } - } - }, - "root": "/pool/ext/613b58fc-5a80-42dc-a61c-b143cf220fb5/crypt/zone" - }, - { - "zone": { - "id": "7ce9a2c5-2d37-4188-b7b5-a9db819396c3", - "underlay_address": "fd00:1122:3344:104::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::d]:32345", - "dataset": { - "pool_name": "oxp_c87d16b8-e814-4159-8562-f8d7fdd19d13" - } - } - }, - "root": "/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone" - }, - { - "zone": { - "id": "23e1cf01-70ab-422f-997b-6216158965c3", - "underlay_address": "fd00:1122:3344:104::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::8]:32345", - "dataset": { - "pool_name": "oxp_3af01cc4-1f16-47d9-a489-abafcb91c2db" - } - } - }, - "root": "/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone" - }, - { - "zone": { - "id": "50209816-89fb-48ed-9595-16899d114844", - "underlay_address": "fd00:1122:3344:104::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::6]:32345", - "dataset": { - "pool_name": "oxp_2ec2a731-3340-4777-b1bb-4a906c598174" - } - } - }, - "root": "/pool/ext/416fd29e-d3b5-4fdf-8101-d0d163fa0706/crypt/zone" - }, - { - "zone": { - "id": "20b100d0-84c3-4119-aa9b-0c632b0b6a3a", - "underlay_address": "fd00:1122:3344:104::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:104::3]:12221", - "external_ip": "172.20.26.4", - "nic": { - "id": "364b0ecd-bf08-4cac-a993-bbf4a70564c7", - "kind": { - "type": "service", - "id": "20b100d0-84c3-4119-aa9b-0c632b0b6a3a" - }, - "name": "nexus-20b100d0-84c3-4119-aa9b-0c632b0b6a3a", - "ip": "172.30.2.6", - "mac": "A8:40:25:FF:B4:C1", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "9.9.9.9" - ] - } - }, - "root": "/pool/ext/c87d16b8-e814-4159-8562-f8d7fdd19d13/crypt/zone" - }, - { - "zone": { - "id": "8bc0f29e-0c20-437e-b8ca-7b9844acda22", - "underlay_address": "fd00:1122:3344:104::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::7]:32345", - "dataset": { - "pool_name": "oxp_613b58fc-5a80-42dc-a61c-b143cf220fb5" - } - } - }, - "root": "/pool/ext/56e32a8f-0877-4437-9cab-94a4928b1495/crypt/zone" - }, - { - "zone": { - "id": "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55", - "underlay_address": "fd00:1122:3344:104::e", - "zone_type": { - "type": "boundary_ntp", - "address": "[fd00:1122:3344:104::e]:123", - "ntp_servers": [ - "ntp.eng.oxide.computer" - ], - "dns_servers": [ - "1.1.1.1", - "9.9.9.9" - ], - "domain": null, - "nic": { - "id": "a4b9bacf-6c04-431a-81ad-9bf0302af96e", - "kind": { - "type": "service", - "id": "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55" - }, - "name": "ntp-c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55", - "ip": "172.30.3.5", - "mac": "A8:40:25:FF:B2:52", - "subnet": "172.30.3.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "snat_cfg": { - "ip": "172.20.26.6", - "first_port": 0, - "last_port": 16383 - } - } - }, - "root": "/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone" - }, - { - "zone": { - "id": "51c9ad09-7814-4643-8ad4-689ccbe53fbd", - "underlay_address": "fd00:1122:3344:1::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_56e32a8f-0877-4437-9cab-94a4928b1495" - }, - "http_address": "[fd00:1122:3344:1::1]:5353", - "dns_address": "[fd00:1122:3344:1::1]:53", - "gz_address": "fd00:1122:3344:1::2", - "gz_address_index": 0 - } - }, - "root": "/pool/ext/3af01cc4-1f16-47d9-a489-abafcb91c2db/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled14.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled14.json deleted file mode 100644 index 25dfb72a78..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled14.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "ee8b2cfa-87fe-46a6-98ef-23640b80a968", - "underlay_address": "fd00:1122:3344:10b::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::d]:32345", - "dataset": { - "pool_name": "oxp_4a624324-003a-4255-98e8-546a90b5b7fa" - } - } - }, - "root": "/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone" - }, - { - "zone": { - "id": "9228f8ca-2a83-439f-9cb7-f2801b5fea27", - "underlay_address": "fd00:1122:3344:10b::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::6]:32345", - "dataset": { - "pool_name": "oxp_6b9ec5f1-859f-459c-9c06-6a51ba87786f" - } - } - }, - "root": "/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone" - }, - { - "zone": { - "id": "ee44cdde-7ac9-4469-9f1d-e8bcfeb5cc46", - "underlay_address": "fd00:1122:3344:10b::e", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::e]:32345", - "dataset": { - "pool_name": "oxp_11b02ce7-7e50-486f-86c2-de8af9575a45" - } - } - }, - "root": "/pool/ext/11b02ce7-7e50-486f-86c2-de8af9575a45/crypt/zone" - }, - { - "zone": { - "id": "96bac0b1-8b34-4c81-9e76-6404d2c37630", - "underlay_address": "fd00:1122:3344:10b::4", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:10b::4]:17000" - } - }, - "root": "/pool/ext/350b2814-7b7f-40f1-9bf6-9818a1ef49bb/crypt/zone" - }, - { - "zone": { - "id": "d4e1e554-7b98-4413-809e-4a42561c3d0c", - "underlay_address": "fd00:1122:3344:10b::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::a]:32345", - "dataset": { - "pool_name": "oxp_e6d2fe1d-c74d-40cd-8fae-bc7d06bdaac8" - } - } - }, - "root": "/pool/ext/6b9ec5f1-859f-459c-9c06-6a51ba87786f/crypt/zone" - }, - { - "zone": { - "id": "1dd69b02-a032-46c3-8e2a-5012e8314455", - "underlay_address": "fd00:1122:3344:10b::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::b]:32345", - "dataset": { - "pool_name": "oxp_350b2814-7b7f-40f1-9bf6-9818a1ef49bb" - } - } - }, - "root": "/pool/ext/350b2814-7b7f-40f1-9bf6-9818a1ef49bb/crypt/zone" - }, - { - "zone": { - "id": "921f7752-d2f3-40df-a739-5cb1390abc2c", - "underlay_address": "fd00:1122:3344:10b::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::8]:32345", - "dataset": { - "pool_name": "oxp_2d1ebe24-6deb-4f81-8450-6842de28126c" - } - } - }, - "root": "/pool/ext/91ea7bb6-2be7-4498-9b0d-a0521509ec00/crypt/zone" - }, - { - "zone": { - "id": "609b25e8-9750-4308-ae6f-7202907a3675", - "underlay_address": "fd00:1122:3344:10b::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::9]:32345", - "dataset": { - "pool_name": "oxp_91ea7bb6-2be7-4498-9b0d-a0521509ec00" - } - } - }, - "root": "/pool/ext/2d1ebe24-6deb-4f81-8450-6842de28126c/crypt/zone" - }, - { - "zone": { - "id": "a232eba2-e94f-4592-a5a6-ec23f9be3296", - "underlay_address": "fd00:1122:3344:10b::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::5]:32345", - "dataset": { - "pool_name": "oxp_e12f29b8-1ab8-431e-bc96-1c1298947980" - } - } - }, - "root": "/pool/ext/021afd19-2f87-4def-9284-ab7add1dd6ae/crypt/zone" - }, - { - "zone": { - "id": "800d1758-9312-4b1a-8f02-dc6d644c2a9b", - "underlay_address": "fd00:1122:3344:10b::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::c]:32345", - "dataset": { - "pool_name": "oxp_b6932bb0-bab8-4876-914a-9c75a600e794" - } - } - }, - "root": "/pool/ext/b6932bb0-bab8-4876-914a-9c75a600e794/crypt/zone" - }, - { - "zone": { - "id": "668a4d4a-96dc-4b45-866b-bed3d64c26ec", - "underlay_address": "fd00:1122:3344:10b::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::7]:32345", - "dataset": { - "pool_name": "oxp_021afd19-2f87-4def-9284-ab7add1dd6ae" - } - } - }, - "root": "/pool/ext/91ea7bb6-2be7-4498-9b0d-a0521509ec00/crypt/zone" - }, - { - "zone": { - "id": "8bbea076-ff60-4330-8302-383e18140ef3", - "underlay_address": "fd00:1122:3344:10b::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:10b::3]:32221", - "dataset": { - "pool_name": "oxp_e12f29b8-1ab8-431e-bc96-1c1298947980" - } - } - }, - "root": "/pool/ext/4a624324-003a-4255-98e8-546a90b5b7fa/crypt/zone" - }, - { - "zone": { - "id": "3ccea933-89f2-4ce5-8367-efb0afeffe97", - "underlay_address": "fd00:1122:3344:10b::f", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10b::f]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/4a624324-003a-4255-98e8-546a90b5b7fa/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled16.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled16.json deleted file mode 100644 index 905742e678..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled16.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "b12aa520-a769-4eac-b56b-09960550a831", - "underlay_address": "fd00:1122:3344:108::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::7]:32345", - "dataset": { - "pool_name": "oxp_34dadf3f-f60c-4acc-b82b-4b0c82224222" - } - } - }, - "root": "/pool/ext/8be8c577-23ac-452e-a205-6d9c95088f61/crypt/zone" - }, - { - "zone": { - "id": "9bdc40ee-ccba-4d18-9efb-a30596e2d290", - "underlay_address": "fd00:1122:3344:108::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::d]:32345", - "dataset": { - "pool_name": "oxp_eb81728c-3b83-42fb-8133-ac32a0bdf70f" - } - } - }, - "root": "/pool/ext/8be8c577-23ac-452e-a205-6d9c95088f61/crypt/zone" - }, - { - "zone": { - "id": "c9a367c7-64d7-48e4-b484-9ecb4e8faea7", - "underlay_address": "fd00:1122:3344:108::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::9]:32345", - "dataset": { - "pool_name": "oxp_76ab5a67-e20f-4bf0-87b3-01fcc4144bd2" - } - } - }, - "root": "/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone" - }, - { - "zone": { - "id": "bc5124d8-65e8-4879-bfac-64d59003d482", - "underlay_address": "fd00:1122:3344:108::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::a]:32345", - "dataset": { - "pool_name": "oxp_5fac7a1d-e855-46e1-b8c2-dd848ac4fee6" - } - } - }, - "root": "/pool/ext/0c4ef358-5533-43db-ad38-a8eff716e53a/crypt/zone" - }, - { - "zone": { - "id": "5cc7c840-8e6b-48c8-ac4b-f4297f8cf61a", - "underlay_address": "fd00:1122:3344:108::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::c]:32345", - "dataset": { - "pool_name": "oxp_0c4ef358-5533-43db-ad38-a8eff716e53a" - } - } - }, - "root": "/pool/ext/6d3e9cc6-f03b-4055-9785-05711d5e4fdc/crypt/zone" - }, - { - "zone": { - "id": "3b767edf-a72d-4d80-a0fc-65d6801ed0e0", - "underlay_address": "fd00:1122:3344:108::e", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::e]:32345", - "dataset": { - "pool_name": "oxp_f522118c-5dcd-4116-8044-07f0cceec52e" - } - } - }, - "root": "/pool/ext/5fac7a1d-e855-46e1-b8c2-dd848ac4fee6/crypt/zone" - }, - { - "zone": { - "id": "f3c02ed6-fbc5-45c3-a030-409f74b450fd", - "underlay_address": "fd00:1122:3344:108::4", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:108::4]:17000" - } - }, - "root": "/pool/ext/eb81728c-3b83-42fb-8133-ac32a0bdf70f/crypt/zone" - }, - { - "zone": { - "id": "85bd9bdb-1ec5-4a8d-badb-8b5d502546a1", - "underlay_address": "fd00:1122:3344:108::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::5]:32345", - "dataset": { - "pool_name": "oxp_416232c1-bc8f-403f-bacb-28403dd8fced" - } - } - }, - "root": "/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone" - }, - { - "zone": { - "id": "d2f1c3df-d4e0-4469-b50e-f1871da86ebf", - "underlay_address": "fd00:1122:3344:108::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::6]:32345", - "dataset": { - "pool_name": "oxp_6d3e9cc6-f03b-4055-9785-05711d5e4fdc" - } - } - }, - "root": "/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone" - }, - { - "zone": { - "id": "88fe3c12-4c55-47df-b4ee-ed26b795439d", - "underlay_address": "fd00:1122:3344:108::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::8]:32345", - "dataset": { - "pool_name": "oxp_8be8c577-23ac-452e-a205-6d9c95088f61" - } - } - }, - "root": "/pool/ext/34dadf3f-f60c-4acc-b82b-4b0c82224222/crypt/zone" - }, - { - "zone": { - "id": "4d20175a-588b-44b8-8b9c-b16c6c3a97a0", - "underlay_address": "fd00:1122:3344:108::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::b]:32345", - "dataset": { - "pool_name": "oxp_a726cacd-fa35-4ed2-ade6-31ad928b24cb" - } - } - }, - "root": "/pool/ext/0c4ef358-5533-43db-ad38-a8eff716e53a/crypt/zone" - }, - { - "zone": { - "id": "e86845b5-eabd-49f5-9a10-6dfef9066209", - "underlay_address": "fd00:1122:3344:108::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:108::3]:32221", - "dataset": { - "pool_name": "oxp_416232c1-bc8f-403f-bacb-28403dd8fced" - } - } - }, - "root": "/pool/ext/416232c1-bc8f-403f-bacb-28403dd8fced/crypt/zone" - }, - { - "zone": { - "id": "209b6213-588b-43b6-a89b-19ee5c84ffba", - "underlay_address": "fd00:1122:3344:108::f", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:108::f]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/416232c1-bc8f-403f-bacb-28403dd8fced/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled17.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled17.json deleted file mode 100644 index 1cccd0467b..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled17.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "90b53c3d-42fa-4ca9-bbfc-96fff245b508", - "underlay_address": "fd00:1122:3344:109::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::4]:32345", - "dataset": { - "pool_name": "oxp_ae56280b-17ce-4266-8573-e1da9db6c6bb" - } - } - }, - "root": "/pool/ext/b0e1a261-b932-47c4-81e9-1977275ae9d9/crypt/zone" - }, - { - "zone": { - "id": "4f9f2e1d-be04-4e8b-a50b-ffb18557a650", - "underlay_address": "fd00:1122:3344:109::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::5]:32345", - "dataset": { - "pool_name": "oxp_d5b07362-64db-4b18-a3e9-8d7cbabae2d5" - } - } - }, - "root": "/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone" - }, - { - "zone": { - "id": "2fa5671d-3109-4f11-ae70-1280f4fa3b89", - "underlay_address": "fd00:1122:3344:109::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::6]:32345", - "dataset": { - "pool_name": "oxp_9ba7bfbf-b9a2-4237-a142-94c1e68de984" - } - } - }, - "root": "/pool/ext/3cafbb47-c194-4a42-99ff-34dfeab999ed/crypt/zone" - }, - { - "zone": { - "id": "b63c6882-ca90-4156-b561-4781ab4a0962", - "underlay_address": "fd00:1122:3344:109::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::7]:32345", - "dataset": { - "pool_name": "oxp_b0e1a261-b932-47c4-81e9-1977275ae9d9" - } - } - }, - "root": "/pool/ext/d5b07362-64db-4b18-a3e9-8d7cbabae2d5/crypt/zone" - }, - { - "zone": { - "id": "f71344eb-f7e2-439d-82a0-9941e6868fb6", - "underlay_address": "fd00:1122:3344:109::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::9]:32345", - "dataset": { - "pool_name": "oxp_027a82e8-daa3-4fa6-8205-ed03445e1086" - } - } - }, - "root": "/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone" - }, - { - "zone": { - "id": "a60cf0d7-12d5-43cb-aa3f-7a9e84de08fb", - "underlay_address": "fd00:1122:3344:109::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::a]:32345", - "dataset": { - "pool_name": "oxp_8736aaf9-4d72-42b1-8e4f-07644d999c8b" - } - } - }, - "root": "/pool/ext/8736aaf9-4d72-42b1-8e4f-07644d999c8b/crypt/zone" - }, - { - "zone": { - "id": "5d0e03b2-8958-4c43-8851-bf819f102958", - "underlay_address": "fd00:1122:3344:109::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::8]:32345", - "dataset": { - "pool_name": "oxp_62426615-7832-49e7-9426-e39ffeb42c69" - } - } - }, - "root": "/pool/ext/07fc8ec9-1216-4d98-be34-c2970b585e61/crypt/zone" - }, - { - "zone": { - "id": "accc05a2-ec80-4856-a825-ec6b7f700eaa", - "underlay_address": "fd00:1122:3344:109::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::d]:32345", - "dataset": { - "pool_name": "oxp_dc083c53-7014-4482-8a79-f338ba2b0fb4" - } - } - }, - "root": "/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone" - }, - { - "zone": { - "id": "2e32fdcc-737a-4430-8290-cb7028ea4d50", - "underlay_address": "fd00:1122:3344:109::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::b]:32345", - "dataset": { - "pool_name": "oxp_3cafbb47-c194-4a42-99ff-34dfeab999ed" - } - } - }, - "root": "/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone" - }, - { - "zone": { - "id": "a97c6ae2-37f6-4d93-a66e-cb5cd3c6aaa2", - "underlay_address": "fd00:1122:3344:109::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::c]:32345", - "dataset": { - "pool_name": "oxp_07fc8ec9-1216-4d98-be34-c2970b585e61" - } - } - }, - "root": "/pool/ext/07fc8ec9-1216-4d98-be34-c2970b585e61/crypt/zone" - }, - { - "zone": { - "id": "3237a532-acaa-4ebe-bf11-dde794fea739", - "underlay_address": "fd00:1122:3344:109::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:109::3]:32221", - "dataset": { - "pool_name": "oxp_ae56280b-17ce-4266-8573-e1da9db6c6bb" - } - } - }, - "root": "/pool/ext/027a82e8-daa3-4fa6-8205-ed03445e1086/crypt/zone" - }, - { - "zone": { - "id": "83257100-5590-484a-b72a-a079389d8da6", - "underlay_address": "fd00:1122:3344:109::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:109::e]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/3cafbb47-c194-4a42-99ff-34dfeab999ed/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled21.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled21.json deleted file mode 100644 index 35caa638e8..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled21.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "0437b69d-73a8-4231-86f9-6b5556e7e7ef", - "underlay_address": "fd00:1122:3344:102::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::5]:32345", - "dataset": { - "pool_name": "oxp_aa0ffe35-76db-42ab-adf2-ceb072bdf811" - } - } - }, - "root": "/pool/ext/0d2805da-6d24-4e57-a700-0c3865c05544/crypt/zone" - }, - { - "zone": { - "id": "47234ca5-305f-436a-9e9a-36bca9667680", - "underlay_address": "fd00:1122:3344:102::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::b]:32345", - "dataset": { - "pool_name": "oxp_0d2805da-6d24-4e57-a700-0c3865c05544" - } - } - }, - "root": "/pool/ext/160691d8-33a1-4d7d-a48a-c3fd27d76822/crypt/zone" - }, - { - "zone": { - "id": "2898657e-4141-4c05-851b-147bffc6bbbd", - "underlay_address": "fd00:1122:3344:102::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:102::3]:12221", - "external_ip": "172.20.26.5", - "nic": { - "id": "2e9a412e-c79a-48fe-8fa4-f5a6afed1040", - "kind": { - "type": "service", - "id": "2898657e-4141-4c05-851b-147bffc6bbbd" - }, - "name": "nexus-2898657e-4141-4c05-851b-147bffc6bbbd", - "ip": "172.30.2.7", - "mac": "A8:40:25:FF:C6:59", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "9.9.9.9" - ] - } - }, - "root": "/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone" - }, - { - "zone": { - "id": "cf98c4d6-4a7b-49c0-9b14-48a8adf52ce9", - "underlay_address": "fd00:1122:3344:102::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::c]:32345", - "dataset": { - "pool_name": "oxp_c0b4ecc1-a145-443f-90d1-2e8136b007bc" - } - } - }, - "root": "/pool/ext/f6acd70a-d6cb-464d-a460-dd5c60301562/crypt/zone" - }, - { - "zone": { - "id": "13c1e91e-bfcc-4eea-8185-412fc37fdea3", - "underlay_address": "fd00:1122:3344:102::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::9]:32345", - "dataset": { - "pool_name": "oxp_e9b0a2e4-8060-41bd-a3b5-d0642246d06d" - } - } - }, - "root": "/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone" - }, - { - "zone": { - "id": "c9cb60af-9e0e-4b3b-b971-53138a9b8d27", - "underlay_address": "fd00:1122:3344:102::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::4]:32345", - "dataset": { - "pool_name": "oxp_77749ec7-39a9-489d-904b-87f7223c4e3c" - } - } - }, - "root": "/pool/ext/77749ec7-39a9-489d-904b-87f7223c4e3c/crypt/zone" - }, - { - "zone": { - "id": "32995cfa-47ec-4b84-8514-7c1c8a86c19d", - "underlay_address": "fd00:1122:3344:102::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::8]:32345", - "dataset": { - "pool_name": "oxp_eac83f81-eb51-4f3e-874e-82f55dd952ba" - } - } - }, - "root": "/pool/ext/0d2805da-6d24-4e57-a700-0c3865c05544/crypt/zone" - }, - { - "zone": { - "id": "b93d2e2d-d54b-4503-85c3-9878e3cee9c7", - "underlay_address": "fd00:1122:3344:102::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::a]:32345", - "dataset": { - "pool_name": "oxp_160691d8-33a1-4d7d-a48a-c3fd27d76822" - } - } - }, - "root": "/pool/ext/138663ad-a382-4595-baf0-08f6b0276a67/crypt/zone" - }, - { - "zone": { - "id": "2ebbac4f-7b0f-43eb-99fd-dd6ff7f9e097", - "underlay_address": "fd00:1122:3344:102::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::6]:32345", - "dataset": { - "pool_name": "oxp_138663ad-a382-4595-baf0-08f6b0276a67" - } - } - }, - "root": "/pool/ext/e9b0a2e4-8060-41bd-a3b5-d0642246d06d/crypt/zone" - }, - { - "zone": { - "id": "d0eea3b2-e5ac-42bf-97b7-531b78fa06d1", - "underlay_address": "fd00:1122:3344:102::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::7]:32345", - "dataset": { - "pool_name": "oxp_69f0b863-f73f-42b2-9822-b2cb99f09003" - } - } - }, - "root": "/pool/ext/138663ad-a382-4595-baf0-08f6b0276a67/crypt/zone" - }, - { - "zone": { - "id": "2b34cd1d-ea7d-41a1-82b9-75550fdf6eb0", - "underlay_address": "fd00:1122:3344:102::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::d]:32345", - "dataset": { - "pool_name": "oxp_f6acd70a-d6cb-464d-a460-dd5c60301562" - } - } - }, - "root": "/pool/ext/c0b4ecc1-a145-443f-90d1-2e8136b007bc/crypt/zone" - }, - { - "zone": { - "id": "6ea2684c-115e-48a6-8453-ab52d1cecd73", - "underlay_address": "fd00:1122:3344:102::e", - "zone_type": { - "type": "boundary_ntp", - "address": "[fd00:1122:3344:102::e]:123", - "ntp_servers": [ - "ntp.eng.oxide.computer" - ], - "dns_servers": [ - "1.1.1.1", - "9.9.9.9" - ], - "domain": null, - "nic": { - "id": "4effd079-ed4e-4cf6-8545-bb9574f516d2", - "kind": { - "type": "service", - "id": "6ea2684c-115e-48a6-8453-ab52d1cecd73" - }, - "name": "ntp-6ea2684c-115e-48a6-8453-ab52d1cecd73", - "ip": "172.30.3.6", - "mac": "A8:40:25:FF:A0:F9", - "subnet": "172.30.3.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "snat_cfg": { - "ip": "172.20.26.7", - "first_port": 16384, - "last_port": 32767 - } - } - }, - "root": "/pool/ext/aa0ffe35-76db-42ab-adf2-ceb072bdf811/crypt/zone" - }, - { - "zone": { - "id": "3a1ea15f-06a4-4afd-959a-c3a00b2bdd80", - "underlay_address": "fd00:1122:3344:2::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_77749ec7-39a9-489d-904b-87f7223c4e3c" - }, - "http_address": "[fd00:1122:3344:2::1]:5353", - "dns_address": "[fd00:1122:3344:2::1]:53", - "gz_address": "fd00:1122:3344:2::2", - "gz_address_index": 1 - } - }, - "root": "/pool/ext/69f0b863-f73f-42b2-9822-b2cb99f09003/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled23.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled23.json deleted file mode 100644 index 94fcb3a327..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled23.json +++ /dev/null @@ -1,195 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "1876cdcf-b2e7-4b79-ad2e-67df716e1860", - "underlay_address": "fd00:1122:3344:10a::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::8]:32345", - "dataset": { - "pool_name": "oxp_d4c6bdc6-5e99-4f6c-b57a-9bfcb9a76be4" - } - } - }, - "root": "/pool/ext/86c58ea3-1413-4af3-9aff-9c0a3d758459/crypt/zone" - }, - { - "zone": { - "id": "0e708ee3-b7a6-4993-a88a-4489add33e29", - "underlay_address": "fd00:1122:3344:10a::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::d]:32345", - "dataset": { - "pool_name": "oxp_718ad834-b415-4abb-934d-9f987cde0a96" - } - } - }, - "root": "/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone" - }, - { - "zone": { - "id": "4e1b9a65-848f-4649-b360-1df0d135b44d", - "underlay_address": "fd00:1122:3344:10a::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::c]:32345", - "dataset": { - "pool_name": "oxp_88ee08c6-1c0f-44c2-9110-b8d5a7589ebb" - } - } - }, - "root": "/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone" - }, - { - "zone": { - "id": "da510a57-3af1-4d2b-b2ed-2e8849f27d8b", - "underlay_address": "fd00:1122:3344:10a::3", - "zone_type": { - "type": "oximeter", - "address": "[fd00:1122:3344:10a::3]:12223" - } - }, - "root": "/pool/ext/718ad834-b415-4abb-934d-9f987cde0a96/crypt/zone" - }, - { - "zone": { - "id": "d4d9acc8-3e0b-4fab-a0a2-d21920fabd7e", - "underlay_address": "fd00:1122:3344:10a::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::6]:32345", - "dataset": { - "pool_name": "oxp_9dfe424f-cba6-4bfb-a3dd-e8bd7fdea57d" - } - } - }, - "root": "/pool/ext/30f7d236-c835-46cc-bc27-9099a6826f67/crypt/zone" - }, - { - "zone": { - "id": "fcb75972-836b-4f55-ba21-9722832cf5c2", - "underlay_address": "fd00:1122:3344:10a::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::7]:32345", - "dataset": { - "pool_name": "oxp_9005671f-3d90-4ed1-be15-ad65b9a65bd5" - } - } - }, - "root": "/pool/ext/d4c6bdc6-5e99-4f6c-b57a-9bfcb9a76be4/crypt/zone" - }, - { - "zone": { - "id": "624beba0-7dcd-4d55-af05-4670c6fcb1fb", - "underlay_address": "fd00:1122:3344:10a::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::4]:32345", - "dataset": { - "pool_name": "oxp_93867156-a43d-4c03-a899-1535e566c8bd" - } - } - }, - "root": "/pool/ext/93867156-a43d-4c03-a899-1535e566c8bd/crypt/zone" - }, - { - "zone": { - "id": "26fb3830-898e-4086-afaf-8f9654716b8c", - "underlay_address": "fd00:1122:3344:10a::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::b]:32345", - "dataset": { - "pool_name": "oxp_86c58ea3-1413-4af3-9aff-9c0a3d758459" - } - } - }, - "root": "/pool/ext/93867156-a43d-4c03-a899-1535e566c8bd/crypt/zone" - }, - { - "zone": { - "id": "a3ef7eba-c08e-48ef-ae7a-89e2fcb49b66", - "underlay_address": "fd00:1122:3344:10a::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::a]:32345", - "dataset": { - "pool_name": "oxp_cd3fdbae-a9d9-4db7-866a-bca36f6dd634" - } - } - }, - "root": "/pool/ext/718ad834-b415-4abb-934d-9f987cde0a96/crypt/zone" - }, - { - "zone": { - "id": "5c1d4a02-f33b-433a-81f5-5c149e3433bd", - "underlay_address": "fd00:1122:3344:10a::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::5]:32345", - "dataset": { - "pool_name": "oxp_9adfc865-2eef-4880-a6e3-9d2f88c8efd0" - } - } - }, - "root": "/pool/ext/cd3fdbae-a9d9-4db7-866a-bca36f6dd634/crypt/zone" - }, - { - "zone": { - "id": "ee77efe9-81d0-4395-a237-15e30c2c2d04", - "underlay_address": "fd00:1122:3344:10a::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::9]:32345", - "dataset": { - "pool_name": "oxp_30f7d236-c835-46cc-bc27-9099a6826f67" - } - } - }, - "root": "/pool/ext/88ee08c6-1c0f-44c2-9110-b8d5a7589ebb/crypt/zone" - }, - { - "zone": { - "id": "71ab91b7-48d4-4d31-b47e-59f29f419116", - "underlay_address": "fd00:1122:3344:10a::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10a::e]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/cd3fdbae-a9d9-4db7-866a-bca36f6dd634/crypt/zone" - }, - { - "zone": { - "id": "46ccd8fe-4e3c-4307-97ae-1f7ac505082a", - "underlay_address": "fd00:1122:3344:3::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_93867156-a43d-4c03-a899-1535e566c8bd" - }, - "http_address": "[fd00:1122:3344:3::1]:5353", - "dns_address": "[fd00:1122:3344:3::1]:53", - "gz_address": "fd00:1122:3344:3::2", - "gz_address_index": 2 - } - }, - "root": "/pool/ext/9dfe424f-cba6-4bfb-a3dd-e8bd7fdea57d/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled25.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled25.json deleted file mode 100644 index 09a07149cf..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled25.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "180d466d-eb36-4546-8922-e52c4c076823", - "underlay_address": "fd00:1122:3344:101::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::5]:32345", - "dataset": { - "pool_name": "oxp_ac789935-fa42-4d00-8967-df0d96dbb74e" - } - } - }, - "root": "/pool/ext/d732addc-cfe8-4c2c-8028-72eb4481b04e/crypt/zone" - }, - { - "zone": { - "id": "b5af0303-bc03-40a3-b733-0396d705dfbf", - "underlay_address": "fd00:1122:3344:101::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::7]:32345", - "dataset": { - "pool_name": "oxp_d732addc-cfe8-4c2c-8028-72eb4481b04e" - } - } - }, - "root": "/pool/ext/677b0057-3a80-461b-aca8-c2cb501a7278/crypt/zone" - }, - { - "zone": { - "id": "9c7c805a-f5ed-4e48-86e3-7aa81a718881", - "underlay_address": "fd00:1122:3344:101::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::c]:32345", - "dataset": { - "pool_name": "oxp_923c930c-80f8-448d-8321-cebfc6c41760" - } - } - }, - "root": "/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone" - }, - { - "zone": { - "id": "4e49c83c-2d4a-491a-91ac-4ab022026dcf", - "underlay_address": "fd00:1122:3344:101::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::4]:32345", - "dataset": { - "pool_name": "oxp_c99e6032-1d4f-47d2-9efe-ae2b2479554e" - } - } - }, - "root": "/pool/ext/653065d2-ab70-47c9-b832-34238fdc95ef/crypt/zone" - }, - { - "zone": { - "id": "0e38475e-b8b2-4813-bf80-3c170081081a", - "underlay_address": "fd00:1122:3344:101::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::d]:32345", - "dataset": { - "pool_name": "oxp_653065d2-ab70-47c9-b832-34238fdc95ef" - } - } - }, - "root": "/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone" - }, - { - "zone": { - "id": "75123e60-1116-4b8d-a466-7302220127da", - "underlay_address": "fd00:1122:3344:101::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::8]:32345", - "dataset": { - "pool_name": "oxp_c764a8ae-6862-4eec-9db0-cc6ea478e4a7" - } - } - }, - "root": "/pool/ext/c764a8ae-6862-4eec-9db0-cc6ea478e4a7/crypt/zone" - }, - { - "zone": { - "id": "fbd0379c-97fa-49ea-8980-17ae30ffff3c", - "underlay_address": "fd00:1122:3344:101::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::b]:32345", - "dataset": { - "pool_name": "oxp_fcb0e4c7-e046-4cf5-ad35-3ad90e1eb90c" - } - } - }, - "root": "/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone" - }, - { - "zone": { - "id": "ec635326-cd1d-4f73-b8e6-c3a36a7020db", - "underlay_address": "fd00:1122:3344:101::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::a]:32345", - "dataset": { - "pool_name": "oxp_6bfb4120-488d-4f3d-90ef-e9bfa523b388" - } - } - }, - "root": "/pool/ext/c99e6032-1d4f-47d2-9efe-ae2b2479554e/crypt/zone" - }, - { - "zone": { - "id": "f500d564-c40a-4eca-ac8a-a26b435f2037", - "underlay_address": "fd00:1122:3344:101::3", - "zone_type": { - "type": "external_dns", - "dataset": { - "pool_name": "oxp_c99e6032-1d4f-47d2-9efe-ae2b2479554e" - }, - "http_address": "[fd00:1122:3344:101::3]:5353", - "dns_address": "172.20.26.2:53", - "nic": { - "id": "b0b42776-3914-4a69-889f-4831dc72327c", - "kind": { - "type": "service", - "id": "f500d564-c40a-4eca-ac8a-a26b435f2037" - }, - "name": "external-dns-f500d564-c40a-4eca-ac8a-a26b435f2037", - "ip": "172.30.1.6", - "mac": "A8:40:25:FF:D0:B4", - "subnet": "172.30.1.0/24", - "vni": 100, - "primary": true, - "slot": 0 - } - } - }, - "root": "/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone" - }, - { - "zone": { - "id": "56d4dbcc-3b4a-4ed0-8795-7734aadcc4c0", - "underlay_address": "fd00:1122:3344:101::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::9]:32345", - "dataset": { - "pool_name": "oxp_4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca" - } - } - }, - "root": "/pool/ext/4c7ad252-55c2-4a1a-9d93-9dfcdfdfacca/crypt/zone" - }, - { - "zone": { - "id": "0d3a1bd5-f6fe-49cb-807a-190dabc90103", - "underlay_address": "fd00:1122:3344:101::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::6]:32345", - "dataset": { - "pool_name": "oxp_677b0057-3a80-461b-aca8-c2cb501a7278" - } - } - }, - "root": "/pool/ext/6bfb4120-488d-4f3d-90ef-e9bfa523b388/crypt/zone" - }, - { - "zone": { - "id": "d34c7184-5d4e-4cb5-8f91-df74a343ffbc", - "underlay_address": "fd00:1122:3344:101::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:101::e]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/ac789935-fa42-4d00-8967-df0d96dbb74e/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled8.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled8.json deleted file mode 100644 index 669889b3c5..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled8.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "7153983f-8fd7-4fb9-92ac-0f07a07798b4", - "underlay_address": "fd00:1122:3344:103::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::a]:32345", - "dataset": { - "pool_name": "oxp_bf428719-1b16-4503-99f4-ad95846d916f" - } - } - }, - "root": "/pool/ext/26e698bb-006d-4208-94b9-d1bc279111fa/crypt/zone" - }, - { - "zone": { - "id": "7d44ba36-4a69-490a-bc40-f6f90a4208d4", - "underlay_address": "fd00:1122:3344:103::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::c]:32345", - "dataset": { - "pool_name": "oxp_414e235b-55c3-4dc1-a568-8adf4ea1a052" - } - } - }, - "root": "/pool/ext/cf940e15-dbc5-481b-866a-4de4b018898e/crypt/zone" - }, - { - "zone": { - "id": "65a11c18-7f59-41ac-b9e7-680627f996e7", - "underlay_address": "fd00:1122:3344:103::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:103::3]:12221", - "external_ip": "172.20.26.3", - "nic": { - "id": "a3e13dde-a2bc-4170-ad84-aad8085b6034", - "kind": { - "type": "service", - "id": "65a11c18-7f59-41ac-b9e7-680627f996e7" - }, - "name": "nexus-65a11c18-7f59-41ac-b9e7-680627f996e7", - "ip": "172.30.2.5", - "mac": "A8:40:25:FF:A6:83", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "9.9.9.9" - ] - } - }, - "root": "/pool/ext/e126ddcc-8bee-46ba-8199-2a74df0ba040/crypt/zone" - }, - { - "zone": { - "id": "072fdae8-2adf-4fd2-94ce-e9b0663b91e7", - "underlay_address": "fd00:1122:3344:103::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::b]:32345", - "dataset": { - "pool_name": "oxp_26e698bb-006d-4208-94b9-d1bc279111fa" - } - } - }, - "root": "/pool/ext/bf428719-1b16-4503-99f4-ad95846d916f/crypt/zone" - }, - { - "zone": { - "id": "01f93020-7e7d-4185-93fb-6ca234056c82", - "underlay_address": "fd00:1122:3344:103::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::5]:32345", - "dataset": { - "pool_name": "oxp_7b24095a-72df-45e3-984f-2b795e052ac7" - } - } - }, - "root": "/pool/ext/7b24095a-72df-45e3-984f-2b795e052ac7/crypt/zone" - }, - { - "zone": { - "id": "e238116d-e5cc-43d4-9c8a-6f138ae8a15d", - "underlay_address": "fd00:1122:3344:103::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::6]:32345", - "dataset": { - "pool_name": "oxp_e126ddcc-8bee-46ba-8199-2a74df0ba040" - } - } - }, - "root": "/pool/ext/7b24095a-72df-45e3-984f-2b795e052ac7/crypt/zone" - }, - { - "zone": { - "id": "585cd8c5-c41e-4be4-beb8-bfbef9b53856", - "underlay_address": "fd00:1122:3344:103::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::7]:32345", - "dataset": { - "pool_name": "oxp_6340805e-c5af-418d-8bd1-fc0085667f33" - } - } - }, - "root": "/pool/ext/414e235b-55c3-4dc1-a568-8adf4ea1a052/crypt/zone" - }, - { - "zone": { - "id": "0b41c560-3b20-42f4-82ad-92f5bb575d6b", - "underlay_address": "fd00:1122:3344:103::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::9]:32345", - "dataset": { - "pool_name": "oxp_b93f880e-c55b-4d6c-9a16-939d84b628fc" - } - } - }, - "root": "/pool/ext/6340805e-c5af-418d-8bd1-fc0085667f33/crypt/zone" - }, - { - "zone": { - "id": "0ccf27c0-e32d-4b52-a2c5-6db0c64a26f9", - "underlay_address": "fd00:1122:3344:103::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::d]:32345", - "dataset": { - "pool_name": "oxp_2115b084-be0f-4fba-941b-33a659798a9e" - } - } - }, - "root": "/pool/ext/414e235b-55c3-4dc1-a568-8adf4ea1a052/crypt/zone" - }, - { - "zone": { - "id": "a6ba8273-0320-4dab-b801-281f041b0c50", - "underlay_address": "fd00:1122:3344:103::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::4]:32345", - "dataset": { - "pool_name": "oxp_8a199f12-4f5c-483a-8aca-f97856658a35" - } - } - }, - "root": "/pool/ext/b93f880e-c55b-4d6c-9a16-939d84b628fc/crypt/zone" - }, - { - "zone": { - "id": "b9b7b4c2-284a-4ec1-80ea-75b7a43b71c4", - "underlay_address": "fd00:1122:3344:103::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::8]:32345", - "dataset": { - "pool_name": "oxp_cf940e15-dbc5-481b-866a-4de4b018898e" - } - } - }, - "root": "/pool/ext/cf940e15-dbc5-481b-866a-4de4b018898e/crypt/zone" - }, - { - "zone": { - "id": "7a85d50e-b524-41c1-a052-118027eb77db", - "underlay_address": "fd00:1122:3344:103::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:103::e]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/b93f880e-c55b-4d6c-9a16-939d84b628fc/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack2-sled9.json b/sled-agent/tests/output/new-zones-ledgers/rack2-sled9.json deleted file mode 100644 index d4a429f9b0..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack2-sled9.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "912346a2-d7e6-427e-b373-e8dcbe4fcea9", - "underlay_address": "fd00:1122:3344:105::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::5]:32345", - "dataset": { - "pool_name": "oxp_b358fb1e-f52a-4a63-9aab-170225509b37" - } - } - }, - "root": "/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone" - }, - { - "zone": { - "id": "3d420dff-c616-4c7d-bab1-0f9c2b5396bf", - "underlay_address": "fd00:1122:3344:105::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::a]:32345", - "dataset": { - "pool_name": "oxp_4eb2e4eb-41d8-496c-9a5a-687d7e004aa4" - } - } - }, - "root": "/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone" - }, - { - "zone": { - "id": "9c5d88c9-8ff1-4f23-9438-7b81322eaf68", - "underlay_address": "fd00:1122:3344:105::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::b]:32345", - "dataset": { - "pool_name": "oxp_aadf48eb-6ff0-40b5-a092-1fdd06c03e11" - } - } - }, - "root": "/pool/ext/4358f47f-f21e-4cc8-829e-0c7fc2400a59/crypt/zone" - }, - { - "zone": { - "id": "f9c1deca-1898-429e-8c93-254c7aa7bae6", - "underlay_address": "fd00:1122:3344:105::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::8]:32345", - "dataset": { - "pool_name": "oxp_d1cb6b7d-2b92-4b7d-8a4d-551987f0277e" - } - } - }, - "root": "/pool/ext/f8b11629-ced6-412a-9c3f-d169b99ee996/crypt/zone" - }, - { - "zone": { - "id": "ce8563f3-4a93-45ff-b727-cbfbee6aa413", - "underlay_address": "fd00:1122:3344:105::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::9]:32345", - "dataset": { - "pool_name": "oxp_4358f47f-f21e-4cc8-829e-0c7fc2400a59" - } - } - }, - "root": "/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone" - }, - { - "zone": { - "id": "9470ea7d-1920-4b4b-8fca-e7659a1ef733", - "underlay_address": "fd00:1122:3344:105::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::c]:32345", - "dataset": { - "pool_name": "oxp_17eff217-f0b1-4353-b133-0f68bbd5ceaa" - } - } - }, - "root": "/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone" - }, - { - "zone": { - "id": "375296e5-0a23-466c-b605-4204080f8103", - "underlay_address": "fd00:1122:3344:105::4", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:105::4]:17000" - } - }, - "root": "/pool/ext/4eb2e4eb-41d8-496c-9a5a-687d7e004aa4/crypt/zone" - }, - { - "zone": { - "id": "f9940969-b0e8-4e8c-86c7-4bc49cd15a5f", - "underlay_address": "fd00:1122:3344:105::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::7]:32345", - "dataset": { - "pool_name": "oxp_f8b11629-ced6-412a-9c3f-d169b99ee996" - } - } - }, - "root": "/pool/ext/17eff217-f0b1-4353-b133-0f68bbd5ceaa/crypt/zone" - }, - { - "zone": { - "id": "23dca27d-c79b-4930-a817-392e8aeaa4c1", - "underlay_address": "fd00:1122:3344:105::e", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::e]:32345", - "dataset": { - "pool_name": "oxp_57650e05-36ff-4de8-865f-b9562bdb67f5" - } - } - }, - "root": "/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone" - }, - { - "zone": { - "id": "92d3e4e9-0768-4772-83c1-23cce52190e9", - "underlay_address": "fd00:1122:3344:105::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::6]:32345", - "dataset": { - "pool_name": "oxp_eb1234a5-fdf7-4977-94d5-2eef25ce56a1" - } - } - }, - "root": "/pool/ext/b358fb1e-f52a-4a63-9aab-170225509b37/crypt/zone" - }, - { - "zone": { - "id": "b3e9fee2-24d2-44e7-8539-a6918e85cf2b", - "underlay_address": "fd00:1122:3344:105::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::d]:32345", - "dataset": { - "pool_name": "oxp_0ae29053-29a2-489e-a1e6-6aec0ecd05f8" - } - } - }, - "root": "/pool/ext/eb1234a5-fdf7-4977-94d5-2eef25ce56a1/crypt/zone" - }, - { - "zone": { - "id": "4c3ef132-ec83-4b1b-9574-7c7d3035f9e9", - "underlay_address": "fd00:1122:3344:105::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:105::3]:32221", - "dataset": { - "pool_name": "oxp_b358fb1e-f52a-4a63-9aab-170225509b37" - } - } - }, - "root": "/pool/ext/d1cb6b7d-2b92-4b7d-8a4d-551987f0277e/crypt/zone" - }, - { - "zone": { - "id": "76b79b96-eaa2-4341-9aba-e77cfc92e0a9", - "underlay_address": "fd00:1122:3344:105::f", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:105::f]:123", - "ntp_servers": [ - "c3ec3d1a-3172-4d36-bfd3-f54a04d5ba55.host.control-plane.oxide.internal", - "6ea2684c-115e-48a6-8453-ab52d1cecd73.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/0ae29053-29a2-489e-a1e6-6aec0ecd05f8/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled0.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled0.json deleted file mode 100644 index db6c55f556..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled0.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "0710ecea-dbc4-417f-a6f7-1b97c3045db1", - "underlay_address": "fd00:1122:3344:116::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::6]:32345", - "dataset": { - "pool_name": "oxp_d5313ef5-019c-4c47-bc5e-63794107a1bb" - } - } - }, - "root": "/pool/ext/904e93a9-d175-4a20-9006-8c1e847aecf7/crypt/zone" - }, - { - "zone": { - "id": "28b29d14-d55f-4b55-bbc1-f66e46ae3e70", - "underlay_address": "fd00:1122:3344:116::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::9]:32345", - "dataset": { - "pool_name": "oxp_60755ffe-e9ee-4619-a751-8b3ea6405e67" - } - } - }, - "root": "/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone" - }, - { - "zone": { - "id": "6f8f9fd2-b139-4069-a7e2-8d40efd58f6c", - "underlay_address": "fd00:1122:3344:116::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::d]:32345", - "dataset": { - "pool_name": "oxp_ccd2cb0b-782f-4026-a160-6d1192f04ca3" - } - } - }, - "root": "/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone" - }, - { - "zone": { - "id": "450308ad-bf4d-40ff-ba62-f3290f7fffaf", - "underlay_address": "fd00:1122:3344:116::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::4]:32345", - "dataset": { - "pool_name": "oxp_46b09442-65ba-4d59-9121-9803fe3b724b" - } - } - }, - "root": "/pool/ext/54d901cc-f75e-417d-8a9f-24363136d0ef/crypt/zone" - }, - { - "zone": { - "id": "9a22bbaa-eab4-4a32-8546-9882dc029483", - "underlay_address": "fd00:1122:3344:116::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::8]:32345", - "dataset": { - "pool_name": "oxp_93e3f350-75a0-4af0-bdac-baf9b423926f" - } - } - }, - "root": "/pool/ext/d5313ef5-019c-4c47-bc5e-63794107a1bb/crypt/zone" - }, - { - "zone": { - "id": "63a9dc49-0b5b-4483-95ed-553b545dc202", - "underlay_address": "fd00:1122:3344:116::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::a]:32345", - "dataset": { - "pool_name": "oxp_e3532845-76c0-42a9-903b-a07f7992e937" - } - } - }, - "root": "/pool/ext/60755ffe-e9ee-4619-a751-8b3ea6405e67/crypt/zone" - }, - { - "zone": { - "id": "1fef5b6c-78e4-4ad9-9973-9d8c78f1e232", - "underlay_address": "fd00:1122:3344:116::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::7]:32345", - "dataset": { - "pool_name": "oxp_54d901cc-f75e-417d-8a9f-24363136d0ef" - } - } - }, - "root": "/pool/ext/90d7b6f9-3e28-48b0-86ac-0486728075cf/crypt/zone" - }, - { - "zone": { - "id": "b2aab21a-cccd-4aa9-977f-a32090e6eaa7", - "underlay_address": "fd00:1122:3344:116::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::5]:32345", - "dataset": { - "pool_name": "oxp_90d7b6f9-3e28-48b0-86ac-0486728075cf" - } - } - }, - "root": "/pool/ext/46b09442-65ba-4d59-9121-9803fe3b724b/crypt/zone" - }, - { - "zone": { - "id": "fc1bbf28-24f3-4c1f-b367-2bc8231eb7d4", - "underlay_address": "fd00:1122:3344:116::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::b]:32345", - "dataset": { - "pool_name": "oxp_0a7bb0d3-408b-42b1-8846-76cf106a9580" - } - } - }, - "root": "/pool/ext/e3532845-76c0-42a9-903b-a07f7992e937/crypt/zone" - }, - { - "zone": { - "id": "bcb7617a-f76a-4912-8ccc-802d2a697e3c", - "underlay_address": "fd00:1122:3344:116::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:116::c]:32345", - "dataset": { - "pool_name": "oxp_904e93a9-d175-4a20-9006-8c1e847aecf7" - } - } - }, - "root": "/pool/ext/ccd2cb0b-782f-4026-a160-6d1192f04ca3/crypt/zone" - }, - { - "zone": { - "id": "371fba3a-658b-469b-b675-c90cc0d39254", - "underlay_address": "fd00:1122:3344:116::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:116::3]:32221", - "dataset": { - "pool_name": "oxp_46b09442-65ba-4d59-9121-9803fe3b724b" - } - } - }, - "root": "/pool/ext/46b09442-65ba-4d59-9121-9803fe3b724b/crypt/zone" - }, - { - "zone": { - "id": "5a4d89f5-49e0-4566-a99c-342d1bb26b1c", - "underlay_address": "fd00:1122:3344:116::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:116::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/60755ffe-e9ee-4619-a751-8b3ea6405e67/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled1.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled1.json deleted file mode 100644 index ae3e3d8f4a..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled1.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "f401d06c-46fc-42f8-aa51-7515a51355ce", - "underlay_address": "fd00:1122:3344:11c::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::8]:32345", - "dataset": { - "pool_name": "oxp_8a88768a-2dd5-43b7-bd40-0db77be4d3a8" - } - } - }, - "root": "/pool/ext/19d23d27-6a33-4203-b8c1-4b0df4ac791f/crypt/zone" - }, - { - "zone": { - "id": "721c96ea-08d4-4c89-828f-600e7e344916", - "underlay_address": "fd00:1122:3344:11c::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::6]:32345", - "dataset": { - "pool_name": "oxp_15259003-fb04-4547-b4a9-b4511893c0fd" - } - } - }, - "root": "/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone" - }, - { - "zone": { - "id": "ca17bdf9-51c5-4e1e-b822-856609070ec6", - "underlay_address": "fd00:1122:3344:11c::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::5]:32345", - "dataset": { - "pool_name": "oxp_d2a8ed82-22ef-46d8-ad40-e1cb2cecebee" - } - } - }, - "root": "/pool/ext/15259003-fb04-4547-b4a9-b4511893c0fd/crypt/zone" - }, - { - "zone": { - "id": "5825447e-1b5b-4960-b202-e75853d3d250", - "underlay_address": "fd00:1122:3344:11c::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::9]:32345", - "dataset": { - "pool_name": "oxp_04e94454-cbd4-4cee-ad69-42372bcbabd5" - } - } - }, - "root": "/pool/ext/542e0fb3-552c-4d3b-b853-da1f13b581a0/crypt/zone" - }, - { - "zone": { - "id": "b937d3f0-1352-47a2-b9d1-a9ccf9c82b16", - "underlay_address": "fd00:1122:3344:11c::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::c]:32345", - "dataset": { - "pool_name": "oxp_542e0fb3-552c-4d3b-b853-da1f13b581a0" - } - } - }, - "root": "/pool/ext/eedd1d58-4892-456f-aaf7-9d650c7921ca/crypt/zone" - }, - { - "zone": { - "id": "d63a677b-8dac-44ee-89a2-cc4cb151254d", - "underlay_address": "fd00:1122:3344:11c::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::3]:32345", - "dataset": { - "pool_name": "oxp_45b5f1ee-7b66-4d74-8364-54fa0c73775f" - } - } - }, - "root": "/pool/ext/8a88768a-2dd5-43b7-bd40-0db77be4d3a8/crypt/zone" - }, - { - "zone": { - "id": "abcb92ea-9f17-4cd8-897b-9d0d1ef7903a", - "underlay_address": "fd00:1122:3344:11c::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::4]:32345", - "dataset": { - "pool_name": "oxp_341d49db-c06a-416d-90e1-b0a3426ed02e" - } - } - }, - "root": "/pool/ext/eedd1d58-4892-456f-aaf7-9d650c7921ca/crypt/zone" - }, - { - "zone": { - "id": "000ac89d-db07-47ae-83cf-d9cafef013de", - "underlay_address": "fd00:1122:3344:11c::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::b]:32345", - "dataset": { - "pool_name": "oxp_eedd1d58-4892-456f-aaf7-9d650c7921ca" - } - } - }, - "root": "/pool/ext/04e94454-cbd4-4cee-ad69-42372bcbabd5/crypt/zone" - }, - { - "zone": { - "id": "29e1e2e4-695e-4c05-8f0c-c16a0a61d390", - "underlay_address": "fd00:1122:3344:11c::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::7]:32345", - "dataset": { - "pool_name": "oxp_19d23d27-6a33-4203-b8c1-4b0df4ac791f" - } - } - }, - "root": "/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone" - }, - { - "zone": { - "id": "9fa7d7be-a6de-4d36-b56b-d1cc5ca7c82c", - "underlay_address": "fd00:1122:3344:11c::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11c::a]:32345", - "dataset": { - "pool_name": "oxp_0fd7a0b1-ed4b-4dc6-8c44-a49c9628c7e1" - } - } - }, - "root": "/pool/ext/d2a8ed82-22ef-46d8-ad40-e1cb2cecebee/crypt/zone" - }, - { - "zone": { - "id": "249db5f1-45e2-4a5c-a91f-cc51dbd87040", - "underlay_address": "fd00:1122:3344:11c::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:11c::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/542e0fb3-552c-4d3b-b853-da1f13b581a0/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled11.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled11.json deleted file mode 100644 index c94417ffb8..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled11.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "7ddd0738-59df-4b67-a41e-7f0de9827187", - "underlay_address": "fd00:1122:3344:11e::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::4]:32345", - "dataset": { - "pool_name": "oxp_09af632a-6b1b-4a18-8c91-d392da38b02f" - } - } - }, - "root": "/pool/ext/09af632a-6b1b-4a18-8c91-d392da38b02f/crypt/zone" - }, - { - "zone": { - "id": "9706189f-713a-4394-b5dc-45dcf67dc46e", - "underlay_address": "fd00:1122:3344:11e::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::9]:32345", - "dataset": { - "pool_name": "oxp_4e1837c8-91ab-4d1d-abfd-f5144d88535e" - } - } - }, - "root": "/pool/ext/2f0d47cb-28d1-4350-8656-60c6121f773b/crypt/zone" - }, - { - "zone": { - "id": "7bdd841b-5e34-4c19-9066-b12578651446", - "underlay_address": "fd00:1122:3344:11e::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::a]:32345", - "dataset": { - "pool_name": "oxp_78d1e7f7-8d11-4fed-8b1e-be58908aea2f" - } - } - }, - "root": "/pool/ext/62c23f4b-8e7b-4cd8-9055-19c1d8bd5ac8/crypt/zone" - }, - { - "zone": { - "id": "74c0f60b-de5f-4456-a85f-f992a6e10424", - "underlay_address": "fd00:1122:3344:11e::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::b]:32345", - "dataset": { - "pool_name": "oxp_3b81d709-bf10-4dd7-a2c0-759d8acc2da0" - } - } - }, - "root": "/pool/ext/09af632a-6b1b-4a18-8c91-d392da38b02f/crypt/zone" - }, - { - "zone": { - "id": "da81ce6f-bd38-440e-b966-8a743092fa21", - "underlay_address": "fd00:1122:3344:11e::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::6]:32345", - "dataset": { - "pool_name": "oxp_62c23f4b-8e7b-4cd8-9055-19c1d8bd5ac8" - } - } - }, - "root": "/pool/ext/215dd02b-0de6-488a-9e65-5e588cd079fb/crypt/zone" - }, - { - "zone": { - "id": "febbca37-5279-400f-a2e9-6b5271b2d2fc", - "underlay_address": "fd00:1122:3344:11e::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::7]:32345", - "dataset": { - "pool_name": "oxp_fb33e773-fb93-41a0-8078-b653b9078dda" - } - } - }, - "root": "/pool/ext/2f0d47cb-28d1-4350-8656-60c6121f773b/crypt/zone" - }, - { - "zone": { - "id": "5100e222-5ea4-4e67-9040-679137e666c8", - "underlay_address": "fd00:1122:3344:11e::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::5]:32345", - "dataset": { - "pool_name": "oxp_23767587-2253-431b-8944-18b9bfefcb3d" - } - } - }, - "root": "/pool/ext/3b81d709-bf10-4dd7-a2c0-759d8acc2da0/crypt/zone" - }, - { - "zone": { - "id": "c7ec3bc8-08ca-4901-a45e-0d68db72c6a7", - "underlay_address": "fd00:1122:3344:11e::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::3]:32345", - "dataset": { - "pool_name": "oxp_2f0d47cb-28d1-4350-8656-60c6121f773b" - } - } - }, - "root": "/pool/ext/215dd02b-0de6-488a-9e65-5e588cd079fb/crypt/zone" - }, - { - "zone": { - "id": "1fc80dd3-0fd9-4403-96bd-5bbf9eb0f15a", - "underlay_address": "fd00:1122:3344:11e::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::c]:32345", - "dataset": { - "pool_name": "oxp_2c932d54-41fb-4ffe-a57f-0479b9e5841e" - } - } - }, - "root": "/pool/ext/3b81d709-bf10-4dd7-a2c0-759d8acc2da0/crypt/zone" - }, - { - "zone": { - "id": "4eacc68d-5699-440a-ab33-c75f259e4cc3", - "underlay_address": "fd00:1122:3344:11e::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11e::8]:32345", - "dataset": { - "pool_name": "oxp_215dd02b-0de6-488a-9e65-5e588cd079fb" - } - } - }, - "root": "/pool/ext/4e1837c8-91ab-4d1d-abfd-f5144d88535e/crypt/zone" - }, - { - "zone": { - "id": "cb901d3e-8811-4c4c-a274-a44130501ecf", - "underlay_address": "fd00:1122:3344:11e::d", - "zone_type": { - "type": "boundary_ntp", - "address": "[fd00:1122:3344:11e::d]:123", - "ntp_servers": [ - "time.cloudflare.com" - ], - "dns_servers": [ - "1.1.1.1", - "8.8.8.8" - ], - "domain": null, - "nic": { - "id": "bcf9d9eb-b4ba-4fd5-91e0-55a3414ae049", - "kind": { - "type": "service", - "id": "cb901d3e-8811-4c4c-a274-a44130501ecf" - }, - "name": "ntp-cb901d3e-8811-4c4c-a274-a44130501ecf", - "ip": "172.30.3.6", - "mac": "A8:40:25:FF:D5:2F", - "subnet": "172.30.3.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "snat_cfg": { - "ip": "45.154.216.39", - "first_port": 16384, - "last_port": 32767 - } - } - }, - "root": "/pool/ext/23767587-2253-431b-8944-18b9bfefcb3d/crypt/zone" - }, - { - "zone": { - "id": "be4aada9-d160-401d-a630-a0764c039702", - "underlay_address": "fd00:1122:3344:2::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_2f0d47cb-28d1-4350-8656-60c6121f773b" - }, - "http_address": "[fd00:1122:3344:2::1]:5353", - "dns_address": "[fd00:1122:3344:2::1]:53", - "gz_address": "fd00:1122:3344:2::2", - "gz_address_index": 1 - } - }, - "root": "/pool/ext/78d1e7f7-8d11-4fed-8b1e-be58908aea2f/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled12.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled12.json deleted file mode 100644 index bfc30cf160..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled12.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "d8f1b9d2-fa2e-4f03-bbea-2039448d7792", - "underlay_address": "fd00:1122:3344:112::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::5]:32345", - "dataset": { - "pool_name": "oxp_7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1" - } - } - }, - "root": "/pool/ext/78d9f0ae-8e7f-450e-abc2-76b983efa5cd/crypt/zone" - }, - { - "zone": { - "id": "2074a935-c0b3-4c4f-aae5-a29adae3e1ac", - "underlay_address": "fd00:1122:3344:112::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::8]:32345", - "dataset": { - "pool_name": "oxp_ac663368-45fb-447c-811e-561c68e37bdd" - } - } - }, - "root": "/pool/ext/ac663368-45fb-447c-811e-561c68e37bdd/crypt/zone" - }, - { - "zone": { - "id": "2885d3c7-ad7d-445c-8630-dc6c81f8caa0", - "underlay_address": "fd00:1122:3344:112::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::a]:32345", - "dataset": { - "pool_name": "oxp_8e82e8da-e1c5-4867-bc1c-b5441f9c1010" - } - } - }, - "root": "/pool/ext/8e82e8da-e1c5-4867-bc1c-b5441f9c1010/crypt/zone" - }, - { - "zone": { - "id": "1eca241b-6868-4c59-876b-58356654f3b5", - "underlay_address": "fd00:1122:3344:112::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::c]:32345", - "dataset": { - "pool_name": "oxp_fde16c69-aa47-4a15-bb3f-3a5861ae45bd" - } - } - }, - "root": "/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone" - }, - { - "zone": { - "id": "cc656f2e-8542-4986-8524-2f55984939c1", - "underlay_address": "fd00:1122:3344:112::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::d]:32345", - "dataset": { - "pool_name": "oxp_21e6d0f9-887e-4d6f-9a00-4cd61139eea6" - } - } - }, - "root": "/pool/ext/21e6d0f9-887e-4d6f-9a00-4cd61139eea6/crypt/zone" - }, - { - "zone": { - "id": "dfb1ebce-a4c7-4b50-9435-9a79b884c1af", - "underlay_address": "fd00:1122:3344:112::3", - "zone_type": { - "type": "clickhouse", - "address": "[fd00:1122:3344:112::3]:8123", - "dataset": { - "pool_name": "oxp_4f045315-de51-46ed-a011-16496615278f" - } - } - }, - "root": "/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone" - }, - { - "zone": { - "id": "a95d90ed-b2b1-4a5d-8d0d-4195b34bc764", - "underlay_address": "fd00:1122:3344:112::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::6]:32345", - "dataset": { - "pool_name": "oxp_d2c77c69-14d7-442e-8b47-a0d7af5a0e7e" - } - } - }, - "root": "/pool/ext/fad56ff1-ad9f-4215-b584-522eab18cf7b/crypt/zone" - }, - { - "zone": { - "id": "1d3ebc90-d5a5-4cb0-ae90-50bb2163ae13", - "underlay_address": "fd00:1122:3344:112::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::b]:32345", - "dataset": { - "pool_name": "oxp_fad56ff1-ad9f-4215-b584-522eab18cf7b" - } - } - }, - "root": "/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone" - }, - { - "zone": { - "id": "7af9f38b-0c7a-402e-8db3-7c7fb50b4665", - "underlay_address": "fd00:1122:3344:112::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::9]:32345", - "dataset": { - "pool_name": "oxp_d0693580-5c5a-449f-803f-ce7188ebc580" - } - } - }, - "root": "/pool/ext/d2c77c69-14d7-442e-8b47-a0d7af5a0e7e/crypt/zone" - }, - { - "zone": { - "id": "94d9bb0a-ecd2-4501-b960-60982f55ad12", - "underlay_address": "fd00:1122:3344:112::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::7]:32345", - "dataset": { - "pool_name": "oxp_78d9f0ae-8e7f-450e-abc2-76b983efa5cd" - } - } - }, - "root": "/pool/ext/ac663368-45fb-447c-811e-561c68e37bdd/crypt/zone" - }, - { - "zone": { - "id": "277c1105-576e-4ec1-8e2c-cbae2f5ac9f6", - "underlay_address": "fd00:1122:3344:112::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:112::4]:32345", - "dataset": { - "pool_name": "oxp_4f045315-de51-46ed-a011-16496615278f" - } - } - }, - "root": "/pool/ext/7d7ed1b7-7b77-4f0a-abb1-27de7cb584d1/crypt/zone" - }, - { - "zone": { - "id": "555c3407-a76c-4ea4-a17a-a670d85a59b0", - "underlay_address": "fd00:1122:3344:112::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:112::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/8e82e8da-e1c5-4867-bc1c-b5441f9c1010/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled13.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled13.json deleted file mode 100644 index 66c04be148..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled13.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "fbcf51c9-a732-4a03-8c19-cfb5b819cb7a", - "underlay_address": "fd00:1122:3344:104::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::5]:32345", - "dataset": { - "pool_name": "oxp_382a2961-cd27-4a9c-901d-468a45ff5708" - } - } - }, - "root": "/pool/ext/e99994ae-61ca-4742-a02c-eb0a8a5b69ff/crypt/zone" - }, - { - "zone": { - "id": "7f8a5026-1f1d-4ab3-8c04-077bfda2f815", - "underlay_address": "fd00:1122:3344:104::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::4]:32345", - "dataset": { - "pool_name": "oxp_9c99b9b6-8018-455e-a58a-c048ddd3e11b" - } - } - }, - "root": "/pool/ext/22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167/crypt/zone" - }, - { - "zone": { - "id": "6d45d856-0e49-4eb7-ad76-989a9ae636a2", - "underlay_address": "fd00:1122:3344:104::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::3]:32345", - "dataset": { - "pool_name": "oxp_b74a84fa-b4c8-4c5f-92f4-f4e62a0a311d" - } - } - }, - "root": "/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone" - }, - { - "zone": { - "id": "c8dc7fff-72c8-49eb-a552-d605f8655134", - "underlay_address": "fd00:1122:3344:104::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::6]:32345", - "dataset": { - "pool_name": "oxp_22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167" - } - } - }, - "root": "/pool/ext/22c79e54-37ef-4ad2-a6cb-a7ee3e4f7167/crypt/zone" - }, - { - "zone": { - "id": "128a90f5-8889-4665-8343-2c7098f2922c", - "underlay_address": "fd00:1122:3344:104::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::7]:32345", - "dataset": { - "pool_name": "oxp_8b3d0b51-c6a5-4d2c-827a-0d0d1471136d" - } - } - }, - "root": "/pool/ext/29cd042b-e772-4d26-ac85-ef16009950bd/crypt/zone" - }, - { - "zone": { - "id": "a72f1878-3b03-4267-9024-5df5ebae69de", - "underlay_address": "fd00:1122:3344:104::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::a]:32345", - "dataset": { - "pool_name": "oxp_e99994ae-61ca-4742-a02c-eb0a8a5b69ff" - } - } - }, - "root": "/pool/ext/8b3d0b51-c6a5-4d2c-827a-0d0d1471136d/crypt/zone" - }, - { - "zone": { - "id": "6a9165a2-9b66-485a-aaf0-70d89d60bb6c", - "underlay_address": "fd00:1122:3344:104::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::b]:32345", - "dataset": { - "pool_name": "oxp_6a02f05f-e400-4c80-8df8-89aaecb6c12b" - } - } - }, - "root": "/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone" - }, - { - "zone": { - "id": "9677c4ed-96bc-4dcb-ae74-f7a3e9d2b5e2", - "underlay_address": "fd00:1122:3344:104::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::c]:32345", - "dataset": { - "pool_name": "oxp_7c30978f-ee87-4e53-8fdf-3455e5e851b7" - } - } - }, - "root": "/pool/ext/29cd042b-e772-4d26-ac85-ef16009950bd/crypt/zone" - }, - { - "zone": { - "id": "179039e7-3ffd-4b76-9379-bef41d42a5ff", - "underlay_address": "fd00:1122:3344:104::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::8]:32345", - "dataset": { - "pool_name": "oxp_4db7e002-e112-4bfc-a41e-8ae26991b01e" - } - } - }, - "root": "/pool/ext/8b3d0b51-c6a5-4d2c-827a-0d0d1471136d/crypt/zone" - }, - { - "zone": { - "id": "6067e31e-b6a3-4114-9e49-0296adc8e7af", - "underlay_address": "fd00:1122:3344:104::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:104::9]:32345", - "dataset": { - "pool_name": "oxp_29cd042b-e772-4d26-ac85-ef16009950bd" - } - } - }, - "root": "/pool/ext/9c99b9b6-8018-455e-a58a-c048ddd3e11b/crypt/zone" - }, - { - "zone": { - "id": "440dd615-e11f-4a5d-aeb4-dcf88bb314de", - "underlay_address": "fd00:1122:3344:104::d", - "zone_type": { - "type": "boundary_ntp", - "address": "[fd00:1122:3344:104::d]:123", - "ntp_servers": [ - "time.cloudflare.com" - ], - "dns_servers": [ - "1.1.1.1", - "8.8.8.8" - ], - "domain": null, - "nic": { - "id": "0b52fe1b-f4cc-43b1-9ac3-4ebb4ab60133", - "kind": { - "type": "service", - "id": "440dd615-e11f-4a5d-aeb4-dcf88bb314de" - }, - "name": "ntp-440dd615-e11f-4a5d-aeb4-dcf88bb314de", - "ip": "172.30.3.5", - "mac": "A8:40:25:FF:85:1E", - "subnet": "172.30.3.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "snat_cfg": { - "ip": "45.154.216.38", - "first_port": 0, - "last_port": 16383 - } - } - }, - "root": "/pool/ext/382a2961-cd27-4a9c-901d-468a45ff5708/crypt/zone" - }, - { - "zone": { - "id": "06e2de03-bd92-404c-a8ea-a13185539d24", - "underlay_address": "fd00:1122:3344:1::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_b74a84fa-b4c8-4c5f-92f4-f4e62a0a311d" - }, - "http_address": "[fd00:1122:3344:1::1]:5353", - "dns_address": "[fd00:1122:3344:1::1]:53", - "gz_address": "fd00:1122:3344:1::2", - "gz_address_index": 0 - } - }, - "root": "/pool/ext/e99994ae-61ca-4742-a02c-eb0a8a5b69ff/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled14.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled14.json deleted file mode 100644 index e8d061dbfd..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled14.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "ac35afab-a312-43c3-a42d-04b8e99fcbde", - "underlay_address": "fd00:1122:3344:111::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::4]:32345", - "dataset": { - "pool_name": "oxp_6601065c-c172-4118-81b4-16adde7e9401" - } - } - }, - "root": "/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone" - }, - { - "zone": { - "id": "6cd94da2-35b9-4683-a931-29ad4a5ed0ef", - "underlay_address": "fd00:1122:3344:111::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::c]:32345", - "dataset": { - "pool_name": "oxp_58276eba-a53c-4ef3-b374-4cdcde4d6e12" - } - } - }, - "root": "/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone" - }, - { - "zone": { - "id": "41f07d39-fcc0-4796-8b7c-7cfcd9135f78", - "underlay_address": "fd00:1122:3344:111::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::9]:32345", - "dataset": { - "pool_name": "oxp_4b90abdc-3348-4158-bedc-5bcd56e281d8" - } - } - }, - "root": "/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone" - }, - { - "zone": { - "id": "44c35566-dd64-4e4a-896e-c50aaa3df14f", - "underlay_address": "fd00:1122:3344:111::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:111::3]:12221", - "external_ip": "45.154.216.37", - "nic": { - "id": "6f824d20-6ce0-4e8b-9ce3-b12dd2b59913", - "kind": { - "type": "service", - "id": "44c35566-dd64-4e4a-896e-c50aaa3df14f" - }, - "name": "nexus-44c35566-dd64-4e4a-896e-c50aaa3df14f", - "ip": "172.30.2.7", - "mac": "A8:40:25:FF:E8:5F", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "8.8.8.8" - ] - } - }, - "root": "/pool/ext/435d7a1b-2865-4d49-903f-a68f464ade4d/crypt/zone" - }, - { - "zone": { - "id": "e5020d24-8652-456b-bf92-cd7d255a34c5", - "underlay_address": "fd00:1122:3344:111::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::6]:32345", - "dataset": { - "pool_name": "oxp_f6925045-363d-4e18-9bde-ee2987b33d21" - } - } - }, - "root": "/pool/ext/6601065c-c172-4118-81b4-16adde7e9401/crypt/zone" - }, - { - "zone": { - "id": "8f25f258-afd7-4351-83e4-24220ec0c251", - "underlay_address": "fd00:1122:3344:111::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::8]:32345", - "dataset": { - "pool_name": "oxp_8e955f54-fbef-4021-9eec-457825468813" - } - } - }, - "root": "/pool/ext/6601065c-c172-4118-81b4-16adde7e9401/crypt/zone" - }, - { - "zone": { - "id": "26aa50ec-d70a-47ea-85fc-e55c62a2e0c6", - "underlay_address": "fd00:1122:3344:111::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::5]:32345", - "dataset": { - "pool_name": "oxp_24d7e250-9fc6-459e-8155-30f8e8ccb28c" - } - } - }, - "root": "/pool/ext/435d7a1b-2865-4d49-903f-a68f464ade4d/crypt/zone" - }, - { - "zone": { - "id": "68dc212f-a96a-420f-8334-b11ee5d7cb95", - "underlay_address": "fd00:1122:3344:111::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::7]:32345", - "dataset": { - "pool_name": "oxp_4353b00b-937e-4d07-aea6-014c57b6f12c" - } - } - }, - "root": "/pool/ext/24d7e250-9fc6-459e-8155-30f8e8ccb28c/crypt/zone" - }, - { - "zone": { - "id": "475140fa-a5dc-4ec1-876d-751c48adfc37", - "underlay_address": "fd00:1122:3344:111::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::a]:32345", - "dataset": { - "pool_name": "oxp_ee55b053-6874-4e20-86b5-2e105e64c068" - } - } - }, - "root": "/pool/ext/ee55b053-6874-4e20-86b5-2e105e64c068/crypt/zone" - }, - { - "zone": { - "id": "09d5a8c9-00db-4914-a2c6-7ae3d2da4558", - "underlay_address": "fd00:1122:3344:111::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::d]:32345", - "dataset": { - "pool_name": "oxp_9ab5aba5-47dc-4bc4-8f6d-7cbe0f98a9a2" - } - } - }, - "root": "/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone" - }, - { - "zone": { - "id": "014f6a39-ad64-4f0a-9fef-01ca0d184cbf", - "underlay_address": "fd00:1122:3344:111::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:111::b]:32345", - "dataset": { - "pool_name": "oxp_435d7a1b-2865-4d49-903f-a68f464ade4d" - } - } - }, - "root": "/pool/ext/f6925045-363d-4e18-9bde-ee2987b33d21/crypt/zone" - }, - { - "zone": { - "id": "aceaf348-ba07-4965-a543-63a800826fe8", - "underlay_address": "fd00:1122:3344:111::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:111::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/8e955f54-fbef-4021-9eec-457825468813/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled15.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled15.json deleted file mode 100644 index e3b3dba86a..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled15.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "09a9ecee-1e7c-4819-b27a-73bb61099ce7", - "underlay_address": "fd00:1122:3344:114::3", - "zone_type": { - "type": "external_dns", - "dataset": { - "pool_name": "oxp_b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e" - }, - "http_address": "[fd00:1122:3344:114::3]:5353", - "dns_address": "45.154.216.33:53", - "nic": { - "id": "400ca77b-7fee-47d5-8f17-1f4b9c729f27", - "kind": { - "type": "service", - "id": "09a9ecee-1e7c-4819-b27a-73bb61099ce7" - }, - "name": "external-dns-09a9ecee-1e7c-4819-b27a-73bb61099ce7", - "ip": "172.30.1.5", - "mac": "A8:40:25:FF:B7:C7", - "subnet": "172.30.1.0/24", - "vni": 100, - "primary": true, - "slot": 0 - } - } - }, - "root": "/pool/ext/9e878b1e-bf92-4155-8162-640851c2f5d5/crypt/zone" - }, - { - "zone": { - "id": "1792e003-55f7-49b8-906c-4160db91bc23", - "underlay_address": "fd00:1122:3344:114::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::5]:32345", - "dataset": { - "pool_name": "oxp_7f3a760f-a4c0-456f-8a22-2d06ecac1022" - } - } - }, - "root": "/pool/ext/76f09ad5-c96c-4748-bbe4-71afaea7bc5e/crypt/zone" - }, - { - "zone": { - "id": "73bc7c0e-1034-449f-8920-4a1f418653ff", - "underlay_address": "fd00:1122:3344:114::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::8]:32345", - "dataset": { - "pool_name": "oxp_e87037be-1cdf-4c6e-a8a3-c27b830eaef9" - } - } - }, - "root": "/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone" - }, - { - "zone": { - "id": "06dc6619-6251-4543-9a10-da1698af49d5", - "underlay_address": "fd00:1122:3344:114::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::9]:32345", - "dataset": { - "pool_name": "oxp_ee34c530-ce70-4f1a-8c97-d0ebb77ccfc8" - } - } - }, - "root": "/pool/ext/9e878b1e-bf92-4155-8162-640851c2f5d5/crypt/zone" - }, - { - "zone": { - "id": "0d796c52-37ca-490d-b42f-dcc22fe5fd6b", - "underlay_address": "fd00:1122:3344:114::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::c]:32345", - "dataset": { - "pool_name": "oxp_9ec2b893-d486-4b24-a077-1a297f9eb15f" - } - } - }, - "root": "/pool/ext/9e72c0e2-4895-4791-b606-2f18e432fb69/crypt/zone" - }, - { - "zone": { - "id": "91d0011f-de44-4823-bc26-a447affa39bc", - "underlay_address": "fd00:1122:3344:114::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::a]:32345", - "dataset": { - "pool_name": "oxp_85e81a14-031d-4a63-a91f-981c64e91f60" - } - } - }, - "root": "/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone" - }, - { - "zone": { - "id": "0c44a2f1-559a-459c-9931-e0e7964d41c6", - "underlay_address": "fd00:1122:3344:114::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::b]:32345", - "dataset": { - "pool_name": "oxp_76f09ad5-c96c-4748-bbe4-71afaea7bc5e" - } - } - }, - "root": "/pool/ext/e87037be-1cdf-4c6e-a8a3-c27b830eaef9/crypt/zone" - }, - { - "zone": { - "id": "ea363819-96f6-4fb6-a203-f18414f1c60e", - "underlay_address": "fd00:1122:3344:114::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::4]:32345", - "dataset": { - "pool_name": "oxp_b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e" - } - } - }, - "root": "/pool/ext/b7fbb6db-aa4a-4a6d-8206-b7bdc000d56e/crypt/zone" - }, - { - "zone": { - "id": "21592c39-da6b-4527-842e-edeeceffafa1", - "underlay_address": "fd00:1122:3344:114::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::6]:32345", - "dataset": { - "pool_name": "oxp_9e72c0e2-4895-4791-b606-2f18e432fb69" - } - } - }, - "root": "/pool/ext/7aff8429-b65d-4a53-a796-7221ac7581a9/crypt/zone" - }, - { - "zone": { - "id": "f33b1263-f1b2-43a6-a8aa-5f8570dd4e72", - "underlay_address": "fd00:1122:3344:114::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::7]:32345", - "dataset": { - "pool_name": "oxp_9e878b1e-bf92-4155-8162-640851c2f5d5" - } - } - }, - "root": "/pool/ext/7f3a760f-a4c0-456f-8a22-2d06ecac1022/crypt/zone" - }, - { - "zone": { - "id": "6f42b469-5a36-4048-a152-e884f7e8a206", - "underlay_address": "fd00:1122:3344:114::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:114::d]:32345", - "dataset": { - "pool_name": "oxp_7aff8429-b65d-4a53-a796-7221ac7581a9" - } - } - }, - "root": "/pool/ext/9e72c0e2-4895-4791-b606-2f18e432fb69/crypt/zone" - }, - { - "zone": { - "id": "ad77d594-8f78-4d33-a5e4-59887060178e", - "underlay_address": "fd00:1122:3344:114::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:114::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/85e81a14-031d-4a63-a91f-981c64e91f60/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled16.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled16.json deleted file mode 100644 index 3cd727e1bc..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled16.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "dcb9a4ae-2c89-4a74-905b-b7936ff49c19", - "underlay_address": "fd00:1122:3344:11f::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::9]:32345", - "dataset": { - "pool_name": "oxp_af509039-d27f-4095-bc9d-cecbc5c606db" - } - } - }, - "root": "/pool/ext/44ee0fb4-6034-44e8-b3de-b3a44457ffca/crypt/zone" - }, - { - "zone": { - "id": "dbd46f71-ec39-4b72-a77d-9d281ccb37e0", - "underlay_address": "fd00:1122:3344:11f::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::b]:32345", - "dataset": { - "pool_name": "oxp_44ee0fb4-6034-44e8-b3de-b3a44457ffca" - } - } - }, - "root": "/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone" - }, - { - "zone": { - "id": "a1f30569-a5c6-4a6d-922e-241966aea142", - "underlay_address": "fd00:1122:3344:11f::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::6]:32345", - "dataset": { - "pool_name": "oxp_d2133e8b-51cc-455e-89d0-5454fd4fe109" - } - } - }, - "root": "/pool/ext/3f57835b-1469-499a-8757-7cc56acc5d49/crypt/zone" - }, - { - "zone": { - "id": "a33e25ae-4e41-40f4-843d-3d12f62d8cb6", - "underlay_address": "fd00:1122:3344:11f::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::8]:32345", - "dataset": { - "pool_name": "oxp_c8e4a7f4-1ae6-4683-8397-ea53475a53e8" - } - } - }, - "root": "/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone" - }, - { - "zone": { - "id": "65ed75c2-2d80-4de5-a6f6-adfa6516c7cf", - "underlay_address": "fd00:1122:3344:11f::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::c]:32345", - "dataset": { - "pool_name": "oxp_3f57835b-1469-499a-8757-7cc56acc5d49" - } - } - }, - "root": "/pool/ext/cd8cd75c-632b-4527-889a-7ca0c080fe2c/crypt/zone" - }, - { - "zone": { - "id": "bc6ccf18-6b9b-4687-8b70-c7917d972ae0", - "underlay_address": "fd00:1122:3344:11f::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::a]:32345", - "dataset": { - "pool_name": "oxp_cd8cd75c-632b-4527-889a-7ca0c080fe2c" - } - } - }, - "root": "/pool/ext/5e32c0a3-1210-402b-91fb-256946eeac2b/crypt/zone" - }, - { - "zone": { - "id": "06233bfe-a857-4819-aefe-212af9eeb90f", - "underlay_address": "fd00:1122:3344:11f::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::5]:32345", - "dataset": { - "pool_name": "oxp_c8a1aaf1-d27c-45fd-9f8d-80ac6bf6865d" - } - } - }, - "root": "/pool/ext/af509039-d27f-4095-bc9d-cecbc5c606db/crypt/zone" - }, - { - "zone": { - "id": "0bbfef71-9eae-43b6-b5e7-0060ce9269dd", - "underlay_address": "fd00:1122:3344:11f::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::4]:32345", - "dataset": { - "pool_name": "oxp_5e32c0a3-1210-402b-91fb-256946eeac2b" - } - } - }, - "root": "/pool/ext/af509039-d27f-4095-bc9d-cecbc5c606db/crypt/zone" - }, - { - "zone": { - "id": "550e10ee-24d1-444f-80be-2744dd321e0f", - "underlay_address": "fd00:1122:3344:11f::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11f::7]:32345", - "dataset": { - "pool_name": "oxp_f437ce0e-eb45-4be8-b1fe-33ed2656eb01" - } - } - }, - "root": "/pool/ext/44ee0fb4-6034-44e8-b3de-b3a44457ffca/crypt/zone" - }, - { - "zone": { - "id": "86d768f3-ece2-4956-983f-999bdb23a983", - "underlay_address": "fd00:1122:3344:11f::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:11f::3]:32221", - "dataset": { - "pool_name": "oxp_5e32c0a3-1210-402b-91fb-256946eeac2b" - } - } - }, - "root": "/pool/ext/c8a1aaf1-d27c-45fd-9f8d-80ac6bf6865d/crypt/zone" - }, - { - "zone": { - "id": "2f358812-f72c-4838-a5ea-7d78d0954be0", - "underlay_address": "fd00:1122:3344:11f::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:11f::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/f437ce0e-eb45-4be8-b1fe-33ed2656eb01/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled17.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled17.json deleted file mode 100644 index 09981ecacc..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled17.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "525a19a2-d4ac-418d-bdcf-2ce26e7abe70", - "underlay_address": "fd00:1122:3344:107::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::a]:32345", - "dataset": { - "pool_name": "oxp_cb774d2f-ff86-4fd7-866b-17a6b10e61f0" - } - } - }, - "root": "/pool/ext/e17b68b5-f50c-4fc3-b55a-80d284c6c32d/crypt/zone" - }, - { - "zone": { - "id": "7af188e1-6175-4769-9e4f-2ca7a98b76f6", - "underlay_address": "fd00:1122:3344:107::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::4]:32345", - "dataset": { - "pool_name": "oxp_0cbbcf22-770d-4e75-9148-e6109b129093" - } - } - }, - "root": "/pool/ext/b998e8df-ea69-4bdd-84cb-b7f17075b060/crypt/zone" - }, - { - "zone": { - "id": "2544540f-6ffc-46c0-84bf-f42a110c02d7", - "underlay_address": "fd00:1122:3344:107::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::6]:32345", - "dataset": { - "pool_name": "oxp_e17b68b5-f50c-4fc3-b55a-80d284c6c32d" - } - } - }, - "root": "/pool/ext/521fa477-4d83-49a8-a5cf-c267b7f0c409/crypt/zone" - }, - { - "zone": { - "id": "cfc20f72-cac2-4681-a6d8-e5a0accafbb7", - "underlay_address": "fd00:1122:3344:107::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::7]:32345", - "dataset": { - "pool_name": "oxp_b998e8df-ea69-4bdd-84cb-b7f17075b060" - } - } - }, - "root": "/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone" - }, - { - "zone": { - "id": "e24be791-5773-425e-a3df-e35ca81570c7", - "underlay_address": "fd00:1122:3344:107::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::9]:32345", - "dataset": { - "pool_name": "oxp_7849c221-dc7f-43ac-ac47-bc51864e083b" - } - } - }, - "root": "/pool/ext/7849c221-dc7f-43ac-ac47-bc51864e083b/crypt/zone" - }, - { - "zone": { - "id": "170856ee-21cf-4780-8903-175d558bc7cc", - "underlay_address": "fd00:1122:3344:107::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::3]:32345", - "dataset": { - "pool_name": "oxp_618e21e5-77d4-40ba-9f8e-7960e9ad92e2" - } - } - }, - "root": "/pool/ext/aa7a37fb-2f03-4d5c-916b-db3a4fc269ac/crypt/zone" - }, - { - "zone": { - "id": "604278ff-525a-4d41-82ff-07aef3174d38", - "underlay_address": "fd00:1122:3344:107::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::5]:32345", - "dataset": { - "pool_name": "oxp_521fa477-4d83-49a8-a5cf-c267b7f0c409" - } - } - }, - "root": "/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone" - }, - { - "zone": { - "id": "d0d4fcc0-6ed0-410a-99c7-5daf34014421", - "underlay_address": "fd00:1122:3344:107::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::b]:32345", - "dataset": { - "pool_name": "oxp_aa7a37fb-2f03-4d5c-916b-db3a4fc269ac" - } - } - }, - "root": "/pool/ext/aa7a37fb-2f03-4d5c-916b-db3a4fc269ac/crypt/zone" - }, - { - "zone": { - "id": "c935df7b-2629-48ee-bc10-20508301905d", - "underlay_address": "fd00:1122:3344:107::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::c]:32345", - "dataset": { - "pool_name": "oxp_793fd018-5fdc-4e54-9c45-f8023fa3ea18" - } - } - }, - "root": "/pool/ext/7849c221-dc7f-43ac-ac47-bc51864e083b/crypt/zone" - }, - { - "zone": { - "id": "4ba5f3b6-8be5-4a85-bc57-a5e3b0b867d8", - "underlay_address": "fd00:1122:3344:107::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:107::8]:32345", - "dataset": { - "pool_name": "oxp_e80e7996-c572-481e-8c22-61c16c6e47f4" - } - } - }, - "root": "/pool/ext/e17b68b5-f50c-4fc3-b55a-80d284c6c32d/crypt/zone" - }, - { - "zone": { - "id": "395c9d6e-3bd0-445e-9269-46c3260edb83", - "underlay_address": "fd00:1122:3344:107::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:107::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/0cbbcf22-770d-4e75-9148-e6109b129093/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled18.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled18.json deleted file mode 100644 index 708019883e..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled18.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "c7096dd4-e429-4a6f-9725-041a77ef2513", - "underlay_address": "fd00:1122:3344:11a::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::6]:32345", - "dataset": { - "pool_name": "oxp_dcf62af6-c0f9-4eb5-9b23-9424ef8f3d32" - } - } - }, - "root": "/pool/ext/b869e463-c8b9-4c12-a6b9-13175b3896dd/crypt/zone" - }, - { - "zone": { - "id": "09dd367f-b32f-43f3-aa53-11ccec1cd0c9", - "underlay_address": "fd00:1122:3344:11a::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::9]:32345", - "dataset": { - "pool_name": "oxp_d7d00317-42c7-4d1e-a04c-85491fb230cd" - } - } - }, - "root": "/pool/ext/d7d00317-42c7-4d1e-a04c-85491fb230cd/crypt/zone" - }, - { - "zone": { - "id": "fb2f85f1-05b3-432f-9bb5-63fb27a762b1", - "underlay_address": "fd00:1122:3344:11a::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::5]:32345", - "dataset": { - "pool_name": "oxp_db4a9949-68da-4c1c-9a1c-49083eba14fe" - } - } - }, - "root": "/pool/ext/db4a9949-68da-4c1c-9a1c-49083eba14fe/crypt/zone" - }, - { - "zone": { - "id": "5b89425e-69e4-4305-8f33-dc5768a1849e", - "underlay_address": "fd00:1122:3344:11a::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::a]:32345", - "dataset": { - "pool_name": "oxp_64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e" - } - } - }, - "root": "/pool/ext/64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e/crypt/zone" - }, - { - "zone": { - "id": "a5156db4-273a-4f8b-b8d8-df77062a6c63", - "underlay_address": "fd00:1122:3344:11a::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::4]:32345", - "dataset": { - "pool_name": "oxp_b869e463-c8b9-4c12-a6b9-13175b3896dd" - } - } - }, - "root": "/pool/ext/dcf62af6-c0f9-4eb5-9b23-9424ef8f3d32/crypt/zone" - }, - { - "zone": { - "id": "1f2d2f86-b69b-4130-bb9b-e62ba0cb6802", - "underlay_address": "fd00:1122:3344:11a::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::b]:32345", - "dataset": { - "pool_name": "oxp_153ffee4-5d7a-4786-ad33-d5567b434fe0" - } - } - }, - "root": "/pool/ext/174a067d-1c5a-49f7-a29f-1e62ab1c3796/crypt/zone" - }, - { - "zone": { - "id": "1e249cc9-52e7-4d66-b713-8ace1392e991", - "underlay_address": "fd00:1122:3344:11a::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::7]:32345", - "dataset": { - "pool_name": "oxp_04b6215e-9651-4a3c-ba1b-b8a1e67b3d89" - } - } - }, - "root": "/pool/ext/db4a9949-68da-4c1c-9a1c-49083eba14fe/crypt/zone" - }, - { - "zone": { - "id": "eb779538-2b1b-4d1d-8c7e-b15f04db6e53", - "underlay_address": "fd00:1122:3344:11a::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::3]:32345", - "dataset": { - "pool_name": "oxp_aacb8524-3562-4f97-a616-9023230d6efa" - } - } - }, - "root": "/pool/ext/174a067d-1c5a-49f7-a29f-1e62ab1c3796/crypt/zone" - }, - { - "zone": { - "id": "b575d52d-be7d-46af-814b-91e6d18f3464", - "underlay_address": "fd00:1122:3344:11a::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::8]:32345", - "dataset": { - "pool_name": "oxp_174a067d-1c5a-49f7-a29f-1e62ab1c3796" - } - } - }, - "root": "/pool/ext/64a1bad7-d1b1-4e39-a3f3-9b8d73c4709e/crypt/zone" - }, - { - "zone": { - "id": "274200bc-eac7-47d7-8a57-4b7be794caba", - "underlay_address": "fd00:1122:3344:11a::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11a::c]:32345", - "dataset": { - "pool_name": "oxp_2e7644e4-7d46-42bf-8e7a-9c3f39085b3f" - } - } - }, - "root": "/pool/ext/2e7644e4-7d46-42bf-8e7a-9c3f39085b3f/crypt/zone" - }, - { - "zone": { - "id": "bc20ba3a-df62-4a62-97c2-75b5653f84b4", - "underlay_address": "fd00:1122:3344:11a::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:11a::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/04b6215e-9651-4a3c-ba1b-b8a1e67b3d89/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled19.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled19.json deleted file mode 100644 index 197df304e3..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled19.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "9c73abb9-edb8-4aa2-835b-c25ebe4466d9", - "underlay_address": "fd00:1122:3344:109::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::7]:32345", - "dataset": { - "pool_name": "oxp_b7a3032f-7b8c-4a6a-9fa2-e5773bfdbc94" - } - } - }, - "root": "/pool/ext/46d21f3d-23be-4361-b5c5-9d0f6ece5b8c/crypt/zone" - }, - { - "zone": { - "id": "ca576bda-cbdd-4bb9-9d75-ce06d569e926", - "underlay_address": "fd00:1122:3344:109::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::a]:32345", - "dataset": { - "pool_name": "oxp_863c4bc4-9c7e-453c-99d8-a3d509f49f3e" - } - } - }, - "root": "/pool/ext/7e67cb32-0c00-4090-9647-eb7bae75deeb/crypt/zone" - }, - { - "zone": { - "id": "f010978d-346e-49cd-b265-7607a25685f9", - "underlay_address": "fd00:1122:3344:109::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::c]:32345", - "dataset": { - "pool_name": "oxp_9bc1dab8-2d2a-4f92-bdfb-94ebca7881f1" - } - } - }, - "root": "/pool/ext/9bc1dab8-2d2a-4f92-bdfb-94ebca7881f1/crypt/zone" - }, - { - "zone": { - "id": "daff4162-cc81-4586-a457-91d767b8f1d9", - "underlay_address": "fd00:1122:3344:109::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::6]:32345", - "dataset": { - "pool_name": "oxp_b9b5b50c-e823-41ae-9585-01b818883521" - } - } - }, - "root": "/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone" - }, - { - "zone": { - "id": "9f300d3d-e698-4cc8-be4c-1f81ac8c927f", - "underlay_address": "fd00:1122:3344:109::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::d]:32345", - "dataset": { - "pool_name": "oxp_f1d82c22-ad7d-4cda-9ab0-8f5f496d90ce" - } - } - }, - "root": "/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone" - }, - { - "zone": { - "id": "8db7c7be-da40-4a1c-9681-4d02606a7eb7", - "underlay_address": "fd00:1122:3344:109::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::9]:32345", - "dataset": { - "pool_name": "oxp_46d21f3d-23be-4361-b5c5-9d0f6ece5b8c" - } - } - }, - "root": "/pool/ext/b7a3032f-7b8c-4a6a-9fa2-e5773bfdbc94/crypt/zone" - }, - { - "zone": { - "id": "b990911b-805a-4f9d-bd83-e977f5b19a35", - "underlay_address": "fd00:1122:3344:109::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::4]:32345", - "dataset": { - "pool_name": "oxp_7e67cb32-0c00-4090-9647-eb7bae75deeb" - } - } - }, - "root": "/pool/ext/de682b18-afaf-4d53-b62e-934f6bd4a1f8/crypt/zone" - }, - { - "zone": { - "id": "c99392f5-8f30-41ac-9eeb-12d7f4b707f1", - "underlay_address": "fd00:1122:3344:109::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::b]:32345", - "dataset": { - "pool_name": "oxp_de682b18-afaf-4d53-b62e-934f6bd4a1f8" - } - } - }, - "root": "/pool/ext/46d21f3d-23be-4361-b5c5-9d0f6ece5b8c/crypt/zone" - }, - { - "zone": { - "id": "7f6cb339-9eb1-4866-8a4f-383bad25b36f", - "underlay_address": "fd00:1122:3344:109::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::5]:32345", - "dataset": { - "pool_name": "oxp_458cbfa3-3752-415d-8a3b-fb64e88468e1" - } - } - }, - "root": "/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone" - }, - { - "zone": { - "id": "11946372-f253-4648-b00c-c7874a7b2888", - "underlay_address": "fd00:1122:3344:109::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:109::8]:32345", - "dataset": { - "pool_name": "oxp_d73332f5-b2a5-46c0-94cf-c5c5712abfe8" - } - } - }, - "root": "/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone" - }, - { - "zone": { - "id": "58ece9e1-387f-4d2f-a42f-69cd34f9f380", - "underlay_address": "fd00:1122:3344:109::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:109::3]:32221", - "dataset": { - "pool_name": "oxp_7e67cb32-0c00-4090-9647-eb7bae75deeb" - } - } - }, - "root": "/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone" - }, - { - "zone": { - "id": "f016a25a-deb5-4f20-bdb0-2425c00d41a6", - "underlay_address": "fd00:1122:3344:109::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:109::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/b9b5b50c-e823-41ae-9585-01b818883521/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled2.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled2.json deleted file mode 100644 index ba6ab6f915..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled2.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "dd799dd4-03f9-451d-85e2-844155753a03", - "underlay_address": "fd00:1122:3344:10a::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::7]:32345", - "dataset": { - "pool_name": "oxp_7dcf3acc-bde9-4306-bb46-4c6a6cbbb7ba" - } - } - }, - "root": "/pool/ext/7dcf3acc-bde9-4306-bb46-4c6a6cbbb7ba/crypt/zone" - }, - { - "zone": { - "id": "dbf9346d-b46d-4402-bb44-92ce20fb5290", - "underlay_address": "fd00:1122:3344:10a::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::9]:32345", - "dataset": { - "pool_name": "oxp_9275d50f-da2c-4f84-9775-598a364309ad" - } - } - }, - "root": "/pool/ext/d83e36ef-dd7a-4cc2-be19-379b1114c031/crypt/zone" - }, - { - "zone": { - "id": "9a55ebdd-eeef-4954-b0a1-e32b04837f14", - "underlay_address": "fd00:1122:3344:10a::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::4]:32345", - "dataset": { - "pool_name": "oxp_7f30f77e-5998-4676-a226-b433b5940e77" - } - } - }, - "root": "/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone" - }, - { - "zone": { - "id": "bc2935f8-e4fa-4015-968e-f90985533a6a", - "underlay_address": "fd00:1122:3344:10a::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::6]:32345", - "dataset": { - "pool_name": "oxp_022c9d58-e91f-480d-bda6-0cf32ce3b1f5" - } - } - }, - "root": "/pool/ext/c395dcc3-6ece-4b3f-b143-e111a54ef7da/crypt/zone" - }, - { - "zone": { - "id": "63f8c861-fa1d-4121-92d9-7efa5ef7f5a0", - "underlay_address": "fd00:1122:3344:10a::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::a]:32345", - "dataset": { - "pool_name": "oxp_3c805784-f403-4d01-9eb0-4f77d0821980" - } - } - }, - "root": "/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone" - }, - { - "zone": { - "id": "4996dcf9-78de-4f69-94fa-c09cc86a8d3c", - "underlay_address": "fd00:1122:3344:10a::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::b]:32345", - "dataset": { - "pool_name": "oxp_f9fe9ce6-be0d-4974-bc30-78a8f1330496" - } - } - }, - "root": "/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone" - }, - { - "zone": { - "id": "36b9a4bf-7b30-4fe7-903d-3b722c79fa86", - "underlay_address": "fd00:1122:3344:10a::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::c]:32345", - "dataset": { - "pool_name": "oxp_cb1052e0-4c70-4d37-b979-dd55e6a25f08" - } - } - }, - "root": "/pool/ext/3c805784-f403-4d01-9eb0-4f77d0821980/crypt/zone" - }, - { - "zone": { - "id": "a109a902-6a27-41b6-a881-c353e28e5389", - "underlay_address": "fd00:1122:3344:10a::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::8]:32345", - "dataset": { - "pool_name": "oxp_d83e36ef-dd7a-4cc2-be19-379b1114c031" - } - } - }, - "root": "/pool/ext/d83e36ef-dd7a-4cc2-be19-379b1114c031/crypt/zone" - }, - { - "zone": { - "id": "d2a9a0bc-ea12-44e3-ac4a-904c76120d11", - "underlay_address": "fd00:1122:3344:10a::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::3]:32345", - "dataset": { - "pool_name": "oxp_c395dcc3-6ece-4b3f-b143-e111a54ef7da" - } - } - }, - "root": "/pool/ext/9898a289-2f0d-43a6-b053-850f6e784e9a/crypt/zone" - }, - { - "zone": { - "id": "b3c3e53b-d9ec-4dd8-bd2c-bd811319aa44", - "underlay_address": "fd00:1122:3344:10a::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10a::5]:32345", - "dataset": { - "pool_name": "oxp_9898a289-2f0d-43a6-b053-850f6e784e9a" - } - } - }, - "root": "/pool/ext/9275d50f-da2c-4f84-9775-598a364309ad/crypt/zone" - }, - { - "zone": { - "id": "7b445d3b-fd25-4538-ac3f-f439c66d1223", - "underlay_address": "fd00:1122:3344:10a::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10a::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/f9fe9ce6-be0d-4974-bc30-78a8f1330496/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled20.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled20.json deleted file mode 100644 index f02f1f05e5..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled20.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "4b49e669-264d-4bfb-8ab1-555b520b679c", - "underlay_address": "fd00:1122:3344:108::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::c]:32345", - "dataset": { - "pool_name": "oxp_799a1c86-9e1a-4626-91e2-a19f7ff5356e" - } - } - }, - "root": "/pool/ext/d2478613-b7c9-4bd3-856f-1fe8e9c903c2/crypt/zone" - }, - { - "zone": { - "id": "d802baae-9c3f-437a-85fe-cd72653b6db1", - "underlay_address": "fd00:1122:3344:108::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::5]:32345", - "dataset": { - "pool_name": "oxp_d2478613-b7c9-4bd3-856f-1fe8e9c903c2" - } - } - }, - "root": "/pool/ext/116f216c-e151-410f-82bf-8913904cf7b4/crypt/zone" - }, - { - "zone": { - "id": "e5f69e60-3421-49a4-8c1d-2db8cbb6a5e9", - "underlay_address": "fd00:1122:3344:108::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::b]:32345", - "dataset": { - "pool_name": "oxp_116f216c-e151-410f-82bf-8913904cf7b4" - } - } - }, - "root": "/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone" - }, - { - "zone": { - "id": "3e598962-ef8c-4cb6-bdfe-ec8563939d6a", - "underlay_address": "fd00:1122:3344:108::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::4]:32345", - "dataset": { - "pool_name": "oxp_ababce44-01d1-4c50-b389-f60464c5dde9" - } - } - }, - "root": "/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone" - }, - { - "zone": { - "id": "25355c9f-cc2b-4b24-8eaa-65190f8936a8", - "underlay_address": "fd00:1122:3344:108::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::d]:32345", - "dataset": { - "pool_name": "oxp_fed46d41-136d-4462-8782-359014efba59" - } - } - }, - "root": "/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone" - }, - { - "zone": { - "id": "efb2f16c-ebad-4192-b575-dcb4d9b1d5cd", - "underlay_address": "fd00:1122:3344:108::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::a]:32345", - "dataset": { - "pool_name": "oxp_bf509067-0165-456d-98ae-72c86378e626" - } - } - }, - "root": "/pool/ext/95220093-e3b8-4f7f-9f5a-cb32cb75180a/crypt/zone" - }, - { - "zone": { - "id": "89191f0d-4e0b-47fa-9a9e-fbe2a6db1385", - "underlay_address": "fd00:1122:3344:108::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::8]:32345", - "dataset": { - "pool_name": "oxp_eea15142-4635-4e40-b0b4-b0c4f13eca3c" - } - } - }, - "root": "/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone" - }, - { - "zone": { - "id": "e4589324-c528-49c7-9141-35e0a7af6947", - "underlay_address": "fd00:1122:3344:108::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::6]:32345", - "dataset": { - "pool_name": "oxp_95220093-e3b8-4f7f-9f5a-cb32cb75180a" - } - } - }, - "root": "/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone" - }, - { - "zone": { - "id": "95ebe94d-0e68-421d-9260-c30bd7fe4bd6", - "underlay_address": "fd00:1122:3344:108::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:108::3]:12221", - "external_ip": "45.154.216.35", - "nic": { - "id": "301aa595-f072-4da3-a533-99647b44a66a", - "kind": { - "type": "service", - "id": "95ebe94d-0e68-421d-9260-c30bd7fe4bd6" - }, - "name": "nexus-95ebe94d-0e68-421d-9260-c30bd7fe4bd6", - "ip": "172.30.2.5", - "mac": "A8:40:25:FF:F1:30", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "8.8.8.8" - ] - } - }, - "root": "/pool/ext/eea15142-4635-4e40-b0b4-b0c4f13eca3c/crypt/zone" - }, - { - "zone": { - "id": "4b7a7052-f8e8-4196-8d6b-315943986ce6", - "underlay_address": "fd00:1122:3344:108::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::7]:32345", - "dataset": { - "pool_name": "oxp_a549421c-2f12-45cc-b691-202f0a9bfa8b" - } - } - }, - "root": "/pool/ext/bf509067-0165-456d-98ae-72c86378e626/crypt/zone" - }, - { - "zone": { - "id": "71b8ff53-c781-47bb-8ddc-2c7129680542", - "underlay_address": "fd00:1122:3344:108::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:108::9]:32345", - "dataset": { - "pool_name": "oxp_9d19f891-a3d9-4c6e-b1e1-6b0b085a9440" - } - } - }, - "root": "/pool/ext/fed46d41-136d-4462-8782-359014efba59/crypt/zone" - }, - { - "zone": { - "id": "eaf7bf77-f4c2-4016-9909-4b88a27e9d9a", - "underlay_address": "fd00:1122:3344:108::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:108::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/ababce44-01d1-4c50-b389-f60464c5dde9/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled21.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled21.json deleted file mode 100644 index d6c19b96ed..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled21.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "a91e4af3-5d18-4b08-8cb6-0583db8f8842", - "underlay_address": "fd00:1122:3344:117::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::a]:32345", - "dataset": { - "pool_name": "oxp_4b2896b8-5f0e-42fb-a474-658b28421e65" - } - } - }, - "root": "/pool/ext/23393ed9-acee-4686-861f-7fc825af1249/crypt/zone" - }, - { - "zone": { - "id": "1ce74512-ce3a-4125-95f1-12c86e0275d5", - "underlay_address": "fd00:1122:3344:117::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::8]:32345", - "dataset": { - "pool_name": "oxp_46ece76f-ef00-4dd0-9f73-326c63959470" - } - } - }, - "root": "/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone" - }, - { - "zone": { - "id": "fef5d35f-9622-4dee-8635-d26e9f7f6869", - "underlay_address": "fd00:1122:3344:117::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::4]:32345", - "dataset": { - "pool_name": "oxp_e4d7c2e8-016b-4617-afb5-38a2d9c1b508" - } - } - }, - "root": "/pool/ext/e372bba3-ef60-466f-b819-a3d5b9acbe77/crypt/zone" - }, - { - "zone": { - "id": "4f024a31-cd38-4219-8381-9f1af70d1d54", - "underlay_address": "fd00:1122:3344:117::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::c]:32345", - "dataset": { - "pool_name": "oxp_7cb2a3c2-9d33-4c6a-af57-669f251cf4cf" - } - } - }, - "root": "/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone" - }, - { - "zone": { - "id": "d00e1d0b-e12f-420a-a4df-21e4cac176f6", - "underlay_address": "fd00:1122:3344:117::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::b]:32345", - "dataset": { - "pool_name": "oxp_e372bba3-ef60-466f-b819-a3d5b9acbe77" - } - } - }, - "root": "/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone" - }, - { - "zone": { - "id": "1598058a-6064-449e-b39c-1e3d345ed793", - "underlay_address": "fd00:1122:3344:117::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::5]:32345", - "dataset": { - "pool_name": "oxp_022a8d67-1e00-49f3-81ed-a0a1bc187cfa" - } - } - }, - "root": "/pool/ext/022a8d67-1e00-49f3-81ed-a0a1bc187cfa/crypt/zone" - }, - { - "zone": { - "id": "c723c4b8-3031-4b25-8c16-fe08bc0b5f00", - "underlay_address": "fd00:1122:3344:117::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::7]:32345", - "dataset": { - "pool_name": "oxp_23393ed9-acee-4686-861f-7fc825af1249" - } - } - }, - "root": "/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone" - }, - { - "zone": { - "id": "7751b307-888f-46c8-8787-75d2f3fdaef3", - "underlay_address": "fd00:1122:3344:117::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::9]:32345", - "dataset": { - "pool_name": "oxp_e54e53d4-f68f-4b19-b8c1-9d5ab42e51c1" - } - } - }, - "root": "/pool/ext/e372bba3-ef60-466f-b819-a3d5b9acbe77/crypt/zone" - }, - { - "zone": { - "id": "89413ff1-d5de-4931-8389-e84e7ea321af", - "underlay_address": "fd00:1122:3344:117::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::6]:32345", - "dataset": { - "pool_name": "oxp_1bd5955e-14a9-463f-adeb-f12bcb45a6c1" - } - } - }, - "root": "/pool/ext/1bd5955e-14a9-463f-adeb-f12bcb45a6c1/crypt/zone" - }, - { - "zone": { - "id": "287b0b24-72aa-41b5-a597-8523d84225ef", - "underlay_address": "fd00:1122:3344:117::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:117::3]:32345", - "dataset": { - "pool_name": "oxp_cfbd185d-e185-4aaa-a598-9216124ceec4" - } - } - }, - "root": "/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone" - }, - { - "zone": { - "id": "4728253e-c534-4a5b-b707-c64ac9a8eb8c", - "underlay_address": "fd00:1122:3344:117::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:117::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/cfbd185d-e185-4aaa-a598-9216124ceec4/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled22.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled22.json deleted file mode 100644 index 1cd6fed362..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled22.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "49f20cd1-a8a3-4fa8-9209-59da60cd8f9b", - "underlay_address": "fd00:1122:3344:103::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::5]:32345", - "dataset": { - "pool_name": "oxp_13a9ef4a-f33a-4781-8f83-712c07a79b1f" - } - } - }, - "root": "/pool/ext/711eff4e-736c-478e-83aa-ae86f5efbf1d/crypt/zone" - }, - { - "zone": { - "id": "896fd564-f94e-496b-9fcf-ddfbfcfac9f7", - "underlay_address": "fd00:1122:3344:103::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::c]:32345", - "dataset": { - "pool_name": "oxp_0944c0a2-0fb7-4f51-bced-52cc257cd2f6" - } - } - }, - "root": "/pool/ext/bc54d8c5-955d-429d-84e0-a20a4e5e27a3/crypt/zone" - }, - { - "zone": { - "id": "911fb8b3-05c2-4af7-8974-6c74a61d94ad", - "underlay_address": "fd00:1122:3344:103::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::9]:32345", - "dataset": { - "pool_name": "oxp_29f59fce-a867-4571-9d2e-b03fa5c13510" - } - } - }, - "root": "/pool/ext/711eff4e-736c-478e-83aa-ae86f5efbf1d/crypt/zone" - }, - { - "zone": { - "id": "682b34db-0b06-4770-a8fe-74437cf184d6", - "underlay_address": "fd00:1122:3344:103::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::6]:32345", - "dataset": { - "pool_name": "oxp_094d11d2-8049-4138-bcf4-562f5f8e77c0" - } - } - }, - "root": "/pool/ext/0944c0a2-0fb7-4f51-bced-52cc257cd2f6/crypt/zone" - }, - { - "zone": { - "id": "d8d20365-ecd3-4fd5-9495-c0670e3bd5d9", - "underlay_address": "fd00:1122:3344:103::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::a]:32345", - "dataset": { - "pool_name": "oxp_fb97ff7b-0225-400c-a137-3b38a786c0a0" - } - } - }, - "root": "/pool/ext/094d11d2-8049-4138-bcf4-562f5f8e77c0/crypt/zone" - }, - { - "zone": { - "id": "673620b6-44d9-4310-8e17-3024ac84e708", - "underlay_address": "fd00:1122:3344:103::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::7]:32345", - "dataset": { - "pool_name": "oxp_711eff4e-736c-478e-83aa-ae86f5efbf1d" - } - } - }, - "root": "/pool/ext/fb97ff7b-0225-400c-a137-3b38a786c0a0/crypt/zone" - }, - { - "zone": { - "id": "bf6dfc04-4d4c-41b6-a011-40ffc3bc5080", - "underlay_address": "fd00:1122:3344:103::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::8]:32345", - "dataset": { - "pool_name": "oxp_f815f1b6-48ef-436d-8768-eb08227e2386" - } - } - }, - "root": "/pool/ext/13a9ef4a-f33a-4781-8f83-712c07a79b1f/crypt/zone" - }, - { - "zone": { - "id": "ac8a82a8-fb6f-4635-a9a9-d98617eab390", - "underlay_address": "fd00:1122:3344:103::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::3]:32345", - "dataset": { - "pool_name": "oxp_97d6c860-4e2f-496e-974b-2e293fee6af9" - } - } - }, - "root": "/pool/ext/0944c0a2-0fb7-4f51-bced-52cc257cd2f6/crypt/zone" - }, - { - "zone": { - "id": "4ed66558-4815-4b85-9b94-9edf3ee69ead", - "underlay_address": "fd00:1122:3344:103::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::4]:32345", - "dataset": { - "pool_name": "oxp_bc54d8c5-955d-429d-84e0-a20a4e5e27a3" - } - } - }, - "root": "/pool/ext/13a9ef4a-f33a-4781-8f83-712c07a79b1f/crypt/zone" - }, - { - "zone": { - "id": "8a71c6ee-b08d-4c3d-b13c-c9cebc4c328a", - "underlay_address": "fd00:1122:3344:103::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:103::b]:32345", - "dataset": { - "pool_name": "oxp_2bdfa429-09bd-4fa1-aa20-eea99f0d2b85" - } - } - }, - "root": "/pool/ext/29f59fce-a867-4571-9d2e-b03fa5c13510/crypt/zone" - }, - { - "zone": { - "id": "7e6b8962-7a1e-4d7b-b7ea-49e64a51d98d", - "underlay_address": "fd00:1122:3344:103::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:103::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/2bdfa429-09bd-4fa1-aa20-eea99f0d2b85/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled23.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled23.json deleted file mode 100644 index ab171ad8cd..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled23.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "6b7e931d-4b91-4dc6-9a7b-4c19ac669e5d", - "underlay_address": "fd00:1122:3344:105::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::4]:32345", - "dataset": { - "pool_name": "oxp_24dab7f5-164a-47f3-a878-f32ab1e68cce" - } - } - }, - "root": "/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone" - }, - { - "zone": { - "id": "6c58e7aa-71e1-4868-9d4b-e12c7ef40303", - "underlay_address": "fd00:1122:3344:105::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::a]:32345", - "dataset": { - "pool_name": "oxp_d664c9e8-bc81-4225-a618-a8ae2d057186" - } - } - }, - "root": "/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone" - }, - { - "zone": { - "id": "51c6dc8d-b1a4-454a-9b19-01e45eb0b599", - "underlay_address": "fd00:1122:3344:105::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::d]:32345", - "dataset": { - "pool_name": "oxp_f5f85537-eb25-4d0e-8e94-b775c41abd73" - } - } - }, - "root": "/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone" - }, - { - "zone": { - "id": "8cbffa61-0bd0-4ad2-bd7d-30fe0dd57469", - "underlay_address": "fd00:1122:3344:105::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::9]:32345", - "dataset": { - "pool_name": "oxp_88abca38-3f61-4d4b-80a1-4ea3e4827f84" - } - } - }, - "root": "/pool/ext/88abca38-3f61-4d4b-80a1-4ea3e4827f84/crypt/zone" - }, - { - "zone": { - "id": "2177f37f-2ac9-4e66-bf74-a10bd91f4d33", - "underlay_address": "fd00:1122:3344:105::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::6]:32345", - "dataset": { - "pool_name": "oxp_59e20871-4670-40d6-8ff4-aa97899fc991" - } - } - }, - "root": "/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone" - }, - { - "zone": { - "id": "e4e43855-4879-4910-a2ba-40f625c1cc2d", - "underlay_address": "fd00:1122:3344:105::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::b]:32345", - "dataset": { - "pool_name": "oxp_967d2f05-b141-44f5-837d-9b2aa67ee128" - } - } - }, - "root": "/pool/ext/6b6f34cd-6d3d-4832-a4e6-3df112c97133/crypt/zone" - }, - { - "zone": { - "id": "8d2517e1-f9ad-40f2-abb9-2f5122839910", - "underlay_address": "fd00:1122:3344:105::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::7]:32345", - "dataset": { - "pool_name": "oxp_ad493851-2d11-4c2d-8d75-989579d9616a" - } - } - }, - "root": "/pool/ext/88abca38-3f61-4d4b-80a1-4ea3e4827f84/crypt/zone" - }, - { - "zone": { - "id": "44cb3698-a7b1-4388-9165-ac76082ec8bc", - "underlay_address": "fd00:1122:3344:105::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::5]:32345", - "dataset": { - "pool_name": "oxp_4292a83c-8c1f-4b2e-9120-72e0c510bf3c" - } - } - }, - "root": "/pool/ext/24dab7f5-164a-47f3-a878-f32ab1e68cce/crypt/zone" - }, - { - "zone": { - "id": "931b5c86-9d72-4518-bfd6-97863152ac65", - "underlay_address": "fd00:1122:3344:105::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::c]:32345", - "dataset": { - "pool_name": "oxp_6b6f34cd-6d3d-4832-a4e6-3df112c97133" - } - } - }, - "root": "/pool/ext/ad493851-2d11-4c2d-8d75-989579d9616a/crypt/zone" - }, - { - "zone": { - "id": "ac568073-1889-463e-8cc4-cfed16ce2a34", - "underlay_address": "fd00:1122:3344:105::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:105::8]:32345", - "dataset": { - "pool_name": "oxp_4f1eafe9-b28d-49d3-83e2-ceac8721d6b5" - } - } - }, - "root": "/pool/ext/4292a83c-8c1f-4b2e-9120-72e0c510bf3c/crypt/zone" - }, - { - "zone": { - "id": "e8f86fbb-864e-4d5a-961c-b50b54ae853e", - "underlay_address": "fd00:1122:3344:105::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:105::3]:32221", - "dataset": { - "pool_name": "oxp_24dab7f5-164a-47f3-a878-f32ab1e68cce" - } - } - }, - "root": "/pool/ext/4f1eafe9-b28d-49d3-83e2-ceac8721d6b5/crypt/zone" - }, - { - "zone": { - "id": "c79caea0-37b1-49d6-ae6e-8cf849d91374", - "underlay_address": "fd00:1122:3344:105::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:105::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/24dab7f5-164a-47f3-a878-f32ab1e68cce/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled24.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled24.json deleted file mode 100644 index 9968abe6d9..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled24.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "d2b1e468-bc3c-4d08-b855-ae3327465375", - "underlay_address": "fd00:1122:3344:106::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::3]:32345", - "dataset": { - "pool_name": "oxp_9db196bf-828d-4e55-a2c1-dd9d579d3908" - } - } - }, - "root": "/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone" - }, - { - "zone": { - "id": "61f94a16-79fd-42e3-b225-a4dc67228437", - "underlay_address": "fd00:1122:3344:106::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::6]:32345", - "dataset": { - "pool_name": "oxp_d77d5b08-5f70-496a-997b-b38804dc3b8a" - } - } - }, - "root": "/pool/ext/daf9e3cd-5a40-4eba-a0f6-4f94dab37dae/crypt/zone" - }, - { - "zone": { - "id": "7d32ef34-dec5-4fd8-899e-20bbc473a3ee", - "underlay_address": "fd00:1122:3344:106::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::7]:32345", - "dataset": { - "pool_name": "oxp_50c1b653-6231-41fe-b3cf-b7ba709a0746" - } - } - }, - "root": "/pool/ext/9db196bf-828d-4e55-a2c1-dd9d579d3908/crypt/zone" - }, - { - "zone": { - "id": "c34b7ae5-26b9-4651-a3c4-20bba2bd0d2c", - "underlay_address": "fd00:1122:3344:106::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::5]:32345", - "dataset": { - "pool_name": "oxp_88aea92c-ab92-44c1-9471-eb8e30e075d3" - } - } - }, - "root": "/pool/ext/8da316d4-6b18-4980-a0a8-6e76e72cc40d/crypt/zone" - }, - { - "zone": { - "id": "36472be8-9a70-4c14-bd02-439b725cec1a", - "underlay_address": "fd00:1122:3344:106::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::8]:32345", - "dataset": { - "pool_name": "oxp_54544b3a-1513-4db2-911e-7c1eb4b12385" - } - } - }, - "root": "/pool/ext/54544b3a-1513-4db2-911e-7c1eb4b12385/crypt/zone" - }, - { - "zone": { - "id": "2548f8ab-5255-4334-a1fb-5d7d95213129", - "underlay_address": "fd00:1122:3344:106::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::9]:32345", - "dataset": { - "pool_name": "oxp_08050450-967f-431c-9a12-0d051aff020e" - } - } - }, - "root": "/pool/ext/08050450-967f-431c-9a12-0d051aff020e/crypt/zone" - }, - { - "zone": { - "id": "1455c069-853c-49cd-853a-3ea81b89acd4", - "underlay_address": "fd00:1122:3344:106::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::c]:32345", - "dataset": { - "pool_name": "oxp_8da316d4-6b18-4980-a0a8-6e76e72cc40d" - } - } - }, - "root": "/pool/ext/08050450-967f-431c-9a12-0d051aff020e/crypt/zone" - }, - { - "zone": { - "id": "27c0244b-f91a-46c3-bc96-e8eec009371e", - "underlay_address": "fd00:1122:3344:106::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::b]:32345", - "dataset": { - "pool_name": "oxp_daf9e3cd-5a40-4eba-a0f6-4f94dab37dae" - } - } - }, - "root": "/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone" - }, - { - "zone": { - "id": "9e46d837-1e0f-42b6-a352-84e6946b8734", - "underlay_address": "fd00:1122:3344:106::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::4]:32345", - "dataset": { - "pool_name": "oxp_74df4c92-edbb-4431-a770-1d015110e66b" - } - } - }, - "root": "/pool/ext/15f94c39-d48c-41f6-a913-cc1d04aef1a2/crypt/zone" - }, - { - "zone": { - "id": "b972fcd4-c1b3-4b3c-9e24-f59c7a7cb192", - "underlay_address": "fd00:1122:3344:106::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:106::a]:32345", - "dataset": { - "pool_name": "oxp_15f94c39-d48c-41f6-a913-cc1d04aef1a2" - } - } - }, - "root": "/pool/ext/74df4c92-edbb-4431-a770-1d015110e66b/crypt/zone" - }, - { - "zone": { - "id": "e1c8c655-1950-42d5-ae1f-a4ce84854bbc", - "underlay_address": "fd00:1122:3344:106::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:106::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/15f94c39-d48c-41f6-a913-cc1d04aef1a2/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled25.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled25.json deleted file mode 100644 index 8deca6b56a..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled25.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "10b80058-9b2e-4d6c-8a1a-a61a8258c12f", - "underlay_address": "fd00:1122:3344:118::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::9]:32345", - "dataset": { - "pool_name": "oxp_953c19bb-9fff-4488-8a7b-29de9994a948" - } - } - }, - "root": "/pool/ext/a78caf97-6145-4908-83b5-a03a6d2e0ac4/crypt/zone" - }, - { - "zone": { - "id": "f58fef96-7b5e-40c2-9482-669088a19209", - "underlay_address": "fd00:1122:3344:118::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::d]:32345", - "dataset": { - "pool_name": "oxp_d7976706-d6ed-4465-8b04-450c96d8feec" - } - } - }, - "root": "/pool/ext/d7976706-d6ed-4465-8b04-450c96d8feec/crypt/zone" - }, - { - "zone": { - "id": "624f1168-47b6-4aa1-84da-e20a0d74d783", - "underlay_address": "fd00:1122:3344:118::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::b]:32345", - "dataset": { - "pool_name": "oxp_a78caf97-6145-4908-83b5-a03a6d2e0ac4" - } - } - }, - "root": "/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone" - }, - { - "zone": { - "id": "8ea85412-19b4-45c1-a53c-027ddd629296", - "underlay_address": "fd00:1122:3344:118::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::6]:32345", - "dataset": { - "pool_name": "oxp_d5f4c903-155a-4c91-aadd-6039a4f64821" - } - } - }, - "root": "/pool/ext/7d2a7685-c1c9-4d2d-a2bb-df65d96ea3e2/crypt/zone" - }, - { - "zone": { - "id": "fd226b82-71d7-4719-b32c-a6c7abe28a2a", - "underlay_address": "fd00:1122:3344:118::3", - "zone_type": { - "type": "external_dns", - "dataset": { - "pool_name": "oxp_84a80b58-70e9-439c-9558-5b343d9a4b53" - }, - "http_address": "[fd00:1122:3344:118::3]:5353", - "dns_address": "45.154.216.34:53", - "nic": { - "id": "7f72b6fd-1120-44dc-b3a7-f727502ba47c", - "kind": { - "type": "service", - "id": "fd226b82-71d7-4719-b32c-a6c7abe28a2a" - }, - "name": "external-dns-fd226b82-71d7-4719-b32c-a6c7abe28a2a", - "ip": "172.30.1.6", - "mac": "A8:40:25:FF:9E:D1", - "subnet": "172.30.1.0/24", - "vni": 100, - "primary": true, - "slot": 0 - } - } - }, - "root": "/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone" - }, - { - "zone": { - "id": "08d0c38d-f0d9-45b9-856d-b85059fe5f07", - "underlay_address": "fd00:1122:3344:118::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::4]:32345", - "dataset": { - "pool_name": "oxp_84a80b58-70e9-439c-9558-5b343d9a4b53" - } - } - }, - "root": "/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone" - }, - { - "zone": { - "id": "5de7d3fd-4a3f-4fdd-b6b2-d1186e16dce5", - "underlay_address": "fd00:1122:3344:118::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::7]:32345", - "dataset": { - "pool_name": "oxp_d76e058f-2d1e-4b15-b3a0-e5509a246876" - } - } - }, - "root": "/pool/ext/a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d/crypt/zone" - }, - { - "zone": { - "id": "5d0f5cad-10b3-497c-903b-eeeabce920e2", - "underlay_address": "fd00:1122:3344:118::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::8]:32345", - "dataset": { - "pool_name": "oxp_3a3ad639-8800-4951-bc2a-201d269e47a2" - } - } - }, - "root": "/pool/ext/3a3ad639-8800-4951-bc2a-201d269e47a2/crypt/zone" - }, - { - "zone": { - "id": "39f9cefa-801c-4843-9fb9-05446ffbdd1a", - "underlay_address": "fd00:1122:3344:118::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::a]:32345", - "dataset": { - "pool_name": "oxp_7d2a7685-c1c9-4d2d-a2bb-df65d96ea3e2" - } - } - }, - "root": "/pool/ext/a78caf97-6145-4908-83b5-a03a6d2e0ac4/crypt/zone" - }, - { - "zone": { - "id": "0711e710-7fdd-4e68-94c8-294b8677e804", - "underlay_address": "fd00:1122:3344:118::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::5]:32345", - "dataset": { - "pool_name": "oxp_a5b16ffe-a834-4a83-a4e9-487d4cbb7e3d" - } - } - }, - "root": "/pool/ext/3a3ad639-8800-4951-bc2a-201d269e47a2/crypt/zone" - }, - { - "zone": { - "id": "318a62cc-5c6c-4805-9fb6-c0f6a75ce31c", - "underlay_address": "fd00:1122:3344:118::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:118::c]:32345", - "dataset": { - "pool_name": "oxp_1d5f0ba3-6b31-4cea-a9a9-2065a538887d" - } - } - }, - "root": "/pool/ext/d7976706-d6ed-4465-8b04-450c96d8feec/crypt/zone" - }, - { - "zone": { - "id": "463d0498-85b9-40eb-af96-d99af58a587c", - "underlay_address": "fd00:1122:3344:118::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:118::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/d5f4c903-155a-4c91-aadd-6039a4f64821/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled26.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled26.json deleted file mode 100644 index a3c5d97b53..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled26.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "d8b3de97-cc79-48f6-83ad-02017c21223b", - "underlay_address": "fd00:1122:3344:119::3", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:119::3]:17000" - } - }, - "root": "/pool/ext/e0faea44-8b5c-40b0-bb75-a1aec1a10377/crypt/zone" - }, - { - "zone": { - "id": "adba1a3b-5bac-44d5-aa5a-879dc6eadb5f", - "underlay_address": "fd00:1122:3344:119::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::c]:32345", - "dataset": { - "pool_name": "oxp_21c339c3-6461-4bdb-8b0e-c0f9f08ee10b" - } - } - }, - "root": "/pool/ext/f5c73c28-2168-4321-b737-4ca6663155c9/crypt/zone" - }, - { - "zone": { - "id": "42bb9833-5c39-4aba-b2c4-da2ca1287728", - "underlay_address": "fd00:1122:3344:119::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::a]:32345", - "dataset": { - "pool_name": "oxp_1f91451d-a466-4c9a-a6e6-0abd7985595f" - } - } - }, - "root": "/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone" - }, - { - "zone": { - "id": "197695e1-d949-4982-b679-6e5c9ab4bcc7", - "underlay_address": "fd00:1122:3344:119::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::b]:32345", - "dataset": { - "pool_name": "oxp_e0faea44-8b5c-40b0-bb75-a1aec1a10377" - } - } - }, - "root": "/pool/ext/b31e1815-cae0-4145-940c-874fff63bdd5/crypt/zone" - }, - { - "zone": { - "id": "bf99d4f8-edf1-4de5-98d4-8e6a24965005", - "underlay_address": "fd00:1122:3344:119::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::8]:32345", - "dataset": { - "pool_name": "oxp_ef2c3afb-6962-4f6b-b567-14766bbd9ec0" - } - } - }, - "root": "/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone" - }, - { - "zone": { - "id": "390d1853-8be9-4987-b8b6-f022999bf4e7", - "underlay_address": "fd00:1122:3344:119::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::7]:32345", - "dataset": { - "pool_name": "oxp_06eed00a-d8d3-4b9d-84c9-23fce535f63e" - } - } - }, - "root": "/pool/ext/ef2c3afb-6962-4f6b-b567-14766bbd9ec0/crypt/zone" - }, - { - "zone": { - "id": "76fe2161-90df-41b5-9c94-067de9c29db1", - "underlay_address": "fd00:1122:3344:119::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::4]:32345", - "dataset": { - "pool_name": "oxp_f5c73c28-2168-4321-b737-4ca6663155c9" - } - } - }, - "root": "/pool/ext/ef2c3afb-6962-4f6b-b567-14766bbd9ec0/crypt/zone" - }, - { - "zone": { - "id": "f49dc522-2b13-4055-964c-8315671096aa", - "underlay_address": "fd00:1122:3344:119::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::d]:32345", - "dataset": { - "pool_name": "oxp_662c278b-7f5f-4c7e-91ff-70207e8a307b" - } - } - }, - "root": "/pool/ext/1f91451d-a466-4c9a-a6e6-0abd7985595f/crypt/zone" - }, - { - "zone": { - "id": "08cc7bd6-368e-4d16-a619-28b17eff35af", - "underlay_address": "fd00:1122:3344:119::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::9]:32345", - "dataset": { - "pool_name": "oxp_5516b9ac-b139-40da-aa3b-f094568ba095" - } - } - }, - "root": "/pool/ext/06eed00a-d8d3-4b9d-84c9-23fce535f63e/crypt/zone" - }, - { - "zone": { - "id": "74b0613f-bce8-4922-93e0-b5bfccfc8443", - "underlay_address": "fd00:1122:3344:119::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::5]:32345", - "dataset": { - "pool_name": "oxp_b31e1815-cae0-4145-940c-874fff63bdd5" - } - } - }, - "root": "/pool/ext/21c339c3-6461-4bdb-8b0e-c0f9f08ee10b/crypt/zone" - }, - { - "zone": { - "id": "55fcfc62-8435-475f-a2aa-29373901b993", - "underlay_address": "fd00:1122:3344:119::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:119::6]:32345", - "dataset": { - "pool_name": "oxp_eadf6a03-1028-4d48-ac0d-0d27ef2c8c0f" - } - } - }, - "root": "/pool/ext/1f91451d-a466-4c9a-a6e6-0abd7985595f/crypt/zone" - }, - { - "zone": { - "id": "d52ccea3-6d7f-43a6-a19f-e0409f4e9cdc", - "underlay_address": "fd00:1122:3344:119::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:119::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/f5c73c28-2168-4321-b737-4ca6663155c9/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled27.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled27.json deleted file mode 100644 index 193df7a567..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled27.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "095e612f-e218-4a16-aa6e-98c3d69a470a", - "underlay_address": "fd00:1122:3344:10d::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::a]:32345", - "dataset": { - "pool_name": "oxp_9f657858-623f-4d78-9841-6e620b5ede30" - } - } - }, - "root": "/pool/ext/2d086b51-2b77-4bc7-adc6-43586ea38ce9/crypt/zone" - }, - { - "zone": { - "id": "de818730-0e3b-4567-94e7-344bd9b6f564", - "underlay_address": "fd00:1122:3344:10d::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::3]:32345", - "dataset": { - "pool_name": "oxp_ba6ab301-07e1-4d35-80ac-59612f2c2bdb" - } - } - }, - "root": "/pool/ext/7cee2806-e898-47d8-b568-e276a6e271f8/crypt/zone" - }, - { - "zone": { - "id": "6a21dc3c-3a9d-4520-9a91-7d8f2737bcd4", - "underlay_address": "fd00:1122:3344:10d::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::4]:32345", - "dataset": { - "pool_name": "oxp_7cee2806-e898-47d8-b568-e276a6e271f8" - } - } - }, - "root": "/pool/ext/cef23d87-31ed-40d5-99b8-12d7be8e46e7/crypt/zone" - }, - { - "zone": { - "id": "e01b7f45-b8d7-4944-ba5b-41fb699889a9", - "underlay_address": "fd00:1122:3344:10d::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::b]:32345", - "dataset": { - "pool_name": "oxp_d9af8878-50bd-4425-95d9-e6556ce92cfa" - } - } - }, - "root": "/pool/ext/6fe9bcaa-88cb-451d-b086-24a3ad53fa22/crypt/zone" - }, - { - "zone": { - "id": "4271ef62-d319-4e80-b157-915321cec8c7", - "underlay_address": "fd00:1122:3344:10d::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::c]:32345", - "dataset": { - "pool_name": "oxp_ba8ee7dd-cdfb-48bd-92ce-4dc45e070930" - } - } - }, - "root": "/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone" - }, - { - "zone": { - "id": "6bdcc159-aeb9-4903-9486-dd8b43a3dc16", - "underlay_address": "fd00:1122:3344:10d::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::8]:32345", - "dataset": { - "pool_name": "oxp_5b03a5dc-bb5a-4bf4-bc21-0af849cd1dab" - } - } - }, - "root": "/pool/ext/d9af8878-50bd-4425-95d9-e6556ce92cfa/crypt/zone" - }, - { - "zone": { - "id": "85540e54-cdd7-4baa-920c-5cf54cbc1f83", - "underlay_address": "fd00:1122:3344:10d::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::7]:32345", - "dataset": { - "pool_name": "oxp_ee24f9a6-84ab-49a5-a28f-e394abfcaa95" - } - } - }, - "root": "/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone" - }, - { - "zone": { - "id": "750d1a0b-6a14-46c5-9a0b-a504caefb198", - "underlay_address": "fd00:1122:3344:10d::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::9]:32345", - "dataset": { - "pool_name": "oxp_cef23d87-31ed-40d5-99b8-12d7be8e46e7" - } - } - }, - "root": "/pool/ext/ba8ee7dd-cdfb-48bd-92ce-4dc45e070930/crypt/zone" - }, - { - "zone": { - "id": "b5996893-1a9a-434e-a257-d702694f058b", - "underlay_address": "fd00:1122:3344:10d::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::6]:32345", - "dataset": { - "pool_name": "oxp_2d086b51-2b77-4bc7-adc6-43586ea38ce9" - } - } - }, - "root": "/pool/ext/7cee2806-e898-47d8-b568-e276a6e271f8/crypt/zone" - }, - { - "zone": { - "id": "8b36686a-b98d-451a-9124-a3583000a83a", - "underlay_address": "fd00:1122:3344:10d::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10d::5]:32345", - "dataset": { - "pool_name": "oxp_6fe9bcaa-88cb-451d-b086-24a3ad53fa22" - } - } - }, - "root": "/pool/ext/9f657858-623f-4d78-9841-6e620b5ede30/crypt/zone" - }, - { - "zone": { - "id": "88d695a2-c8c1-41af-85b0-77424f4d650d", - "underlay_address": "fd00:1122:3344:10d::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10d::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/ba6ab301-07e1-4d35-80ac-59612f2c2bdb/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled28.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled28.json deleted file mode 100644 index 210b388a19..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled28.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "a126365d-f459-43bf-9f99-dbe1c4cdecf8", - "underlay_address": "fd00:1122:3344:113::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::4]:32345", - "dataset": { - "pool_name": "oxp_c99eabb2-6815-416a-9660-87e2609b357a" - } - } - }, - "root": "/pool/ext/6461a450-f043-4d1e-bc03-4a68ed5fe94a/crypt/zone" - }, - { - "zone": { - "id": "52f57ef8-546a-43bd-a0f3-8c42b99c37a6", - "underlay_address": "fd00:1122:3344:113::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::3]:32345", - "dataset": { - "pool_name": "oxp_f6530e9c-6d64-44fa-93d5-ae427916fbf1" - } - } - }, - "root": "/pool/ext/97662260-6b62-450f-9d7e-42f7dee5d568/crypt/zone" - }, - { - "zone": { - "id": "3ee87855-9423-43ff-800a-fa4fdbf1d956", - "underlay_address": "fd00:1122:3344:113::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::a]:32345", - "dataset": { - "pool_name": "oxp_6461a450-f043-4d1e-bc03-4a68ed5fe94a" - } - } - }, - "root": "/pool/ext/9515dc86-fe62-4d4f-b38d-b3461cc042fc/crypt/zone" - }, - { - "zone": { - "id": "55d0ddf9-9b24-4a7a-b97f-248e240f9ba6", - "underlay_address": "fd00:1122:3344:113::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::5]:32345", - "dataset": { - "pool_name": "oxp_97662260-6b62-450f-9d7e-42f7dee5d568" - } - } - }, - "root": "/pool/ext/9515dc86-fe62-4d4f-b38d-b3461cc042fc/crypt/zone" - }, - { - "zone": { - "id": "014cad37-56a7-4b2a-9c9e-505b15b4de85", - "underlay_address": "fd00:1122:3344:113::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::b]:32345", - "dataset": { - "pool_name": "oxp_8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90" - } - } - }, - "root": "/pool/ext/6461a450-f043-4d1e-bc03-4a68ed5fe94a/crypt/zone" - }, - { - "zone": { - "id": "e14fb192-aaab-42ab-aa86-c85f13955940", - "underlay_address": "fd00:1122:3344:113::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::6]:32345", - "dataset": { - "pool_name": "oxp_5a9455ca-fb01-4549-9a70-7579c031779d" - } - } - }, - "root": "/pool/ext/f6530e9c-6d64-44fa-93d5-ae427916fbf1/crypt/zone" - }, - { - "zone": { - "id": "14540609-9371-442b-8486-88c244e97cd4", - "underlay_address": "fd00:1122:3344:113::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::8]:32345", - "dataset": { - "pool_name": "oxp_2916d6f3-8775-4887-a6d3-f9723982756f" - } - } - }, - "root": "/pool/ext/8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90/crypt/zone" - }, - { - "zone": { - "id": "97a6b35f-0af9-41eb-93a1-f8bc5dbba357", - "underlay_address": "fd00:1122:3344:113::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::7]:32345", - "dataset": { - "pool_name": "oxp_9515dc86-fe62-4d4f-b38d-b3461cc042fc" - } - } - }, - "root": "/pool/ext/8529ce8e-21d2-4b23-b9fd-6b90c7ae4f90/crypt/zone" - }, - { - "zone": { - "id": "5734aa24-cb66-4b0a-9eb2-564646f8d729", - "underlay_address": "fd00:1122:3344:113::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::9]:32345", - "dataset": { - "pool_name": "oxp_9f889a6c-17b1-4edd-9659-458d91439dc1" - } - } - }, - "root": "/pool/ext/a5074e7f-8d3b-40e0-a79e-dbd9af9d5693/crypt/zone" - }, - { - "zone": { - "id": "ba86eca1-1427-4540-b4a6-1d9a0e1bc656", - "underlay_address": "fd00:1122:3344:113::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:113::c]:32345", - "dataset": { - "pool_name": "oxp_a5074e7f-8d3b-40e0-a79e-dbd9af9d5693" - } - } - }, - "root": "/pool/ext/2916d6f3-8775-4887-a6d3-f9723982756f/crypt/zone" - }, - { - "zone": { - "id": "6634dbc4-d22f-40a4-8cd3-4f271d781fa1", - "underlay_address": "fd00:1122:3344:113::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:113::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/a5074e7f-8d3b-40e0-a79e-dbd9af9d5693/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled29.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled29.json deleted file mode 100644 index ccd1bd65be..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled29.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 5, - "zones": [ - { - "zone": { - "id": "1cdd1ebf-9321-4f2d-914c-1e617f60b41a", - "underlay_address": "fd00:1122:3344:120::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::8]:32345", - "dataset": { - "pool_name": "oxp_74046573-78a2-46b4-86dc-40bb2ee29dd5" - } - } - }, - "root": "/pool/ext/c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e/crypt/zone" - }, - { - "zone": { - "id": "720a0d08-d1c0-43ba-af86-f2dac1a53639", - "underlay_address": "fd00:1122:3344:120::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::c]:32345", - "dataset": { - "pool_name": "oxp_068d2790-1044-41ed-97a5-b493490b14d1" - } - } - }, - "root": "/pool/ext/86cd16cf-d00d-40bc-b14a-8220b1e11476/crypt/zone" - }, - { - "zone": { - "id": "d9f0b97b-2cef-4155-b45f-7db89263e4cf", - "underlay_address": "fd00:1122:3344:120::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::9]:32345", - "dataset": { - "pool_name": "oxp_8171bf0d-e61e-43f9-87d6-ec8833b80102" - } - } - }, - "root": "/pool/ext/86cd16cf-d00d-40bc-b14a-8220b1e11476/crypt/zone" - }, - { - "zone": { - "id": "018edff1-0d95-45a3-9a01-39c419bec55a", - "underlay_address": "fd00:1122:3344:120::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::b]:32345", - "dataset": { - "pool_name": "oxp_0b11e026-f265-49a0-935f-7b234c19c789" - } - } - }, - "root": "/pool/ext/35db8700-d6a7-498c-9d2c-08eb9ab41b7c/crypt/zone" - }, - { - "zone": { - "id": "f8cc1c1e-a556-436c-836d-42052101c38a", - "underlay_address": "fd00:1122:3344:120::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::3]:32345", - "dataset": { - "pool_name": "oxp_ed8e5a26-5591-405a-b792-408f5b16e444" - } - } - }, - "root": "/pool/ext/1069bdee-fe5a-4164-a856-ff8ae56c07fb/crypt/zone" - }, - { - "zone": { - "id": "f9600313-fac0-45a1-a1b5-02dd6af468b9", - "underlay_address": "fd00:1122:3344:120::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::4]:32345", - "dataset": { - "pool_name": "oxp_c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e" - } - } - }, - "root": "/pool/ext/74046573-78a2-46b4-86dc-40bb2ee29dd5/crypt/zone" - }, - { - "zone": { - "id": "869e4f7c-5312-4b98-bacc-1508f236bf5a", - "underlay_address": "fd00:1122:3344:120::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::6]:32345", - "dataset": { - "pool_name": "oxp_04aea8dc-4316-432f-a13a-d7d9b2efa3f2" - } - } - }, - "root": "/pool/ext/0b11e026-f265-49a0-935f-7b234c19c789/crypt/zone" - }, - { - "zone": { - "id": "31ed5a0c-7caf-4825-b730-85ee94fe27f1", - "underlay_address": "fd00:1122:3344:120::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::a]:32345", - "dataset": { - "pool_name": "oxp_86cd16cf-d00d-40bc-b14a-8220b1e11476" - } - } - }, - "root": "/pool/ext/04aea8dc-4316-432f-a13a-d7d9b2efa3f2/crypt/zone" - }, - { - "zone": { - "id": "7e5a3c39-152a-4270-b01e-9e144cca4aaa", - "underlay_address": "fd00:1122:3344:120::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::5]:32345", - "dataset": { - "pool_name": "oxp_1069bdee-fe5a-4164-a856-ff8ae56c07fb" - } - } - }, - "root": "/pool/ext/04aea8dc-4316-432f-a13a-d7d9b2efa3f2/crypt/zone" - }, - { - "zone": { - "id": "9a03a386-7304-4a86-bee8-153ef643195e", - "underlay_address": "fd00:1122:3344:120::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:120::7]:32345", - "dataset": { - "pool_name": "oxp_35db8700-d6a7-498c-9d2c-08eb9ab41b7c" - } - } - }, - "root": "/pool/ext/068d2790-1044-41ed-97a5-b493490b14d1/crypt/zone" - }, - { - "zone": { - "id": "a800d0a7-1020-481c-8be8-ecfd28b7a2be", - "underlay_address": "fd00:1122:3344:120::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:120::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/c1f0a9e4-ea10-4fd9-8b6d-79a2bacfec5e/crypt/zone" - }, - { - "zone": { - "id": "be469efd-8e07-4b8e-bcee-6fd33373cdef", - "underlay_address": "fd00:1122:3344:3::1", - "zone_type": { - "type": "internal_dns", - "dataset": { - "pool_name": "oxp_ed8e5a26-5591-405a-b792-408f5b16e444" - }, - "http_address": "[fd00:1122:3344:3::1]:5353", - "dns_address": "[fd00:1122:3344:3::1]:53", - "gz_address": "fd00:1122:3344:3::2", - "gz_address_index": 2 - } - }, - "root": "/pool/ext/068d2790-1044-41ed-97a5-b493490b14d1/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled3.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled3.json deleted file mode 100644 index 5da6d95389..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled3.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "19d091b8-e005-4ff4-97e1-026de95e3667", - "underlay_address": "fd00:1122:3344:10f::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::c]:32345", - "dataset": { - "pool_name": "oxp_11a63469-4f57-4976-8620-0055bf82dc97" - } - } - }, - "root": "/pool/ext/6a73a62c-c636-4557-af45-042cb287aee6/crypt/zone" - }, - { - "zone": { - "id": "57d77171-104e-4977-b2f9-9b529ee7f8a0", - "underlay_address": "fd00:1122:3344:10f::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::8]:32345", - "dataset": { - "pool_name": "oxp_7f3060af-058f-4f52-ab80-902bd13e7ef4" - } - } - }, - "root": "/pool/ext/7f3060af-058f-4f52-ab80-902bd13e7ef4/crypt/zone" - }, - { - "zone": { - "id": "b0371ccf-67da-4562-baf2-eaabe5243e9b", - "underlay_address": "fd00:1122:3344:10f::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::7]:32345", - "dataset": { - "pool_name": "oxp_58ae04cb-26ff-4e30-a20d-9f847bafba4d" - } - } - }, - "root": "/pool/ext/125ddcda-f94b-46bc-a10a-94e9acf40265/crypt/zone" - }, - { - "zone": { - "id": "ae3791ff-2657-4252-bd61-58ec5dc237cd", - "underlay_address": "fd00:1122:3344:10f::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::9]:32345", - "dataset": { - "pool_name": "oxp_125ddcda-f94b-46bc-a10a-94e9acf40265" - } - } - }, - "root": "/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone" - }, - { - "zone": { - "id": "73f865dc-5db7-48c6-9dc4-dff56dd8c045", - "underlay_address": "fd00:1122:3344:10f::3", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:10f::3]:17000" - } - }, - "root": "/pool/ext/11a63469-4f57-4976-8620-0055bf82dc97/crypt/zone" - }, - { - "zone": { - "id": "e5d0170a-0d60-4c51-8f72-4c301979690e", - "underlay_address": "fd00:1122:3344:10f::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::6]:32345", - "dataset": { - "pool_name": "oxp_efe4cbab-2a39-4d7d-ae6c-83eb3ab8d4b5" - } - } - }, - "root": "/pool/ext/6a73a62c-c636-4557-af45-042cb287aee6/crypt/zone" - }, - { - "zone": { - "id": "ea6894de-c575-43bc-86e9-65b8a58499ff", - "underlay_address": "fd00:1122:3344:10f::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::a]:32345", - "dataset": { - "pool_name": "oxp_a87dc882-8b88-4a99-9628-5db79072cffa" - } - } - }, - "root": "/pool/ext/11a63469-4f57-4976-8620-0055bf82dc97/crypt/zone" - }, - { - "zone": { - "id": "3081dc99-4fa9-4238-adfa-b9ca381c1f7b", - "underlay_address": "fd00:1122:3344:10f::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::b]:32345", - "dataset": { - "pool_name": "oxp_6a73a62c-c636-4557-af45-042cb287aee6" - } - } - }, - "root": "/pool/ext/a87dc882-8b88-4a99-9628-5db79072cffa/crypt/zone" - }, - { - "zone": { - "id": "b4a3d7c8-487d-4d76-ae4e-a6a51595a5a6", - "underlay_address": "fd00:1122:3344:10f::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::d]:32345", - "dataset": { - "pool_name": "oxp_a12f87ee-9918-4269-9de4-4bad4fb41caa" - } - } - }, - "root": "/pool/ext/a12f87ee-9918-4269-9de4-4bad4fb41caa/crypt/zone" - }, - { - "zone": { - "id": "5ebcee26-f76c-4206-8d81-584ac138d3b9", - "underlay_address": "fd00:1122:3344:10f::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::4]:32345", - "dataset": { - "pool_name": "oxp_27f1917e-fb69-496a-9d40-8ef0d0c0ee55" - } - } - }, - "root": "/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone" - }, - { - "zone": { - "id": "90b2bc57-3a2a-4117-bb6d-7eda7542329a", - "underlay_address": "fd00:1122:3344:10f::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10f::5]:32345", - "dataset": { - "pool_name": "oxp_a222e405-40f6-4fdd-9146-94f7d94ed08a" - } - } - }, - "root": "/pool/ext/a12f87ee-9918-4269-9de4-4bad4fb41caa/crypt/zone" - }, - { - "zone": { - "id": "0fb540af-58d3-4abc-bfad-e49765c2b1ee", - "underlay_address": "fd00:1122:3344:10f::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10f::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/58ae04cb-26ff-4e30-a20d-9f847bafba4d/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled30.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled30.json deleted file mode 100644 index c92a638b85..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled30.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "dda0f1c6-84a5-472c-b350-a799c8d3d0eb", - "underlay_address": "fd00:1122:3344:115::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::8]:32345", - "dataset": { - "pool_name": "oxp_028b6c9e-5a0e-43d2-a8ed-a5946cf62924" - } - } - }, - "root": "/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone" - }, - { - "zone": { - "id": "157672f9-113f-48b7-9808-dff3c3e67dcd", - "underlay_address": "fd00:1122:3344:115::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::a]:32345", - "dataset": { - "pool_name": "oxp_4fdca201-b37e-4072-a1cc-3cb7705954eb" - } - } - }, - "root": "/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone" - }, - { - "zone": { - "id": "5a7d4f67-a70f-4d8b-8d35-4dc600991fb5", - "underlay_address": "fd00:1122:3344:115::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::5]:32345", - "dataset": { - "pool_name": "oxp_11a991e5-19a9-48b0-8186-34249ef67957" - } - } - }, - "root": "/pool/ext/1e9c9764-aaa4-4681-b110-a937b4c52748/crypt/zone" - }, - { - "zone": { - "id": "c7036645-b680-4816-834f-8ae1af24c159", - "underlay_address": "fd00:1122:3344:115::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::b]:32345", - "dataset": { - "pool_name": "oxp_0780be56-c13d-4c6a-a1ac-37753a0da820" - } - } - }, - "root": "/pool/ext/80a8d756-ee22-4c88-8b5b-4a46f7eca249/crypt/zone" - }, - { - "zone": { - "id": "45e47e4b-708f-40b5-a8c8-fbfd73696d45", - "underlay_address": "fd00:1122:3344:115::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::7]:32345", - "dataset": { - "pool_name": "oxp_80a8d756-ee22-4c88-8b5b-4a46f7eca249" - } - } - }, - "root": "/pool/ext/4fdca201-b37e-4072-a1cc-3cb7705954eb/crypt/zone" - }, - { - "zone": { - "id": "e805b0c1-3f80-49da-8dc1-caaf843e5003", - "underlay_address": "fd00:1122:3344:115::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::c]:32345", - "dataset": { - "pool_name": "oxp_d54e1ed7-e589-4413-a487-6e9a257104e7" - } - } - }, - "root": "/pool/ext/d54e1ed7-e589-4413-a487-6e9a257104e7/crypt/zone" - }, - { - "zone": { - "id": "e47d3f81-3df6-4c35-bec6-41277bc74c07", - "underlay_address": "fd00:1122:3344:115::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::4]:32345", - "dataset": { - "pool_name": "oxp_b8d84b9c-a65e-4c86-8196-69da5317ae63" - } - } - }, - "root": "/pool/ext/772b3aaa-3501-4dc7-9b3d-048b8b1f7970/crypt/zone" - }, - { - "zone": { - "id": "2a796a69-b061-44c7-b2df-35bc611f10f5", - "underlay_address": "fd00:1122:3344:115::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::6]:32345", - "dataset": { - "pool_name": "oxp_73abe9e0-d38e-48fc-bdec-b094bfa5670d" - } - } - }, - "root": "/pool/ext/028b6c9e-5a0e-43d2-a8ed-a5946cf62924/crypt/zone" - }, - { - "zone": { - "id": "4e1d2af1-8ef4-4762-aa80-b08da08b45bb", - "underlay_address": "fd00:1122:3344:115::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::3]:32345", - "dataset": { - "pool_name": "oxp_772b3aaa-3501-4dc7-9b3d-048b8b1f7970" - } - } - }, - "root": "/pool/ext/d54e1ed7-e589-4413-a487-6e9a257104e7/crypt/zone" - }, - { - "zone": { - "id": "fb1b10d5-b7cb-416d-98fc-b5d3bc02d495", - "underlay_address": "fd00:1122:3344:115::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:115::9]:32345", - "dataset": { - "pool_name": "oxp_1e9c9764-aaa4-4681-b110-a937b4c52748" - } - } - }, - "root": "/pool/ext/b8d84b9c-a65e-4c86-8196-69da5317ae63/crypt/zone" - }, - { - "zone": { - "id": "5155463c-8a09-45a5-ad1b-817f2e93b284", - "underlay_address": "fd00:1122:3344:115::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:115::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/772b3aaa-3501-4dc7-9b3d-048b8b1f7970/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled31.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled31.json deleted file mode 100644 index 5e38262740..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled31.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "a0eae689-8e6b-4297-bb3d-8b7ffc5c4a07", - "underlay_address": "fd00:1122:3344:102::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::c]:32345", - "dataset": { - "pool_name": "oxp_274cb567-fd74-4e00-b9c7-6ca367b3fda4" - } - } - }, - "root": "/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone" - }, - { - "zone": { - "id": "9cea406d-451e-4328-9052-b58487f799a5", - "underlay_address": "fd00:1122:3344:102::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::b]:32345", - "dataset": { - "pool_name": "oxp_89c7f72e-632c-462b-a515-01cd80683711" - } - } - }, - "root": "/pool/ext/274cb567-fd74-4e00-b9c7-6ca367b3fda4/crypt/zone" - }, - { - "zone": { - "id": "9c7dad7e-7f60-4bf4-8efc-0883a17e7cf6", - "underlay_address": "fd00:1122:3344:102::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::6]:32345", - "dataset": { - "pool_name": "oxp_2c8e5637-b989-4b8f-82ac-ff2e9102b560" - } - } - }, - "root": "/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone" - }, - { - "zone": { - "id": "73015cba-79c6-4a67-97d8-fa0819cbf750", - "underlay_address": "fd00:1122:3344:102::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::a]:32345", - "dataset": { - "pool_name": "oxp_fa62108e-f7bb-4f6d-86f3-8094a1ea8352" - } - } - }, - "root": "/pool/ext/2c8e5637-b989-4b8f-82ac-ff2e9102b560/crypt/zone" - }, - { - "zone": { - "id": "f9ca3097-072e-4e7f-9f50-eb7c7ae39b6f", - "underlay_address": "fd00:1122:3344:102::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::5]:32345", - "dataset": { - "pool_name": "oxp_42c6602c-2ccf-48ce-8344-693c832fd693" - } - } - }, - "root": "/pool/ext/2c8e5637-b989-4b8f-82ac-ff2e9102b560/crypt/zone" - }, - { - "zone": { - "id": "e7855e05-a125-4a80-ac2c-8a2db96e1bf8", - "underlay_address": "fd00:1122:3344:102::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::7]:32345", - "dataset": { - "pool_name": "oxp_1f72afd3-d2aa-46a8-b81a-54dbcc2f6317" - } - } - }, - "root": "/pool/ext/42c6602c-2ccf-48ce-8344-693c832fd693/crypt/zone" - }, - { - "zone": { - "id": "e5de9bc9-e996-4fea-8318-ad7a8a6be4a3", - "underlay_address": "fd00:1122:3344:102::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::4]:32345", - "dataset": { - "pool_name": "oxp_1443b190-de16-42b0-b881-e87e875dd507" - } - } - }, - "root": "/pool/ext/89c7f72e-632c-462b-a515-01cd80683711/crypt/zone" - }, - { - "zone": { - "id": "cd0d0aac-44ff-4566-9260-a64ae6cecef4", - "underlay_address": "fd00:1122:3344:102::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::8]:32345", - "dataset": { - "pool_name": "oxp_92c0d1f6-cb4d-4ddb-b5ba-979fb3491812" - } - } - }, - "root": "/pool/ext/89c7f72e-632c-462b-a515-01cd80683711/crypt/zone" - }, - { - "zone": { - "id": "a8230592-0e7a-46c8-a653-7587a27f05bf", - "underlay_address": "fd00:1122:3344:102::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::9]:32345", - "dataset": { - "pool_name": "oxp_1b7873de-99fd-454f-b576-bff695524133" - } - } - }, - "root": "/pool/ext/92c0d1f6-cb4d-4ddb-b5ba-979fb3491812/crypt/zone" - }, - { - "zone": { - "id": "c19ffbb1-4dc1-4825-a3cf-080e9b543b16", - "underlay_address": "fd00:1122:3344:102::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:102::d]:32345", - "dataset": { - "pool_name": "oxp_67823df7-511c-4984-b98c-7a8f5c40c22d" - } - } - }, - "root": "/pool/ext/1443b190-de16-42b0-b881-e87e875dd507/crypt/zone" - }, - { - "zone": { - "id": "ff30fe7c-51f3-43b9-a788-d8f94a7bb028", - "underlay_address": "fd00:1122:3344:102::3", - "zone_type": { - "type": "cockroach_db", - "address": "[fd00:1122:3344:102::3]:32221", - "dataset": { - "pool_name": "oxp_1443b190-de16-42b0-b881-e87e875dd507" - } - } - }, - "root": "/pool/ext/fa62108e-f7bb-4f6d-86f3-8094a1ea8352/crypt/zone" - }, - { - "zone": { - "id": "16b50c55-8117-4efd-aabf-0273677b89d5", - "underlay_address": "fd00:1122:3344:102::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:102::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/fa62108e-f7bb-4f6d-86f3-8094a1ea8352/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled4.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled4.json deleted file mode 100644 index 7c1d269d61..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled4.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "22452953-ee80-4659-a555-8e027bf205b0", - "underlay_address": "fd00:1122:3344:10c::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::4]:32345", - "dataset": { - "pool_name": "oxp_92ba1667-a6f7-4913-9b00-14825384c7bf" - } - } - }, - "root": "/pool/ext/ab62b941-5f84-42c7-929d-295b20efffe7/crypt/zone" - }, - { - "zone": { - "id": "9a5a2fcf-44a0-4468-979a-a71686cef627", - "underlay_address": "fd00:1122:3344:10c::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::3]:32345", - "dataset": { - "pool_name": "oxp_dbfdc981-1b81-4d7d-9449-9530890b199a" - } - } - }, - "root": "/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone" - }, - { - "zone": { - "id": "a014f12e-2636-4258-af76-e01d9b8d1c1f", - "underlay_address": "fd00:1122:3344:10c::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::b]:32345", - "dataset": { - "pool_name": "oxp_ab62b941-5f84-42c7-929d-295b20efffe7" - } - } - }, - "root": "/pool/ext/a624a843-1c4e-41c3-a1d2-4be7a6c57e9b/crypt/zone" - }, - { - "zone": { - "id": "431768b8-26ba-4ab4-b616-9e183bb79b8b", - "underlay_address": "fd00:1122:3344:10c::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::7]:32345", - "dataset": { - "pool_name": "oxp_7c121177-3210-4457-9b42-3657add6e166" - } - } - }, - "root": "/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone" - }, - { - "zone": { - "id": "22992c56-bd5a-4d0f-86c5-d6f8e87b7bbb", - "underlay_address": "fd00:1122:3344:10c::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::9]:32345", - "dataset": { - "pool_name": "oxp_842bdd28-196e-4b18-83db-68bd81176a44" - } - } - }, - "root": "/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone" - }, - { - "zone": { - "id": "de376149-aa45-4660-9ae6-15e8ba4a4233", - "underlay_address": "fd00:1122:3344:10c::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::5]:32345", - "dataset": { - "pool_name": "oxp_25856a84-6707-4b94-81d1-b43d5bc990d7" - } - } - }, - "root": "/pool/ext/7c121177-3210-4457-9b42-3657add6e166/crypt/zone" - }, - { - "zone": { - "id": "ceeba69d-8c0a-47df-a37b-7f1b90f23016", - "underlay_address": "fd00:1122:3344:10c::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::a]:32345", - "dataset": { - "pool_name": "oxp_a624a843-1c4e-41c3-a1d2-4be7a6c57e9b" - } - } - }, - "root": "/pool/ext/74ac4da9-cdae-4c08-8431-11211184aa09/crypt/zone" - }, - { - "zone": { - "id": "65293ce4-2e63-4336-9207-3c61f58667f9", - "underlay_address": "fd00:1122:3344:10c::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::c]:32345", - "dataset": { - "pool_name": "oxp_74ac4da9-cdae-4c08-8431-11211184aa09" - } - } - }, - "root": "/pool/ext/842bdd28-196e-4b18-83db-68bd81176a44/crypt/zone" - }, - { - "zone": { - "id": "e8f55a5d-65f9-436c-bc25-1d1a7070e876", - "underlay_address": "fd00:1122:3344:10c::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::6]:32345", - "dataset": { - "pool_name": "oxp_9bfe385c-16dd-4209-bc0b-f28ae75d58e3" - } - } - }, - "root": "/pool/ext/92ba1667-a6f7-4913-9b00-14825384c7bf/crypt/zone" - }, - { - "zone": { - "id": "2dfbd4c6-afbf-4c8c-bf40-764f02727852", - "underlay_address": "fd00:1122:3344:10c::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10c::8]:32345", - "dataset": { - "pool_name": "oxp_55eb093d-6b6f-418c-9767-09afe4c51fff" - } - } - }, - "root": "/pool/ext/dbfdc981-1b81-4d7d-9449-9530890b199a/crypt/zone" - }, - { - "zone": { - "id": "8c73baf7-1a58-4e2c-b4d1-966c89a18d03", - "underlay_address": "fd00:1122:3344:10c::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10c::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/842bdd28-196e-4b18-83db-68bd81176a44/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled5.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled5.json deleted file mode 100644 index acbfa17eda..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled5.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "2f488e7b-fd93-48a6-8b2b-61f6e8336268", - "underlay_address": "fd00:1122:3344:101::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::b]:32345", - "dataset": { - "pool_name": "oxp_5840a3b7-f765-45d3-8a41-7f543f936bee" - } - } - }, - "root": "/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone" - }, - { - "zone": { - "id": "1ed5fd3f-933a-4921-a91f-5c286823f8d4", - "underlay_address": "fd00:1122:3344:101::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::a]:32345", - "dataset": { - "pool_name": "oxp_c1e807e7-b64a-4dbd-b845-ffed0b9a54f1" - } - } - }, - "root": "/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone" - }, - { - "zone": { - "id": "0f8f1013-465d-4b49-b55d-f0b9bf6f789a", - "underlay_address": "fd00:1122:3344:101::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::6]:32345", - "dataset": { - "pool_name": "oxp_4dfa7003-0305-47f5-b23d-88a228c1e12e" - } - } - }, - "root": "/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone" - }, - { - "zone": { - "id": "2e4ef017-6c62-40bc-bab5-f2e01addad22", - "underlay_address": "fd00:1122:3344:101::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::7]:32345", - "dataset": { - "pool_name": "oxp_d94e9c58-e6d1-444b-b7d8-19ac17dea042" - } - } - }, - "root": "/pool/ext/c1e807e7-b64a-4dbd-b845-ffed0b9a54f1/crypt/zone" - }, - { - "zone": { - "id": "6a0baf13-a80b-4778-a0ab-a69cd851de2d", - "underlay_address": "fd00:1122:3344:101::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::9]:32345", - "dataset": { - "pool_name": "oxp_be06ea9c-df86-4fec-b5dd-8809710893af" - } - } - }, - "root": "/pool/ext/a9d419d4-5915-4a40-baa3-3512785de034/crypt/zone" - }, - { - "zone": { - "id": "391ec257-fd47-4cc8-9bfa-49a0747a9a67", - "underlay_address": "fd00:1122:3344:101::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::8]:32345", - "dataset": { - "pool_name": "oxp_a9d419d4-5915-4a40-baa3-3512785de034" - } - } - }, - "root": "/pool/ext/709d5d04-5dff-4558-8b5d-fbc2a7d83036/crypt/zone" - }, - { - "zone": { - "id": "fd8e615a-f170-4da9-b8d0-2a5a123d8682", - "underlay_address": "fd00:1122:3344:101::3", - "zone_type": { - "type": "crucible_pantry", - "address": "[fd00:1122:3344:101::3]:17000" - } - }, - "root": "/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone" - }, - { - "zone": { - "id": "f8a793f4-cd08-49ec-8fee-6bcd37092fdc", - "underlay_address": "fd00:1122:3344:101::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::c]:32345", - "dataset": { - "pool_name": "oxp_709d5d04-5dff-4558-8b5d-fbc2a7d83036" - } - } - }, - "root": "/pool/ext/d94e9c58-e6d1-444b-b7d8-19ac17dea042/crypt/zone" - }, - { - "zone": { - "id": "c67d44be-d6b8-4a08-a7e0-3ab300749ad6", - "underlay_address": "fd00:1122:3344:101::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::4]:32345", - "dataset": { - "pool_name": "oxp_231cd696-2839-4a9a-ae42-6d875a98a797" - } - } - }, - "root": "/pool/ext/709d5d04-5dff-4558-8b5d-fbc2a7d83036/crypt/zone" - }, - { - "zone": { - "id": "e91b4957-8165-451d-9fa5-090c3a39f199", - "underlay_address": "fd00:1122:3344:101::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::d]:32345", - "dataset": { - "pool_name": "oxp_dd084b76-1130-4ad3-9196-6b02be607fe9" - } - } - }, - "root": "/pool/ext/5840a3b7-f765-45d3-8a41-7f543f936bee/crypt/zone" - }, - { - "zone": { - "id": "5e737b6e-d33d-4a2c-b8c0-3cad9d05a68f", - "underlay_address": "fd00:1122:3344:101::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:101::5]:32345", - "dataset": { - "pool_name": "oxp_8fa4f837-c6f3-4c65-88d4-21eb3cd7ffee" - } - } - }, - "root": "/pool/ext/dd084b76-1130-4ad3-9196-6b02be607fe9/crypt/zone" - }, - { - "zone": { - "id": "7e6b7816-b1a6-40f3-894a-a5d5c0571dbb", - "underlay_address": "fd00:1122:3344:101::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:101::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/be06ea9c-df86-4fec-b5dd-8809710893af/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled6.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled6.json deleted file mode 100644 index ce4b6f03cd..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled6.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "eafffae7-69fd-49e1-9541-7cf237ab12b3", - "underlay_address": "fd00:1122:3344:110::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::3]:32345", - "dataset": { - "pool_name": "oxp_929404cd-2522-4440-b21c-91d466a9a7e0" - } - } - }, - "root": "/pool/ext/aff390ed-8d70-49fa-9000-5420b54ab118/crypt/zone" - }, - { - "zone": { - "id": "f4bccf15-d69f-402d-9bd2-7959a4cb2823", - "underlay_address": "fd00:1122:3344:110::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::9]:32345", - "dataset": { - "pool_name": "oxp_f80f96be-a3d7-490a-96a7-faf7da80a579" - } - } - }, - "root": "/pool/ext/6bcd54c8-d4a8-429d-8f17-cf02615eb063/crypt/zone" - }, - { - "zone": { - "id": "82e51c9d-c187-4baa-8307-e46eeafc5ff2", - "underlay_address": "fd00:1122:3344:110::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::5]:32345", - "dataset": { - "pool_name": "oxp_37d86199-6834-49d9-888a-88ff6f281b29" - } - } - }, - "root": "/pool/ext/d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f/crypt/zone" - }, - { - "zone": { - "id": "cf667caf-304c-40c4-acce-f0eb05d011ef", - "underlay_address": "fd00:1122:3344:110::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::8]:32345", - "dataset": { - "pool_name": "oxp_625c0110-644e-4d63-8321-b85ab5642260" - } - } - }, - "root": "/pool/ext/d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f/crypt/zone" - }, - { - "zone": { - "id": "14e60912-108e-4dd3-984e-2332a183b346", - "underlay_address": "fd00:1122:3344:110::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::b]:32345", - "dataset": { - "pool_name": "oxp_fa6470f5-0a4c-4fef-b0b1-57c8749c6cca" - } - } - }, - "root": "/pool/ext/6c5ab641-3bd4-4d8c-96f4-4f56c1045142/crypt/zone" - }, - { - "zone": { - "id": "1aacf923-c96f-4bab-acb0-63f28e86eef6", - "underlay_address": "fd00:1122:3344:110::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::c]:32345", - "dataset": { - "pool_name": "oxp_21b0f3ed-d27f-4996-968b-bf2b494d9308" - } - } - }, - "root": "/pool/ext/625c0110-644e-4d63-8321-b85ab5642260/crypt/zone" - }, - { - "zone": { - "id": "b9db0845-04d3-4dc1-84ba-224749562a6c", - "underlay_address": "fd00:1122:3344:110::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::6]:32345", - "dataset": { - "pool_name": "oxp_d2e27e2a-2deb-42ae-84a7-c2d06f3aeb4f" - } - } - }, - "root": "/pool/ext/aff390ed-8d70-49fa-9000-5420b54ab118/crypt/zone" - }, - { - "zone": { - "id": "38b51865-ee80-4e1b-a40b-3452951f9022", - "underlay_address": "fd00:1122:3344:110::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::7]:32345", - "dataset": { - "pool_name": "oxp_6bcd54c8-d4a8-429d-8f17-cf02615eb063" - } - } - }, - "root": "/pool/ext/37d86199-6834-49d9-888a-88ff6f281b29/crypt/zone" - }, - { - "zone": { - "id": "4bc441f6-f7e5-4d68-8751-53ef1e251c47", - "underlay_address": "fd00:1122:3344:110::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::a]:32345", - "dataset": { - "pool_name": "oxp_6c5ab641-3bd4-4d8c-96f4-4f56c1045142" - } - } - }, - "root": "/pool/ext/21b0f3ed-d27f-4996-968b-bf2b494d9308/crypt/zone" - }, - { - "zone": { - "id": "d2c20cf8-ed4c-4815-add9-45996364f721", - "underlay_address": "fd00:1122:3344:110::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:110::4]:32345", - "dataset": { - "pool_name": "oxp_aff390ed-8d70-49fa-9000-5420b54ab118" - } - } - }, - "root": "/pool/ext/6c5ab641-3bd4-4d8c-96f4-4f56c1045142/crypt/zone" - }, - { - "zone": { - "id": "1bb548cb-889a-411e-8c67-d1b785225180", - "underlay_address": "fd00:1122:3344:110::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:110::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/6bcd54c8-d4a8-429d-8f17-cf02615eb063/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled7.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled7.json deleted file mode 100644 index 62653d0767..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled7.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "2eb74fa3-71ec-484c-8ffa-3daeab0e4c78", - "underlay_address": "fd00:1122:3344:11d::3", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::3]:32345", - "dataset": { - "pool_name": "oxp_c6b63fea-e3e2-4806-b8dc-bdfe7b5c3d89" - } - } - }, - "root": "/pool/ext/9f20cbae-7a63-4c31-9386-2ac3cbe12030/crypt/zone" - }, - { - "zone": { - "id": "9f92bfcf-7435-44a6-8e77-0597f93cd0b4", - "underlay_address": "fd00:1122:3344:11d::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::7]:32345", - "dataset": { - "pool_name": "oxp_9fa336f1-2b69-4ebf-9553-e3bab7e3e6ef" - } - } - }, - "root": "/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone" - }, - { - "zone": { - "id": "1bf9aed4-9fd3-4d87-b8e7-7f066d25ec1d", - "underlay_address": "fd00:1122:3344:11d::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::b]:32345", - "dataset": { - "pool_name": "oxp_a5a52f47-9c9a-4519-83dc-abc56619495d" - } - } - }, - "root": "/pool/ext/cbcad26e-5e52-41b7-9875-1a84d30d8a15/crypt/zone" - }, - { - "zone": { - "id": "2a722aa7-cd8a-445d-83fe-57fc9b9a8249", - "underlay_address": "fd00:1122:3344:11d::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::8]:32345", - "dataset": { - "pool_name": "oxp_1f4b71eb-505f-4706-912c-b13dd3f2eafb" - } - } - }, - "root": "/pool/ext/a5a52f47-9c9a-4519-83dc-abc56619495d/crypt/zone" - }, - { - "zone": { - "id": "76af5b23-d833-435c-b848-2a09d9fad9a1", - "underlay_address": "fd00:1122:3344:11d::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::c]:32345", - "dataset": { - "pool_name": "oxp_cbcad26e-5e52-41b7-9875-1a84d30d8a15" - } - } - }, - "root": "/pool/ext/9f20cbae-7a63-4c31-9386-2ac3cbe12030/crypt/zone" - }, - { - "zone": { - "id": "3a412bf4-a385-4e66-9ada-a87f6536d6ca", - "underlay_address": "fd00:1122:3344:11d::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::4]:32345", - "dataset": { - "pool_name": "oxp_e05a6264-63f2-4961-bc14-57b4f65614c0" - } - } - }, - "root": "/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone" - }, - { - "zone": { - "id": "99a25fa7-8231-4a46-a6ec-ffc5281db1f8", - "underlay_address": "fd00:1122:3344:11d::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::5]:32345", - "dataset": { - "pool_name": "oxp_722494ab-9a2b-481b-ac11-292fded682a5" - } - } - }, - "root": "/pool/ext/e05a6264-63f2-4961-bc14-57b4f65614c0/crypt/zone" - }, - { - "zone": { - "id": "06c7ddc8-9b3e-48ef-9874-0c40874e9877", - "underlay_address": "fd00:1122:3344:11d::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::a]:32345", - "dataset": { - "pool_name": "oxp_8c3972d1-5b17-4479-88cc-1c33e4344160" - } - } - }, - "root": "/pool/ext/8c3972d1-5b17-4479-88cc-1c33e4344160/crypt/zone" - }, - { - "zone": { - "id": "1212b2dc-157d-4bd3-94af-fb5db1d91f24", - "underlay_address": "fd00:1122:3344:11d::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::9]:32345", - "dataset": { - "pool_name": "oxp_9f20cbae-7a63-4c31-9386-2ac3cbe12030" - } - } - }, - "root": "/pool/ext/977aa6c3-2026-4178-9948-e09f78008575/crypt/zone" - }, - { - "zone": { - "id": "b1fb5f2e-b20d-4f4c-9f6f-bbeb1a98dd50", - "underlay_address": "fd00:1122:3344:11d::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:11d::6]:32345", - "dataset": { - "pool_name": "oxp_977aa6c3-2026-4178-9948-e09f78008575" - } - } - }, - "root": "/pool/ext/722494ab-9a2b-481b-ac11-292fded682a5/crypt/zone" - }, - { - "zone": { - "id": "e68dde0f-0647-46db-ae1c-711835c13e25", - "underlay_address": "fd00:1122:3344:11d::d", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:11d::d]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/1f4b71eb-505f-4706-912c-b13dd3f2eafb/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled8.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled8.json deleted file mode 100644 index b848826231..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled8.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "85c18b7c-a100-458c-b18d-ecfdacaefac4", - "underlay_address": "fd00:1122:3344:10e::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::5]:32345", - "dataset": { - "pool_name": "oxp_07b266bc-86c3-4a76-9522-8b34ba1ae78c" - } - } - }, - "root": "/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone" - }, - { - "zone": { - "id": "db303465-7879-4d86-8da8-a0c7162e5184", - "underlay_address": "fd00:1122:3344:10e::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::4]:32345", - "dataset": { - "pool_name": "oxp_e9488a32-880d-44a2-8948-db0b7e3a35b5" - } - } - }, - "root": "/pool/ext/8d798756-7200-4db4-9faf-f41b75106a63/crypt/zone" - }, - { - "zone": { - "id": "c44ce6be-512d-4104-9260-a5b8fe373937", - "underlay_address": "fd00:1122:3344:10e::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::9]:32345", - "dataset": { - "pool_name": "oxp_025dfc06-5aeb-407f-adc8-ba18dc9bba35" - } - } - }, - "root": "/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone" - }, - { - "zone": { - "id": "1cfdb5b6-e568-436a-a85f-7fecf1b8eef2", - "underlay_address": "fd00:1122:3344:10e::3", - "zone_type": { - "type": "nexus", - "internal_address": "[fd00:1122:3344:10e::3]:12221", - "external_ip": "45.154.216.36", - "nic": { - "id": "569754a2-a5e0-4aa8-90a7-2fa65f43b667", - "kind": { - "type": "service", - "id": "1cfdb5b6-e568-436a-a85f-7fecf1b8eef2" - }, - "name": "nexus-1cfdb5b6-e568-436a-a85f-7fecf1b8eef2", - "ip": "172.30.2.6", - "mac": "A8:40:25:FF:EC:6B", - "subnet": "172.30.2.0/24", - "vni": 100, - "primary": true, - "slot": 0 - }, - "external_tls": true, - "external_dns_servers": [ - "1.1.1.1", - "8.8.8.8" - ] - } - }, - "root": "/pool/ext/025dfc06-5aeb-407f-adc8-ba18dc9bba35/crypt/zone" - }, - { - "zone": { - "id": "44a68792-ca14-442e-b7a9-11970d50ba0e", - "underlay_address": "fd00:1122:3344:10e::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::a]:32345", - "dataset": { - "pool_name": "oxp_2a492098-7df3-4409-9466-561edb7aa99b" - } - } - }, - "root": "/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone" - }, - { - "zone": { - "id": "514cf0ca-6d23-434e-9785-446b83b2f029", - "underlay_address": "fd00:1122:3344:10e::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::7]:32345", - "dataset": { - "pool_name": "oxp_5b88e44e-f886-4de8-8a6b-48ea5ed9d70b" - } - } - }, - "root": "/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone" - }, - { - "zone": { - "id": "bc6d8347-8f64-4031-912c-932349df07fe", - "underlay_address": "fd00:1122:3344:10e::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::6]:32345", - "dataset": { - "pool_name": "oxp_1544ce68-3544-4cba-b3b6-1927d08b78a5" - } - } - }, - "root": "/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone" - }, - { - "zone": { - "id": "1ab0a4f5-99ad-4341-8c89-7fd03e5ccb08", - "underlay_address": "fd00:1122:3344:10e::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::b]:32345", - "dataset": { - "pool_name": "oxp_033eb462-968f-42ce-9c29-377bd40a3014" - } - } - }, - "root": "/pool/ext/9e1a0803-7453-4eac-91c9-d7891ecd634f/crypt/zone" - }, - { - "zone": { - "id": "d6f2520b-3d04-44d9-bd46-6ffccfcb46d2", - "underlay_address": "fd00:1122:3344:10e::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::8]:32345", - "dataset": { - "pool_name": "oxp_36e8d29c-1e88-4c2b-8f59-f312201067c3" - } - } - }, - "root": "/pool/ext/1544ce68-3544-4cba-b3b6-1927d08b78a5/crypt/zone" - }, - { - "zone": { - "id": "d6da9d13-bfcf-469d-a99e-faeb5e30be32", - "underlay_address": "fd00:1122:3344:10e::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::c]:32345", - "dataset": { - "pool_name": "oxp_9e1a0803-7453-4eac-91c9-d7891ecd634f" - } - } - }, - "root": "/pool/ext/8d798756-7200-4db4-9faf-f41b75106a63/crypt/zone" - }, - { - "zone": { - "id": "a1dc59c2-5883-4fb8-83be-ac2d95d255d1", - "underlay_address": "fd00:1122:3344:10e::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10e::d]:32345", - "dataset": { - "pool_name": "oxp_8d798756-7200-4db4-9faf-f41b75106a63" - } - } - }, - "root": "/pool/ext/36e8d29c-1e88-4c2b-8f59-f312201067c3/crypt/zone" - }, - { - "zone": { - "id": "48f25dba-7392-44ce-9bb0-28489ebc44bc", - "underlay_address": "fd00:1122:3344:10e::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10e::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/5b88e44e-f886-4de8-8a6b-48ea5ed9d70b/crypt/zone" - } - ] -} \ No newline at end of file diff --git a/sled-agent/tests/output/new-zones-ledgers/rack3-sled9.json b/sled-agent/tests/output/new-zones-ledgers/rack3-sled9.json deleted file mode 100644 index 62d45a2f5a..0000000000 --- a/sled-agent/tests/output/new-zones-ledgers/rack3-sled9.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "omicron_generation": 2, - "ledger_generation": 4, - "zones": [ - { - "zone": { - "id": "b452e5e1-ab4c-4994-9679-ef21b3b4fee9", - "underlay_address": "fd00:1122:3344:10b::6", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::6]:32345", - "dataset": { - "pool_name": "oxp_d63a297d-ae6a-4072-9dca-dda404044989" - } - } - }, - "root": "/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone" - }, - { - "zone": { - "id": "e9826cdc-6d3a-4eff-b1b5-ec4364ebe6b9", - "underlay_address": "fd00:1122:3344:10b::3", - "zone_type": { - "type": "oximeter", - "address": "[fd00:1122:3344:10b::3]:12223" - } - }, - "root": "/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone" - }, - { - "zone": { - "id": "b0cde4a8-f27c-46e8-8355-756be9045afc", - "underlay_address": "fd00:1122:3344:10b::b", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::b]:32345", - "dataset": { - "pool_name": "oxp_07c1a8e7-51f5-4f12-a43d-734719fef92b" - } - } - }, - "root": "/pool/ext/1f6adf64-c9b9-4ed7-b3e2-37fb25624646/crypt/zone" - }, - { - "zone": { - "id": "e2f70cf6-e285-4212-9b01-77ebf2ca9219", - "underlay_address": "fd00:1122:3344:10b::d", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::d]:32345", - "dataset": { - "pool_name": "oxp_a809f28a-7f25-4362-bc56-0cbdd72af2cb" - } - } - }, - "root": "/pool/ext/92a1bd39-6e8a-4226-b9d0-e3e8a9b8504f/crypt/zone" - }, - { - "zone": { - "id": "b0949c9d-4aa1-4bc4-9cb3-5875b9166885", - "underlay_address": "fd00:1122:3344:10b::a", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::a]:32345", - "dataset": { - "pool_name": "oxp_af0cc12b-43c5-473a-89a7-28351fbbb430" - } - } - }, - "root": "/pool/ext/cf1594ed-7c0c-467c-b0af-a689dcb427a3/crypt/zone" - }, - { - "zone": { - "id": "7cea4d59-a8ca-4826-901d-8d5bd935dc09", - "underlay_address": "fd00:1122:3344:10b::9", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::9]:32345", - "dataset": { - "pool_name": "oxp_d75dae09-4992-4a61-ab7d-5ae1d2b068ba" - } - } - }, - "root": "/pool/ext/a809f28a-7f25-4362-bc56-0cbdd72af2cb/crypt/zone" - }, - { - "zone": { - "id": "08adaeee-c3b5-4cd8-8fbd-ac371b3101c9", - "underlay_address": "fd00:1122:3344:10b::4", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::4]:32345", - "dataset": { - "pool_name": "oxp_d9f23187-fbf9-4ea5-a103-bc112263a9a7" - } - } - }, - "root": "/pool/ext/7c204111-31df-4c32-9a3e-780411f700fd/crypt/zone" - }, - { - "zone": { - "id": "3da1ade5-3fcb-4e64-aa08-81ee8a9ef723", - "underlay_address": "fd00:1122:3344:10b::8", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::8]:32345", - "dataset": { - "pool_name": "oxp_1f6adf64-c9b9-4ed7-b3e2-37fb25624646" - } - } - }, - "root": "/pool/ext/07c1a8e7-51f5-4f12-a43d-734719fef92b/crypt/zone" - }, - { - "zone": { - "id": "816f26a7-4c28-4a39-b9ad-a036678520ab", - "underlay_address": "fd00:1122:3344:10b::7", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::7]:32345", - "dataset": { - "pool_name": "oxp_92a1bd39-6e8a-4226-b9d0-e3e8a9b8504f" - } - } - }, - "root": "/pool/ext/d9f23187-fbf9-4ea5-a103-bc112263a9a7/crypt/zone" - }, - { - "zone": { - "id": "839f9839-409f-45d3-b8a6-7085507b90f6", - "underlay_address": "fd00:1122:3344:10b::c", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::c]:32345", - "dataset": { - "pool_name": "oxp_7c204111-31df-4c32-9a3e-780411f700fd" - } - } - }, - "root": "/pool/ext/af0cc12b-43c5-473a-89a7-28351fbbb430/crypt/zone" - }, - { - "zone": { - "id": "c717c81f-a228-4412-a34e-90f8c491d847", - "underlay_address": "fd00:1122:3344:10b::5", - "zone_type": { - "type": "crucible", - "address": "[fd00:1122:3344:10b::5]:32345", - "dataset": { - "pool_name": "oxp_cf1594ed-7c0c-467c-b0af-a689dcb427a3" - } - } - }, - "root": "/pool/ext/d63a297d-ae6a-4072-9dca-dda404044989/crypt/zone" - }, - { - "zone": { - "id": "e1fa2023-6c86-40a4-ae59-a0de112cf7a9", - "underlay_address": "fd00:1122:3344:10b::e", - "zone_type": { - "type": "internal_ntp", - "address": "[fd00:1122:3344:10b::e]:123", - "ntp_servers": [ - "440dd615-e11f-4a5d-aeb4-dcf88bb314de.host.control-plane.oxide.internal", - "cb901d3e-8811-4c4c-a274-a44130501ecf.host.control-plane.oxide.internal" - ], - "dns_servers": [ - "fd00:1122:3344:1::1", - "fd00:1122:3344:2::1", - "fd00:1122:3344:3::1" - ], - "domain": null - } - }, - "root": "/pool/ext/d9f23187-fbf9-4ea5-a103-bc112263a9a7/crypt/zone" - } - ] -} \ No newline at end of file From a04e9c79f3aefba7f18be982fee09986a1c5d3bf Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 11:23:55 -0700 Subject: [PATCH 05/42] no bail just warn --- sled-agent/src/services.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index d9122fcc57..f335c2c257 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -794,6 +794,8 @@ impl ServiceManager { // lock. _map: &MutexGuard<'_, ZoneMap>, ) -> Result>, Error> { + let log = &self.inner.log; + // NOTE: This is a function where we used to access zones by "service // ledgers". This format has since been deprecated, and these files, // if they exist, should not be used. @@ -806,16 +808,17 @@ impl ServiceManager { Ok(_) => (), Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => (), Err(e) => { - return Err(Error::io( - "Failed to delete old service ledger", - e, - )) + warn!( + log, + "Failed to delete old service ledger"; + "err" => ?e, + "path" => ?path, + ); } } } // Try to load the current software's zone ledger - let log = &self.inner.log; let ledger_paths = self.all_omicron_zone_ledgers().await; info!(log, "Loading Omicron zones from: {ledger_paths:?}"); let maybe_ledger = From a96fc81f940ae433692d0c6f255b955f223e4e1b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 15:29:37 -0700 Subject: [PATCH 06/42] optional value --- nexus/db-model/src/deployment.rs | 2 +- nexus/db-model/src/inventory.rs | 2 +- nexus/db-model/src/schema.rs | 4 ++-- nexus/db-queries/src/db/datastore/deployment.rs | 2 +- schema/crdb/dbinit.sql | 8 ++++++-- sled-agent/src/params.rs | 2 +- sled-agent/src/services.rs | 17 ++++++++++++++++- sled-agent/src/sim/server.rs | 6 +++--- 8 files changed, 31 insertions(+), 12 deletions(-) diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index 7c6951e221..f05e4c1bde 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -227,7 +227,7 @@ pub struct BpOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, - pub filesystem_pool: DbTypedUuid, + pub filesystem_pool: Option>, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, diff --git a/nexus/db-model/src/inventory.rs b/nexus/db-model/src/inventory.rs index 77ba8e68a7..08576fe261 100644 --- a/nexus/db-model/src/inventory.rs +++ b/nexus/db-model/src/inventory.rs @@ -1009,7 +1009,7 @@ pub struct InvOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, - pub filesystem_pool: DbTypedUuid, + pub filesystem_pool: Option>, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, diff --git a/nexus/db-model/src/schema.rs b/nexus/db-model/src/schema.rs index 68a252bf6d..5e87f9e1a2 100644 --- a/nexus/db-model/src/schema.rs +++ b/nexus/db-model/src/schema.rs @@ -1454,7 +1454,7 @@ table! { id -> Uuid, underlay_address -> Inet, - filesystem_pool -> Uuid, + filesystem_pool -> Nullable, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, @@ -1569,7 +1569,7 @@ table! { id -> Uuid, underlay_address -> Inet, - filesystem_pool -> Uuid, + filesystem_pool -> Nullable, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, diff --git a/nexus/db-queries/src/db/datastore/deployment.rs b/nexus/db-queries/src/db/datastore/deployment.rs index 617413f172..002df305ae 100644 --- a/nexus/db-queries/src/db/datastore/deployment.rs +++ b/nexus/db-queries/src/db/datastore/deployment.rs @@ -504,7 +504,7 @@ impl DataStore { ) .filter(dsl::blueprint_id.eq(blueprint_id)) .select(BpOmicronZone::as_select()) - .load_async(&*conn) + .load_async::(&*conn) .await .map_err(|e| { public_error_from_diesel(e, ErrorHandler::Server) diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index 0e75c90c04..c43a5b98e8 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -3178,7 +3178,9 @@ CREATE TABLE IF NOT EXISTS omicron.public.inv_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, - filesystem_pool UUID NOT NULL, + -- TODO: This is nullable for backwards compatibility. + -- Eventually, that nullability should be removed. + filesystem_pool UUID, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone @@ -3413,7 +3415,9 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, - filesystem_pool UUID NOT NULL, + -- TODO: This is nullable for backwards compatibility. + -- Eventually, that nullability should be removed. + filesystem_pool UUID, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone diff --git a/sled-agent/src/params.rs b/sled-agent/src/params.rs index acbfac01eb..465a4abb56 100644 --- a/sled-agent/src/params.rs +++ b/sled-agent/src/params.rs @@ -347,7 +347,7 @@ pub struct OmicronZoneConfig { /// Note that this is transient -- the sled agent is permitted to /// destroy the zone's dataset on this pool each time the zone is /// initialized. - pub filesystem_pool: ZpoolName, + pub filesystem_pool: Option, pub zone_type: OmicronZoneType, } diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index 7d40c42ef6..d1b1324789 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -87,6 +87,7 @@ use omicron_common::backoff::{ use omicron_common::ledger::{self, Ledger, Ledgerable}; use omicron_ddm_admin_client::{Client as DdmAdminClient, DdmError}; use once_cell::sync::OnceCell; +use rand::prelude::SliceRandom; use sled_hardware::is_gimlet; use sled_hardware::underlay; use sled_hardware::SledMode; @@ -3331,7 +3332,21 @@ impl ServiceManager { } } - let filesystem_pool = &zone.filesystem_pool; + let filesystem_pool = match (&zone.filesystem_pool, zone.dataset_name()) { + // If a pool was explicitly requested, use it. + (Some(pool), _) => pool.clone(), + // NOTE: The following cases are for backwards compatibility. + // + // If no pool was selected, prefer to use the same pool as the + // durable dataset. Otherwise, pick one randomly. + (None, Some(dataset)) => dataset.pool().clone(), + (None, None) => { + all_u2_pools.choose(&mut rand::thread_rng()) + .ok_or_else(|| Error::U2NotFound)? + .clone() + } + }; + if !all_u2_pools.contains(&filesystem_pool) { warn!( self.inner.log, diff --git a/sled-agent/src/sim/server.rs b/sled-agent/src/sim/server.rs index 2d48296644..eade999b46 100644 --- a/sled-agent/src/sim/server.rs +++ b/sled-agent/src/sim/server.rs @@ -386,7 +386,7 @@ pub async fn run_standalone_server( gz_address_index: 0, }, // Co-locate the filesystem pool with the dataset - filesystem_pool: pool_name, + filesystem_pool: Some(pool_name), }]; let mut internal_services_ip_pool_ranges = vec![]; @@ -424,7 +424,7 @@ pub async fn run_standalone_server( external_tls: false, external_dns_servers: vec![], }, - filesystem_pool: get_random_zpool(), + filesystem_pool: Some(get_random_zpool()), }); internal_services_ip_pool_ranges.push(match ip { @@ -466,7 +466,7 @@ pub async fn run_standalone_server( }, }, // Co-locate the filesystem pool with the dataset - filesystem_pool: pool_name, + filesystem_pool: Some(pool_name), }); internal_services_ip_pool_ranges From 9858dbf49f4118839d204de6e42b88b997270fdb Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 16:26:04 -0700 Subject: [PATCH 07/42] are we optional yet --- nexus/db-model/src/deployment.rs | 9 ++++++--- nexus/db-model/src/inventory.rs | 6 +++--- nexus/db-model/src/omicron_zone_config.rs | 14 ++++++++----- nexus/db-queries/src/db/datastore/rack.rs | 20 +++++++++---------- nexus/inventory/src/collector.rs | 2 +- .../reconfigurator/execution/src/datasets.rs | 2 +- nexus/reconfigurator/execution/src/dns.rs | 4 +++- .../execution/src/external_networking.rs | 12 +++++------ .../execution/src/omicron_zones.rs | 6 ++++-- .../planning/src/blueprint_builder/builder.rs | 8 ++++---- .../planning/src/blueprint_builder/zones.rs | 2 +- .../src/app/background/blueprint_execution.rs | 2 +- .../app/background/crdb_node_id_collector.rs | 4 ++-- nexus/test-utils/src/lib.rs | 12 +++++------ nexus/types/src/deployment.rs | 2 +- openapi/nexus-internal.json | 8 ++++++++ openapi/sled-agent.json | 2 +- sled-agent/src/rack_setup/plan/service.rs | 20 +++++++++---------- sled-agent/src/services.rs | 12 +++++------ 19 files changed, 83 insertions(+), 64 deletions(-) diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index f05e4c1bde..28c9d2448a 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -265,7 +265,7 @@ impl BpOmicronZone { sled_id, blueprint_zone.id.into_untyped_uuid(), blueprint_zone.underlay_address, - blueprint_zone.filesystem_pool.id(), + blueprint_zone.filesystem_pool.as_ref().map(|pool| pool.id()), &blueprint_zone.zone_type.clone().into(), external_ip_id, )?; @@ -274,7 +274,10 @@ impl BpOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, - filesystem_pool: blueprint_zone.filesystem_pool.id().into(), + filesystem_pool: blueprint_zone + .filesystem_pool + .as_ref() + .map(|pool| pool.id().into()), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -305,7 +308,7 @@ impl BpOmicronZone { sled_id: self.sled_id.into(), id: self.id, underlay_address: self.underlay_address, - filesystem_pool: self.filesystem_pool.into(), + filesystem_pool: self.filesystem_pool.map(|id| id.into()), zone_type: self.zone_type, primary_service_ip: self.primary_service_ip, primary_service_port: self.primary_service_port, diff --git a/nexus/db-model/src/inventory.rs b/nexus/db-model/src/inventory.rs index 08576fe261..be38250f45 100644 --- a/nexus/db-model/src/inventory.rs +++ b/nexus/db-model/src/inventory.rs @@ -1041,7 +1041,7 @@ impl InvOmicronZone { sled_id, zone.id, zone.underlay_address, - zone.filesystem_pool.id(), + zone.filesystem_pool.as_ref().map(|pool| pool.id()), &zone.zone_type, external_ip_id, )?; @@ -1050,7 +1050,7 @@ impl InvOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, - filesystem_pool: zone.filesystem_pool.into(), + filesystem_pool: zone.filesystem_pool.map(|id| id.into()), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -1079,7 +1079,7 @@ impl InvOmicronZone { sled_id: self.sled_id.into(), id: self.id, underlay_address: self.underlay_address, - filesystem_pool: self.filesystem_pool.into(), + filesystem_pool: self.filesystem_pool.map(|id| id.into()), zone_type: self.zone_type, primary_service_ip: self.primary_service_ip, primary_service_port: self.primary_service_port, diff --git a/nexus/db-model/src/omicron_zone_config.rs b/nexus/db-model/src/omicron_zone_config.rs index da40d2125f..a325e0d361 100644 --- a/nexus/db-model/src/omicron_zone_config.rs +++ b/nexus/db-model/src/omicron_zone_config.rs @@ -35,7 +35,7 @@ pub(crate) struct OmicronZone { pub(crate) sled_id: SledUuid, pub(crate) id: Uuid, pub(crate) underlay_address: ipv6::Ipv6Addr, - pub(crate) filesystem_pool: ZpoolUuid, + pub(crate) filesystem_pool: Option, pub(crate) zone_type: ZoneType, pub(crate) primary_service_ip: ipv6::Ipv6Addr, pub(crate) primary_service_port: SqlU16, @@ -62,7 +62,7 @@ impl OmicronZone { sled_id: SledUuid, zone_id: Uuid, zone_underlay_address: Ipv6Addr, - filesystem_pool: ZpoolUuid, + filesystem_pool: Option, zone_type: &nexus_types::inventory::OmicronZoneType, external_ip_id: Option, ) -> anyhow::Result { @@ -369,7 +369,9 @@ impl OmicronZone { disposition, id: OmicronZoneUuid::from_untyped_uuid(common.id), underlay_address: std::net::Ipv6Addr::from(common.underlay_address), - filesystem_pool: ZpoolName::new_external(common.filesystem_pool), + filesystem_pool: common + .filesystem_pool + .map(|id| ZpoolName::new_external(id)), zone_type, }) } @@ -473,7 +475,9 @@ impl OmicronZone { Ok(nexus_types::inventory::OmicronZoneConfig { id: common.id, underlay_address: std::net::Ipv6Addr::from(common.underlay_address), - filesystem_pool: ZpoolName::new_external(common.filesystem_pool), + filesystem_pool: common + .filesystem_pool + .map(|id| ZpoolName::new_external(id)), zone_type, }) } @@ -589,7 +593,7 @@ impl OmicronZone { struct ZoneConfigCommon { id: Uuid, underlay_address: ipv6::Ipv6Addr, - filesystem_pool: ZpoolUuid, + filesystem_pool: Option, zone_type: ZoneType, primary_service_address: SocketAddrV6, snat_ip: Option, diff --git a/nexus/db-queries/src/db/datastore/rack.rs b/nexus/db-queries/src/db/datastore/rack.rs index 1e382746cd..f1bde5b8c8 100644 --- a/nexus/db-queries/src/db/datastore/rack.rs +++ b/nexus/db-queries/src/db/datastore/rack.rs @@ -1376,7 +1376,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: external_dns_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: dataset.pool_name.clone(), + filesystem_pool: Some(dataset.pool_name.clone()), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset, @@ -1405,7 +1405,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp1_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:80".parse().unwrap(), @@ -1447,7 +1447,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1479,7 +1479,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp2_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:80".parse().unwrap(), @@ -1520,7 +1520,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: ntp3_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::InternalNtp( blueprint_zone_type::InternalNtp { address: "[::1]:80".parse().unwrap(), @@ -1703,7 +1703,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id1, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1735,7 +1735,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id2, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -1976,7 +1976,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), @@ -2084,7 +2084,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: external_dns_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: dataset.pool_name.clone(), + filesystem_pool: Some(dataset.pool_name.clone()), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset, @@ -2113,7 +2113,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: random_zpool(), + filesystem_pool: Some(random_zpool()), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:80".parse().unwrap(), diff --git a/nexus/inventory/src/collector.rs b/nexus/inventory/src/collector.rs index 62f9dbf39f..87e9327dfa 100644 --- a/nexus/inventory/src/collector.rs +++ b/nexus/inventory/src/collector.rs @@ -572,7 +572,7 @@ mod test { sled_agent_client::types::OmicronZoneType::Oximeter { address: zone_address.to_string(), }, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), }], }) .await diff --git a/nexus/reconfigurator/execution/src/datasets.rs b/nexus/reconfigurator/execution/src/datasets.rs index de0d4984e2..e007c2528e 100644 --- a/nexus/reconfigurator/execution/src/datasets.rs +++ b/nexus/reconfigurator/execution/src/datasets.rs @@ -278,7 +278,7 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), - filesystem_pool: ZpoolName::new_external(new_zpool_id), + filesystem_pool: Some(ZpoolName::new_external(new_zpool_id)), zone_type: BlueprintZoneType::Crucible( blueprint_zone_type::Crucible { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index 107fe0ac33..61bbcd72d5 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -623,7 +623,9 @@ mod test { disposition: BlueprintZoneDisposition::Quiesced, id: out_of_service_id, underlay_address: out_of_service_addr, - filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), + filesystem_pool: Some(ZpoolName::new_external( + ZpoolUuid::new_v4(), + )), zone_type: BlueprintZoneType::Oximeter( blueprint_zone_type::Oximeter { address: SocketAddrV6::new( diff --git a/nexus/reconfigurator/execution/src/external_networking.rs b/nexus/reconfigurator/execution/src/external_networking.rs index 83c702fb65..b5b5ce51f0 100644 --- a/nexus/reconfigurator/execution/src/external_networking.rs +++ b/nexus/reconfigurator/execution/src/external_networking.rs @@ -592,9 +592,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.nexus_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: ZpoolName::new_external( + filesystem_pool: Some(ZpoolName::new_external( ZpoolUuid::new_v4(), - ), + )), zone_type: BlueprintZoneType::Nexus( blueprint_zone_type::Nexus { internal_address: "[::1]:0".parse().unwrap(), @@ -609,9 +609,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.dns_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: ZpoolName::new_external( + filesystem_pool: Some(ZpoolName::new_external( ZpoolUuid::new_v4(), - ), + )), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset: OmicronZoneDataset { @@ -629,9 +629,9 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: self.ntp_id, underlay_address: Ipv6Addr::LOCALHOST, - filesystem_pool: ZpoolName::new_external( + filesystem_pool: Some(ZpoolName::new_external( ZpoolUuid::new_v4(), - ), + )), zone_type: BlueprintZoneType::BoundaryNtp( blueprint_zone_type::BoundaryNtp { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/execution/src/omicron_zones.rs b/nexus/reconfigurator/execution/src/omicron_zones.rs index 401a2ef749..08d41928c9 100644 --- a/nexus/reconfigurator/execution/src/omicron_zones.rs +++ b/nexus/reconfigurator/execution/src/omicron_zones.rs @@ -192,7 +192,7 @@ mod test { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), - filesystem_pool: zpool.clone(), + filesystem_pool: Some(zpool.clone()), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { dataset: OmicronZoneDataset { pool_name: zpool }, @@ -295,7 +295,9 @@ mod test { disposition, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), - filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), + filesystem_pool: Some(ZpoolName::new_external( + ZpoolUuid::new_v4(), + )), zone_type: BlueprintZoneType::InternalNtp( blueprint_zone_type::InternalNtp { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index fef40acc07..05fa63b9d4 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -673,7 +673,7 @@ impl<'a> BlueprintBuilder<'a> { disposition: BlueprintZoneDisposition::InService, id: self.rng.zone_rng.next(), underlay_address: ip, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), zone_type, }; @@ -729,7 +729,7 @@ impl<'a> BlueprintBuilder<'a> { disposition: BlueprintZoneDisposition::InService, id: self.rng.zone_rng.next(), underlay_address: ip, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), zone_type, }; @@ -857,7 +857,7 @@ impl<'a> BlueprintBuilder<'a> { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: ip, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), zone_type, }; self.sled_add_zone(sled_id, zone)?; @@ -914,7 +914,7 @@ impl<'a> BlueprintBuilder<'a> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: underlay_ip, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), zone_type, }; self.sled_add_zone(sled_id, zone)?; diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs index f5ad2efe97..eb65f948d7 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs @@ -290,7 +290,7 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: new_zone_id, underlay_address: Ipv6Addr::UNSPECIFIED, - filesystem_pool, + filesystem_pool: Some(filesystem_pool), zone_type: BlueprintZoneType::Oximeter( blueprint_zone_type::Oximeter { address: SocketAddrV6::new( diff --git a/nexus/src/app/background/blueprint_execution.rs b/nexus/src/app/background/blueprint_execution.rs index 7a56897f97..c7ee0ae43f 100644 --- a/nexus/src/app/background/blueprint_execution.rs +++ b/nexus/src/app/background/blueprint_execution.rs @@ -269,7 +269,7 @@ mod test { disposition, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), - filesystem_pool: ZpoolName::new_external(pool_id), + filesystem_pool: Some(ZpoolName::new_external(pool_id)), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { dataset: OmicronZoneDataset { diff --git a/nexus/src/app/background/crdb_node_id_collector.rs b/nexus/src/app/background/crdb_node_id_collector.rs index eb9d4f3c3d..29ee04ade1 100644 --- a/nexus/src/app/background/crdb_node_id_collector.rs +++ b/nexus/src/app/background/crdb_node_id_collector.rs @@ -273,7 +273,7 @@ mod tests { disposition, id, underlay_address: *addr.ip(), - filesystem_pool: ZpoolName::new_external(zpool_id), + filesystem_pool: Some(ZpoolName::new_external(zpool_id)), zone_type: BlueprintZoneType::CockroachDb( blueprint_zone_type::CockroachDb { address: addr, @@ -316,7 +316,7 @@ mod tests { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::new_v4(), underlay_address: "::1".parse().unwrap(), - filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), + filesystem_pool: Some(ZpoolName::new_external(ZpoolUuid::new_v4())), zone_type: BlueprintZoneType::CruciblePantry( blueprint_zone_type::CruciblePantry { address: "[::1]:0".parse().unwrap(), diff --git a/nexus/test-utils/src/lib.rs b/nexus/test-utils/src/lib.rs index 3411eaa4e4..3d4f646bbe 100644 --- a/nexus/test-utils/src/lib.rs +++ b/nexus/test-utils/src/lib.rs @@ -422,7 +422,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::from_untyped_uuid(dataset_id), underlay_address: *address.ip(), - filesystem_pool: ZpoolName::new_external(zpool_id), + filesystem_pool: Some(ZpoolName::new_external(zpool_id)), zone_type: BlueprintZoneType::CockroachDb( blueprint_zone_type::CockroachDb { address, @@ -475,7 +475,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: OmicronZoneUuid::from_untyped_uuid(dataset_id), underlay_address: *address.ip(), - filesystem_pool: ZpoolName::new_external(zpool_id), + filesystem_pool: Some(ZpoolName::new_external(zpool_id)), zone_type: BlueprintZoneType::Clickhouse( blueprint_zone_type::Clickhouse { address, @@ -664,7 +664,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: nexus_id, underlay_address: *address.ip(), - filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), + filesystem_pool: Some(ZpoolName::new_external(ZpoolUuid::new_v4())), zone_type: BlueprintZoneType::Nexus(blueprint_zone_type::Nexus { external_dns_servers: self .config @@ -986,7 +986,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *address.ip(), - filesystem_pool: ZpoolName::new_external(ZpoolUuid::new_v4()), + filesystem_pool: Some(ZpoolName::new_external(ZpoolUuid::new_v4())), zone_type: BlueprintZoneType::CruciblePantry( blueprint_zone_type::CruciblePantry { address }, ), @@ -1028,7 +1028,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *dropshot_address.ip(), - filesystem_pool: ZpoolName::new_external(zpool_id), + filesystem_pool: Some(ZpoolName::new_external(zpool_id)), zone_type: BlueprintZoneType::ExternalDns( blueprint_zone_type::ExternalDns { dataset: OmicronZoneDataset { pool_name }, @@ -1090,7 +1090,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { disposition: BlueprintZoneDisposition::InService, id: zone_id, underlay_address: *http_address.ip(), - filesystem_pool: ZpoolName::new_external(zpool_id), + filesystem_pool: Some(ZpoolName::new_external(zpool_id)), zone_type: BlueprintZoneType::InternalDns( blueprint_zone_type::InternalDns { dataset: OmicronZoneDataset { pool_name }, diff --git a/nexus/types/src/deployment.rs b/nexus/types/src/deployment.rs index 822e819ff2..4f1984db7f 100644 --- a/nexus/types/src/deployment.rs +++ b/nexus/types/src/deployment.rs @@ -623,7 +623,7 @@ pub struct BlueprintZoneConfig { pub id: OmicronZoneUuid, pub underlay_address: Ipv6Addr, - pub filesystem_pool: ZpoolName, + pub filesystem_pool: Option, pub zone_type: BlueprintZoneType, } diff --git a/openapi/nexus-internal.json b/openapi/nexus-internal.json index c3cc3c059d..66ab49aaf9 100644 --- a/openapi/nexus-internal.json +++ b/openapi/nexus-internal.json @@ -1959,6 +1959,14 @@ } ] }, + "filesystem_pool": { + "nullable": true, + "allOf": [ + { + "$ref": "#/components/schemas/ZpoolName" + } + ] + }, "id": { "$ref": "#/components/schemas/TypedUuidForOmicronZoneKind" }, diff --git a/openapi/sled-agent.json b/openapi/sled-agent.json index e968b6dc8b..eb990507fd 100644 --- a/openapi/sled-agent.json +++ b/openapi/sled-agent.json @@ -3661,6 +3661,7 @@ "type": "object", "properties": { "filesystem_pool": { + "nullable": true, "description": "The pool on which we'll place this zone's filesystem.\n\nNote that this is transient -- the sled agent is permitted to destroy the zone's dataset on this pool each time the zone is initialized.", "allOf": [ { @@ -3681,7 +3682,6 @@ } }, "required": [ - "filesystem_pool", "id", "underlay_address", "zone_type" diff --git a/sled-agent/src/rack_setup/plan/service.rs b/sled-agent/src/rack_setup/plan/service.rs index 487bfcf0d5..dc077fb568 100644 --- a/sled-agent/src/rack_setup/plan/service.rs +++ b/sled-agent/src/rack_setup/plan/service.rs @@ -406,7 +406,7 @@ impl Plan { .unwrap(); let dataset_name = sled.alloc_dataset_from_u2s(DatasetKind::InternalDns)?; - let filesystem_pool = dataset_name.pool().clone(); + let filesystem_pool = Some(dataset_name.pool().clone()); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere @@ -446,7 +446,7 @@ impl Plan { .unwrap(); let dataset_name = sled.alloc_dataset_from_u2s(DatasetKind::CockroachDb)?; - let filesystem_pool = dataset_name.pool().clone(); + let filesystem_pool = Some(dataset_name.pool().clone()); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -491,7 +491,7 @@ impl Plan { let dns_address = SocketAddr::new(external_ip, dns_port); let dataset_kind = DatasetKind::ExternalDns; let dataset_name = sled.alloc_dataset_from_u2s(dataset_kind)?; - let filesystem_pool = dataset_name.pool().clone(); + let filesystem_pool = Some(dataset_name.pool().clone()); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere @@ -527,7 +527,7 @@ impl Plan { ) .unwrap(); let (nic, external_ip) = svc_port_builder.next_nexus(id)?; - let filesystem_pool = sled.alloc_zpool_from_u2s()?; + let filesystem_pool = Some(sled.alloc_zpool_from_u2s()?); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -572,7 +572,7 @@ impl Plan { omicron_common::address::OXIMETER_PORT, ) .unwrap(); - let filesystem_pool = sled.alloc_zpool_from_u2s()?; + let filesystem_pool = Some(sled.alloc_zpool_from_u2s()?); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -611,7 +611,7 @@ impl Plan { .unwrap(); let dataset_name = sled.alloc_dataset_from_u2s(DatasetKind::Clickhouse)?; - let filesystem_pool = dataset_name.pool().clone(); + let filesystem_pool = Some(dataset_name.pool().clone()); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -650,7 +650,7 @@ impl Plan { .unwrap(); let dataset_name = sled.alloc_dataset_from_u2s(DatasetKind::ClickhouseKeeper)?; - let filesystem_pool = dataset_name.pool().clone(); + let filesystem_pool = Some(dataset_name.pool().clone()); sled.request.zones.push(OmicronZoneConfig { // TODO-cleanup use TypedUuid everywhere id: id.into_untyped_uuid(), @@ -676,7 +676,7 @@ impl Plan { let address = sled.addr_alloc.next().expect("Not enough addrs"); let port = omicron_common::address::CRUCIBLE_PANTRY_PORT; let id = OmicronZoneUuid::new_v4(); - let filesystem_pool = sled.alloc_zpool_from_u2s()?; + let filesystem_pool = Some(sled.alloc_zpool_from_u2s()?); dns_builder .host_zone_with_one_backend( id, @@ -721,7 +721,7 @@ impl Plan { address, dataset: OmicronZoneDataset { pool_name: pool.clone() }, }, - filesystem_pool: pool.clone(), + filesystem_pool: Some(pool.clone()), }); } } @@ -734,7 +734,7 @@ impl Plan { let id = OmicronZoneUuid::new_v4(); let address = sled.addr_alloc.next().expect("Not enough addrs"); let ntp_address = SocketAddrV6::new(address, NTP_PORT, 0, 0); - let filesystem_pool = sled.alloc_zpool_from_u2s()?; + let filesystem_pool = Some(sled.alloc_zpool_from_u2s()?); let (zone_type, svcname) = if idx < BOUNDARY_NTP_COUNT { boundary_ntp_servers diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index d1b1324789..dcb0ddfbb3 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -3332,7 +3332,8 @@ impl ServiceManager { } } - let filesystem_pool = match (&zone.filesystem_pool, zone.dataset_name()) { + let filesystem_pool = match (&zone.filesystem_pool, zone.dataset_name()) + { // If a pool was explicitly requested, use it. (Some(pool), _) => pool.clone(), // NOTE: The following cases are for backwards compatibility. @@ -3340,11 +3341,10 @@ impl ServiceManager { // If no pool was selected, prefer to use the same pool as the // durable dataset. Otherwise, pick one randomly. (None, Some(dataset)) => dataset.pool().clone(), - (None, None) => { - all_u2_pools.choose(&mut rand::thread_rng()) - .ok_or_else(|| Error::U2NotFound)? - .clone() - } + (None, None) => all_u2_pools + .choose(&mut rand::thread_rng()) + .ok_or_else(|| Error::U2NotFound)? + .clone(), }; if !all_u2_pools.contains(&filesystem_pool) { From f1e6f7a90a6cd883fd33da3199b786b5a72bf6e5 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 21 Jun 2024 16:37:20 -0700 Subject: [PATCH 08/42] lie about filesystem_pools for simulated sled agent --- nexus/inventory/src/collector.rs | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/nexus/inventory/src/collector.rs b/nexus/inventory/src/collector.rs index 87e9327dfa..b65d87505f 100644 --- a/nexus/inventory/src/collector.rs +++ b/nexus/inventory/src/collector.rs @@ -381,9 +381,7 @@ mod test { use omicron_common::api::external::Generation; use omicron_common::zpool_name::ZpoolName; use omicron_sled_agent::sim; - use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::ZpoolUuid; - use rand::prelude::SliceRandom; use std::fmt::Write; use std::net::Ipv6Addr; use std::net::SocketAddrV6; @@ -551,16 +549,7 @@ mod test { let sled_url = format!("http://{}/", agent.http_server.local_addr()); let client = sled_agent_client::Client::new(&sled_url, log); - let zpools = agent.sled_agent.get_zpools().await; - let filesystem_pool = zpools - .choose(&mut rand::thread_rng()) - .map(|request| { - ZpoolName::new_external(ZpoolUuid::from_untyped_uuid( - request.id, - )) - }) - .expect("No zpools for filesystem zpool"); - + let filesystem_pool = ZpoolName::new_external(ZpoolUuid::new_v4()); let zone_address = SocketAddrV6::new(Ipv6Addr::LOCALHOST, 123, 0, 0); client .omicron_zones_put(&sled_agent_client::types::OmicronZonesConfig { From 8a9ade71d6aaeff7c0fc6743ab22c5d18e6397b9 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 09:13:58 -0700 Subject: [PATCH 09/42] Patch test_builder_zones --- .../planning/src/blueprint_builder/zones.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs index eb65f948d7..6cb76539ec 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/zones.rs @@ -190,6 +190,9 @@ mod tests { }; use maplit::btreeset; + use nexus_types::deployment::SledDisk; + use nexus_types::external_api::views::PhysicalDiskPolicy; + use nexus_types::external_api::views::PhysicalDiskState; use nexus_types::{ deployment::{ blueprint_zone_type, BlueprintZoneType, SledDetails, SledFilter, @@ -198,8 +201,10 @@ mod tests { external_api::views::{SledPolicy, SledState}, }; use omicron_common::address::Ipv6Subnet; + use omicron_common::disk::DiskIdentity; use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev::test_setup_log; + use omicron_uuid_kinds::PhysicalDiskUuid; use omicron_uuid_kinds::ZpoolUuid; use crate::{ @@ -235,7 +240,19 @@ mod tests { subnet: Ipv6Subnet::new( "fd00:1::".parse().unwrap(), ), - zpools: BTreeMap::new(), + zpools: BTreeMap::from([( + ZpoolUuid::new_v4(), + SledDisk { + disk_identity: DiskIdentity { + vendor: String::from("fake-vendor"), + serial: String::from("fake-serial"), + model: String::from("fake-model"), + }, + disk_id: PhysicalDiskUuid::new_v4(), + policy: PhysicalDiskPolicy::InService, + state: PhysicalDiskState::Active, + }, + )]), }, }, ) From d7c462c7683f4a6e6a47443715f87820506236b3 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 11:31:17 -0700 Subject: [PATCH 10/42] Fix test_silos_external_dns_end_to_end --- nexus/reconfigurator/execution/src/dns.rs | 21 ++++++++ nexus/test-utils/src/resource_helpers.rs | 63 +++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index 61bbcd72d5..b1fe239b41 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -471,6 +471,7 @@ mod test { use nexus_reconfigurator_planning::example::example; use nexus_reconfigurator_preparation::PlanningInputFromDb; use nexus_test_utils::resource_helpers::create_silo; + use nexus_test_utils::resource_helpers::DiskTestBuilder; use nexus_test_utils_macros::nexus_test; use nexus_types::deployment::Blueprint; use nexus_types::deployment::BlueprintTarget; @@ -502,6 +503,7 @@ mod test { use omicron_common::zpool_name::ZpoolName; use omicron_test_utils::dev::test_setup_log; use omicron_uuid_kinds::ExternalIpUuid; + use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::OmicronZoneUuid; use omicron_uuid_kinds::ZpoolUuid; use sled_agent_client::ZoneKind; @@ -1139,6 +1141,23 @@ mod test { async fn test_silos_external_dns_end_to_end( cptestctx: &ControlPlaneTestContext, ) { + // Add a zpool to both sleds, just to ensure that all new zones can find + // a transient filesystem wherever they end up being placed. + let _sled_agent_zpools = DiskTestBuilder::new(&cptestctx) + .on_sled(SledUuid::from_untyped_uuid( + cptestctx.sled_agent.sled_agent.id, + )) + .with_zpool_count(1) + .build() + .await; + let _sled_agent2_zpools = DiskTestBuilder::new(&cptestctx) + .on_sled(SledUuid::from_untyped_uuid( + cptestctx.sled_agent2.sled_agent.id, + )) + .with_zpool_count(1) + .build() + .await; + let nexus = &cptestctx.server.server_context().nexus; let datastore = nexus.datastore(); let log = &cptestctx.logctx.log; @@ -1223,6 +1242,8 @@ mod test { .await .unwrap() }; + info!(log, "Sled rows"; "rows" => ?sled_rows); + info!(log, "Zpool rows"; "rows" => ?zpool_rows); let planning_input = { let mut builder = PlanningInputFromDb { sled_rows: &sled_rows, diff --git a/nexus/test-utils/src/resource_helpers.rs b/nexus/test-utils/src/resource_helpers.rs index 2aef32d37c..e3a7364dca 100644 --- a/nexus/test-utils/src/resource_helpers.rs +++ b/nexus/test-utils/src/resource_helpers.rs @@ -41,6 +41,7 @@ use omicron_sled_agent::sim::SledAgent; use omicron_test_utils::dev::poll::wait_for_condition; use omicron_test_utils::dev::poll::CondCheckError; use omicron_uuid_kinds::GenericUuid; +use omicron_uuid_kinds::SledUuid; use omicron_uuid_kinds::ZpoolUuid; use slog::debug; use std::net::IpAddr; @@ -703,6 +704,53 @@ pub struct TestZpool { pub datasets: Vec, } +pub struct DiskTestBuilder<'a, N: NexusServer> { + cptestctx: &'a ControlPlaneTestContext, + sled_agent: Option>, + zpool_count: u32, +} + +impl<'a, N: NexusServer> DiskTestBuilder<'a, N> { + pub fn new(cptestctx: &'a ControlPlaneTestContext) -> Self { + Self { + cptestctx, + sled_agent: Some(cptestctx.sled_agent.sled_agent.clone()), + zpool_count: DiskTest::DEFAULT_ZPOOL_COUNT, + } + } + + /// Chooses a specific sled where disks should be added + pub fn on_sled(mut self, sled_id: SledUuid) -> Self { + // This list is hardcoded, because ControlPlaneTestContext is + // hardcoded to use two sled agents. + let sleds = [&self.cptestctx.sled_agent, &self.cptestctx.sled_agent2]; + + self.sled_agent = sleds.into_iter().find_map(|server| { + if server.sled_agent.id == sled_id.into_untyped_uuid() { + Some(server.sled_agent.clone()) + } else { + None + } + }); + self + } + + /// Selects a specific number of zpools to be created + pub fn with_zpool_count(mut self, count: u32) -> Self { + self.zpool_count = count; + self + } + + pub async fn build(self) -> DiskTest { + DiskTest::new_from_builder( + self.cptestctx, + self.sled_agent.expect("Sled Agent does not exist"), + self.zpool_count, + ) + .await + } +} + pub struct DiskTest { pub sled_agent: Arc, pub zpools: Vec, @@ -736,6 +784,21 @@ impl DiskTest { disk_test } + pub async fn new_from_builder( + cptestctx: &ControlPlaneTestContext, + sled_agent: Arc, + zpool_count: u32, + ) -> Self { + let mut disk_test = Self { sled_agent, zpools: vec![] }; + + // Create three Zpools, each 10 GiB, each with one Crucible dataset. + for _ in 0..zpool_count { + disk_test.add_zpool_with_dataset(cptestctx).await; + } + + disk_test + } + pub async fn add_zpool_with_dataset( &mut self, cptestctx: &ControlPlaneTestContext, From 3c59610c31c675d85a2d161c701c4afba2e1b602 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 11:35:35 -0700 Subject: [PATCH 11/42] patch v3 schema --- schema/rss-service-plan-v3.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/schema/rss-service-plan-v3.json b/schema/rss-service-plan-v3.json index d1540ca351..b7ea0af302 100644 --- a/schema/rss-service-plan-v3.json +++ b/schema/rss-service-plan-v3.json @@ -390,6 +390,17 @@ "zone_type" ], "properties": { + "filesystem_pool": { + "description": "The pool on which we'll place this zone's filesystem.\n\nNote that this is transient -- the sled agent is permitted to destroy the zone's dataset on this pool each time the zone is initialized.", + "anyOf": [ + { + "$ref": "#/definitions/ZpoolName" + }, + { + "type": "null" + } + ] + }, "id": { "type": "string", "format": "uuid" From 127009805afa337d8e670f673a2597795945809d Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 12:08:03 -0700 Subject: [PATCH 12/42] Patch blueprint edit --- .../reconfigurator-cli/tests/test_basic.rs | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/dev-tools/reconfigurator-cli/tests/test_basic.rs b/dev-tools/reconfigurator-cli/tests/test_basic.rs index 1ae78487a3..ae3707657d 100644 --- a/dev-tools/reconfigurator-cli/tests/test_basic.rs +++ b/dev-tools/reconfigurator-cli/tests/test_basic.rs @@ -9,6 +9,7 @@ use nexus_db_queries::authn; use nexus_db_queries::authz; use nexus_db_queries::context::OpContext; use nexus_test_utils::SLED_AGENT_UUID; +use nexus_test_utils::resource_helpers::DiskTestBuilder; use nexus_test_utils_macros::nexus_test; use nexus_types::deployment::Blueprint; use nexus_types::deployment::UnstableReconfiguratorState; @@ -20,6 +21,7 @@ use omicron_test_utils::dev::test_cmds::path_to_executable; use omicron_test_utils::dev::test_cmds::redact_variable; use omicron_test_utils::dev::test_cmds::run_command; use omicron_test_utils::dev::test_cmds::EXIT_SUCCESS; +use omicron_uuid_kinds::GenericUuid; use omicron_uuid_kinds::SledUuid; use slog::debug; use std::io::BufReader; @@ -56,6 +58,24 @@ type ControlPlaneTestContext = #[nexus_test] async fn test_blueprint_edit(cptestctx: &ControlPlaneTestContext) { // Setup + // + // Add a zpool to both sleds, just to ensure that all new zones can find + // a transient filesystem wherever they end up being placed. + let _sled_agent_zpools = DiskTestBuilder::new(&cptestctx) + .on_sled(SledUuid::from_untyped_uuid( + cptestctx.sled_agent.sled_agent.id, + )) + .with_zpool_count(1) + .build() + .await; + let _sled_agent2_zpools = DiskTestBuilder::new(&cptestctx) + .on_sled(SledUuid::from_untyped_uuid( + cptestctx.sled_agent2.sled_agent.id, + )) + .with_zpool_count(1) + .build() + .await; + let nexus = &cptestctx.server.server_context().nexus; let datastore = nexus.datastore(); let log = &cptestctx.logctx.log; @@ -155,7 +175,7 @@ async fn test_blueprint_edit(cptestctx: &ControlPlaneTestContext) { // Load the new file and find the new blueprint name. let state2: UnstableReconfiguratorState = read_json(&saved_state2_path).unwrap(); - assert_eq!(state2.blueprints.len(), state1.blueprints.len() + 1); + assert_eq!(state2.blueprints.len(), state1.blueprints.len() + 1); // XXX let new_blueprint = state2.blueprints.into_iter().rev().next().unwrap(); assert_ne!(new_blueprint.id, blueprint.id); From f48fba343df0eeec0409db141c58da35bba2b992 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 12:15:01 -0700 Subject: [PATCH 13/42] Add schema change --- nexus/db-model/src/deployment.rs | 10 +++++----- nexus/db-model/src/inventory.rs | 4 ++-- nexus/db-model/src/schema.rs | 4 ++-- nexus/db-model/src/schema_versions.rs | 3 ++- schema/crdb/add-nullable-filesystem-pool/up1.sql | 1 + schema/crdb/add-nullable-filesystem-pool/up2.sql | 1 + schema/crdb/dbinit.sql | 16 +++++++++------- 7 files changed, 22 insertions(+), 17 deletions(-) create mode 100644 schema/crdb/add-nullable-filesystem-pool/up1.sql create mode 100644 schema/crdb/add-nullable-filesystem-pool/up2.sql diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index 28c9d2448a..c398f6d11c 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -227,7 +227,6 @@ pub struct BpOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, - pub filesystem_pool: Option>, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, @@ -249,6 +248,7 @@ pub struct BpOmicronZone { disposition: DbBpZoneDisposition, pub external_ip_id: Option>, + pub filesystem_pool: Option>, } impl BpOmicronZone { @@ -274,10 +274,6 @@ impl BpOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, - filesystem_pool: blueprint_zone - .filesystem_pool - .as_ref() - .map(|pool| pool.id().into()), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -297,6 +293,10 @@ impl BpOmicronZone { snat_last_port: zone.snat_last_port, disposition: to_db_bp_zone_disposition(blueprint_zone.disposition), external_ip_id: zone.external_ip_id.map(From::from), + filesystem_pool: blueprint_zone + .filesystem_pool + .as_ref() + .map(|pool| pool.id().into()), }) } diff --git a/nexus/db-model/src/inventory.rs b/nexus/db-model/src/inventory.rs index be38250f45..14c4684e1e 100644 --- a/nexus/db-model/src/inventory.rs +++ b/nexus/db-model/src/inventory.rs @@ -1009,7 +1009,6 @@ pub struct InvOmicronZone { pub sled_id: DbTypedUuid, pub id: Uuid, pub underlay_address: ipv6::Ipv6Addr, - pub filesystem_pool: Option>, pub zone_type: ZoneType, pub primary_service_ip: ipv6::Ipv6Addr, pub primary_service_port: SqlU16, @@ -1027,6 +1026,7 @@ pub struct InvOmicronZone { pub snat_ip: Option, pub snat_first_port: Option, pub snat_last_port: Option, + pub filesystem_pool: Option>, } impl InvOmicronZone { @@ -1050,7 +1050,6 @@ impl InvOmicronZone { sled_id: zone.sled_id.into(), id: zone.id, underlay_address: zone.underlay_address, - filesystem_pool: zone.filesystem_pool.map(|id| id.into()), zone_type: zone.zone_type, primary_service_ip: zone.primary_service_ip, primary_service_port: zone.primary_service_port, @@ -1068,6 +1067,7 @@ impl InvOmicronZone { snat_ip: zone.snat_ip, snat_first_port: zone.snat_first_port, snat_last_port: zone.snat_last_port, + filesystem_pool: zone.filesystem_pool.map(|id| id.into()), }) } diff --git a/nexus/db-model/src/schema.rs b/nexus/db-model/src/schema.rs index 5e87f9e1a2..056e143fbe 100644 --- a/nexus/db-model/src/schema.rs +++ b/nexus/db-model/src/schema.rs @@ -1454,7 +1454,6 @@ table! { id -> Uuid, underlay_address -> Inet, - filesystem_pool -> Nullable, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, @@ -1473,6 +1472,7 @@ table! { snat_ip -> Nullable, snat_first_port -> Nullable, snat_last_port -> Nullable, + filesystem_pool -> Nullable, } } @@ -1569,7 +1569,6 @@ table! { id -> Uuid, underlay_address -> Inet, - filesystem_pool -> Nullable, zone_type -> crate::ZoneTypeEnum, primary_service_ip -> Inet, @@ -1590,6 +1589,7 @@ table! { snat_last_port -> Nullable, disposition -> crate::DbBpZoneDispositionEnum, external_ip_id -> Nullable, + filesystem_pool -> Nullable, } } diff --git a/nexus/db-model/src/schema_versions.rs b/nexus/db-model/src/schema_versions.rs index 04fafe4f93..09978f21ad 100644 --- a/nexus/db-model/src/schema_versions.rs +++ b/nexus/db-model/src/schema_versions.rs @@ -17,7 +17,7 @@ use std::collections::BTreeMap; /// /// This must be updated when you change the database schema. Refer to /// schema/crdb/README.adoc in the root of this repository for details. -pub const SCHEMA_VERSION: SemverVersion = SemverVersion::new(77, 0, 0); +pub const SCHEMA_VERSION: SemverVersion = SemverVersion::new(78, 0, 0); /// List of all past database schema versions, in *reverse* order /// @@ -29,6 +29,7 @@ static KNOWN_VERSIONS: Lazy> = Lazy::new(|| { // | leaving the first copy as an example for the next person. // v // KnownVersion::new(next_int, "unique-dirname-with-the-sql-files"), + KnownVersion::new(78, "add-nullable-filesystem-pool"), KnownVersion::new(77, "remove-view-for-v2p-mappings"), KnownVersion::new(76, "lookup-region-snapshot-by-snapshot-id"), KnownVersion::new(75, "add-cockroach-zone-id-to-node-id"), diff --git a/schema/crdb/add-nullable-filesystem-pool/up1.sql b/schema/crdb/add-nullable-filesystem-pool/up1.sql new file mode 100644 index 0000000000..53c58db51c --- /dev/null +++ b/schema/crdb/add-nullable-filesystem-pool/up1.sql @@ -0,0 +1 @@ +ALTER TABLE omicron.public.inv_omicron_zone ADD COLUMN IF NOT EXISTS filesystem_pool UUID; diff --git a/schema/crdb/add-nullable-filesystem-pool/up2.sql b/schema/crdb/add-nullable-filesystem-pool/up2.sql new file mode 100644 index 0000000000..f1a3b71e30 --- /dev/null +++ b/schema/crdb/add-nullable-filesystem-pool/up2.sql @@ -0,0 +1 @@ +ALTER TABLE omicron.public.bp_omicron_zone ADD COLUMN IF NOT EXISTS filesystem_pool UUID; diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index c43a5b98e8..8bd7284f9c 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -3178,9 +3178,6 @@ CREATE TABLE IF NOT EXISTS omicron.public.inv_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, - -- TODO: This is nullable for backwards compatibility. - -- Eventually, that nullability should be removed. - filesystem_pool UUID, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone @@ -3233,6 +3230,10 @@ CREATE TABLE IF NOT EXISTS omicron.public.inv_omicron_zone ( snat_last_port INT4 CHECK (snat_last_port IS NULL OR snat_last_port BETWEEN 0 AND 65535), + -- TODO: This is nullable for backwards compatibility. + -- Eventually, that nullability should be removed. + filesystem_pool UUID, + PRIMARY KEY (inv_collection_id, id) ); @@ -3415,9 +3416,6 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( -- unique id for this zone id UUID NOT NULL, underlay_address INET NOT NULL, - -- TODO: This is nullable for backwards compatibility. - -- Eventually, that nullability should be removed. - filesystem_pool UUID, zone_type omicron.public.zone_type NOT NULL, -- SocketAddr of the "primary" service for this zone @@ -3482,6 +3480,10 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( -- created yet. external_ip_id UUID, + -- TODO: This is nullable for backwards compatibility. + -- Eventually, that nullability should be removed. + filesystem_pool UUID, + PRIMARY KEY (blueprint_id, id) ); @@ -4104,7 +4106,7 @@ INSERT INTO omicron.public.db_metadata ( version, target_version ) VALUES - (TRUE, NOW(), NOW(), '77.0.0', NULL) + (TRUE, NOW(), NOW(), '78.0.0', NULL) ON CONFLICT DO NOTHING; COMMIT; From 684932d0ab59a5ffc47cfd3e2ce430cb3b2dfd76 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 12:22:00 -0700 Subject: [PATCH 14/42] fmt --- dev-tools/reconfigurator-cli/tests/test_basic.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-tools/reconfigurator-cli/tests/test_basic.rs b/dev-tools/reconfigurator-cli/tests/test_basic.rs index ae3707657d..df8cf20b44 100644 --- a/dev-tools/reconfigurator-cli/tests/test_basic.rs +++ b/dev-tools/reconfigurator-cli/tests/test_basic.rs @@ -8,8 +8,8 @@ use expectorate::assert_contents; use nexus_db_queries::authn; use nexus_db_queries::authz; use nexus_db_queries::context::OpContext; -use nexus_test_utils::SLED_AGENT_UUID; use nexus_test_utils::resource_helpers::DiskTestBuilder; +use nexus_test_utils::SLED_AGENT_UUID; use nexus_test_utils_macros::nexus_test; use nexus_types::deployment::Blueprint; use nexus_types::deployment::UnstableReconfiguratorState; From 52406a6aa103f8c97def4f4093f55a4e25cbd56a Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 13:44:12 -0700 Subject: [PATCH 15/42] helios tests --- schema/all-zones-requests.json | 11 +++++++++++ sled-agent/src/services.rs | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/schema/all-zones-requests.json b/schema/all-zones-requests.json index 526e41376f..1a12e20c91 100644 --- a/schema/all-zones-requests.json +++ b/schema/all-zones-requests.json @@ -233,6 +233,17 @@ "zone_type" ], "properties": { + "filesystem_pool": { + "description": "The pool on which we'll place this zone's filesystem.\n\nNote that this is transient -- the sled agent is permitted to destroy the zone's dataset on this pool each time the zone is initialized.", + "anyOf": [ + { + "$ref": "#/definitions/ZpoolName" + }, + { + "type": "null" + } + ] + }, "id": { "type": "string", "format": "uuid" diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index dcb0ddfbb3..619a6b7e77 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -4362,6 +4362,7 @@ mod test { id, underlay_address: Ipv6Addr::LOCALHOST, zone_type, + filesystem_pool: None, }], }, Some(&tmp_dir), @@ -4393,6 +4394,7 @@ mod test { dns_servers: vec![], domain: None, }, + filesystem_pool: None, }], }, Some(&tmp_dir), @@ -4809,6 +4811,7 @@ mod test { dns_servers: vec![], domain: None, }, + filesystem_pool: None, }]; let tmp_dir = String::from(test_config.config_dir.path().as_str()); @@ -4837,6 +4840,7 @@ mod test { dns_servers: vec![], domain: None, }, + filesystem_pool: None, }); // Now try to apply that list with an older generation number. This From b1339d40e6a1ee352017116b25c6c6361276bd7c Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 24 Jun 2024 15:48:13 -0700 Subject: [PATCH 16/42] Cleanup --- dev-tools/reconfigurator-cli/tests/test_basic.rs | 2 +- nexus/db-queries/src/db/datastore/deployment.rs | 2 +- nexus/reconfigurator/execution/src/dns.rs | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/dev-tools/reconfigurator-cli/tests/test_basic.rs b/dev-tools/reconfigurator-cli/tests/test_basic.rs index df8cf20b44..efba4ee4f4 100644 --- a/dev-tools/reconfigurator-cli/tests/test_basic.rs +++ b/dev-tools/reconfigurator-cli/tests/test_basic.rs @@ -175,7 +175,7 @@ async fn test_blueprint_edit(cptestctx: &ControlPlaneTestContext) { // Load the new file and find the new blueprint name. let state2: UnstableReconfiguratorState = read_json(&saved_state2_path).unwrap(); - assert_eq!(state2.blueprints.len(), state1.blueprints.len() + 1); // XXX + assert_eq!(state2.blueprints.len(), state1.blueprints.len() + 1); let new_blueprint = state2.blueprints.into_iter().rev().next().unwrap(); assert_ne!(new_blueprint.id, blueprint.id); diff --git a/nexus/db-queries/src/db/datastore/deployment.rs b/nexus/db-queries/src/db/datastore/deployment.rs index 002df305ae..617413f172 100644 --- a/nexus/db-queries/src/db/datastore/deployment.rs +++ b/nexus/db-queries/src/db/datastore/deployment.rs @@ -504,7 +504,7 @@ impl DataStore { ) .filter(dsl::blueprint_id.eq(blueprint_id)) .select(BpOmicronZone::as_select()) - .load_async::(&*conn) + .load_async(&*conn) .await .map_err(|e| { public_error_from_diesel(e, ErrorHandler::Server) diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index b1fe239b41..2dbb3eff5c 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -1242,8 +1242,6 @@ mod test { .await .unwrap() }; - info!(log, "Sled rows"; "rows" => ?sled_rows); - info!(log, "Zpool rows"; "rows" => ?zpool_rows); let planning_input = { let mut builder = PlanningInputFromDb { sled_rows: &sled_rows, From 53027a379fbff81a028cf0427e4665f36bf2c773 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 25 Jun 2024 12:04:12 -0700 Subject: [PATCH 17/42] only pick in-service zpools from reconfigurator - regression test wanted --- nexus/reconfigurator/planning/src/blueprint_builder/builder.rs | 3 +-- nexus/types/src/deployment/planning_input.rs | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index 05fa63b9d4..2931801dcd 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -944,8 +944,7 @@ impl<'a> BlueprintBuilder<'a> { // No durable dataset exists; pick one randomly. resources - .zpools - .keys() + .all_zpools(ZpoolFilter::InService) .map(|id| ZpoolName::new_external(*id)) .choose(&mut rand::thread_rng()) .ok_or_else(|| Error::NoAvailableZpool { diff --git a/nexus/types/src/deployment/planning_input.rs b/nexus/types/src/deployment/planning_input.rs index 028f2301ba..3e8bc9aa2c 100644 --- a/nexus/types/src/deployment/planning_input.rs +++ b/nexus/types/src/deployment/planning_input.rs @@ -402,6 +402,8 @@ pub struct SledResources { /// /// (used to allocate storage for control plane zones with persistent /// storage) + // NOTE: I'd really like to make this private, to make it harder to + // accidentally pick a zpool that is not in-service. pub zpools: BTreeMap, /// the IPv6 subnet of this sled on the underlay network From ae4139961252c065e1b6849af8cc79530a3fd3bf Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 25 Jun 2024 13:41:29 -0700 Subject: [PATCH 18/42] Merge zpool selection fns --- Cargo.lock | 1 - nexus/inventory/Cargo.toml | 1 - .../planning/src/blueprint_builder/builder.rs | 98 ++++++------------- nexus/reconfigurator/planning/src/planner.rs | 2 +- nexus/types/src/deployment/zone_type.rs | 31 +----- 5 files changed, 35 insertions(+), 98 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f6773ea9c..f9ae4c29c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4720,7 +4720,6 @@ dependencies = [ "omicron-sled-agent", "omicron-uuid-kinds", "omicron-workspace-hack", - "rand 0.8.5", "regex", "reqwest", "serde_json", diff --git a/nexus/inventory/Cargo.toml b/nexus/inventory/Cargo.toml index 2fbfbace21..e185808caa 100644 --- a/nexus/inventory/Cargo.toml +++ b/nexus/inventory/Cargo.toml @@ -31,6 +31,5 @@ omicron-workspace-hack.workspace = true expectorate.workspace = true gateway-test-utils.workspace = true omicron-sled-agent.workspace = true -rand.workspace = true regex.workspace = true tokio.workspace = true diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index 2931801dcd..94276fd17b 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -6,7 +6,6 @@ use crate::ip_allocator::IpAllocator; use crate::planner::zone_needs_expungement; -use crate::planner::DiscretionaryOmicronZone; use crate::planner::ZoneExpungeReason; use anyhow::anyhow; use internal_dns::config::Host; @@ -50,7 +49,6 @@ use omicron_uuid_kinds::OmicronZoneUuid; use omicron_uuid_kinds::PhysicalDiskUuid; use omicron_uuid_kinds::SledUuid; use omicron_uuid_kinds::ZpoolUuid; -use rand::prelude::IteratorRandom; use rand::rngs::StdRng; use rand::SeedableRng; use sled_agent_client::ZoneKind; @@ -667,7 +665,7 @@ impl<'a> BlueprintBuilder<'a> { domain: None, }); let filesystem_pool = - self.sled_select_filesystem_pool(sled_id, &zone_type)?; + self.sled_select_zpool(sled_id, zone_type.kind())?; let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, @@ -720,10 +718,9 @@ impl<'a> BlueprintBuilder<'a> { let zone_type = BlueprintZoneType::Crucible(blueprint_zone_type::Crucible { address, - dataset: OmicronZoneDataset { pool_name }, + dataset: OmicronZoneDataset { pool_name: pool_name.clone() }, }); - let filesystem_pool = - self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let filesystem_pool = pool_name; let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, @@ -851,7 +848,7 @@ impl<'a> BlueprintBuilder<'a> { external_dns_servers: external_dns_servers.clone(), }); let filesystem_pool = - self.sled_select_filesystem_pool(sled_id, &zone_type)?; + self.sled_select_zpool(sled_id, zone_type.kind())?; let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, @@ -895,20 +892,19 @@ impl<'a> BlueprintBuilder<'a> { for _ in 0..num_crdb_to_add { let zone_id = self.rng.zone_rng.next(); let underlay_ip = self.sled_alloc_ip(sled_id)?; - let pool_name = self.sled_alloc_zpool( - sled_id, - DiscretionaryOmicronZone::CockroachDb, - )?; + let pool_name = + self.sled_select_zpool(sled_id, ZoneKind::CockroachDb)?; let port = omicron_common::address::COCKROACH_PORT; let address = SocketAddrV6::new(underlay_ip, port, 0, 0); let zone_type = BlueprintZoneType::CockroachDb( blueprint_zone_type::CockroachDb { address, - dataset: OmicronZoneDataset { pool_name }, + dataset: OmicronZoneDataset { + pool_name: pool_name.clone(), + }, }, ); - let filesystem_pool = - self.sled_select_filesystem_pool(sled_id, &zone_type)?; + let filesystem_pool = pool_name; let zone = BlueprintZoneConfig { disposition: BlueprintZoneDisposition::InService, @@ -923,36 +919,6 @@ impl<'a> BlueprintBuilder<'a> { Ok(EnsureMultiple::Changed { added: num_crdb_to_add, removed: 0 }) } - // Selects a filesystem zpool for this zone type. - // - // For zones containing durable datasets, the filesystem pools are - // co-located, and determistic. - // - // For zones without durable datasets, the filesystem pools are randomly - // selected. This random choice makes this function not idempotent. - fn sled_select_filesystem_pool( - &self, - sled_id: SledUuid, - zone_type: &BlueprintZoneType, - ) -> Result { - let resources = self.sled_resources(sled_id)?; - - // Transient filesystem is co-located with durable dataset. - if let Some(dataset) = zone_type.durable_dataset() { - return Ok(dataset.pool_name.clone()); - } - - // No durable dataset exists; pick one randomly. - resources - .all_zpools(ZpoolFilter::InService) - .map(|id| ZpoolName::new_external(*id)) - .choose(&mut rand::thread_rng()) - .ok_or_else(|| Error::NoAvailableZpool { - sled_id, - kind: zone_type.kind(), - }) - } - fn sled_add_zone( &mut self, sled_id: SledUuid, @@ -1009,44 +975,40 @@ impl<'a> BlueprintBuilder<'a> { allocator.alloc().ok_or(Error::OutOfAddresses { sled_id }) } - fn sled_alloc_zpool( - &mut self, + // Selects a zpools for this zone type. + // + // This zpool may be used for either durable storage or transient + // storage - the usage is up to the caller. + // + // If `zone_kind` already exists on `sled_id`, it is prevented + // from using the same zpool as exisitng zones with the same kind. + fn sled_select_zpool( + &self, sled_id: SledUuid, - kind: DiscretionaryOmicronZone, + zone_kind: ZoneKind, ) -> Result { - let resources = self.sled_resources(sled_id)?; + let all_in_service_zpools = + self.sled_resources(sled_id)?.all_zpools(ZpoolFilter::InService); - // We refuse to choose a zpool for a zone of a given `kind` if this - // sled already has a zone of that kind on the same zpool. Build up a - // set of invalid zpools for this sled/kind pair. + // We refuse to choose a zpool for a zone of a given `zone_kind` if this + // sled already has a durable zone of that kind on the same zpool. Build + // up a set of invalid zpools for this sled/kind pair. let mut skip_zpools = BTreeSet::new(); for zone_config in self.current_sled_zones(sled_id) { - match (kind, &zone_config.zone_type) { - ( - DiscretionaryOmicronZone::Nexus, - BlueprintZoneType::Nexus(_), - ) => { - // TODO handle this case once we track transient datasets + if let Some(zpool) = zone_config.zone_type.durable_zpool() { + if zone_kind == zone_config.zone_type.kind() { + skip_zpools.insert(zpool); } - ( - DiscretionaryOmicronZone::CockroachDb, - BlueprintZoneType::CockroachDb(crdb), - ) => { - skip_zpools.insert(&crdb.dataset.pool_name); - } - (DiscretionaryOmicronZone::Nexus, _) - | (DiscretionaryOmicronZone::CockroachDb, _) => (), } } - for &zpool_id in resources.all_zpools(ZpoolFilter::InService) { + for &zpool_id in all_in_service_zpools { let zpool_name = ZpoolName::new_external(zpool_id); if !skip_zpools.contains(&zpool_name) { return Ok(zpool_name); } } - - Err(Error::NoAvailableZpool { sled_id, kind: kind.into() }) + Err(Error::NoAvailableZpool { sled_id, kind: zone_kind }) } fn sled_resources( diff --git a/nexus/reconfigurator/planning/src/planner.rs b/nexus/reconfigurator/planning/src/planner.rs index 4e288e8d8a..a4756f8405 100644 --- a/nexus/reconfigurator/planning/src/planner.rs +++ b/nexus/reconfigurator/planning/src/planner.rs @@ -672,7 +672,7 @@ pub(crate) fn zone_needs_expungement( } // Should we expunge the zone because durable storage is gone? - if let Some(durable_storage_zpool) = zone_config.zone_type.zpool() { + if let Some(durable_storage_zpool) = zone_config.zone_type.durable_zpool() { let zpool_id = durable_storage_zpool.id(); if !sled_details.resources.zpool_is_provisionable(&zpool_id) { return Some(ZoneExpungeReason::DiskExpunged); diff --git a/nexus/types/src/deployment/zone_type.rs b/nexus/types/src/deployment/zone_type.rs index f2ac9d5a65..4c40bfc1de 100644 --- a/nexus/types/src/deployment/zone_type.rs +++ b/nexus/types/src/deployment/zone_type.rs @@ -35,33 +35,10 @@ pub enum BlueprintZoneType { impl BlueprintZoneType { /// Returns the zpool being used by this zone, if any. - pub fn zpool(&self) -> Option<&omicron_common::zpool_name::ZpoolName> { - match self { - BlueprintZoneType::ExternalDns( - blueprint_zone_type::ExternalDns { dataset, .. }, - ) - | BlueprintZoneType::Clickhouse( - blueprint_zone_type::Clickhouse { dataset, .. }, - ) - | BlueprintZoneType::ClickhouseKeeper( - blueprint_zone_type::ClickhouseKeeper { dataset, .. }, - ) - | BlueprintZoneType::CockroachDb( - blueprint_zone_type::CockroachDb { dataset, .. }, - ) - | BlueprintZoneType::Crucible(blueprint_zone_type::Crucible { - dataset, - .. - }) - | BlueprintZoneType::InternalDns( - blueprint_zone_type::InternalDns { dataset, .. }, - ) => Some(&dataset.pool_name), - BlueprintZoneType::BoundaryNtp(_) - | BlueprintZoneType::InternalNtp(_) - | BlueprintZoneType::Nexus(_) - | BlueprintZoneType::Oximeter(_) - | BlueprintZoneType::CruciblePantry(_) => None, - } + pub fn durable_zpool( + &self, + ) -> Option<&omicron_common::zpool_name::ZpoolName> { + self.durable_dataset().map(|dataset| &dataset.pool_name) } pub fn external_networking( From 5b380709c8ef4eb5a896a596c0c79d013d8e383e Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 25 Jun 2024 14:51:13 -0700 Subject: [PATCH 19/42] Add colocation test --- .../planning/src/blueprint_builder/builder.rs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index 94276fd17b..786cc436c6 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -1657,6 +1657,31 @@ pub mod test { logctx.cleanup_successful(); } + // Tests that provisioning zones with durable zones co-locates their zone filesystems. + #[test] + fn test_zone_filesystem_zpool_colocated() { + static TEST_NAME: &str = + "blueprint_builder_test_zone_filesystem_zpool_colocated"; + let logctx = test_setup_log(TEST_NAME); + let (_, _, blueprint) = + example(&logctx.log, TEST_NAME, DEFAULT_N_SLEDS); + + for (_, zone_config) in &blueprint.blueprint_zones { + for zone in &zone_config.zones { + // The pool should only be optional for backwards compatibility. + let filesystem_pool = zone + .filesystem_pool + .as_ref() + .expect("Should have filesystem pool"); + + if let Some(durable_pool) = zone.zone_type.durable_zpool() { + assert_eq!(durable_pool, filesystem_pool); + } + } + } + logctx.cleanup_successful(); + } + #[test] fn test_add_nexus_with_no_existing_nexus_zones() { static TEST_NAME: &str = From b883eeccd9bb277315e75c94936734adc6b8ebe4 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 27 Jun 2024 13:55:15 -0700 Subject: [PATCH 20/42] Ensure expunged disks are not in use after omicron_physical_disks_ensure --- sled-agent/src/dump_setup.rs | 30 ++++++++++ sled-agent/src/long_running_tasks.rs | 18 ++++-- sled-agent/src/services.rs | 4 +- sled-agent/src/sled_agent.rs | 34 ++++++++++- sled-agent/src/storage_monitor.rs | 60 ++++++++++++++++++- sled-storage/src/manager.rs | 2 +- sled-storage/src/resources.rs | 87 ++++++++++++++++++++++------ 7 files changed, 206 insertions(+), 29 deletions(-) diff --git a/sled-agent/src/dump_setup.rs b/sled-agent/src/dump_setup.rs index 02d3d41dd7..5f5618cce7 100644 --- a/sled-agent/src/dump_setup.rs +++ b/sled-agent/src/dump_setup.rs @@ -100,6 +100,7 @@ use std::ffi::OsString; use std::path::{Path, PathBuf}; use std::time::{Duration, SystemTime, SystemTimeError, UNIX_EPOCH}; use tokio::sync::mpsc::Receiver; +use tokio::sync::oneshot; use zone::{Zone, ZoneError}; const ZFS_PROP_USED: &str = "used"; @@ -175,6 +176,7 @@ enum DumpSetupCmd { dump_slices: Vec, debug_datasets: Vec, core_datasets: Vec, + update_complete_tx: oneshot::Sender<()>, }, } @@ -222,6 +224,12 @@ impl DumpSetup { Self { tx, mount_config, _poller, log } } + /// Given the set of all managed disks, updates the dump device location + /// for logs and dumps. + /// + /// This function returns only once this request has been handled, which + /// can be used as a signal by callers that any "old disks" are no longer + /// being used by [DumpSetup]. pub(crate) async fn update_dumpdev_setup( &self, disks: impl Iterator, @@ -279,16 +287,22 @@ impl DumpSetup { } } + let (tx, rx) = oneshot::channel(); if let Err(err) = self .tx .send(DumpSetupCmd::UpdateDumpdevSetup { dump_slices: m2_dump_slices, debug_datasets: u2_debug_datasets, core_datasets: m2_core_datasets, + update_complete_tx: tx, }) .await { error!(log, "DumpSetup channel closed: {:?}", err.0); + }; + + if let Err(err) = rx.await { + error!(log, "DumpSetup failed to await update"; "err" => ?err); } } } @@ -504,6 +518,14 @@ impl DumpSetupWorker { async fn poll_file_archival(mut self) { info!(self.log, "DumpSetup poll loop started."); + + // A oneshot which helps callers track when updates have propagated. + // + // This is particularly useful for disk expungement, when a caller + // wants to ensure that the dump device is no longer accessing an + // old device. + let mut last_update_complete_tx = None; + loop { match tokio::time::timeout(ARCHIVAL_INTERVAL, self.rx.recv()).await { @@ -511,7 +533,9 @@ impl DumpSetupWorker { dump_slices, debug_datasets, core_datasets, + update_complete_tx, })) => { + last_update_complete_tx = Some(update_complete_tx); self.update_disk_loadout( dump_slices, debug_datasets, @@ -537,6 +561,12 @@ impl DumpSetupWorker { if let Err(err) = self.archive_files().await { error!(self.log, "Failed to archive debug/dump files: {err:?}"); } + + if let Some(tx) = last_update_complete_tx.take() { + if let Err(err) = tx.send(()) { + error!(self.log, "DumpDevice failed to notify caller"; "err" => ?err); + } + } } } diff --git a/sled-agent/src/long_running_tasks.rs b/sled-agent/src/long_running_tasks.rs index faea94f552..e42c26591f 100644 --- a/sled-agent/src/long_running_tasks.rs +++ b/sled-agent/src/long_running_tasks.rs @@ -20,7 +20,7 @@ use crate::config::Config; use crate::hardware_monitor::HardwareMonitor; use crate::services::ServiceManager; use crate::sled_agent::SledAgent; -use crate::storage_monitor::StorageMonitor; +use crate::storage_monitor::{StorageMonitor, StorageMonitorHandle}; use crate::zone_bundle::{CleanupContext, ZoneBundler}; use bootstore::schemes::v0 as bootstore; use key_manager::{KeyManager, StorageKeyRequester}; @@ -46,6 +46,10 @@ pub struct LongRunningTaskHandles { /// for establishing zpools on disks and managing their datasets. pub storage_manager: StorageHandle, + /// A mehcanism for talking to the [`StorageMonitor`], which reacts to disk + /// changes and updates the dump devices. + pub storage_monitor_handle: StorageMonitorHandle, + /// A mechanism for interacting with the hardware device tree pub hardware_manager: HardwareManager, @@ -71,7 +75,8 @@ pub async fn spawn_all_longrunning_tasks( let mut storage_manager = spawn_storage_manager(log, storage_key_requester.clone()); - spawn_storage_monitor(log, storage_manager.clone()); + let storage_monitor_handle = + spawn_storage_monitor(log, storage_manager.clone()); let nongimlet_observed_disks = config.nongimlet_observed_disks.clone().unwrap_or(vec![]); @@ -106,6 +111,7 @@ pub async fn spawn_all_longrunning_tasks( LongRunningTaskHandles { storage_key_requester, storage_manager, + storage_monitor_handle, hardware_manager, bootstore, zone_bundler, @@ -137,13 +143,17 @@ fn spawn_storage_manager( handle } -fn spawn_storage_monitor(log: &Logger, storage_handle: StorageHandle) { +fn spawn_storage_monitor( + log: &Logger, + storage_handle: StorageHandle, +) -> StorageMonitorHandle { info!(log, "Starting StorageMonitor"); - let storage_monitor = + let (storage_monitor, handle) = StorageMonitor::new(log, MountConfig::default(), storage_handle); tokio::spawn(async move { storage_monitor.run().await; }); + handle } async fn spawn_hardware_manager( diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index f4e9f8da0a..8058d3acae 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -1436,7 +1436,7 @@ impl ServiceManager { let all_disks = self.inner.storage.get_latest_disks().await; if let Some((_, boot_zpool)) = all_disks.boot_disk() { zone_image_paths.push(boot_zpool.dataset_mountpoint( - &all_disks.mount_config.root, + &all_disks.mount_config().root, INSTALL_DATASET, )); } @@ -3172,7 +3172,7 @@ impl ServiceManager { // Collect information that's necessary to start new zones let storage = self.inner.storage.get_latest_disks().await; - let mount_config = &storage.mount_config; + let mount_config = storage.mount_config(); let all_u2_pools = storage.all_u2_zpools(); let time_is_synchronized = match self.timesync_get_locked(&existing_zones).await { diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index 7f05d55e60..4e2efa5657 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -27,6 +27,7 @@ use crate::params::{ }; use crate::probe_manager::ProbeManager; use crate::services::{self, ServiceManager}; +use crate::storage_monitor::StorageMonitorHandle; use crate::updates::{ConfigUpdates, UpdateManager}; use crate::vmm_reservoir::{ReservoirMode, VmmReservoirManager}; use crate::zone_bundle; @@ -123,6 +124,9 @@ pub enum Error { #[error("Error managing storage: {0}")] Storage(#[from] sled_storage::error::Error), + #[error("Error monitoring storage: {0}")] + StorageMonitor(#[from] crate::storage_monitor::Error), + #[error("Error updating: {0}")] Download(#[from] crate::updates::Error), @@ -277,6 +281,10 @@ struct SledAgentInner { // Component of Sled Agent responsible for storage and dataset management. storage: StorageHandle, + // Component of Sled Agent responsible for monitoring storage and updating + // dump devices. + storage_monitor: StorageMonitorHandle, + // Component of Sled Agent responsible for managing Propolis instances. instances: InstanceManager, @@ -562,6 +570,9 @@ impl SledAgent { subnet: request.body.subnet, start_request: request, storage: long_running_task_handles.storage_manager.clone(), + storage_monitor: long_running_task_handles + .storage_monitor_handle + .clone(), instances, probes, hardware: long_running_task_handles.hardware_manager.clone(), @@ -808,7 +819,28 @@ impl SledAgent { &self, config: OmicronPhysicalDisksConfig, ) -> Result { - Ok(self.storage().omicron_physical_disks_ensure(config).await?) + // First, tell the storage subsystem which disks should be managed. + let disk_result = + self.storage().omicron_physical_disks_ensure(config).await?; + + // This generation is at LEAST as high as our last call through + // omicron_physical_disks_ensure. It may actually be higher, if a + // concurrent operation occurred. + // + // Now: Monitor downstream subsystems which use physical disks, and + // ensure they're at least using "our_gen". + let latest_disks = self.storage().get_latest_disks().await; + let our_gen = latest_disks.generation(); + + // Ensure that the StorageMonitor, and the dump devices, have committed + // to start using new disks and stop using old ones. + self.inner.storage_monitor.await_generation(*our_gen).await?; + + // - TODO: Update Zone bundles? + // - TODO: Mark probes failed? + // - TODO: Mark instances failed? + + Ok(disk_result) } /// List the Omicron zone configuration that's currently running diff --git a/sled-agent/src/storage_monitor.rs b/sled-agent/src/storage_monitor.rs index 8cb63e31f8..11883adcd2 100644 --- a/sled-agent/src/storage_monitor.rs +++ b/sled-agent/src/storage_monitor.rs @@ -7,10 +7,18 @@ //! code. use crate::dump_setup::DumpSetup; +use omicron_common::api::external::Generation; use sled_storage::config::MountConfig; use sled_storage::manager::StorageHandle; use sled_storage::resources::AllDisks; use slog::Logger; +use tokio::sync::watch; + +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("Storage Monitor no longer running")] + NotRunning, +} pub struct StorageMonitor { log: Logger, @@ -18,6 +26,46 @@ pub struct StorageMonitor { // Invokes dumpadm(8) and savecore(8) when new disks are encountered dump_setup: DumpSetup, + + tx: watch::Sender, +} + +/// Emits status about storage monitoring. +#[derive(Debug, Clone)] +pub struct StorageMonitorStatus { + /// The latest generation of physical disks to be processed + /// by the storage monitor. + pub latest_gen: Option, +} + +impl StorageMonitorStatus { + fn new() -> Self { + Self { latest_gen: None } + } +} + +#[derive(Clone)] +pub struct StorageMonitorHandle { + rx: watch::Receiver, +} + +impl StorageMonitorHandle { + pub async fn await_generation( + &self, + wanted: Generation, + ) -> Result<(), Error> { + self.rx + .clone() + .wait_for(|status| { + let Some(observed) = status.latest_gen else { + return false; + }; + return observed >= wanted; + }) + .await + .map_err(|_| Error::NotRunning)?; + Ok(()) + } } impl StorageMonitor { @@ -25,10 +73,14 @@ impl StorageMonitor { log: &Logger, mount_config: MountConfig, storage_manager: StorageHandle, - ) -> StorageMonitor { + ) -> (StorageMonitor, StorageMonitorHandle) { let dump_setup = DumpSetup::new(&log, mount_config); let log = log.new(o!("component" => "StorageMonitor")); - StorageMonitor { log, storage_manager, dump_setup } + let (tx, rx) = watch::channel(StorageMonitorStatus::new()); + ( + StorageMonitor { log, storage_manager, dump_setup, tx }, + StorageMonitorHandle { rx }, + ) } /// Run the main receive loop of the `StorageMonitor` @@ -50,10 +102,14 @@ impl StorageMonitor { } async fn handle_resource_update(&mut self, updated_disks: AllDisks) { + let generation = updated_disks.generation(); self.dump_setup .update_dumpdev_setup( updated_disks.iter_managed().map(|(_id, disk)| disk), ) .await; + self.tx.send_replace(StorageMonitorStatus { + latest_gen: Some(*generation), + }); } } diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 4f45f1771e..fde799c0a5 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -583,7 +583,7 @@ impl StorageManager { synthetic_config: &mut Vec, ) -> Result { let mut changed = false; - for (identity, disk) in self.resources.disks().values.iter() { + for (identity, disk) in self.resources.disks().iter_all_inner() { match disk { crate::resources::ManagedDisk::Unmanaged(raw) => { let zpool_path = match raw.u2_zpool_path() { diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index b44c8e5b53..47f544cdb8 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -12,6 +12,7 @@ use camino::Utf8PathBuf; use cfg_if::cfg_if; use illumos_utils::zpool::ZpoolName; use key_manager::StorageKeyRequester; +use omicron_common::api::external::Generation; use omicron_common::disk::DiskIdentity; use omicron_uuid_kinds::ZpoolUuid; use schemars::JsonSchema; @@ -102,7 +103,7 @@ impl DisksManagementResult { // the request of the broader control plane. This enum encompasses that duality, // by representing all disks that can exist, managed or not. #[derive(Debug, Clone, PartialEq, Eq)] -pub enum ManagedDisk { +pub(crate) enum ManagedDisk { // A disk explicitly managed by the control plane. // // This includes U.2s which Nexus has told us to format and use. @@ -121,6 +122,12 @@ pub enum ManagedDisk { Unmanaged(RawDisk), } +#[derive(Debug, Clone, Eq, PartialEq)] +struct AllDisksInner { + generation: Generation, + values: BTreeMap, +} + /// The disks, keyed by their identity, managed by the sled agent. /// /// This state is owned by [`crate::manager::StorageManager`], through @@ -139,16 +146,25 @@ pub enum ManagedDisk { /// gets cloned or dropped. #[derive(Debug, Clone, Eq, PartialEq)] pub struct AllDisks { - pub values: Arc>, - pub mount_config: MountConfig, + inner: Arc, + mount_config: MountConfig, } impl AllDisks { + /// Returns the latest generation number of this set of disks. + pub fn generation(&self) -> &Generation { + &self.inner.generation + } + + pub fn mount_config(&self) -> &MountConfig { + &self.mount_config + } + /// Returns the identity of the boot disk. /// /// If this returns `None`, we have not processed the boot disk yet. pub fn boot_disk(&self) -> Option<(DiskIdentity, ZpoolName)> { - for (id, disk) in self.values.iter() { + for (id, disk) in self.inner.values.iter() { if let ManagedDisk::ImplicitlyManaged(disk) = disk { if disk.is_boot_disk() { return Some((id.clone(), disk.zpool_name().clone())); @@ -190,7 +206,8 @@ impl AllDisks { /// Returns all zpools managed by the control plane pub fn get_all_zpools(&self) -> Vec<(ZpoolName, DiskVariant)> { - self.values + self.inner + .values .values() .filter_map(|disk| match disk { ManagedDisk::ExplicitlyManaged(disk) @@ -206,7 +223,8 @@ impl AllDisks { // // Only returns zpools from disks actively being managed. fn all_zpools(&self, variant: DiskVariant) -> Vec { - self.values + self.inner + .values .values() .filter_map(|disk| match disk { ManagedDisk::ExplicitlyManaged(disk) @@ -231,7 +249,7 @@ impl AllDisks { /// Returns an iterator over all managed disks. pub fn iter_managed(&self) -> impl Iterator { - self.values.iter().filter_map(|(identity, disk)| match disk { + self.inner.values.iter().filter_map(|(identity, disk)| match disk { ManagedDisk::ExplicitlyManaged(disk) => Some((identity, disk)), ManagedDisk::ImplicitlyManaged(disk) => Some((identity, disk)), _ => None, @@ -239,10 +257,24 @@ impl AllDisks { } /// Returns an iterator over all disks, managed or not. + /// + /// Additionally identifies details of "how the disk is managed". + pub(crate) fn iter_all_inner( + &self, + ) -> impl Iterator { + self.inner.values.iter() + } + + /// Returns an iterator over all disks, managed or not. + // Intentionally avoids returning the "ManagedDisk" structure to callers, to + // hide the details of management. + // + // If this is important to the caller, they should use + // [Self::iter_all_inner]. pub fn iter_all( &self, ) -> impl Iterator { - self.values.iter().map(|(identity, disk)| match disk { + self.inner.values.iter().map(|(identity, disk)| match disk { ManagedDisk::ExplicitlyManaged(disk) => { (identity, disk.variant(), disk.slot()) } @@ -283,8 +315,17 @@ impl StorageResources { mount_config: MountConfig, key_requester: StorageKeyRequester, ) -> Self { - let disks = - AllDisks { values: Arc::new(BTreeMap::new()), mount_config }; + let disks = AllDisks { + inner: Arc::new(AllDisksInner { + // TODO: UPDATE THIS GENERATION NUMBER + // + // TODO: READ THIS GENERATION NUMBER TO SEE + // IF UPDATES HAVE PROPAGATED + generation: Generation::new(), + values: BTreeMap::new(), + }), + mount_config, + }; Self { log: log.new(o!("component" => "StorageResources")), key_requester, @@ -335,14 +376,14 @@ impl StorageResources { &mut self, ) -> DisksManagementResult { let mut updated = false; - let disks = Arc::make_mut(&mut self.disks.values); + let disks = Arc::make_mut(&mut self.disks.inner); info!(self.log, "Synchronizing disk managment"); // "Unmanage" all disks no longer requested by the control plane. // // This updates the reported sets of "managed" disks, and performs no // other modifications to the underlying storage. - for (identity, managed_disk) in &mut *disks { + for (identity, managed_disk) in &mut disks.values { match managed_disk { // This leaves the presence of the disk still in "Self", but // downgrades the disk to an unmanaged status. @@ -364,7 +405,7 @@ impl StorageResources { // configuration. let mut result = DisksManagementResult::default(); for (identity, config) in &self.control_plane_disks { - let Some(managed_disk) = disks.get_mut(identity) else { + let Some(managed_disk) = disks.values.get_mut(identity) else { warn!( self.log, "Control plane disk requested, but not detected within sled"; @@ -438,6 +479,7 @@ impl StorageResources { } if updated { + disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } @@ -492,15 +534,17 @@ impl StorageResources { ) -> Result<(), Error> { let disk_identity = disk.identity().clone(); info!(self.log, "Inserting disk"; "identity" => ?disk_identity); - if self.disks.values.contains_key(&disk_identity) { + if self.disks.inner.values.contains_key(&disk_identity) { info!(self.log, "Disk already exists"; "identity" => ?disk_identity); return Ok(()); } - let disks = Arc::make_mut(&mut self.disks.values); + let disks = Arc::make_mut(&mut self.disks.inner); match disk.variant() { DiskVariant::U2 => { - disks.insert(disk_identity, ManagedDisk::Unmanaged(disk)); + disks + .values + .insert(disk_identity, ManagedDisk::Unmanaged(disk)); } DiskVariant::M2 => { let managed_disk = Disk::new( @@ -511,12 +555,14 @@ impl StorageResources { Some(&self.key_requester), ) .await?; - disks.insert( + disks.values.insert( disk_identity, ManagedDisk::ImplicitlyManaged(managed_disk), ); } } + + disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); Ok(()) @@ -530,7 +576,7 @@ impl StorageResources { /// are only added once. pub(crate) fn remove_disk(&mut self, id: &DiskIdentity) { info!(self.log, "Removing disk"; "identity" => ?id); - let Some(entry) = self.disks.values.get(id) else { + let Some(entry) = self.disks.inner.values.get(id) else { info!(self.log, "Disk not found by id, exiting"; "identity" => ?id); return; }; @@ -557,7 +603,10 @@ impl StorageResources { } // Safe to unwrap as we just checked the key existed above - Arc::make_mut(&mut self.disks.values).remove(id).unwrap(); + let disks = Arc::make_mut(&mut self.disks.inner); + disks.values.remove(id).unwrap(); + + disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } } From 83c7cdf7453739007b863889963acabc4474924c Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 27 Jun 2024 16:36:31 -0700 Subject: [PATCH 21/42] Fix tests, add comments --- sled-storage/src/manager.rs | 11 ++++++++--- sled-storage/src/resources.rs | 12 ++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index fde799c0a5..46735dc50e 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -1217,7 +1217,8 @@ mod tests { let expected: HashSet<_> = disks.iter().skip(1).take(3).map(|d| d.identity()).collect(); - let actual: HashSet<_> = all_disks.values.keys().collect(); + let actual: HashSet<_> = + all_disks.iter_all().map(|(identity, _, _)| identity).collect(); assert_eq!(expected, actual); // Ensure the same set of disks and make sure no change occurs @@ -1232,7 +1233,10 @@ mod tests { .await .unwrap(); let all_disks2 = harness.handle().get_latest_disks().await; - assert_eq!(all_disks.values, all_disks2.values); + assert_eq!( + all_disks.iter_all().collect::>(), + all_disks2.iter_all().collect::>() + ); // Add a disjoint set of disks and see that only they come through harness @@ -1247,7 +1251,8 @@ mod tests { let all_disks = harness.handle().get_latest_disks().await; let expected: HashSet<_> = disks.iter().skip(4).take(5).map(|d| d.identity()).collect(); - let actual: HashSet<_> = all_disks.values.keys().collect(); + let actual: HashSet<_> = + all_disks.iter_all().map(|(identity, _, _)| identity).collect(); assert_eq!(expected, actual); harness.cleanup().await; diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index 47f544cdb8..87d9056082 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -124,6 +124,14 @@ pub(crate) enum ManagedDisk { #[derive(Debug, Clone, Eq, PartialEq)] struct AllDisksInner { + // NOTE: When the set of "omicron physical disks" are set through the API, + // a generation number is actually passed via [OmicronPhysicalDisksConfig]. + // + // This is *not* that same generation number, but probably could be? + // + // Technically, this number also bumps up any time the set of + // locally-detected disks has changed, but it's just treated as an opaque + // value to track when changes have propagated throughout the system. generation: Generation, values: BTreeMap, } @@ -317,10 +325,6 @@ impl StorageResources { ) -> Self { let disks = AllDisks { inner: Arc::new(AllDisksInner { - // TODO: UPDATE THIS GENERATION NUMBER - // - // TODO: READ THIS GENERATION NUMBER TO SEE - // IF UPDATES HAVE PROPAGATED generation: Generation::new(), values: BTreeMap::new(), }), From 6869d92926f3782507940ba64ec91c9b3257d233 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Thu, 27 Jun 2024 17:51:15 -0700 Subject: [PATCH 22/42] Zone bundler --- sled-agent/src/long_running_tasks.rs | 2 +- sled-agent/src/sled_agent.rs | 5 ++++- sled-agent/src/zone_bundle.rs | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/sled-agent/src/long_running_tasks.rs b/sled-agent/src/long_running_tasks.rs index e42c26591f..e920ffc3fc 100644 --- a/sled-agent/src/long_running_tasks.rs +++ b/sled-agent/src/long_running_tasks.rs @@ -46,7 +46,7 @@ pub struct LongRunningTaskHandles { /// for establishing zpools on disks and managing their datasets. pub storage_manager: StorageHandle, - /// A mehcanism for talking to the [`StorageMonitor`], which reacts to disk + /// A mechanism for talking to the [`StorageMonitor`], which reacts to disk /// changes and updates the dump devices. pub storage_monitor_handle: StorageMonitorHandle, diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index 4e2efa5657..e596dbe049 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -836,7 +836,10 @@ impl SledAgent { // to start using new disks and stop using old ones. self.inner.storage_monitor.await_generation(*our_gen).await?; - // - TODO: Update Zone bundles? + // Ensure that the ZoneBundler, if it was creating a bundle referencing + // the old U.2s, has stopped using them. + self.inner.zone_bundler.await_completion_of_prior_bundles().await; + // - TODO: Mark probes failed? // - TODO: Mark instances failed? diff --git a/sled-agent/src/zone_bundle.rs b/sled-agent/src/zone_bundle.rs index 16147e5957..cd9f36fe3a 100644 --- a/sled-agent/src/zone_bundle.rs +++ b/sled-agent/src/zone_bundle.rs @@ -256,6 +256,9 @@ impl Inner { // exist; and returns those. async fn bundle_directories(&self) -> Vec { let resources = self.storage_handle.get_latest_disks().await; + // NOTE: These bundle directories are always stored on M.2s, so we don't + // need to worry about synchronizing with U.2 disk expungement at the + // callsite. let expected = resources.all_zone_bundle_directories(); let mut out = Vec::with_capacity(expected.len()); for each in expected.into_iter() { @@ -426,6 +429,10 @@ impl ZoneBundler { zone: &RunningZone, cause: ZoneBundleCause, ) -> Result { + // NOTE: [Self::await_completion_of_prior_bundles] relies on this lock + // being held across this whole function. If we want more concurrency, + // we'll need to add a barrier-like mechanism to let callers know when + // prior bundles have completed. let inner = self.inner.lock().await; let storage_dirs = inner.bundle_directories().await; let resources = inner.storage_handle.get_latest_disks().await; @@ -443,6 +450,14 @@ impl ZoneBundler { create(&self.log, zone, &context).await } + /// Awaits the completion of all prior calls to [ZoneBundler::create]. + /// + /// This is critical for disk expungement, which wants to ensure that the + /// Sled Agent is no longer using devices after they have been expunged. + pub async fn await_completion_of_prior_bundles(&self) { + let _ = self.inner.lock().await; + } + /// Return the paths for all bundles of the provided zone and ID. pub async fn bundle_paths( &self, From 42921588c0251bd0c316ddb53d1ea865944ef501 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 12:16:50 -0700 Subject: [PATCH 23/42] Plumb 'PathInPool' structure --- illumos-utils/src/running_zone.rs | 181 +++++++++++++++--------------- illumos-utils/src/zone.rs | 6 +- illumos-utils/src/zpool.rs | 15 ++- sled-agent/src/instance.rs | 14 ++- sled-agent/src/probe_manager.rs | 13 ++- sled-agent/src/services.rs | 29 +++-- sled-agent/src/zone_bundle.rs | 1 + sled-storage/src/resources.rs | 12 +- 8 files changed, 154 insertions(+), 117 deletions(-) diff --git a/illumos-utils/src/running_zone.rs b/illumos-utils/src/running_zone.rs index c529a1b6d4..e3105f089c 100644 --- a/illumos-utils/src/running_zone.rs +++ b/illumos-utils/src/running_zone.rs @@ -10,6 +10,7 @@ use crate::link::{Link, VnicAllocator}; use crate::opte::{Port, PortTicket}; use crate::svc::wait_for_service; use crate::zone::{AddressRequest, IPADM, ZONE_PREFIX}; +use crate::zpool::PathInPool; use camino::{Utf8Path, Utf8PathBuf}; use camino_tempfile::Utf8TempDir; use ipnetwork::IpNetwork; @@ -806,85 +807,85 @@ impl RunningZone { /// returned. /// - Other errors may be returned attempting to look up and accessing an /// address on the zone. - pub async fn get( - log: &Logger, - vnic_allocator: &VnicAllocator, - zone_prefix: &str, - addrtype: AddressRequest, - ) -> Result { - let zone_info = Zones::get() - .await - .map_err(|err| GetZoneError::GetZones { - prefix: zone_prefix.to_string(), - err, - })? - .into_iter() - .find(|zone_info| zone_info.name().starts_with(&zone_prefix)) - .ok_or_else(|| GetZoneError::NotFound { - prefix: zone_prefix.to_string(), - })?; - - if zone_info.state() != zone::State::Running { - return Err(GetZoneError::NotRunning { - name: zone_info.name().to_string(), - state: zone_info.state(), - }); - } - - let zone_name = zone_info.name(); - let vnic_name = - Zones::get_control_interface(zone_name).map_err(|err| { - GetZoneError::ControlInterface { - name: zone_name.to_string(), - err, - } - })?; - let addrobj = AddrObject::new_control(&vnic_name).map_err(|err| { - GetZoneError::AddrObject { name: zone_name.to_string(), err } - })?; - Zones::ensure_address(Some(zone_name), &addrobj, addrtype).map_err( - |err| GetZoneError::EnsureAddress { - name: zone_name.to_string(), - err, - }, - )?; - - let control_vnic = vnic_allocator - .wrap_existing(vnic_name) - .expect("Failed to wrap valid control VNIC"); - - // The bootstrap address for a running zone never changes, - // so there's no need to call `Zones::ensure_address`. - // Currently, only the switch zone has a bootstrap interface. - let bootstrap_vnic = Zones::get_bootstrap_interface(zone_name) - .map_err(|err| GetZoneError::BootstrapInterface { - name: zone_name.to_string(), - err, - })? - .map(|name| { - vnic_allocator - .wrap_existing(name) - .expect("Failed to wrap valid bootstrap VNIC") - }); - - Ok(Self { - id: zone_info.id().map(|x| { - x.try_into().expect("zoneid_t is expected to be an i32") - }), - inner: InstalledZone { - log: log.new(o!("zone" => zone_name.to_string())), - zonepath: zone_info.path().to_path_buf().try_into()?, - name: zone_name.to_string(), - control_vnic, - // TODO(https://github.com/oxidecomputer/omicron/issues/725) - // - // Re-initialize guest_vnic state by inspecting the zone. - opte_ports: vec![], - links: vec![], - bootstrap_vnic, - }, - }) - } + // pub async fn get( + // log: &Logger, + // vnic_allocator: &VnicAllocator, + // zone_prefix: &str, + // addrtype: AddressRequest, + // ) -> Result { + // let zone_info = Zones::get() + // .await + // .map_err(|err| GetZoneError::GetZones { + // prefix: zone_prefix.to_string(), + // err, + // })? + // .into_iter() + // .find(|zone_info| zone_info.name().starts_with(&zone_prefix)) + // .ok_or_else(|| GetZoneError::NotFound { + // prefix: zone_prefix.to_string(), + // })?; + // + // if zone_info.state() != zone::State::Running { + // return Err(GetZoneError::NotRunning { + // name: zone_info.name().to_string(), + // state: zone_info.state(), + // }); + // } + // + // let zone_name = zone_info.name(); + // let vnic_name = + // Zones::get_control_interface(zone_name).map_err(|err| { + // GetZoneError::ControlInterface { + // name: zone_name.to_string(), + // err, + // } + // })?; + // let addrobj = AddrObject::new_control(&vnic_name).map_err(|err| { + // GetZoneError::AddrObject { name: zone_name.to_string(), err } + // })?; + // Zones::ensure_address(Some(zone_name), &addrobj, addrtype).map_err( + // |err| GetZoneError::EnsureAddress { + // name: zone_name.to_string(), + // err, + // }, + // )?; + // + // let control_vnic = vnic_allocator + // .wrap_existing(vnic_name) + // .expect("Failed to wrap valid control VNIC"); + // + // // The bootstrap address for a running zone never changes, + // // so there's no need to call `Zones::ensure_address`. + // // Currently, only the switch zone has a bootstrap interface. + // let bootstrap_vnic = Zones::get_bootstrap_interface(zone_name) + // .map_err(|err| GetZoneError::BootstrapInterface { + // name: zone_name.to_string(), + // err, + // })? + // .map(|name| { + // vnic_allocator + // .wrap_existing(name) + // .expect("Failed to wrap valid bootstrap VNIC") + // }); + // + // Ok(Self { + // id: zone_info.id().map(|x| { + // x.try_into().expect("zoneid_t is expected to be an i32") + // }), + // inner: InstalledZone { + // log: log.new(o!("zone" => zone_name.to_string())), + // zonepath: zone_info.path().to_path_buf().try_into()?, + // name: zone_name.to_string(), + // control_vnic, + // // TODO(https://github.com/oxidecomputer/omicron/issues/725) + // // + // // Re-initialize guest_vnic state by inspecting the zone. + // opte_ports: vec![], + // links: vec![], + // bootstrap_vnic, + // }, + // }) + // } /// Return references to the OPTE ports for this zone. pub fn opte_ports(&self) -> impl Iterator { @@ -1081,7 +1082,7 @@ pub struct InstalledZone { log: Logger, // Filesystem path of the zone - zonepath: Utf8PathBuf, + zonepath: PathInPool, // Name of the Zone. name: String, @@ -1131,7 +1132,7 @@ impl InstalledZone { /// Returns the filesystem path to the zonepath pub fn zonepath(&self) -> &Utf8Path { - &self.zonepath + &self.zonepath.path } pub fn site_profile_xml_path(&self) -> Utf8PathBuf { @@ -1147,7 +1148,7 @@ impl InstalledZone { /// Returns the filesystem path to the zone's root in the GZ. pub fn root(&self) -> Utf8PathBuf { - self.zonepath.join(Self::ROOT_FS_PATH) + self.zonepath.path.join(Self::ROOT_FS_PATH) } } @@ -1198,7 +1199,7 @@ pub struct ZoneBuilder<'a> { /// Allocates the NIC used for control plane communication. underlay_vnic_allocator: Option<&'a VnicAllocator>, /// Filesystem path at which the installed zone will reside. - zone_root_path: Option<&'a Utf8Path>, + zone_root_path: Option, /// The directories that will be searched for the image tarball for the /// provided zone type ([`Self::with_zone_type`]). zone_image_paths: Option<&'a [Utf8PathBuf]>, @@ -1251,7 +1252,7 @@ impl<'a> ZoneBuilder<'a> { } /// Filesystem path at which the installed zone will reside. - pub fn with_zone_root_path(mut self, root_path: &'a Utf8Path) -> Self { + pub fn with_zone_root_path(mut self, root_path: PathInPool) -> Self { self.zone_root_path = Some(root_path); self } @@ -1345,8 +1346,11 @@ impl<'a> ZoneBuilder<'a> { self.zone_type?, self.unique_name, ); - let zonepath = temp_dir - .join(self.zone_root_path?.strip_prefix("/").unwrap()) + let mut zonepath = self.zone_root_path?; + zonepath.path = temp_dir + .join( + zonepath.path.strip_prefix("/").unwrap() + ) .join(&full_zone_name); let iz = InstalledZone { log: self.log?, @@ -1376,7 +1380,7 @@ impl<'a> ZoneBuilder<'a> { let Self { log: Some(log), underlay_vnic_allocator: Some(underlay_vnic_allocator), - zone_root_path: Some(zone_root_path), + zone_root_path: Some(mut zone_root_path), zone_image_paths: Some(zone_image_paths), zone_type: Some(zone_type), unique_name, @@ -1440,6 +1444,7 @@ impl<'a> ZoneBuilder<'a> { net_device_names.sort(); net_device_names.dedup(); + zone_root_path.path = zone_root_path.path.join(&full_zone_name); Zones::install_omicron_zone( &log, &zone_root_path, @@ -1460,7 +1465,7 @@ impl<'a> ZoneBuilder<'a> { Ok(InstalledZone { log: log.new(o!("zone" => full_zone_name.clone())), - zonepath: zone_root_path.join(&full_zone_name), + zonepath: zone_root_path, name: full_zone_name, control_vnic, bootstrap_vnic, diff --git a/illumos-utils/src/zone.rs b/illumos-utils/src/zone.rs index 3f749fc352..7ba40af043 100644 --- a/illumos-utils/src/zone.rs +++ b/illumos-utils/src/zone.rs @@ -14,6 +14,7 @@ use std::net::{IpAddr, Ipv6Addr}; use crate::addrobj::AddrObject; use crate::dladm::{EtherstubVnic, VNIC_PREFIX_BOOTSTRAP, VNIC_PREFIX_CONTROL}; +use crate::zpool::PathInPool; use crate::{execute, PFEXEC}; use omicron_common::address::SLED_PREFIX; @@ -282,7 +283,7 @@ impl Zones { #[allow(clippy::too_many_arguments)] pub async fn install_omicron_zone( log: &Logger, - zone_root_path: &Utf8Path, + zone_root_path: &PathInPool, zone_name: &str, zone_image: &Utf8Path, datasets: &[zone::Dataset], @@ -319,10 +320,9 @@ impl Zones { true, zone::CreationOptions::Blank, ); - let path = zone_root_path.join(zone_name); cfg.get_global() .set_brand("omicron1") - .set_path(&path) + .set_path(&zone_root_path.path) .set_autoboot(false) .set_ip_type(zone::IpType::Exclusive); if !limit_priv.is_empty() { diff --git a/illumos-utils/src/zpool.rs b/illumos-utils/src/zpool.rs index fa93760f99..5dabbdecc7 100644 --- a/illumos-utils/src/zpool.rs +++ b/illumos-utils/src/zpool.rs @@ -5,7 +5,7 @@ //! Utilities for managing Zpools. use crate::{execute, ExecutionError, PFEXEC}; -use camino::Utf8Path; +use camino::{Utf8Path, Utf8PathBuf}; use std::str::FromStr; pub use omicron_common::zpool_name::ZpoolName; @@ -181,6 +181,19 @@ impl FromStr for ZpoolInfo { /// Wraps commands for interacting with ZFS pools. pub struct Zpool {} +/// A path which exists within a pool. +/// +/// By storing these types together, it's possible to answer +/// whether or not a path exists on a particular device. +// Technically we could re-derive the pool name from the path, +// but that involves some string parsing, and honestly I'd just +// Rather Not. +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct PathInPool { + pub pool: Option, + pub path: Utf8PathBuf, +} + #[cfg_attr(any(test, feature = "testing"), mockall::automock, allow(dead_code))] impl Zpool { pub fn create( diff --git a/sled-agent/src/instance.rs b/sled-agent/src/instance.rs index ec4d503e7b..021b326dde 100644 --- a/sled-agent/src/instance.rs +++ b/sled-agent/src/instance.rs @@ -41,7 +41,7 @@ use omicron_common::api::internal::shared::{ use omicron_common::backoff; use omicron_uuid_kinds::{GenericUuid, InstanceUuid, PropolisUuid}; use propolis_client::Client as PropolisClient; -use rand::prelude::SliceRandom; +use rand::prelude::IteratorRandom; use rand::SeedableRng; use sled_storage::dataset::ZONE_DATASET; use sled_storage::manager::StorageHandle; @@ -1343,20 +1343,22 @@ impl InstanceRunner { // configured VNICs. let zname = propolis_zone_name(self.propolis_id()); let mut rng = rand::rngs::StdRng::from_entropy(); - let root = self + let latest_disks = self .storage .get_latest_disks() .await - .all_u2_mountpoints(ZONE_DATASET) + .all_u2_mountpoints(ZONE_DATASET); + + let root = latest_disks + .into_iter() .choose(&mut rng) - .ok_or_else(|| Error::U2NotFound)? - .clone(); + .ok_or_else(|| Error::U2NotFound)?; let installed_zone = self .zone_builder_factory .builder() .with_log(self.log.clone()) .with_underlay_vnic_allocator(&self.vnic_allocator) - .with_zone_root_path(&root) + .with_zone_root_path(root) .with_zone_image_paths(&["/opt/oxide".into()]) .with_zone_type("propolis-server") .with_unique_name(self.propolis_id().into_untyped_uuid()) diff --git a/sled-agent/src/probe_manager.rs b/sled-agent/src/probe_manager.rs index 40af604645..b1a8ab37f7 100644 --- a/sled-agent/src/probe_manager.rs +++ b/sled-agent/src/probe_manager.rs @@ -14,7 +14,7 @@ use omicron_common::api::external::{ VpcFirewallRuleStatus, }; use omicron_common::api::internal::shared::NetworkInterface; -use rand::prelude::SliceRandom; +use rand::prelude::IteratorRandom; use rand::SeedableRng; use sled_storage::dataset::ZONE_DATASET; use sled_storage::manager::StorageHandle; @@ -226,14 +226,15 @@ impl ProbeManagerInner { /// boots the probe zone. async fn add_probe(self: &Arc, probe: &ProbeState) -> Result<()> { let mut rng = rand::rngs::StdRng::from_entropy(); - let root = self + let current_disks = self .storage .get_latest_disks() .await - .all_u2_mountpoints(ZONE_DATASET) + .all_u2_mountpoints(ZONE_DATASET); + let zone_root_path = current_disks + .into_iter() .choose(&mut rng) - .ok_or_else(|| anyhow!("u2 not found"))? - .clone(); + .ok_or_else(|| anyhow!("u2 not found"))?; let nic = probe .interface @@ -268,7 +269,7 @@ impl ProbeManagerInner { .builder() .with_log(self.log.clone()) .with_underlay_vnic_allocator(&self.vnic_allocator) - .with_zone_root_path(&root) + .with_zone_root_path(zone_root_path) .with_zone_image_paths(&["/opt/oxide".into()]) .with_zone_type("probe") .with_unique_name(probe.id) diff --git a/sled-agent/src/services.rs b/sled-agent/src/services.rs index 8058d3acae..6bf8a4fbe5 100644 --- a/sled-agent/src/services.rs +++ b/sled-agent/src/services.rs @@ -57,7 +57,7 @@ use illumos_utils::running_zone::{ }; use illumos_utils::zfs::ZONE_ZFS_RAMDISK_DATASET_MOUNTPOINT; use illumos_utils::zone::AddressRequest; -use illumos_utils::zpool::ZpoolName; +use illumos_utils::zpool::{PathInPool, ZpoolName}; use illumos_utils::{execute, PFEXEC}; use internal_dns::resolver::Resolver; use itertools::Itertools; @@ -445,6 +445,11 @@ impl OmicronZonesConfigLocal { /// Combines the Nexus-provided `OmicronZoneConfig` (which describes what Nexus /// wants for this zone) with any locally-determined configuration (like the /// path to the root filesystem) +// +// NOTE: Although the path to the root filesystem is not exactly equal to the +// ZpoolName, it is derivable from it, and the ZpoolName for the root filesystem +// is now being supplied as a part of OmicronZoneConfig. Therefore, this struct +// is less necessary than it has been historically. #[derive( Clone, Debug, @@ -551,10 +556,15 @@ impl<'a> ZoneArgs<'a> { } /// Return the root filesystem path for this zone - pub fn root(&self) -> &Utf8Path { + pub fn root(&self) -> PathInPool { match self { - ZoneArgs::Omicron(zone_config) => &zone_config.root, - ZoneArgs::Switch(zone_request) => &zone_request.root, + ZoneArgs::Omicron(zone_config) => PathInPool { + pool: zone_config.zone.filesystem_pool.clone(), + path: zone_config.root.clone(), + }, + ZoneArgs::Switch(zone_request) => { + PathInPool { pool: None, path: zone_request.root.clone() } + } } } } @@ -1462,7 +1472,7 @@ impl ServiceManager { let installed_zone = zone_builder .with_log(self.inner.log.clone()) .with_underlay_vnic_allocator(&self.inner.underlay_vnic_allocator) - .with_zone_root_path(&request.root()) + .with_zone_root_path(request.root()) .with_zone_image_paths(zone_image_paths.as_slice()) .with_zone_type(&zone_type_str) .with_datasets(datasets.as_slice()) @@ -2904,7 +2914,8 @@ impl ServiceManager { ) .await?; - let config = OmicronZoneConfigLocal { zone: zone.clone(), root }; + let config = + OmicronZoneConfigLocal { zone: zone.clone(), root: root.path }; let runtime = self .initialize_zone( @@ -3289,7 +3300,7 @@ impl ServiceManager { mount_config: &MountConfig, zone: &OmicronZoneConfig, all_u2_pools: &Vec, - ) -> Result { + ) -> Result { let name = zone.zone_name(); // If the caller has requested a specific durable dataset, @@ -3368,7 +3379,9 @@ impl ServiceManager { device: format!("zpool: {filesystem_pool}"), }); } - Ok(filesystem_pool.dataset_mountpoint(&mount_config.root, ZONE_DATASET)) + let path = filesystem_pool + .dataset_mountpoint(&mount_config.root, ZONE_DATASET); + Ok(PathInPool { pool: Some(filesystem_pool), path }) } pub async fn cockroachdb_initialize(&self) -> Result<(), Error> { diff --git a/sled-agent/src/zone_bundle.rs b/sled-agent/src/zone_bundle.rs index cd9f36fe3a..088e7b356f 100644 --- a/sled-agent/src/zone_bundle.rs +++ b/sled-agent/src/zone_bundle.rs @@ -439,6 +439,7 @@ impl ZoneBundler { let extra_log_dirs = resources .all_u2_mountpoints(U2_DEBUG_DATASET) .into_iter() + .map(|pool_path| pool_path.path) .collect(); let context = ZoneBundleContext { cause, storage_dirs, extra_log_dirs }; info!( diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index 87d9056082..f6b3f91486 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -10,7 +10,7 @@ use crate::disk::{Disk, DiskError, OmicronPhysicalDiskConfig, RawDisk}; use crate::error::Error; use camino::Utf8PathBuf; use cfg_if::cfg_if; -use illumos_utils::zpool::ZpoolName; +use illumos_utils::zpool::{PathInPool, ZpoolName}; use key_manager::StorageKeyRequester; use omicron_common::api::external::Generation; use omicron_common::disk::DiskIdentity; @@ -203,11 +203,13 @@ impl AllDisks { } /// Returns all mountpoints within all U.2s for a particular dataset. - pub fn all_u2_mountpoints(&self, dataset: &str) -> Vec { + pub fn all_u2_mountpoints(&self, dataset: &str) -> Vec { self.all_u2_zpools() - .iter() - .map(|zpool| { - zpool.dataset_mountpoint(&self.mount_config.root, dataset) + .into_iter() + .map(|pool| { + let path = + pool.dataset_mountpoint(&self.mount_config.root, dataset); + PathInPool { pool: Some(pool), path } }) .collect() } From 17db42889f06aedf56f58fccc18c5218ed6b61b9 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 13:45:01 -0700 Subject: [PATCH 24/42] Destroy instances --- illumos-utils/src/running_zone.rs | 7 +++- sled-agent/src/instance.rs | 26 +++++++++++++++ sled-agent/src/instance_manager.rs | 53 +++++++++++++++++++++++++++++- sled-agent/src/probe_manager.rs | 45 ++++++++++++++++++++++--- sled-agent/src/sled_agent.rs | 10 ++++-- 5 files changed, 133 insertions(+), 8 deletions(-) diff --git a/illumos-utils/src/running_zone.rs b/illumos-utils/src/running_zone.rs index e3105f089c..19672a857b 100644 --- a/illumos-utils/src/running_zone.rs +++ b/illumos-utils/src/running_zone.rs @@ -10,7 +10,7 @@ use crate::link::{Link, VnicAllocator}; use crate::opte::{Port, PortTicket}; use crate::svc::wait_for_service; use crate::zone::{AddressRequest, IPADM, ZONE_PREFIX}; -use crate::zpool::PathInPool; +use crate::zpool::{PathInPool, ZpoolName}; use camino::{Utf8Path, Utf8PathBuf}; use camino_tempfile::Utf8TempDir; use ipnetwork::IpNetwork; @@ -408,6 +408,11 @@ impl RunningZone { self.inner.root() } + /// Returns the zpool on which the filesystem path has been placed. + pub fn root_zpool(&self) -> Option<&ZpoolName> { + self.inner.zonepath.pool.as_ref() + } + pub fn control_interface(&self) -> AddrObject { AddrObject::new(self.inner.get_control_vnic_name(), "omicron6").unwrap() } diff --git a/sled-agent/src/instance.rs b/sled-agent/src/instance.rs index 021b326dde..540811e412 100644 --- a/sled-agent/src/instance.rs +++ b/sled-agent/src/instance.rs @@ -39,6 +39,7 @@ use omicron_common::api::internal::shared::{ NetworkInterface, SourceNatConfig, }; use omicron_common::backoff; +use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::{GenericUuid, InstanceUuid, PropolisUuid}; use propolis_client::Client as PropolisClient; use rand::prelude::IteratorRandom; @@ -214,6 +215,9 @@ enum InstanceRequest { RequestZoneBundle { tx: oneshot::Sender>, }, + GetFilesystemPool { + tx: oneshot::Sender>, + }, CurrentState { tx: oneshot::Sender, }, @@ -405,6 +409,10 @@ impl InstanceRunner { tx.send(self.request_zone_bundle().await) .map_err(|_| Error::FailedSendClientClosed) }, + Some(GetFilesystemPool { tx } ) => { + tx.send(self.get_filesystem_zpool()) + .map_err(|_| Error::FailedSendClientClosed) + }, Some(CurrentState{ tx }) => { tx.send(self.current_state()) .map_err(|_| Error::FailedSendClientClosed) @@ -1059,6 +1067,17 @@ impl Instance { Ok(()) } + pub async fn get_filesystem_zpool( + &self, + ) -> Result, Error> { + let (tx, rx) = oneshot::channel(); + self.tx + .send(InstanceRequest::GetFilesystemPool { tx }) + .await + .map_err(|_| Error::FailedSendChannelClosed)?; + Ok(rx.await?) + } + pub async fn current_state(&self) -> Result { let (tx, rx) = oneshot::channel(); self.tx @@ -1180,6 +1199,13 @@ impl InstanceRunner { } } + fn get_filesystem_zpool(&self) -> Option { + let Some(run_state) = &self.running_state else { + return None; + }; + run_state.running_zone.root_zpool().map(|p| p.clone()) + } + fn current_state(&self) -> SledInstanceState { self.state.sled_instance_state() } diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index beeb8377d2..735a62c945 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -30,8 +30,9 @@ use omicron_common::api::internal::nexus::VmmRuntimeState; use omicron_uuid_kinds::InstanceUuid; use omicron_uuid_kinds::PropolisUuid; use sled_storage::manager::StorageHandle; +use sled_storage::resources::AllDisks; use slog::Logger; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashSet}; use std::net::SocketAddr; use std::sync::Arc; use tokio::sync::{mpsc, oneshot}; @@ -325,6 +326,20 @@ impl InstanceManager { .map_err(|_| Error::FailedSendInstanceManagerClosed)?; rx.await? } + + /// Marks instances failed unless they're using "disks". + /// + /// This function looks for transient zone filesystem usage on expunged + /// zpools. + pub async fn only_use_disks(&self, disks: AllDisks) -> Result<(), Error> { + let (tx, rx) = oneshot::channel(); + self.inner + .tx + .send(InstanceManagerRequest::OnlyUseDisks { disks, tx }) + .await + .map_err(|_| Error::FailedSendInstanceManagerClosed)?; + rx.await? + } } // Most requests that can be sent to the "InstanceManagerRunner" task. @@ -384,6 +399,10 @@ enum InstanceManagerRequest { instance_id: InstanceUuid, tx: oneshot::Sender>, }, + OnlyUseDisks { + disks: AllDisks, + tx: oneshot::Sender>, + }, } // Requests that the instance manager stop processing information about a @@ -494,6 +513,9 @@ impl InstanceManagerRunner { // the state... self.get_instance_state(tx, instance_id).await }, + Some(OnlyUseDisks { disks, tx } ) => { + self.only_use_disks(tx, disks).await + }, None => { warn!(self.log, "InstanceManager's request channel closed; shutting down"); break; @@ -775,6 +797,35 @@ impl InstanceManagerRunner { tx.send(Ok(state)).map_err(|_| Error::FailedSendClientClosed)?; Ok(()) } + + async fn only_use_disks( + &mut self, + tx: oneshot::Sender>, + disks: AllDisks, + ) -> Result<(), Error> { + let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); + + let mut to_remove = vec![]; + for (id, (_, instance)) in self.instances.iter() { + // If we can read the filesystem pool, consider it. Otherwise, move + // on, to prevent blocking the cleanup of other instances. + let Ok(Some(filesystem_pool)) = + instance.get_filesystem_zpool().await + else { + continue; + }; + if !u2_set.contains(&filesystem_pool) { + to_remove.push(*id); + } + } + + for id in to_remove { + self.instances.remove(&id); + } + + tx.send(Ok(())).map_err(|_| Error::FailedSendClientClosed)?; + Ok(()) + } } /// Represents membership of an instance in the [`InstanceManager`]. diff --git a/sled-agent/src/probe_manager.rs b/sled-agent/src/probe_manager.rs index b1a8ab37f7..d5930f44f5 100644 --- a/sled-agent/src/probe_manager.rs +++ b/sled-agent/src/probe_manager.rs @@ -18,12 +18,13 @@ use rand::prelude::IteratorRandom; use rand::SeedableRng; use sled_storage::dataset::ZONE_DATASET; use sled_storage::manager::StorageHandle; +use sled_storage::resources::AllDisks; use slog::{error, warn, Logger}; use std::collections::{HashMap, HashSet}; use std::hash::{Hash, Hasher}; use std::sync::Arc; use std::time::Duration; -use tokio::sync::Mutex; +use tokio::sync::{Mutex, MutexGuard}; use tokio::task::JoinHandle; use tokio::time::sleep; use uuid::Uuid; @@ -85,6 +86,33 @@ impl ProbeManager { pub(crate) async fn run(&self) { self.inner.run().await; } + + /// Removes any probes using filesystem roots on zpools that are not + /// contained in the set of "disks". + pub(crate) async fn only_use_disks(&self, disks: &AllDisks) { + let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); + let mut probes = self.inner.running_probes.lock().await; + + let to_remove = probes + .iter() + .filter_map(|(id, probe)| { + let Some(probe_pool) = probe.root_zpool() else { + // No known pool for this probe + return None; + }; + + if !u2_set.contains(probe_pool) { + Some(*id) + } else { + None + } + }) + .collect::>(); + + for probe_id in to_remove { + self.inner.remove_probe_locked(&mut probes, probe_id).await; + } + } } /// State information about a probe. This is a common representation that @@ -297,7 +325,7 @@ impl ProbeManagerInner { } /// Remove a set of probes from this sled. - async fn remove<'a, I>(self: &Arc, probes: I) + async fn remove<'a, I>(&self, probes: I) where I: Iterator, { @@ -309,8 +337,17 @@ impl ProbeManagerInner { /// Remove a probe from this sled. This tears down the zone and it's /// network resources. - async fn remove_probe(self: &Arc, id: Uuid) { - match self.running_probes.lock().await.remove(&id) { + async fn remove_probe(&self, id: Uuid) { + let mut probes = self.running_probes.lock().await; + self.remove_probe_locked(&mut probes, id).await + } + + async fn remove_probe_locked( + &self, + probes: &mut MutexGuard<'_, HashMap>, + id: Uuid, + ) { + match probes.remove(&id) { Some(mut running_zone) => { for l in running_zone.links_mut() { if let Err(e) = l.delete() { diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index e596dbe049..fc2eee4937 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -840,8 +840,14 @@ impl SledAgent { // the old U.2s, has stopped using them. self.inner.zone_bundler.await_completion_of_prior_bundles().await; - // - TODO: Mark probes failed? - // - TODO: Mark instances failed? + // Ensure that all probes, at least after our call to + // "omicron_physical_disks_ensure", stop using any disks that + // may have been in-service from before that request. + self.inner.probes.only_use_disks(&latest_disks).await; + + // Do the same for instances - mark them failed if they were using + // expunged disks. + self.inner.instances.only_use_disks(latest_disks).await?; Ok(disk_result) } From 32596df7f9ef6cb59c4cff348a4fd530ea319a8f Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 13:50:19 -0700 Subject: [PATCH 25/42] Remove unused zone code --- illumos-utils/src/running_zone.rs | 143 ------------------------------ 1 file changed, 143 deletions(-) diff --git a/illumos-utils/src/running_zone.rs b/illumos-utils/src/running_zone.rs index 19672a857b..a66fa44e9c 100644 --- a/illumos-utils/src/running_zone.rs +++ b/illumos-utils/src/running_zone.rs @@ -102,60 +102,6 @@ pub enum EnsureAddressError { OpteGatewayConfig(#[from] RunCommandError), } -/// Errors returned from [`RunningZone::get`]. -#[derive(thiserror::Error, Debug)] -pub enum GetZoneError { - #[error("While looking up zones with prefix '{prefix}', could not get zones: {err}")] - GetZones { - prefix: String, - #[source] - err: crate::zone::AdmError, - }, - - #[error("Invalid Utf8 path: {0}")] - FromPathBuf(#[from] camino::FromPathBufError), - - #[error("Zone with prefix '{prefix}' not found")] - NotFound { prefix: String }, - - #[error("Cannot get zone '{name}': it is in the {state:?} state instead of running")] - NotRunning { name: String, state: zone::State }, - - #[error( - "Cannot get zone '{name}': Failed to acquire control interface {err}" - )] - ControlInterface { - name: String, - #[source] - err: crate::zone::GetControlInterfaceError, - }, - - #[error("Cannot get zone '{name}': Failed to create addrobj: {err}")] - AddrObject { - name: String, - #[source] - err: crate::addrobj::ParseError, - }, - - #[error( - "Cannot get zone '{name}': Failed to ensure address exists: {err}" - )] - EnsureAddress { - name: String, - #[source] - err: crate::zone::EnsureAddressError, - }, - - #[error( - "Cannot get zone '{name}': Incorrect bootstrap interface access {err}" - )] - BootstrapInterface { - name: String, - #[source] - err: crate::zone::GetBootstrapInterfaceError, - }, -} - #[cfg(target_os = "illumos")] static REAPER_THREAD: OnceLock> = OnceLock::new(); @@ -803,95 +749,6 @@ impl RunningZone { Ok(()) } - /// Looks up a running zone based on the `zone_prefix`, if one already exists. - /// - /// - If the zone was found, is running, and has a network interface, it is - /// returned. - /// - If the zone was not found `Error::NotFound` is returned. - /// - If the zone was found, but not running, `Error::NotRunning` is - /// returned. - /// - Other errors may be returned attempting to look up and accessing an - /// address on the zone. - // pub async fn get( - // log: &Logger, - // vnic_allocator: &VnicAllocator, - // zone_prefix: &str, - // addrtype: AddressRequest, - // ) -> Result { - // let zone_info = Zones::get() - // .await - // .map_err(|err| GetZoneError::GetZones { - // prefix: zone_prefix.to_string(), - // err, - // })? - // .into_iter() - // .find(|zone_info| zone_info.name().starts_with(&zone_prefix)) - // .ok_or_else(|| GetZoneError::NotFound { - // prefix: zone_prefix.to_string(), - // })?; - // - // if zone_info.state() != zone::State::Running { - // return Err(GetZoneError::NotRunning { - // name: zone_info.name().to_string(), - // state: zone_info.state(), - // }); - // } - // - // let zone_name = zone_info.name(); - // let vnic_name = - // Zones::get_control_interface(zone_name).map_err(|err| { - // GetZoneError::ControlInterface { - // name: zone_name.to_string(), - // err, - // } - // })?; - // let addrobj = AddrObject::new_control(&vnic_name).map_err(|err| { - // GetZoneError::AddrObject { name: zone_name.to_string(), err } - // })?; - // Zones::ensure_address(Some(zone_name), &addrobj, addrtype).map_err( - // |err| GetZoneError::EnsureAddress { - // name: zone_name.to_string(), - // err, - // }, - // )?; - // - // let control_vnic = vnic_allocator - // .wrap_existing(vnic_name) - // .expect("Failed to wrap valid control VNIC"); - // - // // The bootstrap address for a running zone never changes, - // // so there's no need to call `Zones::ensure_address`. - // // Currently, only the switch zone has a bootstrap interface. - // let bootstrap_vnic = Zones::get_bootstrap_interface(zone_name) - // .map_err(|err| GetZoneError::BootstrapInterface { - // name: zone_name.to_string(), - // err, - // })? - // .map(|name| { - // vnic_allocator - // .wrap_existing(name) - // .expect("Failed to wrap valid bootstrap VNIC") - // }); - // - // Ok(Self { - // id: zone_info.id().map(|x| { - // x.try_into().expect("zoneid_t is expected to be an i32") - // }), - // inner: InstalledZone { - // log: log.new(o!("zone" => zone_name.to_string())), - // zonepath: zone_info.path().to_path_buf().try_into()?, - // name: zone_name.to_string(), - // control_vnic, - // // TODO(https://github.com/oxidecomputer/omicron/issues/725) - // // - // // Re-initialize guest_vnic state by inspecting the zone. - // opte_ports: vec![], - // links: vec![], - // bootstrap_vnic, - // }, - // }) - // } - /// Return references to the OPTE ports for this zone. pub fn opte_ports(&self) -> impl Iterator { self.inner.opte_ports() From 2c6eb01a2a7d416a0bf174cf98c589d35ee1b06b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 16:21:32 -0700 Subject: [PATCH 26/42] fix helios tests --- sled-storage/src/manager.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index cbb8022870..55cccef49e 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -1083,8 +1083,16 @@ mod tests { // Now let's verify we saw the correct firmware update. for rd in &raw_disks { - let managed = - all_disks_gen2.values.get(rd.identity()).expect("disk exists"); + let managed = all_disks_gen2 + .iter_all_inner() + .find_map(|(identity, disk)| { + if identity == rd.identity() { + Some(disk) + } else { + None + } + }) + .expect("disk exists"); match managed { ManagedDisk::ExplicitlyManaged(disk) | ManagedDisk::ImplicitlyManaged(disk) => { @@ -1321,7 +1329,7 @@ mod tests { let expected: HashSet<_> = disks.iter().skip(1).take(3).map(|d| d.identity()).collect(); let actual: HashSet<_> = - all_disks.iter_all().map(|(identity, _, _)| identity).collect(); + all_disks.iter_all().map(|(identity, _, _, _)| identity).collect(); assert_eq!(expected, actual); // Ensure the same set of disks and make sure no change occurs @@ -1355,7 +1363,7 @@ mod tests { let expected: HashSet<_> = disks.iter().skip(4).take(5).map(|d| d.identity()).collect(); let actual: HashSet<_> = - all_disks.iter_all().map(|(identity, _, _)| identity).collect(); + all_disks.iter_all().map(|(identity, _, _, _)| identity).collect(); assert_eq!(expected, actual); harness.cleanup().await; From e4123a9a5c186b5cd751866d7e5a324669428bf6 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 16:29:07 -0700 Subject: [PATCH 27/42] Add TODO, re: concurrency safety --- sled-agent/src/sled_agent.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index dc8cf942e0..b7cc5b5be3 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -820,6 +820,17 @@ impl SledAgent { config: OmicronPhysicalDisksConfig, ) -> Result { // First, tell the storage subsystem which disks should be managed. + // + // TODO: Do we want to prevent future calls to + // "omicron_physical_disks_ensure" until we finish flushing? + // + // Otherwise, we the following could occur: + // + // - Ensure Disks {A, B, C} + // - ... try to remove all non-conforming disks + // - Ensure Disks {A, B, C, D} concurrently + // - ... we remove an instance on disk "D" because the old flush is + // still happening? let disk_result = self.storage().omicron_physical_disks_ensure(config).await?; From 1207c9ed0f6a8c896f03cd5ec05609de8714f341 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 17:17:00 -0700 Subject: [PATCH 28/42] very WIP - adjusting generation --- sled-storage/src/manager.rs | 4 ++-- sled-storage/src/resources.rs | 21 ++++++++------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 55cccef49e..5ccfbbc0f4 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -586,7 +586,7 @@ impl StorageManager { // Identify which disks should be managed by the control // plane, and adopt all requested disks into the control plane // in a background task (see: [Self::manage_disks]). - self.resources.set_config(&ledger.data().disks); + self.resources.set_config(&ledger.data()); } else { info!(self.log, "KeyManager ready, but no ledger detected"); let mut synthetic_config = @@ -763,7 +763,7 @@ impl StorageManager { // Identify which disks should be managed by the control // plane, and adopt all requested disks into the control plane. - self.resources.set_config(&config.disks); + self.resources.set_config(&config); // Actually try to "manage" those disks, which may involve formatting // zpools and conforming partitions to those expected by the control diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index dd0d22d9e0..19ef9f9c29 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -6,7 +6,7 @@ use crate::config::MountConfig; use crate::dataset::{DatasetError, M2_DEBUG_DATASET}; -use crate::disk::{Disk, DiskError, OmicronPhysicalDiskConfig, RawDisk}; +use crate::disk::{Disk, DiskError, OmicronPhysicalDiskConfig, OmicronPhysicalDisksConfig, RawDisk}; use crate::error::Error; use camino::Utf8PathBuf; use cfg_if::cfg_if; @@ -124,14 +124,8 @@ pub(crate) enum ManagedDisk { #[derive(Debug, Clone, Eq, PartialEq)] struct AllDisksInner { - // NOTE: When the set of "omicron physical disks" are set through the API, - // a generation number is actually passed via [OmicronPhysicalDisksConfig]. - // - // This is *not* that same generation number, but probably could be? - // - // Technically, this number also bumps up any time the set of - // locally-detected disks has changed, but it's just treated as an opaque - // value to track when changes have propagated throughout the system. + // This generation corresponds to the generation supplied in + // [OmicronPhysicalDisksConfig]. generation: Generation, values: BTreeMap, } @@ -357,8 +351,9 @@ impl StorageResources { /// Does not attempt to manage any of the physical disks previously /// observed. To synchronize the "set of requested disks" with the "set of /// observed disks", call [Self::synchronize_disk_management]. - pub fn set_config(&mut self, config: &Vec) { + pub fn set_config(&mut self, config: &OmicronPhysicalDisksConfig) { self.control_plane_disks = config + .disks .iter() .map(|disk| (disk.identity.clone(), disk.clone())) .collect(); @@ -486,7 +481,7 @@ impl StorageResources { } if updated { - disks.generation = disks.generation.next(); +// disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } @@ -600,7 +595,7 @@ impl StorageResources { } } - disks.generation = disks.generation.next(); +// disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); Ok(()) @@ -644,7 +639,7 @@ impl StorageResources { let disks = Arc::make_mut(&mut self.disks.inner); disks.values.remove(id).unwrap(); - disks.generation = disks.generation.next(); +// disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } } From 892a7ca891b39d26253277b4b19107f52cd35769 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 17:20:04 -0700 Subject: [PATCH 29/42] Stop self-managing disks --- sled-storage/src/manager.rs | 84 +------------------------------------ 1 file changed, 1 insertion(+), 83 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 9e31568e00..901642badc 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -8,9 +8,7 @@ use std::collections::HashSet; use crate::config::MountConfig; use crate::dataset::{DatasetName, CONFIG_DATASET}; -use crate::disk::{ - OmicronPhysicalDiskConfig, OmicronPhysicalDisksConfig, RawDisk, -}; +use crate::disk::{OmicronPhysicalDisksConfig, RawDisk}; use crate::error::Error; use crate::resources::{AllDisks, DisksManagementResult, StorageResources}; use camino::Utf8PathBuf; @@ -589,91 +587,11 @@ impl StorageManager { self.resources.set_config(&ledger.data().disks); } else { info!(self.log, "KeyManager ready, but no ledger detected"); - let mut synthetic_config = - self.resources.get_config().values().cloned().collect(); - // TODO(https://github.com/oxidecomputer/omicron/issues/5328): Once - // we are confident that we have migrated to a world where this - // ledger is universally used, we should remove the following - // kludge. The sled agent should not need to "self-manage" anything! - let changed = self - .self_manage_disks_with_zpools(&mut synthetic_config) - .await?; - if !changed { - info!(self.log, "No disks to be automatically managed"); - return Ok(()); - } - info!(self.log, "auto-managed disks"; "count" => synthetic_config.len()); - self.resources.set_config(&synthetic_config); } Ok(()) } - // NOTE: What follows is an exceptional case: one where we have - // no record of "Control Plane Physical Disks", but we have zpools - // on our U.2s, and we want to use them regardless. - // - // THIS WOULD NORMALLY BE INCORRECT BEHAVIOR. In the future, these - // zpools will not be "automatically imported", and instead, we'll - // let Nexus decide whether or not to reformat the disks. - // - // However, because we are transitioning from "the set of disks / - // zpools is implicit" to a world where that set is explicit, this - // is a necessary transitional tool. - // - // Returns "true" if the synthetic_config has changed. - async fn self_manage_disks_with_zpools( - &mut self, - synthetic_config: &mut Vec, - ) -> Result { - let mut changed = false; - for (identity, disk) in self.resources.disks().values.iter() { - match disk { - crate::resources::ManagedDisk::Unmanaged(raw) => { - let zpool_path = match raw.u2_zpool_path() { - Ok(zpool_path) => zpool_path, - Err(err) => { - info!(self.log, "Cannot find zpool path"; "identity" => ?identity, "err" => ?err); - continue; - } - }; - - let zpool_name = - match sled_hardware::disk::check_if_zpool_exists( - &zpool_path, - ) { - Ok(zpool_name) => zpool_name, - Err(err) => { - info!(self.log, "Zpool does not exist"; "identity" => ?identity, "err" => ?err); - continue; - } - }; - - info!(self.log, "Found existing zpool on device without ledger"; - "identity" => ?identity, - "zpool" => ?zpool_name); - - // We found an unmanaged disk with a zpool, even though - // we have no prior record of a ledger of control-plane - // disks. - synthetic_config.push( - // These disks don't have a control-plane UUID -- - // report "nil" until they're overwritten with real - // values. - OmicronPhysicalDiskConfig { - identity: identity.clone(), - id: Uuid::nil(), - pool_id: zpool_name.id(), - }, - ); - changed = true; - } - _ => continue, - } - } - Ok(changed) - } - // Makes an U.2 disk managed by the control plane within [`StorageResources`]. async fn omicron_physical_disks_ensure( &mut self, From c0e8e07f3373084058b4552745308215920f6331 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 17:34:44 -0700 Subject: [PATCH 30/42] Fix imports --- sled-storage/src/manager.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 901642badc..0b80d2499d 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -823,6 +823,7 @@ impl StorageManager { #[cfg(all(test, target_os = "illumos"))] mod tests { use crate::dataset::DatasetKind; + use crate::disk::OmicronPhysicalDiskConfig; use crate::disk::RawSyntheticDisk; use crate::manager_test_harness::StorageManagerTestHarness; use crate::resources::{DiskManagementError, ManagedDisk}; From 187aea3512a23c2025331378c22a60e7060d555a Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Mon, 1 Jul 2024 17:49:41 -0700 Subject: [PATCH 31/42] generation number unity --- sled-storage/src/resources.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index 0f8b320c10..7e01a86a9e 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -127,9 +127,6 @@ pub(crate) enum ManagedDisk { #[derive(Debug, Clone, Eq, PartialEq)] struct AllDisksInner { - // This generation corresponds to the generation supplied in - // [OmicronPhysicalDisksConfig]. - generation: Generation, values: BTreeMap, } @@ -151,6 +148,9 @@ struct AllDisksInner { /// gets cloned or dropped. #[derive(Debug, Clone, Eq, PartialEq)] pub struct AllDisks { + // This generation corresponds to the generation supplied in + // [OmicronPhysicalDisksConfig]. + generation: Generation, inner: Arc, mount_config: MountConfig, } @@ -158,7 +158,7 @@ pub struct AllDisks { impl AllDisks { /// Returns the latest generation number of this set of disks. pub fn generation(&self) -> &Generation { - &self.inner.generation + &self.generation } pub fn mount_config(&self) -> &MountConfig { @@ -310,8 +310,8 @@ impl StorageResources { key_requester: StorageKeyRequester, ) -> Self { let disks = AllDisks { + generation: Generation::new(), inner: Arc::new(AllDisksInner { - generation: Generation::new(), values: BTreeMap::new(), }), mount_config, @@ -341,6 +341,11 @@ impl StorageResources { /// observed. To synchronize the "set of requested disks" with the "set of /// observed disks", call [Self::synchronize_disk_management]. pub fn set_config(&mut self, config: &OmicronPhysicalDisksConfig) { + let our_gen = &mut self.disks.generation; + if *our_gen > config.generation { + return; + } + *our_gen = config.generation; self.control_plane_disks = config .disks .iter() @@ -470,7 +475,6 @@ impl StorageResources { } if updated { - // disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } @@ -584,7 +588,6 @@ impl StorageResources { } } - // disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); Ok(()) @@ -628,7 +631,6 @@ impl StorageResources { let disks = Arc::make_mut(&mut self.disks.inner); disks.values.remove(id).unwrap(); - // disks.generation = disks.generation.next(); self.disk_updates.send_replace(self.disks.clone()); } } From c2ee842bea3a771972ac1cfd3409ca952022001b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 2 Jul 2024 08:31:09 -0700 Subject: [PATCH 32/42] Remove self-managing test too --- sled-storage/src/manager.rs | 148 ------------------------------------ 1 file changed, 148 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 0b80d2499d..cb5064de0a 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -1309,154 +1309,6 @@ mod tests { harness.cleanup().await; logctx.cleanup_successful(); } - - #[tokio::test] - async fn ledgerless_to_ledgered_migration() { - illumos_utils::USE_MOCKS.store(false, Ordering::SeqCst); - let logctx = test_setup_log("ledgerless_to_ledgered_migration"); - let mut harness = StorageManagerTestHarness::new(&logctx.log).await; - - // Test setup: Create two U.2s and an M.2 - let raw_disks = harness - .add_vdevs(&[ - "u2_under_test.vdev", - "u2_that_shows_up_late.vdev", - "m2_helping.vdev", - ]) - .await; - - // First, we format the U.2s to have a zpool. This should work, even - // without looping in the StorageManager. - let first_u2 = &raw_disks[0]; - let first_pool_id = ZpoolUuid::new_v4(); - let _disk = crate::disk::Disk::new( - &logctx.log, - &harness.mount_config(), - first_u2.clone(), - Some(first_pool_id), - Some(harness.key_requester()), - ) - .await - .expect("Failed to format U.2"); - - let second_u2 = &raw_disks[1]; - let second_pool_id = ZpoolUuid::new_v4(); - let _disk = crate::disk::Disk::new( - &logctx.log, - &harness.mount_config(), - second_u2.clone(), - Some(second_pool_id), - Some(harness.key_requester()), - ) - .await - .expect("Failed to format U.2"); - - // Because we did that formatting "behind the back" of the - // StorageManager, we should see no evidence of the U.2 being managed. - // - // This currently matches the format of "existing systems, which were - // initialized before the storage ledger was created". - - // We should still see no ledger. - let result = harness.handle().omicron_physical_disks_list().await; - assert!(matches!(result, Err(Error::LedgerNotFound)), "{:?}", result); - - // We should also not see any managed U.2s. - let disks = harness.handle().get_latest_disks().await; - assert!(disks.all_u2_zpools().is_empty()); - - // Leave one of the U.2s attached, but "remove" the other one. - harness.remove_vdev(second_u2).await; - - // When the system activates, we should see a single Zpool, and - // "auto-manage" it. - harness.handle().key_manager_ready().await; - - // It might take a moment for synchronization to be handled by the - // background task, but we'll eventually see the U.2 zpool. - // - // This is the equivalent of us "loading a zpool, even though - // it was not backed by a ledger". - let tt = TimeTravel::new(); - tt.enough_to_start_synchronization().await; - while harness - .handle_mut() - .wait_for_changes() - .await - .all_u2_zpools() - .is_empty() - { - info!(&logctx.log, "Waiting for U.2 to automatically show up"); - } - let u2s = harness.handle().get_latest_disks().await.all_u2_zpools(); - assert_eq!(u2s.len(), 1, "{:?}", u2s); - - // If we attach the second U.2 -- the equivalent of it appearing after - // the key manager is ready -- it'll also be included in the set of - // auto-maanged U.2s. - harness.add_vdev_as(second_u2.clone()).await; - tt.enough_to_start_synchronization().await; - while harness - .handle_mut() - .wait_for_changes() - .await - .all_u2_zpools() - .len() - == 1 - { - info!(&logctx.log, "Waiting for U.2 to automatically show up"); - } - let u2s = harness.handle().get_latest_disks().await.all_u2_zpools(); - assert_eq!(u2s.len(), 2, "{:?}", u2s); - - // This is the equivalent of the "/omicron-physical-disks GET" API, - // which Nexus might use to contact this sled. - // - // This means that we'll bootstrap the sled successfully, but report a - // 404 if nexus asks us for the latest configuration. - let result = harness.handle().omicron_physical_disks_list().await; - assert!(matches!(result, Err(Error::LedgerNotFound),), "{:?}", result); - - // At this point, Nexus may want to explicitly tell sled agent which - // disks it should use. This is the equivalent of invoking - // "/omicron-physical-disks PUT". - let mut disks = vec![ - OmicronPhysicalDiskConfig { - identity: first_u2.identity().clone(), - id: Uuid::new_v4(), - pool_id: first_pool_id, - }, - OmicronPhysicalDiskConfig { - identity: second_u2.identity().clone(), - id: Uuid::new_v4(), - pool_id: second_pool_id, - }, - ]; - // Sort the disks to ensure the "output" matches the "input" when we - // query later. - disks.sort_by(|a, b| a.identity.partial_cmp(&b.identity).unwrap()); - let config = - OmicronPhysicalDisksConfig { generation: Generation::new(), disks }; - let result = harness - .handle() - .omicron_physical_disks_ensure(config.clone()) - .await - .expect("Failed to ensure disks with 'new' Config"); - assert!(!result.has_error(), "{:?}", result); - - let observed_config = harness - .handle() - .omicron_physical_disks_list() - .await - .expect("Failed to retreive config after ensuring it"); - assert_eq!(observed_config, config); - - let u2s = harness.handle().get_latest_disks().await.all_u2_zpools(); - assert_eq!(u2s.len(), 2, "{:?}", u2s); - - harness.cleanup().await; - logctx.cleanup_successful(); - } } #[cfg(test)] From a437cc2faad4120d49bd913067997d5b985e2229 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 2 Jul 2024 09:09:34 -0700 Subject: [PATCH 33/42] imports --- sled-storage/src/manager.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index cb5064de0a..d374ab8e23 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -823,17 +823,14 @@ impl StorageManager { #[cfg(all(test, target_os = "illumos"))] mod tests { use crate::dataset::DatasetKind; - use crate::disk::OmicronPhysicalDiskConfig; use crate::disk::RawSyntheticDisk; use crate::manager_test_harness::StorageManagerTestHarness; use crate::resources::{DiskManagementError, ManagedDisk}; use super::*; use camino_tempfile::tempdir_in; - use omicron_common::api::external::Generation; use omicron_common::ledger; use omicron_test_utils::dev::test_setup_log; - use omicron_uuid_kinds::ZpoolUuid; use sled_hardware::DiskFirmware; use std::sync::atomic::Ordering; use uuid::Uuid; From 8f2301da0a5ccd282134105e72094514a4d3e725 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 2 Jul 2024 13:18:10 -0700 Subject: [PATCH 34/42] Safe against concurrent updates --- sled-agent/src/instance_manager.rs | 14 ++++++++++++ sled-agent/src/probe_manager.rs | 34 ++++++++++++++++++++++++------ sled-agent/src/sled_agent.rs | 33 +++++++++++++++++------------ sled-storage/src/resources.rs | 4 +--- 4 files changed, 61 insertions(+), 24 deletions(-) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index 735a62c945..b146ac6b0a 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -24,6 +24,7 @@ use illumos_utils::dladm::Etherstub; use illumos_utils::link::VnicAllocator; use illumos_utils::opte::PortManager; use illumos_utils::running_zone::ZoneBuilderFactory; +use omicron_common::api::external::Generation; use omicron_common::api::internal::nexus::InstanceRuntimeState; use omicron_common::api::internal::nexus::SledInstanceState; use omicron_common::api::internal::nexus::VmmRuntimeState; @@ -120,6 +121,7 @@ impl InstanceManager { instances: BTreeMap::new(), vnic_allocator: VnicAllocator::new("Instance", etherstub), port_manager, + storage_generation: None, storage, zone_bundler, zone_builder_factory, @@ -439,6 +441,7 @@ struct InstanceManagerRunner { vnic_allocator: VnicAllocator, port_manager: PortManager, + storage_generation: Option, storage: StorageHandle, zone_bundler: ZoneBundler, zone_builder_factory: ZoneBuilderFactory, @@ -803,6 +806,17 @@ impl InstanceManagerRunner { tx: oneshot::Sender>, disks: AllDisks, ) -> Result<(), Error> { + // Consider the generation number on the incoming request to avoid + // applying old requests. + let requested_generation = *disks.generation(); + if let Some(last_gen) = self.storage_generation { + if last_gen >= requested_generation { + // This request looks old, ignore it. + return Ok(()); + } + } + self.storage_generation = Some(requested_generation); + let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); let mut to_remove = vec![]; diff --git a/sled-agent/src/probe_manager.rs b/sled-agent/src/probe_manager.rs index d5930f44f5..42b788d0d8 100644 --- a/sled-agent/src/probe_manager.rs +++ b/sled-agent/src/probe_manager.rs @@ -10,8 +10,8 @@ use nexus_client::types::{ BackgroundTasksActivateRequest, ProbeExternalIp, ProbeInfo, }; use omicron_common::api::external::{ - VpcFirewallRuleAction, VpcFirewallRuleDirection, VpcFirewallRulePriority, - VpcFirewallRuleStatus, + Generation, VpcFirewallRuleAction, VpcFirewallRuleDirection, + VpcFirewallRulePriority, VpcFirewallRuleStatus, }; use omicron_common::api::internal::shared::NetworkInterface; use rand::prelude::IteratorRandom; @@ -46,6 +46,11 @@ pub(crate) struct ProbeManager { inner: Arc, } +struct RunningProbes { + storage_generation: Option, + zones: HashMap, +} + pub(crate) struct ProbeManagerInner { join_handle: Mutex>>, nexus_client: NexusClientWithResolver, @@ -54,7 +59,7 @@ pub(crate) struct ProbeManagerInner { vnic_allocator: VnicAllocator, storage: StorageHandle, port_manager: PortManager, - running_probes: Mutex>, + running_probes: Mutex, } impl ProbeManager { @@ -73,7 +78,10 @@ impl ProbeManager { VNIC_ALLOCATOR_SCOPE, etherstub, ), - running_probes: Mutex::new(HashMap::new()), + running_probes: Mutex::new(RunningProbes { + storage_generation: None, + zones: HashMap::new(), + }), nexus_client, log, sled_id, @@ -93,7 +101,19 @@ impl ProbeManager { let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); let mut probes = self.inner.running_probes.lock().await; + // Consider the generation number on the incoming request to avoid + // applying old requests. + let requested_generation = *disks.generation(); + if let Some(last_gen) = probes.storage_generation { + if last_gen >= requested_generation { + // This request looks old, ignore it. + return; + } + } + probes.storage_generation = Some(requested_generation); + let to_remove = probes + .zones .iter() .filter_map(|(id, probe)| { let Some(probe_pool) = probe.root_zpool() else { @@ -319,7 +339,7 @@ impl ProbeManagerInner { rz.ensure_address_for_port("overlay", 0).await?; info!(self.log, "started probe {}", probe.id); - self.running_probes.lock().await.insert(probe.id, rz); + self.running_probes.lock().await.zones.insert(probe.id, rz); Ok(()) } @@ -344,10 +364,10 @@ impl ProbeManagerInner { async fn remove_probe_locked( &self, - probes: &mut MutexGuard<'_, HashMap>, + probes: &mut MutexGuard<'_, RunningProbes>, id: Uuid, ) { - match probes.remove(&id) { + match probes.zones.remove(&id) { Some(mut running_zone) => { for l in running_zone.links_mut() { if let Err(e) = l.delete() { diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index b7cc5b5be3..eb90fc41dc 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -819,27 +819,32 @@ impl SledAgent { &self, config: OmicronPhysicalDisksConfig, ) -> Result { - // First, tell the storage subsystem which disks should be managed. - // - // TODO: Do we want to prevent future calls to - // "omicron_physical_disks_ensure" until we finish flushing? - // - // Otherwise, we the following could occur: - // - // - Ensure Disks {A, B, C} - // - ... try to remove all non-conforming disks - // - Ensure Disks {A, B, C, D} concurrently - // - ... we remove an instance on disk "D" because the old flush is - // still happening? + // Tell the storage subsystem which disks should be managed. let disk_result = self.storage().omicron_physical_disks_ensure(config).await?; + // Grab a view of the latest set of disks, alongside a generation + // number. + // // This generation is at LEAST as high as our last call through // omicron_physical_disks_ensure. It may actually be higher, if a // concurrent operation occurred. // - // Now: Monitor downstream subsystems which use physical disks, and - // ensure they're at least using "our_gen". + // "latest_disks" has a generation number, which is important for other + // subcomponents of Sled Agent to consider. If multiple requests to + // ensure disks arrive concurrently, it's important to "only advance + // forward" as requested by Nexus. + // + // For example: if we receive the following requests concurrently: + // - Use Disks {A, B, C}, generation = 1 + // - Use Disks {A, B, C, D}, generation = 2 + // + // If we ignore generation numbers, it's possible that we start using + // "disk D" -- e.g., for instance filesystems -- and then immediately + // delete it when we process the request with "generation 1". + // + // By keeping these requests ordered, we prevent this thrashing, and + // ensure that we always progress towards the last-requested state. let latest_disks = self.storage().get_latest_disks().await; let our_gen = latest_disks.generation(); diff --git a/sled-storage/src/resources.rs b/sled-storage/src/resources.rs index 7e01a86a9e..f02f62e0a6 100644 --- a/sled-storage/src/resources.rs +++ b/sled-storage/src/resources.rs @@ -311,9 +311,7 @@ impl StorageResources { ) -> Self { let disks = AllDisks { generation: Generation::new(), - inner: Arc::new(AllDisksInner { - values: BTreeMap::new(), - }), + inner: Arc::new(AllDisksInner { values: BTreeMap::new() }), mount_config, }; Self { From 48c357843bac5af76547415f37ea22b46f74020a Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 2 Jul 2024 14:37:05 -0700 Subject: [PATCH 35/42] Patch firmware tests --- sled-storage/src/manager.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/sled-storage/src/manager.rs b/sled-storage/src/manager.rs index 91ea0d86fb..e081bc5034 100644 --- a/sled-storage/src/manager.rs +++ b/sled-storage/src/manager.rs @@ -999,21 +999,17 @@ mod tests { // Now let's verify we saw the correct firmware update. for rd in &raw_disks { - let disk = all_disks_gen2 - .iter_managed() - .find_map(|(identity, disk)| { + let firmware = all_disks_gen2 + .iter_all() + .find_map(|(identity, _, _, fw)| { if identity == rd.identity() { - Some(disk) + Some(fw) } else { None } }) .expect("disk exists"); - assert_eq!( - disk.firmware(), - rd.firmware(), - "didn't see firmware update" - ); + assert_eq!(firmware, rd.firmware(), "didn't see firmware update"); } harness.cleanup().await; From e933a46f750608f0f3828ec2b173b8e02d89d33b Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Tue, 2 Jul 2024 16:08:59 -0700 Subject: [PATCH 36/42] Add a bunch of logging --- sled-agent/src/instance_manager.rs | 7 +++++++ sled-agent/src/probe_manager.rs | 6 ++++++ sled-agent/src/sled_agent.rs | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index b146ac6b0a..df9424af3a 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -812,10 +812,15 @@ impl InstanceManagerRunner { if let Some(last_gen) = self.storage_generation { if last_gen >= requested_generation { // This request looks old, ignore it. + info!(self.log, "only_use_disks: Ignoring request"; + "last_gen" => ?last_gen, "requested_gen" => ?requested_generation); + return Ok(()); } } self.storage_generation = Some(requested_generation); + info!(self.log, "only_use_disks: Processing new request"; + "gen" => ?requested_generation); let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); @@ -826,6 +831,7 @@ impl InstanceManagerRunner { let Ok(Some(filesystem_pool)) = instance.get_filesystem_zpool().await else { + info!(self.log, "only_use_disks: Cannot read filesystem pool"; "id" => ?id); continue; }; if !u2_set.contains(&filesystem_pool) { @@ -834,6 +840,7 @@ impl InstanceManagerRunner { } for id in to_remove { + info!(self.log, "only_use_disks: Removing instance"; "id" => ?id); self.instances.remove(&id); } diff --git a/sled-agent/src/probe_manager.rs b/sled-agent/src/probe_manager.rs index 42b788d0d8..ff4c50b30f 100644 --- a/sled-agent/src/probe_manager.rs +++ b/sled-agent/src/probe_manager.rs @@ -107,10 +107,14 @@ impl ProbeManager { if let Some(last_gen) = probes.storage_generation { if last_gen >= requested_generation { // This request looks old, ignore it. + info!(self.inner.log, "only_use_disks: Ignoring request"; + "last_gen" => ?last_gen, "requested_gen" => ?requested_generation); return; } } probes.storage_generation = Some(requested_generation); + info!(self.inner.log, "only_use_disks: Processing new request"; + "gen" => ?requested_generation); let to_remove = probes .zones @@ -118,6 +122,7 @@ impl ProbeManager { .filter_map(|(id, probe)| { let Some(probe_pool) = probe.root_zpool() else { // No known pool for this probe + info!(self.inner.log, "only_use_disks: Cannot read filesystem pool"; "id" => ?id); return None; }; @@ -130,6 +135,7 @@ impl ProbeManager { .collect::>(); for probe_id in to_remove { + info!(self.inner.log, "only_use_disks: Removing probe"; "probe_id" => ?probe_id); self.inner.remove_probe_locked(&mut probes, probe_id).await; } } diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index eb90fc41dc..82ee45b4e3 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -819,9 +819,11 @@ impl SledAgent { &self, config: OmicronPhysicalDisksConfig, ) -> Result { + info!(self.log, "physical disks ensure"); // Tell the storage subsystem which disks should be managed. let disk_result = self.storage().omicron_physical_disks_ensure(config).await?; + info!(self.log, "physical disks ensure: Updated storage"); // Grab a view of the latest set of disks, alongside a generation // number. @@ -847,23 +849,28 @@ impl SledAgent { // ensure that we always progress towards the last-requested state. let latest_disks = self.storage().get_latest_disks().await; let our_gen = latest_disks.generation(); + info!(self.log, "physical disks ensure: Propagating new generation of disks"; "generation" => ?our_gen); // Ensure that the StorageMonitor, and the dump devices, have committed // to start using new disks and stop using old ones. self.inner.storage_monitor.await_generation(*our_gen).await?; + info!(self.log, "physical disks ensure: Updated storage monitor"); // Ensure that the ZoneBundler, if it was creating a bundle referencing // the old U.2s, has stopped using them. self.inner.zone_bundler.await_completion_of_prior_bundles().await; + info!(self.log, "physical disks ensure: Updated zone bundler"); // Ensure that all probes, at least after our call to // "omicron_physical_disks_ensure", stop using any disks that // may have been in-service from before that request. self.inner.probes.only_use_disks(&latest_disks).await; + info!(self.log, "physical disks ensure: Updated probes"); // Do the same for instances - mark them failed if they were using // expunged disks. self.inner.instances.only_use_disks(latest_disks).await?; + info!(self.log, "physical disks ensure: Updated instances"); Ok(disk_result) } From 154a0713a32499f2e5189d4bca03f64488aa8646 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Wed, 3 Jul 2024 16:34:51 -0700 Subject: [PATCH 37/42] review feedback --- sled-agent/src/instance_manager.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index df9424af3a..2701db19ab 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -329,7 +329,7 @@ impl InstanceManager { rx.await? } - /// Marks instances failed unless they're using "disks". + /// Marks instances failed unless they're using storage from `disks`. /// /// This function looks for transient zone filesystem usage on expunged /// zpools. @@ -831,7 +831,7 @@ impl InstanceManagerRunner { let Ok(Some(filesystem_pool)) = instance.get_filesystem_zpool().await else { - info!(self.log, "only_use_disks: Cannot read filesystem pool"; "id" => ?id); + info!(self.log, "only_use_disks: Cannot read filesystem pool"; "instance_id" => ?id); continue; }; if !u2_set.contains(&filesystem_pool) { @@ -840,7 +840,7 @@ impl InstanceManagerRunner { } for id in to_remove { - info!(self.log, "only_use_disks: Removing instance"; "id" => ?id); + info!(self.log, "only_use_disks: Removing instance"; "instance_id" => ?id); self.instances.remove(&id); } From 691bc85bbde60f7d365ed9dac4d2ba902b1333f9 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 5 Jul 2024 09:02:20 -0700 Subject: [PATCH 38/42] tx naming --- sled-agent/src/dump_setup.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sled-agent/src/dump_setup.rs b/sled-agent/src/dump_setup.rs index 5f5618cce7..02d40195cf 100644 --- a/sled-agent/src/dump_setup.rs +++ b/sled-agent/src/dump_setup.rs @@ -524,7 +524,7 @@ impl DumpSetupWorker { // This is particularly useful for disk expungement, when a caller // wants to ensure that the dump device is no longer accessing an // old device. - let mut last_update_complete_tx = None; + let mut evaluation_and_archiving_complete_tx = None; loop { match tokio::time::timeout(ARCHIVAL_INTERVAL, self.rx.recv()).await @@ -535,7 +535,8 @@ impl DumpSetupWorker { core_datasets, update_complete_tx, })) => { - last_update_complete_tx = Some(update_complete_tx); + evaluation_and_archiving_complete_tx = + Some(update_complete_tx); self.update_disk_loadout( dump_slices, debug_datasets, @@ -562,7 +563,7 @@ impl DumpSetupWorker { error!(self.log, "Failed to archive debug/dump files: {err:?}"); } - if let Some(tx) = last_update_complete_tx.take() { + if let Some(tx) = evaluation_and_archiving_complete_tx.take() { if let Err(err) = tx.send(()) { error!(self.log, "DumpDevice failed to notify caller"; "err" => ?err); } From e360daefbf3409b6df795f0e01ca45f543ff4f43 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 5 Jul 2024 09:26:34 -0700 Subject: [PATCH 39/42] more explicit instance termination --- sled-agent/src/instance_manager.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index 2701db19ab..f4b2ea5b49 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -841,7 +841,17 @@ impl InstanceManagerRunner { for id in to_remove { info!(self.log, "only_use_disks: Removing instance"; "instance_id" => ?id); - self.instances.remove(&id); + if let Some((_, instance)) = self.instances.remove(&id) { + let (tx, rx) = oneshot::channel(); + if let Err(e) = instance.terminate(tx).await { + warn!(self.log, "only_use_disks: Failed to request instance removal"; "err" => ?e); + continue; + } + + if let Err(e) = rx.await { + warn!(self.log, "only_use_disks: Failed while removing instance"; "err" => ?e); + } + } } tx.send(Ok(())).map_err(|_| Error::FailedSendClientClosed)?; From ec013d9a1dbb0d41dde1f595c68865ff8db9967c Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 5 Jul 2024 11:19:46 -0700 Subject: [PATCH 40/42] better handling of oneshot tx in instance manager --- sled-agent/src/instance_manager.rs | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index f4b2ea5b49..e408679149 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -517,7 +517,8 @@ impl InstanceManagerRunner { self.get_instance_state(tx, instance_id).await }, Some(OnlyUseDisks { disks, tx } ) => { - self.only_use_disks(tx, disks).await + self.only_use_disks(disks).await; + tx.send(Ok(())).map_err(|_| Error::FailedSendClientClosed) }, None => { warn!(self.log, "InstanceManager's request channel closed; shutting down"); @@ -803,9 +804,8 @@ impl InstanceManagerRunner { async fn only_use_disks( &mut self, - tx: oneshot::Sender>, disks: AllDisks, - ) -> Result<(), Error> { + ) { // Consider the generation number on the incoming request to avoid // applying old requests. let requested_generation = *disks.generation(); @@ -814,8 +814,7 @@ impl InstanceManagerRunner { // This request looks old, ignore it. info!(self.log, "only_use_disks: Ignoring request"; "last_gen" => ?last_gen, "requested_gen" => ?requested_generation); - - return Ok(()); + return; } } self.storage_generation = Some(requested_generation); @@ -853,9 +852,6 @@ impl InstanceManagerRunner { } } } - - tx.send(Ok(())).map_err(|_| Error::FailedSendClientClosed)?; - Ok(()) } } From a818de28c6123b18b1dc2e73ac4753fe2ebd6e92 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 5 Jul 2024 11:25:23 -0700 Subject: [PATCH 41/42] use_only_these_disks --- sled-agent/src/instance_manager.rs | 24 ++++++++++++------------ sled-agent/src/probe_manager.rs | 10 +++++----- sled-agent/src/sled_agent.rs | 4 ++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index e408679149..f40e37bf55 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -333,7 +333,10 @@ impl InstanceManager { /// /// This function looks for transient zone filesystem usage on expunged /// zpools. - pub async fn only_use_disks(&self, disks: AllDisks) -> Result<(), Error> { + pub async fn use_only_these_disks( + &self, + disks: AllDisks, + ) -> Result<(), Error> { let (tx, rx) = oneshot::channel(); self.inner .tx @@ -517,7 +520,7 @@ impl InstanceManagerRunner { self.get_instance_state(tx, instance_id).await }, Some(OnlyUseDisks { disks, tx } ) => { - self.only_use_disks(disks).await; + self.use_only_these_disks(disks).await; tx.send(Ok(())).map_err(|_| Error::FailedSendClientClosed) }, None => { @@ -802,23 +805,20 @@ impl InstanceManagerRunner { Ok(()) } - async fn only_use_disks( - &mut self, - disks: AllDisks, - ) { + async fn use_only_these_disks(&mut self, disks: AllDisks) { // Consider the generation number on the incoming request to avoid // applying old requests. let requested_generation = *disks.generation(); if let Some(last_gen) = self.storage_generation { if last_gen >= requested_generation { // This request looks old, ignore it. - info!(self.log, "only_use_disks: Ignoring request"; + info!(self.log, "use_only_these_disks: Ignoring request"; "last_gen" => ?last_gen, "requested_gen" => ?requested_generation); return; } } self.storage_generation = Some(requested_generation); - info!(self.log, "only_use_disks: Processing new request"; + info!(self.log, "use_only_these_disks: Processing new request"; "gen" => ?requested_generation); let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); @@ -830,7 +830,7 @@ impl InstanceManagerRunner { let Ok(Some(filesystem_pool)) = instance.get_filesystem_zpool().await else { - info!(self.log, "only_use_disks: Cannot read filesystem pool"; "instance_id" => ?id); + info!(self.log, "use_only_these_disks: Cannot read filesystem pool"; "instance_id" => ?id); continue; }; if !u2_set.contains(&filesystem_pool) { @@ -839,16 +839,16 @@ impl InstanceManagerRunner { } for id in to_remove { - info!(self.log, "only_use_disks: Removing instance"; "instance_id" => ?id); + info!(self.log, "use_only_these_disks: Removing instance"; "instance_id" => ?id); if let Some((_, instance)) = self.instances.remove(&id) { let (tx, rx) = oneshot::channel(); if let Err(e) = instance.terminate(tx).await { - warn!(self.log, "only_use_disks: Failed to request instance removal"; "err" => ?e); + warn!(self.log, "use_only_these_disks: Failed to request instance removal"; "err" => ?e); continue; } if let Err(e) = rx.await { - warn!(self.log, "only_use_disks: Failed while removing instance"; "err" => ?e); + warn!(self.log, "use_only_these_disks: Failed while removing instance"; "err" => ?e); } } } diff --git a/sled-agent/src/probe_manager.rs b/sled-agent/src/probe_manager.rs index ff4c50b30f..9451484f21 100644 --- a/sled-agent/src/probe_manager.rs +++ b/sled-agent/src/probe_manager.rs @@ -97,7 +97,7 @@ impl ProbeManager { /// Removes any probes using filesystem roots on zpools that are not /// contained in the set of "disks". - pub(crate) async fn only_use_disks(&self, disks: &AllDisks) { + pub(crate) async fn use_only_these_disks(&self, disks: &AllDisks) { let u2_set: HashSet<_> = disks.all_u2_zpools().into_iter().collect(); let mut probes = self.inner.running_probes.lock().await; @@ -107,13 +107,13 @@ impl ProbeManager { if let Some(last_gen) = probes.storage_generation { if last_gen >= requested_generation { // This request looks old, ignore it. - info!(self.inner.log, "only_use_disks: Ignoring request"; + info!(self.inner.log, "use_only_these_disks: Ignoring request"; "last_gen" => ?last_gen, "requested_gen" => ?requested_generation); return; } } probes.storage_generation = Some(requested_generation); - info!(self.inner.log, "only_use_disks: Processing new request"; + info!(self.inner.log, "use_only_these_disks: Processing new request"; "gen" => ?requested_generation); let to_remove = probes @@ -122,7 +122,7 @@ impl ProbeManager { .filter_map(|(id, probe)| { let Some(probe_pool) = probe.root_zpool() else { // No known pool for this probe - info!(self.inner.log, "only_use_disks: Cannot read filesystem pool"; "id" => ?id); + info!(self.inner.log, "use_only_these_disks: Cannot read filesystem pool"; "id" => ?id); return None; }; @@ -135,7 +135,7 @@ impl ProbeManager { .collect::>(); for probe_id in to_remove { - info!(self.inner.log, "only_use_disks: Removing probe"; "probe_id" => ?probe_id); + info!(self.inner.log, "use_only_these_disks: Removing probe"; "probe_id" => ?probe_id); self.inner.remove_probe_locked(&mut probes, probe_id).await; } } diff --git a/sled-agent/src/sled_agent.rs b/sled-agent/src/sled_agent.rs index 82ee45b4e3..9832144791 100644 --- a/sled-agent/src/sled_agent.rs +++ b/sled-agent/src/sled_agent.rs @@ -864,12 +864,12 @@ impl SledAgent { // Ensure that all probes, at least after our call to // "omicron_physical_disks_ensure", stop using any disks that // may have been in-service from before that request. - self.inner.probes.only_use_disks(&latest_disks).await; + self.inner.probes.use_only_these_disks(&latest_disks).await; info!(self.log, "physical disks ensure: Updated probes"); // Do the same for instances - mark them failed if they were using // expunged disks. - self.inner.instances.only_use_disks(latest_disks).await?; + self.inner.instances.use_only_these_disks(latest_disks).await?; info!(self.log, "physical disks ensure: Updated instances"); Ok(disk_result) From f242e0aff03129af7d93e87b9344420fb7f2f813 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 5 Jul 2024 11:40:24 -0700 Subject: [PATCH 42/42] Mark vmm failed --- sled-agent/src/common/instance.rs | 13 ++++++++++--- sled-agent/src/instance.rs | 28 +++++++++++++++++----------- sled-agent/src/instance_manager.rs | 6 ++++-- sled-agent/src/sim/instance.rs | 6 ++++-- 4 files changed, 35 insertions(+), 18 deletions(-) diff --git a/sled-agent/src/common/instance.rs b/sled-agent/src/common/instance.rs index ed0aceff82..0fe2e27698 100644 --- a/sled-agent/src/common/instance.rs +++ b/sled-agent/src/common/instance.rs @@ -486,9 +486,15 @@ impl InstanceStates { /// instance's state in Nexus may become inconsistent. This routine should /// therefore only be invoked by callers who know that an instance is not /// migrating. - pub(crate) fn terminate_rudely(&mut self) { + pub(crate) fn terminate_rudely(&mut self, mark_failed: bool) { + let vmm_state = if mark_failed { + PropolisInstanceState(PropolisApiState::Failed) + } else { + PropolisInstanceState(PropolisApiState::Destroyed) + }; + let fake_observed = ObservedPropolisState { - vmm_state: PropolisInstanceState(PropolisApiState::Destroyed), + vmm_state, migration_status: if self.instance.migration_id.is_some() { ObservedMigrationStatus::Failed } else { @@ -893,7 +899,8 @@ mod test { assert_eq!(state.propolis_role(), PropolisRole::MigrationTarget); let prev = state.clone(); - state.terminate_rudely(); + let mark_failed = false; + state.terminate_rudely(mark_failed); assert_state_change_has_gen_change(&prev, &state); assert_eq!(state.instance.gen, prev.instance.gen); diff --git a/sled-agent/src/instance.rs b/sled-agent/src/instance.rs index 540811e412..38b97173fc 100644 --- a/sled-agent/src/instance.rs +++ b/sled-agent/src/instance.rs @@ -231,6 +231,7 @@ enum InstanceRequest { tx: oneshot::Sender>, }, Terminate { + mark_failed: bool, tx: oneshot::Sender>, }, IssueSnapshotRequest { @@ -395,7 +396,8 @@ impl InstanceRunner { // of the sender alive in "self.tx_monitor". None => { warn!(self.log, "Instance 'VMM monitor' channel closed; shutting down"); - self.terminate().await; + let mark_failed = true; + self.terminate(mark_failed).await; }, } @@ -432,9 +434,9 @@ impl InstanceRunner { ) .map_err(|_| Error::FailedSendClientClosed) }, - Some(Terminate { tx }) => { + Some(Terminate { mark_failed, tx }) => { tx.send(Ok(InstanceUnregisterResponse { - updated_runtime: Some(self.terminate().await) + updated_runtime: Some(self.terminate(mark_failed).await) })) .map_err(|_| Error::FailedSendClientClosed) }, @@ -457,7 +459,8 @@ impl InstanceRunner { }, None => { warn!(self.log, "Instance request channel closed; shutting down"); - self.terminate().await; + let mark_failed = false; + self.terminate(mark_failed).await; break; }, }; @@ -617,8 +620,8 @@ impl InstanceRunner { Some(InstanceAction::Destroy) => { info!(self.log, "terminating VMM that has exited"; "instance_id" => %self.id()); - - self.terminate().await; + let mark_failed = false; + self.terminate(mark_failed).await; Reaction::Terminate } None => Reaction::Continue, @@ -1132,9 +1135,10 @@ impl Instance { pub async fn terminate( &self, tx: oneshot::Sender>, + mark_failed: bool, ) -> Result<(), Error> { self.tx - .send(InstanceRequest::Terminate { tx }) + .send(InstanceRequest::Terminate { mark_failed, tx }) .await .map_err(|_| Error::FailedSendChannelClosed)?; Ok(()) @@ -1254,7 +1258,8 @@ impl InstanceRunner { // This case is morally equivalent to starting Propolis and then // rudely terminating it before asking it to do anything. Update // the VMM and instance states accordingly. - self.state.terminate_rudely(); + let mark_failed = false; + self.state.terminate_rudely(mark_failed); } setup_result?; } @@ -1281,7 +1286,8 @@ impl InstanceRunner { // this happens, generate an instance record bearing the // "Destroyed" state and return it to the caller. if self.running_state.is_none() { - self.terminate().await; + let mark_failed = false; + self.terminate(mark_failed).await; (None, None) } else { ( @@ -1481,9 +1487,9 @@ impl InstanceRunner { Ok(PropolisSetup { client, running_zone }) } - async fn terminate(&mut self) -> SledInstanceState { + async fn terminate(&mut self, mark_failed: bool) -> SledInstanceState { self.terminate_inner().await; - self.state.terminate_rudely(); + self.state.terminate_rudely(mark_failed); // This causes the "run" task to exit on the next iteration. self.should_terminate = true; diff --git a/sled-agent/src/instance_manager.rs b/sled-agent/src/instance_manager.rs index f40e37bf55..cfb96fb8c9 100644 --- a/sled-agent/src/instance_manager.rs +++ b/sled-agent/src/instance_manager.rs @@ -667,7 +667,8 @@ impl InstanceManagerRunner { // Otherwise, we pipeline the request, and send it to the instance, // where it can receive an appropriate response. - instance.terminate(tx).await?; + let mark_failed = false; + instance.terminate(tx, mark_failed).await?; Ok(()) } @@ -842,7 +843,8 @@ impl InstanceManagerRunner { info!(self.log, "use_only_these_disks: Removing instance"; "instance_id" => ?id); if let Some((_, instance)) = self.instances.remove(&id) { let (tx, rx) = oneshot::channel(); - if let Err(e) = instance.terminate(tx).await { + let mark_failed = true; + if let Err(e) = instance.terminate(tx, mark_failed).await { warn!(self.log, "use_only_these_disks: Failed to request instance removal"; "err" => ?e); continue; } diff --git a/sled-agent/src/sim/instance.rs b/sled-agent/src/sim/instance.rs index be6c63f53a..e94b3b4984 100644 --- a/sled-agent/src/sim/instance.rs +++ b/sled-agent/src/sim/instance.rs @@ -211,7 +211,8 @@ impl SimInstanceInner { InstanceStateRequested::Stopped => { match self.next_resting_state() { VmmState::Starting => { - self.state.terminate_rudely(); + let mark_failed = false; + self.state.terminate_rudely(mark_failed); } VmmState::Running => self.queue_graceful_stop(), // Idempotently allow requests to stop an instance that is @@ -363,7 +364,8 @@ impl SimInstanceInner { /// Simulates rude termination by moving the instance to the Destroyed state /// immediately and clearing the queue of pending state transitions. fn terminate(&mut self) -> SledInstanceState { - self.state.terminate_rudely(); + let mark_failed = false; + self.state.terminate_rudely(mark_failed); self.queue.clear(); self.destroyed = true; self.state.sled_instance_state()