aboutsummaryrefslogtreecommitdiff
path: root/src/garage
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-11-14 13:06:16 +0100
committerAlex Auvolat <alex@adnab.me>2023-11-14 13:12:32 +0100
commit1aab1f4e688ebc3f3adcb41c817c16c688a3291c (patch)
treecf006db1b3aeb6ebff8d976aee33469ffabe75f2 /src/garage
parent8e292e06b3fde1d3b5b019a26eabd4f0d9ac22c3 (diff)
downloadgarage-1aab1f4e688ebc3f3adcb41c817c16c688a3291c.tar.gz
garage-1aab1f4e688ebc3f3adcb41c817c16c688a3291c.zip
layout: refactoring of all_nodes
Diffstat (limited to 'src/garage')
-rw-r--r--src/garage/admin/mod.rs17
-rw-r--r--src/garage/cli/layout.rs6
2 files changed, 12 insertions, 11 deletions
diff --git a/src/garage/admin/mod.rs b/src/garage/admin/mod.rs
index e3ba6d35..77918a0f 100644
--- a/src/garage/admin/mod.rs
+++ b/src/garage/admin/mod.rs
@@ -126,8 +126,8 @@ impl AdminRpcHandler {
opt_to_send.all_nodes = false;
let mut failures = vec![];
- let layout = self.garage.system.cluster_layout().clone();
- for node in layout.current().node_ids().iter() {
+ let all_nodes = self.garage.system.cluster_layout().all_nodes().to_vec();
+ for node in all_nodes.iter() {
let node = (*node).into();
let resp = self
.endpoint
@@ -163,9 +163,9 @@ impl AdminRpcHandler {
async fn handle_stats(&self, opt: StatsOpt) -> Result<AdminRpc, Error> {
if opt.all_nodes {
let mut ret = String::new();
- let layout = self.garage.system.cluster_layout().clone();
+ let all_nodes = self.garage.system.cluster_layout().all_nodes().to_vec();
- for node in layout.current().node_ids().iter() {
+ for node in all_nodes.iter() {
let mut opt = opt.clone();
opt.all_nodes = false;
opt.skip_global = true;
@@ -275,6 +275,7 @@ impl AdminRpcHandler {
let mut ret = String::new();
// Gather storage node and free space statistics
+ // TODO: not only layout.current() ???
let layout = &self.garage.system.cluster_layout();
let mut node_partition_count = HashMap::<Uuid, u64>::new();
for short_id in layout.current().ring_assignment_data.iter() {
@@ -440,8 +441,8 @@ impl AdminRpcHandler {
) -> Result<AdminRpc, Error> {
if all_nodes {
let mut ret = vec![];
- let layout = self.garage.system.cluster_layout().clone();
- for node in layout.current().node_ids().iter() {
+ let all_nodes = self.garage.system.cluster_layout().all_nodes().to_vec();
+ for node in all_nodes.iter() {
let node = (*node).into();
match self
.endpoint
@@ -488,8 +489,8 @@ impl AdminRpcHandler {
) -> Result<AdminRpc, Error> {
if all_nodes {
let mut ret = vec![];
- let layout = self.garage.system.cluster_layout().clone();
- for node in layout.current().node_ids().iter() {
+ let all_nodes = self.garage.system.cluster_layout().all_nodes().to_vec();
+ for node in all_nodes.iter() {
let node = (*node).into();
match self
.endpoint
diff --git a/src/garage/cli/layout.rs b/src/garage/cli/layout.rs
index 15727448..0f01a37a 100644
--- a/src/garage/cli/layout.rs
+++ b/src/garage/cli/layout.rs
@@ -49,6 +49,7 @@ pub async fn cmd_assign_role(
};
let mut layout = fetch_layout(rpc_cli, rpc_host).await?;
+ let all_nodes = layout.all_nodes().into_owned();
let added_nodes = args
.node_ids
@@ -58,7 +59,7 @@ pub async fn cmd_assign_role(
status
.iter()
.map(|adv| adv.id)
- .chain(layout.current().node_ids().iter().cloned()),
+ .chain(all_nodes.iter().cloned()),
node_id,
)
})
@@ -68,8 +69,7 @@ pub async fn cmd_assign_role(
roles.merge(&layout.staging.get().roles);
for replaced in args.replace.iter() {
- let replaced_node =
- find_matching_node(layout.current().node_ids().iter().cloned(), replaced)?;
+ let replaced_node = find_matching_node(all_nodes.iter().cloned(), replaced)?;
match roles.get(&replaced_node) {
Some(NodeRoleV(Some(_))) => {
layout