github.com/minio/minio@v0.0.0-20240328213742-3f72439b8a27/cmd/notification-summary.go (about) 1 // Copyright (c) 2015-2021 MinIO, Inc. 2 // 3 // This file is part of MinIO Object Storage stack 4 // 5 // This program is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Affero General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // This program is distributed in the hope that it will be useful 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Affero General Public License for more details. 14 // 15 // You should have received a copy of the GNU Affero General Public License 16 // along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 package cmd 19 20 import ( 21 "github.com/minio/madmin-go/v3" 22 ) 23 24 // GetTotalCapacity gets the total capacity in the cluster. 25 func GetTotalCapacity(diskInfo []madmin.Disk) (capacity uint64) { 26 for _, disk := range diskInfo { 27 capacity += disk.TotalSpace 28 } 29 return 30 } 31 32 // GetTotalUsableCapacity gets the total usable capacity in the cluster. 33 func GetTotalUsableCapacity(diskInfo []madmin.Disk, s StorageInfo) (capacity uint64) { 34 for _, disk := range diskInfo { 35 // Ignore invalid. 36 if disk.PoolIndex < 0 || len(s.Backend.StandardSCData) <= disk.PoolIndex { 37 // https://github.com/minio/minio/issues/16500 38 continue 39 } 40 // Ignore parity disks 41 if disk.DiskIndex < s.Backend.StandardSCData[disk.PoolIndex] { 42 capacity += disk.TotalSpace 43 } 44 } 45 return 46 } 47 48 // GetTotalCapacityFree gets the total capacity free in the cluster. 49 func GetTotalCapacityFree(diskInfo []madmin.Disk) (capacity uint64) { 50 for _, d := range diskInfo { 51 capacity += d.AvailableSpace 52 } 53 return 54 } 55 56 // GetTotalUsableCapacityFree gets the total usable capacity free in the cluster. 57 func GetTotalUsableCapacityFree(diskInfo []madmin.Disk, s StorageInfo) (capacity uint64) { 58 for _, disk := range diskInfo { 59 // Ignore invalid. 60 if disk.PoolIndex < 0 || len(s.Backend.StandardSCData) <= disk.PoolIndex { 61 // https://github.com/minio/minio/issues/16500 62 continue 63 } 64 // Ignore parity disks 65 if disk.DiskIndex < s.Backend.StandardSCData[disk.PoolIndex] { 66 capacity += disk.AvailableSpace 67 } 68 } 69 return 70 }