Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions common/src/api/internal/shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -710,8 +710,12 @@ pub struct ResolvedVpcRouteSet {
pub enum DatasetKind {
Crucible,
Cockroach,
/// Used for single-node clickhouse deployments
Clickhouse,
/// Used for replicated clickhouse deployments
ClickhouseKeeper,
/// Used for replicated clickhouse deployments
ClickhouseServer,
ExternalDns,
InternalDns,
}
Expand All @@ -724,6 +728,7 @@ impl fmt::Display for DatasetKind {
Cockroach => "cockroach",
Clickhouse => "clickhouse",
ClickhouseKeeper => "clickhouse_keeper",
ClickhouseServer => "clickhouse_server",
ExternalDns => "external_dns",
InternalDns => "internal_dns",
};
Expand Down
1 change: 1 addition & 0 deletions dev-tools/omdb/src/bin/omdb/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1106,6 +1106,7 @@ async fn lookup_service_info(
| BlueprintZoneType::InternalNtp(_) => ServiceKind::Ntp,
BlueprintZoneType::Clickhouse(_) => ServiceKind::Clickhouse,
BlueprintZoneType::ClickhouseKeeper(_) => ServiceKind::ClickhouseKeeper,
BlueprintZoneType::ClickhouseServer(_) => ServiceKind::ClickhouseServer,
BlueprintZoneType::CockroachDb(_) => ServiceKind::Cockroach,
BlueprintZoneType::Crucible(_) => ServiceKind::Crucible,
BlueprintZoneType::CruciblePantry(_) => ServiceKind::CruciblePantry,
Expand Down
3 changes: 3 additions & 0 deletions internal-dns/src/names.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ pub const DNS_ZONE_EXTERNAL_TESTING: &str = "oxide-dev.test";
pub enum ServiceName {
Clickhouse,
ClickhouseKeeper,
ClickhouseServer,
Cockroach,
InternalDns,
ExternalDns,
Expand All @@ -48,6 +49,7 @@ impl ServiceName {
match self {
ServiceName::Clickhouse => "clickhouse",
ServiceName::ClickhouseKeeper => "clickhouse-keeper",
ServiceName::ClickhouseServer => "clickhouse-server",
ServiceName::Cockroach => "cockroach",
ServiceName::ExternalDns => "external-dns",
ServiceName::InternalDns => "nameservice",
Expand All @@ -73,6 +75,7 @@ impl ServiceName {
match self {
ServiceName::Clickhouse
| ServiceName::ClickhouseKeeper
| ServiceName::ClickhouseServer
| ServiceName::Cockroach
| ServiceName::InternalDns
| ServiceName::ExternalDns
Expand Down
24 changes: 24 additions & 0 deletions nexus-sled-agent-shared/src/inventory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,15 +134,26 @@ pub enum OmicronZoneType {
snat_cfg: SourceNatConfig,
},

/// Type of clickhouse zone used for a single node clickhouse deployment
Clickhouse {
address: SocketAddrV6,
dataset: OmicronZoneDataset,
},

/// A zone used to run a Clickhouse Keeper node
///
/// Keepers are only used in replicated clickhouse setups
ClickhouseKeeper {
address: SocketAddrV6,
dataset: OmicronZoneDataset,
},

/// A zone used to run a Clickhouse Server in a replicated deployment
ClickhouseServer {
address: SocketAddrV6,
dataset: OmicronZoneDataset,
},

CockroachDb {
address: SocketAddrV6,
dataset: OmicronZoneDataset,
Expand Down Expand Up @@ -212,6 +223,9 @@ impl OmicronZoneType {
OmicronZoneType::ClickhouseKeeper { .. } => {
ZoneKind::ClickhouseKeeper
}
OmicronZoneType::ClickhouseServer { .. } => {
ZoneKind::ClickhouseServer
}
OmicronZoneType::CockroachDb { .. } => ZoneKind::CockroachDb,
OmicronZoneType::Crucible { .. } => ZoneKind::Crucible,
OmicronZoneType::CruciblePantry { .. } => ZoneKind::CruciblePantry,
Expand Down Expand Up @@ -252,6 +266,7 @@ impl OmicronZoneType {

OmicronZoneType::Clickhouse { .. }
| OmicronZoneType::ClickhouseKeeper { .. }
| OmicronZoneType::ClickhouseServer { .. }
| OmicronZoneType::CockroachDb { .. }
| OmicronZoneType::Crucible { .. }
| OmicronZoneType::CruciblePantry { .. }
Expand All @@ -271,6 +286,7 @@ impl OmicronZoneType {
| OmicronZoneType::InternalNtp { .. }
| OmicronZoneType::Clickhouse { .. }
| OmicronZoneType::ClickhouseKeeper { .. }
| OmicronZoneType::ClickhouseServer { .. }
| OmicronZoneType::CockroachDb { .. }
| OmicronZoneType::Crucible { .. }
| OmicronZoneType::CruciblePantry { .. }
Expand All @@ -289,6 +305,7 @@ impl OmicronZoneType {
| OmicronZoneType::InternalNtp { .. }
| OmicronZoneType::Clickhouse { .. }
| OmicronZoneType::ClickhouseKeeper { .. }
| OmicronZoneType::ClickhouseServer { .. }
| OmicronZoneType::CockroachDb { .. }
| OmicronZoneType::CruciblePantry { .. }
| OmicronZoneType::ExternalDns { .. }
Expand All @@ -310,6 +327,7 @@ impl OmicronZoneType {
OmicronZoneType::InternalNtp { .. }
| OmicronZoneType::Clickhouse { .. }
| OmicronZoneType::ClickhouseKeeper { .. }
| OmicronZoneType::ClickhouseServer { .. }
| OmicronZoneType::CockroachDb { .. }
| OmicronZoneType::Crucible { .. }
| OmicronZoneType::CruciblePantry { .. }
Expand All @@ -328,6 +346,7 @@ impl OmicronZoneType {
OmicronZoneType::InternalNtp { .. }
| OmicronZoneType::Clickhouse { .. }
| OmicronZoneType::ClickhouseKeeper { .. }
| OmicronZoneType::ClickhouseServer { .. }
| OmicronZoneType::CockroachDb { .. }
| OmicronZoneType::Crucible { .. }
| OmicronZoneType::CruciblePantry { .. }
Expand Down Expand Up @@ -367,6 +386,7 @@ pub enum ZoneKind {
BoundaryNtp,
Clickhouse,
ClickhouseKeeper,
ClickhouseServer,
CockroachDb,
Crucible,
CruciblePantry,
Expand All @@ -390,6 +410,7 @@ impl ZoneKind {
ZoneKind::BoundaryNtp | ZoneKind::InternalNtp => Self::NTP_PREFIX,
ZoneKind::Clickhouse => "clickhouse",
ZoneKind::ClickhouseKeeper => "clickhouse_keeper",
ZoneKind::ClickhouseServer => "clickhouse_server",
// Note "cockroachdb" for historical reasons.
ZoneKind::CockroachDb => "cockroachdb",
ZoneKind::Crucible => "crucible",
Expand All @@ -409,6 +430,7 @@ impl ZoneKind {
ZoneKind::BoundaryNtp | ZoneKind::InternalNtp => Self::NTP_PREFIX,
ZoneKind::Clickhouse => "clickhouse",
ZoneKind::ClickhouseKeeper => "clickhouse_keeper",
ZoneKind::ClickhouseServer => "clickhouse_server",
// Note "cockroachdb" for historical reasons.
ZoneKind::CockroachDb => "cockroachdb",
ZoneKind::Crucible => "crucible",
Expand All @@ -431,6 +453,7 @@ impl ZoneKind {
ZoneKind::BoundaryNtp | ZoneKind::InternalNtp => Self::NTP_PREFIX,
ZoneKind::Clickhouse => "clickhouse",
ZoneKind::ClickhouseKeeper => "clickhouse-keeper",
ZoneKind::ClickhouseServer => "clickhouse_server",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh... this isn't going to work, needs a dash. (Should add a test for this!)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// Note "cockroach" for historical reasons.
ZoneKind::CockroachDb => "cockroach",
ZoneKind::Crucible => "crucible",
Expand All @@ -451,6 +474,7 @@ impl ZoneKind {
ZoneKind::BoundaryNtp => "boundary_ntp",
ZoneKind::Clickhouse => "clickhouse",
ZoneKind::ClickhouseKeeper => "clickhouse_keeper",
ZoneKind::ClickhouseServer => "clickhouse_server",
ZoneKind::CockroachDb => "cockroach_db",
ZoneKind::Crucible => "crucible",
ZoneKind::CruciblePantry => "crucible_pantry",
Expand Down
4 changes: 4 additions & 0 deletions nexus/db-model/src/dataset_kind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ impl_enum_type!(
Cockroach => b"cockroach"
Clickhouse => b"clickhouse"
ClickhouseKeeper => b"clickhouse_keeper"
ClickhouseServer => b"clickhouse_server"
ExternalDns => b"external_dns"
InternalDns => b"internal_dns"
);
Expand All @@ -35,6 +36,9 @@ impl From<internal::shared::DatasetKind> for DatasetKind {
internal::shared::DatasetKind::ClickhouseKeeper => {
DatasetKind::ClickhouseKeeper
}
internal::shared::DatasetKind::ClickhouseServer => {
DatasetKind::ClickhouseServer
}
internal::shared::DatasetKind::ExternalDns => {
DatasetKind::ExternalDns
}
Expand Down
4 changes: 4 additions & 0 deletions nexus/db-model/src/inventory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -985,6 +985,7 @@ impl_enum_type!(
BoundaryNtp => b"boundary_ntp"
Clickhouse => b"clickhouse"
ClickhouseKeeper => b"clickhouse_keeper"
ClickhouseServer => b"clickhouse_server"
CockroachDb => b"cockroach_db"
Crucible => b"crucible"
CruciblePantry => b"crucible_pantry"
Expand All @@ -1001,6 +1002,7 @@ impl From<ZoneType> for ServiceKind {
ZoneType::BoundaryNtp | ZoneType::InternalNtp => Self::Ntp,
ZoneType::Clickhouse => Self::Clickhouse,
ZoneType::ClickhouseKeeper => Self::ClickhouseKeeper,
ZoneType::ClickhouseServer => Self::ClickhouseServer,
ZoneType::CockroachDb => Self::Cockroach,
ZoneType::Crucible => Self::Crucible,
ZoneType::CruciblePantry => Self::CruciblePantry,
Expand All @@ -1020,6 +1022,7 @@ impl From<ZoneType> for nexus_sled_agent_shared::inventory::ZoneKind {
ZoneType::BoundaryNtp => BoundaryNtp,
ZoneType::Clickhouse => Clickhouse,
ZoneType::ClickhouseKeeper => ClickhouseKeeper,
ZoneType::ClickhouseServer => ClickhouseServer,
ZoneType::CockroachDb => CockroachDb,
ZoneType::Crucible => Crucible,
ZoneType::CruciblePantry => CruciblePantry,
Expand All @@ -1040,6 +1043,7 @@ impl From<nexus_sled_agent_shared::inventory::ZoneKind> for ZoneType {
BoundaryNtp => ZoneType::BoundaryNtp,
Clickhouse => ZoneType::Clickhouse,
ClickhouseKeeper => ZoneType::ClickhouseKeeper,
ClickhouseServer => ZoneType::ClickhouseServer,
CockroachDb => ZoneType::CockroachDb,
Crucible => ZoneType::Crucible,
CruciblePantry => ZoneType::CruciblePantry,
Expand Down
13 changes: 13 additions & 0 deletions nexus/db-model/src/omicron_zone_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ impl OmicronZone {
OmicronZoneType::ClickhouseKeeper { address, dataset } => {
(ZoneType::ClickhouseKeeper, address, Some(dataset))
}
OmicronZoneType::ClickhouseServer { address, dataset } => {
(ZoneType::ClickhouseServer, address, Some(dataset))
}
OmicronZoneType::CockroachDb { address, dataset } => {
(ZoneType::CockroachDb, address, Some(dataset))
}
Expand Down Expand Up @@ -258,6 +261,12 @@ impl OmicronZone {
dataset: common.dataset?,
},
),
ZoneType::ClickhouseServer => BlueprintZoneType::ClickhouseServer(
blueprint_zone_type::ClickhouseServer {
address,
dataset: common.dataset?,
},
),
ZoneType::CockroachDb => BlueprintZoneType::CockroachDb(
blueprint_zone_type::CockroachDb {
address,
Expand Down Expand Up @@ -392,6 +401,10 @@ impl OmicronZone {
address,
dataset: common.dataset?,
},
ZoneType::ClickhouseServer => OmicronZoneType::ClickhouseServer {
address,
dataset: common.dataset?,
},
ZoneType::CockroachDb => OmicronZoneType::CockroachDb {
address,
dataset: common.dataset?,
Expand Down
3 changes: 2 additions & 1 deletion nexus/db-model/src/schema_versions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(86, 0, 0);
pub const SCHEMA_VERSION: SemverVersion = SemverVersion::new(87, 0, 0);

/// List of all past database schema versions, in *reverse* order
///
Expand All @@ -29,6 +29,7 @@ static KNOWN_VERSIONS: Lazy<Vec<KnownVersion>> = 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(87, "add-clickhouse-server-enum-variants"),
KnownVersion::new(86, "snapshot-replacement"),
KnownVersion::new(85, "add-migrations-by-time-created-index"),
KnownVersion::new(84, "region-read-only"),
Expand Down
1 change: 1 addition & 0 deletions nexus/db-model/src/service_kind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ impl_enum_type!(
// Enum values
Clickhouse => b"clickhouse"
ClickhouseKeeper => b"clickhouse_keeper"
ClickhouseServer => b"clickhouse_server"
Cockroach => b"cockroach"
Crucible => b"crucible"
CruciblePantry => b"crucible_pantry"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ impl DataStore {
ZoneKind::Nexus => &*NEXUS_VPC_SUBNET,
ZoneKind::Clickhouse
| ZoneKind::ClickhouseKeeper
| ZoneKind::ClickhouseServer
| ZoneKind::CockroachDb
| ZoneKind::Crucible
| ZoneKind::CruciblePantry
Expand Down
1 change: 1 addition & 0 deletions nexus/db-queries/src/db/datastore/rack.rs
Original file line number Diff line number Diff line change
Expand Up @@ -595,6 +595,7 @@ impl DataStore {
BlueprintZoneType::InternalNtp(_)
| BlueprintZoneType::Clickhouse(_)
| BlueprintZoneType::ClickhouseKeeper(_)
| BlueprintZoneType::ClickhouseServer(_)
| BlueprintZoneType::CockroachDb(_)
| BlueprintZoneType::Crucible(_)
| BlueprintZoneType::CruciblePantry(_)
Expand Down
3 changes: 3 additions & 0 deletions nexus/reconfigurator/execution/src/dns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,9 @@ pub fn blueprint_internal_dns_config(
BlueprintZoneType::ClickhouseKeeper(
blueprint_zone_type::ClickhouseKeeper { address, .. },
) => (ServiceName::ClickhouseKeeper, address.port()),
BlueprintZoneType::ClickhouseServer(
blueprint_zone_type::ClickhouseServer { address, .. },
) => (ServiceName::ClickhouseServer, address.port()),
BlueprintZoneType::CockroachDb(
blueprint_zone_type::CockroachDb { address, .. },
) => (ServiceName::Cockroach, address.port()),
Expand Down
1 change: 1 addition & 0 deletions nexus/reconfigurator/execution/src/omicron_zones.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ pub(crate) async fn clean_up_expunged_zones<R: CleanupResolver>(
BlueprintZoneType::BoundaryNtp(_)
| BlueprintZoneType::Clickhouse(_)
| BlueprintZoneType::ClickhouseKeeper(_)
| BlueprintZoneType::ClickhouseServer(_)
| BlueprintZoneType::Crucible(_)
| BlueprintZoneType::CruciblePantry(_)
| BlueprintZoneType::ExternalDns(_)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ impl DiscretionaryOmicronZone {
// Zones that we should place but don't yet.
BlueprintZoneType::Clickhouse(_)
| BlueprintZoneType::ClickhouseKeeper(_)
| BlueprintZoneType::ClickhouseServer(_)
| BlueprintZoneType::CruciblePantry(_)
| BlueprintZoneType::ExternalDns(_)
| BlueprintZoneType::InternalDns(_)
Expand Down
1 change: 1 addition & 0 deletions nexus/src/app/background/tasks/sync_service_zone_nat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@ impl BackgroundTask for ServiceZoneNatTracker {
// well
OmicronZoneType::Clickhouse {..} => continue,
OmicronZoneType::ClickhouseKeeper {..} => continue,
OmicronZoneType::ClickhouseServer{..} => continue,
OmicronZoneType::CockroachDb {..} => continue,
OmicronZoneType::Crucible {..} => continue,
OmicronZoneType::CruciblePantry {..} => continue,
Expand Down
5 changes: 5 additions & 0 deletions nexus/types/src/deployment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,11 @@ impl BlueprintZoneConfig {
blueprint_zone_type::ClickhouseKeeper { address, dataset },
)
}
OmicronZoneType::ClickhouseServer { address, dataset } => {
BlueprintZoneType::ClickhouseServer(
blueprint_zone_type::ClickhouseServer { address, dataset },
)
}
OmicronZoneType::CockroachDb { address, dataset } => {
BlueprintZoneType::CockroachDb(
blueprint_zone_type::CockroachDb { address, dataset },
Expand Down
Loading