diff --git a/go.mod b/go.mod index 9a881333e9..201b3b05dc 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/minio/cli v1.22.0 github.com/minio/direct-csi v1.3.5-0.20210601185811-f7776f7961bf github.com/minio/kes v0.11.0 - github.com/minio/madmin-go v1.0.12 + github.com/minio/madmin-go v1.0.17 github.com/minio/mc v0.0.0-20210626002108-cebf3318546f github.com/minio/minio-go/v7 v7.0.13-0.20210715203016-9e713532886e github.com/minio/operator v0.0.0-20210616045941-65f31f5f78ae diff --git a/go.sum b/go.sum index f4cbfd0efd..4481ecd16c 100644 --- a/go.sum +++ b/go.sum @@ -877,8 +877,9 @@ github.com/minio/filepath v1.0.0/go.mod h1:/nRZA2ldl5z6jT9/KQuvZcQlxZIMQoFFQPvEX github.com/minio/kes v0.11.0 h1:8ma6OCVSxKT50b1uYXLJro3m7PmZtCLxBaTddQexI5k= github.com/minio/kes v0.11.0/go.mod h1:mTF1Bv8YVEtQqF/B7Felp4tLee44Pp+dgI0rhCvgNg8= github.com/minio/madmin-go v1.0.6/go.mod h1:BK+z4XRx7Y1v8SFWXsuLNqQqnq5BO/axJ8IDJfgyvfs= -github.com/minio/madmin-go v1.0.12 h1:5FjqXgPR6rK6QX+HS88u+FCAiFLKleAiMuRvdDhWNPc= github.com/minio/madmin-go v1.0.12/go.mod h1:BK+z4XRx7Y1v8SFWXsuLNqQqnq5BO/axJ8IDJfgyvfs= +github.com/minio/madmin-go v1.0.17 h1:VMEn4nMKf0X3uNH0u+fZcn17KSwVkQGwyER/igG556E= +github.com/minio/madmin-go v1.0.17/go.mod h1:4nl9hvLWFnwCjkLfZSsZXEHgDODa2XSG6xGlIZyQ2oA= 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= @@ -1103,8 +1104,9 @@ github.com/securego/gosec/v2 v2.3.0/go.mod h1:UzeVyUXbxukhLeHKV3VVqo7HdoQR9MrRfF github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada h1:WokF3GuxBeL+n4Lk4Fa8v9mbdjlrl7bHuneF4N1bk2I= github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc= -github.com/shirou/gopsutil/v3 v3.21.4 h1:XB/+p+kVnyYLuPHCfa99lxz2aJyvVhnyd+FxZqH/k7M= github.com/shirou/gopsutil/v3 v3.21.4/go.mod h1:ghfMypLDrFSWN2c9cDYFLHyynQ+QUht0cv/18ZqVczw= +github.com/shirou/gopsutil/v3 v3.21.6 h1:vU7jrp1Ic/2sHB7w6UNs7MIkn7ebVtTb5D9j45o9VYE= +github.com/shirou/gopsutil/v3 v3.21.6/go.mod h1:JfVbDpIBLVzT8oKbvMg9P3wEIMDDpVn+LwHTKj0ST88= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1190,8 +1192,9 @@ github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eN github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= github.com/tklauser/go-sysconf v0.3.4/go.mod h1:Cl2c8ZRWfHD5IrfHo9VN+FX9kCFjIOyVklgXycLB6ek= -github.com/tklauser/go-sysconf v0.3.5 h1:uu3Xl4nkLzQfXNsWn15rPc/HQCJKObbt1dKJeWp3vU4= github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/go-sysconf v0.3.6 h1:oc1sJWvKkmvIxhDHeKWvZS4f6AW+YcoguSfRF2/Hmo4= +github.com/tklauser/go-sysconf v0.3.6/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/numcpus v0.2.1/go.mod h1:9aU+wOc6WjUIZEwWMP62PL/41d65P+iks1gBkr4QyP8= github.com/tklauser/numcpus v0.2.2 h1:oyhllyrScuYI6g+h/zUvNXNp1wy7x8qQy3t/piefldA= github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= diff --git a/restapi/admin_health_info_test.go b/restapi/admin_health_info_test.go index 09b5341a02..04bce60937 100644 --- a/restapi/admin_health_info_test.go +++ b/restapi/admin_health_info_test.go @@ -60,16 +60,12 @@ func Test_serverHealthInfo(t *testing.T) { mockMessages: []madmin.HealthInfo{ { Perf: madmin.PerfInfo{ - NetParallel: madmin.NetPerfInfo{ - Addr: "someaddress", - }, + NetParallel: madmin.NetPerfInfo{}, }, }, { Perf: madmin.PerfInfo{ - NetParallel: madmin.NetPerfInfo{ - Addr: "otheraddress", - }, + NetParallel: madmin.NetPerfInfo{}, }, }, }, @@ -92,9 +88,7 @@ func Test_serverHealthInfo(t *testing.T) { mockMessages: []madmin.HealthInfo{ { Perf: madmin.PerfInfo{ - NetParallel: madmin.NetPerfInfo{ - Addr: "address", - }, + NetParallel: madmin.NetPerfInfo{}, }, }, }, @@ -117,9 +111,7 @@ func Test_serverHealthInfo(t *testing.T) { mockMessages: []madmin.HealthInfo{ { Perf: madmin.PerfInfo{ - NetParallel: madmin.NetPerfInfo{ - Addr: "address", - }, + NetParallel: madmin.NetPerfInfo{}, }, }, }, diff --git a/restapi/user_bucket_quota.go b/restapi/user_bucket_quota.go index 8f3a22407e..4945b9ccde 100644 --- a/restapi/user_bucket_quota.go +++ b/restapi/user_bucket_quota.go @@ -96,10 +96,15 @@ func setBucketQuota(ctx context.Context, ac *AdminClient, bucket *string, bucket } func getBucketQuotaResponse(session *models.Principal, params user_api.GetBucketQuotaParams) (*models.BucketQuota, *models.Error) { + if !isErasureBackend() { + return &models.BucketQuota{}, nil + } + mAdmin, err := NewMinioAdminClient(session) if err != nil { return nil, PrepareError(err) } + // create a minioClient interface implementation // defining the client to be used adminClient := AdminClient{Client: mAdmin} diff --git a/restapi/user_buckets.go b/restapi/user_buckets.go index 6f9fdf7b11..f15ef230e1 100644 --- a/restapi/user_buckets.go +++ b/restapi/user_buckets.go @@ -21,8 +21,10 @@ import ( "encoding/json" "fmt" "strings" + "sync" "time" + "github.com/minio/madmin-go" "github.com/minio/mc/cmd" "github.com/minio/mc/pkg/probe" "github.com/minio/minio-go/v7" @@ -98,7 +100,7 @@ func registerBucketsHandlers(api *operations.ConsoleAPI) { }) // get bucket replication api.UserAPIGetBucketReplicationHandler = user_api.GetBucketReplicationHandlerFunc(func(params user_api.GetBucketReplicationParams, session *models.Principal) middleware.Responder { - getBucketReplication, err := getBucketReplicationdResponse(session, params.BucketName) + getBucketReplication, err := getBucketReplicationResponse(session, params.BucketName) if err != nil { return user_api.NewGetBucketReplicationDefault(500).WithPayload(&models.Error{Code: 500, Message: swag.String(err.Error())}) } @@ -198,7 +200,11 @@ func setBucketVersioningResponse(session *models.Principal, bucketName string, p return nil } -func getBucketReplicationdResponse(session *models.Principal, bucketName string) (*models.BucketReplicationResponse, error) { +func getBucketReplicationResponse(session *models.Principal, bucketName string) (*models.BucketReplicationResponse, error) { + if !isErasureBackend() { + return &models.BucketReplicationResponse{}, nil + } + ctx, cancel := context.WithTimeout(context.Background(), time.Second*20) defer cancel() @@ -242,13 +248,19 @@ func getBucketReplicationdResponse(session *models.Principal, bucketName string) } // serialize output - listBucketsResponse := &models.BucketReplicationResponse{ + bucketRResponse := &models.BucketReplicationResponse{ Rules: rules, } - return listBucketsResponse, nil + return bucketRResponse, nil } func getBucketVersionedResponse(session *models.Principal, bucketName string) (*models.BucketVersioningResponse, error) { + if !isErasureBackend() { + return &models.BucketVersioningResponse{ + IsVersioned: false, + }, nil + } + ctx, cancel := context.WithTimeout(context.Background(), time.Second*20) defer cancel() @@ -257,6 +269,7 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (* LogError("error creating MinIO Client: %v", err) return nil, err } + // create a minioClient interface implementation // defining the client to be used minioClient := minioClient{client: mClient} @@ -268,10 +281,17 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (* } // serialize output - listBucketsResponse := &models.BucketVersioningResponse{ + bucketVResponse := &models.BucketVersioningResponse{ IsVersioned: res.Status == "Enabled", } - return listBucketsResponse, nil + return bucketVResponse, nil +} + +var serverBackend madmin.BackendInfo +var serverBackendOnce sync.Once + +func isErasureBackend() bool { + return serverBackend.Type == madmin.Erasure } // getAccountInfo fetches a list of all buckets allowed to that particular client from MinIO Servers @@ -281,9 +301,17 @@ func getAccountInfo(ctx context.Context, client MinioAdmin) ([]*models.Bucket, e return []*models.Bucket{}, err } + serverBackendOnce.Do(func() { + serverBackend = info.Server + }) + var bucketInfos []*models.Bucket for _, bucket := range info.Buckets { - bucketElem := &models.Bucket{Name: swag.String(bucket.Name), CreationDate: bucket.Created.Format(time.RFC3339), Size: int64(bucket.Size)} + bucketElem := &models.Bucket{ + Name: swag.String(bucket.Name), + Size: int64(bucket.Size), + CreationDate: bucket.Created.Format(time.RFC3339), + } bucketInfos = append(bucketInfos, bucketElem) } return bucketInfos, nil