aboutsummaryrefslogtreecommitdiff
path: root/src/garage
diff options
context:
space:
mode:
Diffstat (limited to 'src/garage')
-rw-r--r--src/garage/cli/layout.rs32
-rw-r--r--src/garage/main.rs3
2 files changed, 24 insertions, 11 deletions
diff --git a/src/garage/cli/layout.rs b/src/garage/cli/layout.rs
index 85af345a..53430e6b 100644
--- a/src/garage/cli/layout.rs
+++ b/src/garage/cli/layout.rs
@@ -330,7 +330,7 @@ pub async fn send_layout(
}
pub fn print_cluster_layout(layout: &ClusterLayout) -> bool {
- let mut table = vec!["ID\tTags\tZone\tCapacity\tUsable".to_string()];
+ let mut table = vec!["ID\tTags\tZone\tCapacity\tUsable capacity".to_string()];
for (id, _, role) in layout.roles.items().iter() {
let role = match &role.0 {
Some(r) => r,
@@ -338,16 +338,26 @@ pub fn print_cluster_layout(layout: &ClusterLayout) -> bool {
};
let tags = role.tags.join(",");
let usage = layout.get_node_usage(id).unwrap_or(0);
- let capacity = layout.get_node_capacity(id).unwrap_or(1);
- table.push(format!(
- "{:?}\t{}\t{}\t{}\t{} ({:.1}%)",
- id,
- tags,
- role.zone,
- role.capacity_string(),
- ByteSize::b(usage as u64 * layout.partition_size).to_string_as(false),
- (100.0 * usage as f32 * layout.partition_size as f32) / (capacity as f32)
- ));
+ let capacity = layout.get_node_capacity(id).unwrap_or(0);
+ if capacity > 0 {
+ table.push(format!(
+ "{:?}\t{}\t{}\t{}\t{} ({:.1}%)",
+ id,
+ tags,
+ role.zone,
+ role.capacity_string(),
+ ByteSize::b(usage as u64 * layout.partition_size).to_string_as(false),
+ (100.0 * usage as f32 * layout.partition_size as f32) / (capacity as f32)
+ ));
+ } else {
+ table.push(format!(
+ "{:?}\t{}\t{}\t{}",
+ id,
+ tags,
+ role.zone,
+ role.capacity_string(),
+ ));
+ };
}
println!();
println!("Parameters of the layout computation:");
diff --git a/src/garage/main.rs b/src/garage/main.rs
index edda734b..8e64273f 100644
--- a/src/garage/main.rs
+++ b/src/garage/main.rs
@@ -17,6 +17,9 @@ compile_error!("Either bundled-libs or system-libs Cargo feature must be enabled
#[cfg(all(feature = "bundled-libs", feature = "system-libs"))]
compile_error!("Only one of bundled-libs and system-libs Cargo features must be enabled");
+#[cfg(not(any(feature = "lmdb", feature = "sled", feature = "sqlite")))]
+compile_error!("Must activate the Cargo feature for at least one DB engine: lmdb, sled or sqlite.");
+
use std::net::SocketAddr;
use std::path::PathBuf;