From ddb2b29bfd1da75a9035fecf15169891be5bcafd Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 28 May 2021 13:18:31 +0200 Subject: [PATCH] Rename datacenters into zones (doc not yet updated) --- script/dev-configure.sh | 2 +- src/garage/cli.rs | 24 ++++++++++++------------ src/rpc/ring.rs | 18 +++++++++--------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/script/dev-configure.sh b/script/dev-configure.sh index d47e64c3..bc8352d8 100755 --- a/script/dev-configure.sh +++ b/script/dev-configure.sh @@ -18,6 +18,6 @@ garage status \ | grep UNCONFIGURED \ | grep -Po '^[0-9a-f]+' \ | while read id; do - garage node configure -d dc1 -c 1 $id + garage node configure -z dc1 -c 1 $id done diff --git a/src/garage/cli.rs b/src/garage/cli.rs index 42cc657f..30d5726e 100644 --- a/src/garage/cli.rs +++ b/src/garage/cli.rs @@ -72,9 +72,9 @@ pub struct ConfigureNodeOpt { /// Node to configure (prefix of hexadecimal node id) node_id: String, - /// Location (datacenter) of the node - #[structopt(short = "d", long = "datacenter")] - datacenter: Option, + /// Location (zone or datacenter) of the node + #[structopt(short = "z", long = "zone")] + zone: Option, /// Capacity (in relative terms, use 1 to represent your smallest server) #[structopt(short = "c", long = "capacity")] @@ -347,7 +347,7 @@ pub async fn cmd_status( adv.state_info.hostname, adv.addr, cfg.tag, - cfg.datacenter, + cfg.zone, cfg.capacity_string() ); } else { @@ -374,7 +374,7 @@ pub async fn cmd_status( adv.state_info.hostname, adv.addr, cfg.tag, - cfg.datacenter, + cfg.zone, cfg.capacity_string(), (now_msec() - adv.last_seen) / 1000, ); @@ -386,7 +386,7 @@ pub async fn cmd_status( "{:?}\t{}\t{}\t{}\tnever seen", id, cfg.tag, - cfg.datacenter, + cfg.zone, cfg.capacity_string(), ); } @@ -467,9 +467,9 @@ pub async fn cmd_configure( "Please specify a capacity with the -c flag, or set node explicitly as gateway with -g".into())), }; NetworkConfigEntry { - datacenter: args - .datacenter - .expect("Please specifiy a datacenter with the -d flag"), + zone: args + .zone + .expect("Please specifiy a zone with the -z flag"), capacity, tag: args.tag.unwrap_or_default(), } @@ -481,9 +481,9 @@ pub async fn cmd_configure( _ => old.capacity, }; NetworkConfigEntry { - datacenter: args - .datacenter - .unwrap_or_else(|| old.datacenter.to_string()), + zone: args + .zone + .unwrap_or_else(|| old.zone.to_string()), capacity, tag: args.tag.unwrap_or_else(|| old.tag.to_string()), } diff --git a/src/rpc/ring.rs b/src/rpc/ring.rs index daeb25d8..a5e5d4af 100644 --- a/src/rpc/ring.rs +++ b/src/rpc/ring.rs @@ -45,7 +45,7 @@ impl NetworkConfig { pub struct NetworkConfigEntry { /// Datacenter at which this entry belong. This infromation might be used to perform a better /// geodistribution - pub datacenter: String, + pub zone: String, /// The (relative) capacity of the node /// If this is set to None, the node does not participate in storing data for the system /// and is only active as an API gateway to other nodes @@ -109,13 +109,13 @@ impl Ring { // Create a vector of partition indices (0 to 2**PARTITION_BITS-1) let partitions_idx = (0usize..(1usize << PARTITION_BITS)).collect::>(); - let datacenters = config + let zones = config .members .iter() .filter(|(_id, info)| info.capacity.is_some()) - .map(|(_id, info)| info.datacenter.as_str()) + .map(|(_id, info)| info.zone.as_str()) .collect::>(); - let n_datacenters = datacenters.len(); + let n_zones = zones.len(); // Prepare ring let mut partitions: Vec> = partitions_idx @@ -174,13 +174,13 @@ impl Ring { if partitions[qv].len() != rep { continue; } - let p_dcs = partitions[qv] + let p_zns = partitions[qv] .iter() - .map(|(_id, info)| info.datacenter.as_str()) + .map(|(_id, info)| info.zone.as_str()) .collect::>(); - if (p_dcs.len() < n_datacenters - && !p_dcs.contains(&node_info.datacenter.as_str())) - || (p_dcs.len() == n_datacenters + if (p_zns.len() < n_zones + && !p_zns.contains(&node_info.zone.as_str())) + || (p_zns.len() == n_zones && !partitions[qv].iter().any(|(id, _i)| id == node_id)) { partitions[qv].push((node_id, node_info));