Show Unraid cache and user storage
This commit is contained in:
@@ -160,6 +160,12 @@ struct SystemView {
|
||||
disk_usage_percent: String,
|
||||
disk_used: String,
|
||||
disk_total: String,
|
||||
cache_usage_percent: String,
|
||||
cache_used: String,
|
||||
cache_total: String,
|
||||
user_usage_percent: String,
|
||||
user_used: String,
|
||||
user_total: String,
|
||||
cpu_count: usize,
|
||||
process_count: usize,
|
||||
uptime: String,
|
||||
@@ -550,6 +556,27 @@ async fn build_state_response(state: &AppState) -> Result<StateResponse> {
|
||||
}
|
||||
|
||||
fn collect_system_view() -> SystemView {
|
||||
fn mount_usage(disks: &Disks, mount_point: &str) -> (String, String, String) {
|
||||
disks
|
||||
.iter()
|
||||
.find(|disk| disk.mount_point() == std::path::Path::new(mount_point))
|
||||
.map(|disk| {
|
||||
let total = disk.total_space();
|
||||
let used = total.saturating_sub(disk.available_space());
|
||||
let usage_percent = if total == 0 {
|
||||
0.0
|
||||
} else {
|
||||
used as f64 / total as f64 * 100.0
|
||||
};
|
||||
(
|
||||
format!("{usage_percent:.0}"),
|
||||
format_bytes(used),
|
||||
format_bytes(total),
|
||||
)
|
||||
})
|
||||
.unwrap_or_else(|| ("n/a".into(), "n/a".into(), "n/a".into()))
|
||||
}
|
||||
|
||||
let mut sys = System::new_all();
|
||||
sys.refresh_all();
|
||||
|
||||
@@ -570,7 +597,16 @@ fn collect_system_view() -> SystemView {
|
||||
let mut components = Components::new();
|
||||
components.refresh(false);
|
||||
|
||||
let (cache_usage_percent, cache_used, cache_total) = mount_usage(&disks, "/mnt/cache");
|
||||
let (user_usage_percent, user_used, user_total) = mount_usage(&disks, "/mnt/user");
|
||||
|
||||
SystemView {
|
||||
cache_usage_percent,
|
||||
cache_used,
|
||||
cache_total,
|
||||
user_usage_percent,
|
||||
user_used,
|
||||
user_total,
|
||||
cpu_usage_percent: format!("{:.1}", sys.global_cpu_usage()),
|
||||
load_avg_one: format!("{:.2}", load_avg.one),
|
||||
load_avg_five: format!("{:.2}", load_avg.five),
|
||||
@@ -847,8 +883,11 @@ fn render_system_panel() -> RgbImage {
|
||||
640,
|
||||
106,
|
||||
"Storage",
|
||||
format!("{} %", system.disk_usage_percent),
|
||||
format!("{} / {}", system.disk_used, system.disk_total),
|
||||
format!("C {}% U {}%", system.cache_usage_percent, system.user_usage_percent),
|
||||
format!(
|
||||
"/mnt/cache {} / {} | /mnt/user {} / {}",
|
||||
system.cache_used, system.cache_total, system.user_used, system.user_total
|
||||
),
|
||||
Rgb([255, 199, 115]),
|
||||
),
|
||||
(
|
||||
@@ -897,7 +936,13 @@ fn overlay_system_specs(canvas: &mut RgbImage) {
|
||||
34,
|
||||
28,
|
||||
22.0,
|
||||
&format!("{host_name} CPU {}% RAM {}% Disk {}%", system.cpu_usage_percent, system.mem_usage_percent, system.disk_usage_percent),
|
||||
&format!(
|
||||
"{host_name} CPU {}% RAM {}% C {}% U {}%",
|
||||
system.cpu_usage_percent,
|
||||
system.mem_usage_percent,
|
||||
system.cache_usage_percent,
|
||||
system.user_usage_percent
|
||||
),
|
||||
);
|
||||
draw_text_line(
|
||||
canvas,
|
||||
@@ -926,11 +971,11 @@ fn overlay_system_specs(canvas: &mut RgbImage) {
|
||||
320,
|
||||
18.0,
|
||||
&format!(
|
||||
"Mem {} / {} Swap {} / {} Proc {} CPU {} GPU {}",
|
||||
system.mem_used,
|
||||
system.mem_total,
|
||||
system.swap_used,
|
||||
system.swap_total,
|
||||
"Cache {} / {} User {} / {} Proc {} CPU {} GPU {}",
|
||||
system.cache_used,
|
||||
system.cache_total,
|
||||
system.user_used,
|
||||
system.user_total,
|
||||
system.process_count,
|
||||
system.temperature_cpu.as_deref().unwrap_or("-"),
|
||||
system.temperature_gpu.as_deref().unwrap_or("-"),
|
||||
@@ -1523,8 +1568,8 @@ const INDEX_HTML: &str = r##"<!DOCTYPE html>
|
||||
el.cpuMetaValue.textContent = `Load ${state.system.load_avg_one || "-"} / ${state.system.load_avg_five || "-"} / ${state.system.load_avg_fifteen || "-"}`;
|
||||
el.memUsageValue.textContent = `${state.system.mem_usage_percent || "-"} %`;
|
||||
el.memMetaValue.textContent = `${state.system.mem_used || "-"} / ${state.system.mem_total || "-"}`;
|
||||
el.diskUsageValue.textContent = `${state.system.disk_usage_percent || "-"} %`;
|
||||
el.diskMetaValue.textContent = `${state.system.disk_used || "-"} / ${state.system.disk_total || "-"}`;
|
||||
el.diskUsageValue.innerHTML = `/mnt/cache ${state.system.cache_usage_percent || "-"}%<br>/mnt/user ${state.system.user_usage_percent || "-"}%`;
|
||||
el.diskMetaValue.textContent = `${state.system.cache_used || "-"} / ${state.system.cache_total || "-"} | ${state.system.user_used || "-"} / ${state.system.user_total || "-"}`;
|
||||
el.swapUsageValue.textContent = `${state.system.swap_usage_percent || "-"} %`;
|
||||
el.swapMetaValue.textContent = `${state.system.swap_used || "-"} / ${state.system.swap_total || "-"}`;
|
||||
el.loadValue.textContent = `${state.system.cpu_count || "-"} CPU / ${state.system.process_count || "-"} proc`;
|
||||
|
||||
Reference in New Issue
Block a user