Update storage-overview.tsx

This commit is contained in:
MacRimi
2025-11-09 23:36:50 +01:00
parent 4c7ed2c2c5
commit 30d93898d8

View File

@@ -65,6 +65,7 @@ interface ProxmoxStorage {
used: number used: number
available: number available: number
percent: number percent: number
node: string // Added node property for detailed debug logging
} }
interface ProxmoxStorageData { interface ProxmoxStorageData {
@@ -105,6 +106,15 @@ export function StorageOverview() {
console.log("[v0] Proxmox storage data received:", proxmoxData) console.log("[v0] Proxmox storage data received:", proxmoxData)
if (proxmoxData && proxmoxData.storage) { if (proxmoxData && proxmoxData.storage) {
console.log("[v0] === STORAGE DEBUG INFO ===")
console.log("[v0] Total storage entries:", proxmoxData.storage.length)
proxmoxData.storage.forEach((s: any) => {
console.log(
`[v0] Storage: ${s.name} | Node: ${s.node} | Type: ${s.type} | Used: ${s.used}GB | Total: ${s.total}GB`,
)
})
const activeStorages = proxmoxData.storage.filter( const activeStorages = proxmoxData.storage.filter(
(s: any) => s && s.total > 0 && s.used >= 0 && s.status?.toLowerCase() === "active", (s: any) => s && s.total > 0 && s.used >= 0 && s.status?.toLowerCase() === "active",
) )
@@ -119,6 +129,7 @@ export function StorageOverview() {
const uniqueNames = new Set(storageNames) const uniqueNames = new Set(storageNames)
if (storageNames.length !== uniqueNames.size) { if (storageNames.length !== uniqueNames.size) {
console.warn("[v0] WARNING: Duplicate storage names detected - possible cluster node issue") console.warn("[v0] WARNING: Duplicate storage names detected - possible cluster node issue")
console.warn("[v0] Storage names:", storageNames)
} }
} }
@@ -417,24 +428,12 @@ export function StorageOverview() {
const diskHealthBreakdown = getDiskHealthBreakdown() const diskHealthBreakdown = getDiskHealthBreakdown()
const diskTypesBreakdown = getDiskTypesBreakdown() const diskTypesBreakdown = getDiskTypesBreakdown()
// Only sum storage that belongs to the current node or filter appropriately // Using storageData.used from the backend in place of summing proxmox storages (avoids duplication in clusters)
const totalProxmoxUsed = const totalNodeUsed = storageData ? storageData.used : 0 // Already comes in GB from the backend
proxmoxStorage && proxmoxStorage.storage const totalNodeCapacity = storageData ? storageData.total * 1024 : 0 // Convert TB to GB
? proxmoxStorage.storage
.filter(
(storage) =>
storage &&
storage.total > 0 &&
storage.used >= 0 && // Added check for valid used value
storage.status &&
storage.status.toLowerCase() === "active",
)
.reduce((sum, storage) => sum + storage.used, 0)
: 0
// Convert storageData.total from TB to GB before calculating percentage
const usagePercent = const usagePercent =
storageData && storageData.total > 0 ? ((totalProxmoxUsed / (storageData.total * 1024)) * 100).toFixed(2) : "0.00" storageData && storageData.total > 0 ? ((totalNodeUsed / totalNodeCapacity) * 100).toFixed(2) : "0.00"
if (loading) { if (loading) {
return ( return (
@@ -473,7 +472,8 @@ export function StorageOverview() {
<Database className="h-4 w-4 text-muted-foreground" /> <Database className="h-4 w-4 text-muted-foreground" />
</CardHeader> </CardHeader>
<CardContent> <CardContent>
<div className="text-xl lg:text-2xl font-bold">{formatStorage(totalProxmoxUsed)}</div> {/* Using totalNodeUsed that comes from the backend filtered by node */}
<div className="text-xl lg:text-2xl font-bold">{formatStorage(totalNodeUsed)}</div>
<p className="text-xs text-muted-foreground mt-1">{usagePercent}% used</p> <p className="text-xs text-muted-foreground mt-1">{usagePercent}% used</p>
</CardContent> </CardContent>
</Card> </Card>