diff --git a/cmd/admin-handlers-users.go b/cmd/admin-handlers-users.go index 6922c5db5..2ea469dbf 100644 --- a/cmd/admin-handlers-users.go +++ b/cmd/admin-handlers-users.go @@ -1081,8 +1081,12 @@ func (a adminAPIHandlers) AccountInfoHandler(w http.ResponseWriter, r *http.Requ if rd || wr { // Fetch the data usage of the current bucket var size uint64 + var objectsCount uint64 + var objectsHist map[string]uint64 if !dataUsageInfo.LastUpdate.IsZero() { size = dataUsageInfo.BucketsUsage[bucket.Name].Size + objectsCount = dataUsageInfo.BucketsUsage[bucket.Name].ObjectsCount + objectsHist = dataUsageInfo.BucketsUsage[bucket.Name].ObjectSizesHistogram } // Fetch the prefix usage of the current bucket var prefixUsage map[string]uint64 @@ -1093,11 +1097,27 @@ func (a adminAPIHandlers) AccountInfoHandler(w http.ResponseWriter, r *http.Requ logger.LogIf(ctx, err) } } + + lcfg, _ := globalBucketObjectLockSys.Get(bucket.Name) + quota, _ := globalBucketQuotaSys.Get(bucket.Name) + rcfg, _ := globalBucketMetadataSys.GetReplicationConfig(ctx, bucket.Name) + tcfg, _ := globalBucketMetadataSys.GetTaggingConfig(bucket.Name) + acctInfo.Buckets = append(acctInfo.Buckets, madmin.BucketAccessInfo{ - Name: bucket.Name, - Created: bucket.Created, - Size: size, - PrefixUsage: prefixUsage, + Name: bucket.Name, + Created: bucket.Created, + Size: size, + Objects: objectsCount, + ObjectSizesHistogram: objectsHist, + PrefixUsage: prefixUsage, + Details: &madmin.BucketDetails{ + Versioning: globalBucketVersioningSys.Enabled(bucket.Name), + VersioningSuspended: globalBucketVersioningSys.Suspended(bucket.Name), + Replication: rcfg != nil, + Locking: lcfg.LockEnabled, + Quota: quota, + Tagging: tcfg, + }, Access: madmin.AccountAccess{ Read: rd, Write: wr, diff --git a/cmd/api-response.go b/cmd/api-response.go index d7d631201..2c63c5d57 100644 --- a/cmd/api-response.go +++ b/cmd/api-response.go @@ -240,16 +240,6 @@ type CommonPrefix struct { type Bucket struct { Name string CreationDate string // time string of format "2006-01-02T15:04:05.000Z" - - // Usage size of the bucket not reflective of - // actual usage atomically, but an ever increasing - // value. - Usage *BucketUsageInfo `xml:"Usage,omitempty"` - - // Provides information about various bucket features - // enabled such as versioning, object locking, tagging - // quota, replication config etc. - Details *BucketDetailsInfo `xml:"Details,omitempty"` } // ObjectVersion container for object version metadata @@ -437,8 +427,6 @@ func generateListBucketsResponse(buckets []BucketInfo) ListBucketsResponse { listbuckets = append(listbuckets, Bucket{ Name: bucket.Name, CreationDate: bucket.Created.UTC().Format(iso8601TimeFormat), - Usage: bucket.Usage, - Details: bucket.Details, }) } diff --git a/cmd/bucket-handlers.go b/cmd/bucket-handlers.go index 922c7d7d4..b0ef77c6f 100644 --- a/cmd/bucket-handlers.go +++ b/cmd/bucket-handlers.go @@ -306,8 +306,6 @@ func (api objectAPIHandlers) ListBucketsHandler(w http.ResponseWriter, r *http.R return } - metadata := r.Form.Get("metadata") == "true" - // If etcd, dns federation configured list buckets from etcd. var bucketsInfo []BucketInfo if globalDNSConfig != nil && globalBucketFederation { @@ -372,49 +370,6 @@ func (api objectAPIHandlers) ListBucketsHandler(w http.ResponseWriter, r *http.R } } - if metadata && !globalIsGateway { - usageInfo, err := loadDataUsageFromBackend(ctx, objectAPI) - if err != nil { - writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL) - return - } - for i, bucket := range bucketsInfo { - if bu, ok := usageInfo.BucketsUsage[bucket.Name]; ok { - bucketsInfo[i].Usage = &BucketUsageInfo{ - Size: bu.Size, - ObjectsCount: bu.ObjectsCount, - ObjectSizesHistogram: StringMap{}, - } - for k, v := range bu.ObjectSizesHistogram { - bucketsInfo[i].Usage.ObjectSizesHistogram[k] = fmt.Sprint(v) - } - } else { - bucketsInfo[i].Usage = &BucketUsageInfo{ - ObjectSizesHistogram: StringMap{}, - } - } - lcfg, _ := globalBucketObjectLockSys.Get(bucket.Name) - quota, _ := globalBucketQuotaSys.Get(bucket.Name) - var bquota *BucketQuotaConfig - if quota != nil { - bquota = &BucketQuotaConfig{ - Quota: quota.Quota, - Type: quota.Type, - } - } - rcfg, _ := globalBucketMetadataSys.GetReplicationConfig(ctx, bucket.Name) - tcfg, _ := globalBucketMetadataSys.GetTaggingConfig(bucket.Name) - bucketsInfo[i].Details = &BucketDetailsInfo{ - Versioning: globalBucketVersioningSys.Enabled(bucket.Name), - VersioningSuspended: globalBucketVersioningSys.Suspended(bucket.Name), - Replication: rcfg != nil, - Locking: lcfg.LockEnabled, - Quota: bquota, - Tagging: tcfg, - } - } - } - // Generate response. response := generateListBucketsResponse(bucketsInfo) encodedSuccessResponse := encodeResponse(response) diff --git a/cmd/erasure-bucket.go b/cmd/erasure-bucket.go index e49fe1b60..b198d5dcb 100644 --- a/cmd/erasure-bucket.go +++ b/cmd/erasure-bucket.go @@ -104,10 +104,7 @@ func (er erasureObjects) getBucketInfo(ctx context.Context, bucketName string) ( if err != nil { return err } - bucketsInfo[index] = BucketInfo{ - Name: volInfo.Name, - Created: volInfo.Created, - } + bucketsInfo[index] = BucketInfo(volInfo) return nil }, index) } diff --git a/cmd/erasure-sets.go b/cmd/erasure-sets.go index 55910b4d1..25c6b3eef 100644 --- a/cmd/erasure-sets.go +++ b/cmd/erasure-sets.go @@ -859,10 +859,7 @@ func (s *erasureSets) ListBuckets(ctx context.Context) (buckets []BucketInfo, er } for _, v := range healBuckets { - listBuckets = append(listBuckets, BucketInfo{ - Name: v.Name, - Created: v.Created, - }) + listBuckets = append(listBuckets, BucketInfo(v)) } sort.Slice(listBuckets, func(i, j int) bool { diff --git a/cmd/object-api-datatypes.go b/cmd/object-api-datatypes.go index a918b5662..8aef0c8b9 100644 --- a/cmd/object-api-datatypes.go +++ b/cmd/object-api-datatypes.go @@ -24,7 +24,6 @@ import ( humanize "github.com/dustin/go-humanize" "github.com/minio/madmin-go" - "github.com/minio/minio-go/v7/pkg/tags" "github.com/minio/minio/internal/bucket/replication" "github.com/minio/minio/internal/hash" ) @@ -71,30 +70,6 @@ var ObjectsHistogramIntervals = []objectHistogramInterval{ {"GREATER_THAN_512_MB", humanize.MiByte * 512, math.MaxInt64}, } -// BucketUsageInfo represents per bucket usage statistics -type BucketUsageInfo struct { - Size uint64 - ObjectsCount uint64 - ObjectSizesHistogram StringMap -} - -// BucketQuotaConfig holds bucket quota restrictions -type BucketQuotaConfig struct { - Quota uint64 - Type madmin.QuotaType -} - -// BucketDetailsInfo provides information about features currently -// turned-on per bucket. -type BucketDetailsInfo struct { - Versioning bool - VersioningSuspended bool - Locking bool - Replication bool - Tagging *tags.Tags `xml:",omitempty"` - Quota *BucketQuotaConfig `xml:",omitempty"` -} - // BucketInfo - represents bucket metadata. type BucketInfo struct { // Name of the bucket. @@ -102,16 +77,6 @@ type BucketInfo struct { // Date and time when the bucket was created. Created time.Time - - // Usage size of the bucket not reflective of - // actual usage atomically, but an ever increasing - // value. - Usage *BucketUsageInfo `xml:",omitempty"` - - // Provides information about various bucket features - // enabled such as versioning, object locking, tagging - // quota, replication config etc. - Details *BucketDetailsInfo `xml:",omitempty"` } // ObjectInfo - represents object metadata. diff --git a/go.mod b/go.mod index 9af194e72..4b4650ab5 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/minio/csvparser v1.0.0 github.com/minio/highwayhash v1.0.2 github.com/minio/kes v0.14.0 - github.com/minio/madmin-go v1.1.5 + github.com/minio/madmin-go v1.1.6-0.20210917204419-f12dc0d0a8bd github.com/minio/minio-go/v7 v7.0.14 github.com/minio/parquet-go v1.0.0 github.com/minio/pkg v1.1.3 @@ -68,7 +68,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.8.0 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/procfs v0.6.0 + github.com/prometheus/procfs v0.7.3 github.com/rs/cors v1.7.0 github.com/secure-io/sio-go v0.3.1 github.com/shirou/gopsutil/v3 v3.21.7 diff --git a/go.sum b/go.sum index 9ad51b5ff..be9326f80 100644 --- a/go.sum +++ b/go.sum @@ -1022,8 +1022,9 @@ github.com/minio/kes v0.11.0/go.mod h1:mTF1Bv8YVEtQqF/B7Felp4tLee44Pp+dgI0rhCvgN github.com/minio/kes v0.14.0 h1:plCGm4LwR++T1P1sXsJbyFRX54CE1WRuo9PAPj6MC3Q= github.com/minio/kes v0.14.0/go.mod h1:OUensXz2BpgMfiogslKxv7Anyx/wj+6bFC6qA7BQcfA= github.com/minio/madmin-go v1.0.12/go.mod h1:BK+z4XRx7Y1v8SFWXsuLNqQqnq5BO/axJ8IDJfgyvfs= -github.com/minio/madmin-go v1.1.5 h1:xfzHwQ/KeKDQZKLqllNSyexwOPM/tvc13UdCeVMzADY= github.com/minio/madmin-go v1.1.5/go.mod h1:xIPJHUbyYhNDgeD9Wov5Fz5/p7DIW0u+q6Rs/+Xu2TM= +github.com/minio/madmin-go v1.1.6-0.20210917204419-f12dc0d0a8bd h1:NRQh43NGG+GThP26HufDWUp6pNhR1anfG7phaUDxYMk= +github.com/minio/madmin-go v1.1.6-0.20210917204419-f12dc0d0a8bd/go.mod h1:vw+c3/u+DeVKqReEavo///Cl2OO8nt5s4ee843hJeLs= github.com/minio/mc v0.0.0-20210626002108-cebf3318546f h1:hyFvo5hSFw2K417YvDr/vAKlgCG69uTuhZW/5LNdL0U= github.com/minio/mc v0.0.0-20210626002108-cebf3318546f/go.mod h1:tuaonkPjVApCXkbtKENHBtsqUf7YTV33qmFrC+Pgp5g= github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw= @@ -1252,8 +1253,9 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI= github.com/quasilyte/go-ruleguard v0.1.2-0.20200318202121-b00d7a75d3d8/go.mod h1:CGFX09Ci3pq9QZdj86B+VGIdNj4VyCo2iPOGS9esB/k=