diff --git a/clients/clickhouse-admin-client/src/lib.rs b/clients/clickhouse-admin-client/src/lib.rs index 994ad96af2..067c3e6939 100644 --- a/clients/clickhouse-admin-client/src/lib.rs +++ b/clients/clickhouse-admin-client/src/lib.rs @@ -23,6 +23,7 @@ progenitor::generate_api!( TypedUuidForOmicronZoneKind = omicron_uuid_kinds::OmicronZoneUuid, KeeperConfigurableSettings = clickhouse_admin_api::KeeperConfigurableSettings, ServerConfigurableSettings = clickhouse_admin_api::ServerConfigurableSettings, - ClickhouseKeeperClusterMembership = clickhouse_admin_types::ClickhouseKeeperClusterMembership + ClickhouseKeeperClusterMembership = clickhouse_admin_types::ClickhouseKeeperClusterMembership, + KeeperId = clickhouse_admin_types::KeeperId } ); diff --git a/nexus/db-queries/src/db/datastore/inventory.rs b/nexus/db-queries/src/db/datastore/inventory.rs index bcc9a751ef..7ea5f304cb 100644 --- a/nexus/db-queries/src/db/datastore/inventory.rs +++ b/nexus/db-queries/src/db/datastore/inventory.rs @@ -1243,6 +1243,7 @@ impl DataStore { nnics, nzpools, nerrors, + nclickhouse_keeper_membership, ) = conn .transaction_async(|conn| async move { // Remove the record describing the collection itself. @@ -1396,6 +1397,18 @@ impl DataStore { .await? }; + // Remove rows for clickhouse keeper membership + let nclickhouse_keeper_membership = { + use db::schema::inv_clickhouse_keeper_membership::dsl; + diesel::delete( + dsl::inv_clickhouse_keeper_membership.filter( + dsl::inv_collection_id.eq(db_collection_id), + ), + ) + .execute_async(&conn) + .await? + }; + Ok(( ncollections, nsps, @@ -1411,6 +1424,7 @@ impl DataStore { nnics, nzpools, nerrors, + nclickhouse_keeper_membership, )) }) .await @@ -1437,6 +1451,7 @@ impl DataStore { "nnics" => nnics, "nzpools" => nzpools, "nerrors" => nerrors, + "nclickhouse_keeper_membership" => nclickhouse_keeper_membership ); Ok(()) diff --git a/nexus/inventory/src/examples.rs b/nexus/inventory/src/examples.rs index 6aed9a48fb..9d9da8de4b 100644 --- a/nexus/inventory/src/examples.rs +++ b/nexus/inventory/src/examples.rs @@ -5,6 +5,8 @@ //! Example collections used for testing use crate::CollectionBuilder; +use clickhouse_admin_types::ClickhouseKeeperClusterMembership; +use clickhouse_admin_types::KeeperId; use gateway_client::types::PowerState; use gateway_client::types::RotSlot; use gateway_client::types::RotState; @@ -472,6 +474,14 @@ pub fn representative() -> Representative { .found_sled_omicron_zones("fake sled 15 agent", sled17_id, sled17) .unwrap(); + builder.found_clickhouse_keeper_cluster_membership( + ClickhouseKeeperClusterMembership { + queried_keeper: KeeperId(1), + leader_committed_log_index: 1000, + raft_config: [KeeperId(1)].into_iter().collect(), + }, + ); + Representative { builder, sleds: [sled1_bb, sled2_bb, sled3_bb, sled4_bb],