@@ -21,8 +21,10 @@ import (
2121 "encoding/json"
2222 "fmt"
2323 "strings"
24+ "sync"
2425 "time"
2526
27+ "github.com/minio/madmin-go"
2628 "github.com/minio/mc/cmd"
2729 "github.com/minio/mc/pkg/probe"
2830 "github.com/minio/minio-go/v7"
@@ -98,7 +100,7 @@ func registerBucketsHandlers(api *operations.ConsoleAPI) {
98100 })
99101 // get bucket replication
100102 api .UserAPIGetBucketReplicationHandler = user_api .GetBucketReplicationHandlerFunc (func (params user_api.GetBucketReplicationParams , session * models.Principal ) middleware.Responder {
101- getBucketReplication , err := getBucketReplicationdResponse (session , params .BucketName )
103+ getBucketReplication , err := getBucketReplicationResponse (session , params .BucketName )
102104 if err != nil {
103105 return user_api .NewGetBucketReplicationDefault (500 ).WithPayload (& models.Error {Code : 500 , Message : swag .String (err .Error ())})
104106 }
@@ -198,7 +200,11 @@ func setBucketVersioningResponse(session *models.Principal, bucketName string, p
198200 return nil
199201}
200202
201- func getBucketReplicationdResponse (session * models.Principal , bucketName string ) (* models.BucketReplicationResponse , error ) {
203+ func getBucketReplicationResponse (session * models.Principal , bucketName string ) (* models.BucketReplicationResponse , error ) {
204+ if ! isErasureBackend () {
205+ return & models.BucketReplicationResponse {}, nil
206+ }
207+
202208 ctx , cancel := context .WithTimeout (context .Background (), time .Second * 20 )
203209 defer cancel ()
204210
@@ -242,13 +248,19 @@ func getBucketReplicationdResponse(session *models.Principal, bucketName string)
242248 }
243249
244250 // serialize output
245- listBucketsResponse := & models.BucketReplicationResponse {
251+ bucketRResponse := & models.BucketReplicationResponse {
246252 Rules : rules ,
247253 }
248- return listBucketsResponse , nil
254+ return bucketRResponse , nil
249255}
250256
251257func getBucketVersionedResponse (session * models.Principal , bucketName string ) (* models.BucketVersioningResponse , error ) {
258+ if ! isErasureBackend () {
259+ return & models.BucketVersioningResponse {
260+ IsVersioned : false ,
261+ }, nil
262+ }
263+
252264 ctx , cancel := context .WithTimeout (context .Background (), time .Second * 20 )
253265 defer cancel ()
254266
@@ -257,6 +269,7 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (*
257269 LogError ("error creating MinIO Client: %v" , err )
258270 return nil , err
259271 }
272+
260273 // create a minioClient interface implementation
261274 // defining the client to be used
262275 minioClient := minioClient {client : mClient }
@@ -268,10 +281,17 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (*
268281 }
269282
270283 // serialize output
271- listBucketsResponse := & models.BucketVersioningResponse {
284+ bucketVResponse := & models.BucketVersioningResponse {
272285 IsVersioned : res .Status == "Enabled" ,
273286 }
274- return listBucketsResponse , nil
287+ return bucketVResponse , nil
288+ }
289+
290+ var serverBackend madmin.BackendInfo
291+ var serverBackendOnce sync.Once
292+
293+ func isErasureBackend () bool {
294+ return serverBackend .Type == madmin .Erasure
275295}
276296
277297// 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
281301 return []* models.Bucket {}, err
282302 }
283303
304+ serverBackendOnce .Do (func () {
305+ serverBackend = info .Server
306+ })
307+
284308 var bucketInfos []* models.Bucket
285309 for _ , bucket := range info .Buckets {
286- bucketElem := & models.Bucket {Name : swag .String (bucket .Name ), CreationDate : bucket .Created .Format (time .RFC3339 ), Size : int64 (bucket .Size )}
310+ bucketElem := & models.Bucket {
311+ Name : swag .String (bucket .Name ),
312+ Size : int64 (bucket .Size ),
313+ CreationDate : bucket .Created .Format (time .RFC3339 ),
314+ }
287315 bucketInfos = append (bucketInfos , bucketElem )
288316 }
289317 return bucketInfos , nil
0 commit comments