diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket.tsx index b8df60ffd..9038850fe 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket.tsx @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -import React, { useEffect, useState, Fragment } from "react"; +import React, { Fragment, useEffect, useState } from "react"; import Grid from "@mui/material/Grid"; import { Button, @@ -74,6 +74,9 @@ const styles = (theme: Theme) => }, error: { color: "#b53b4b", + border: "1px solid #b53b4b", + padding: 8, + borderRadius: 3, }, ...modalBasic, }); @@ -298,10 +301,18 @@ const AddBucket = ({
{!distributedSetup && ( - - Some these features are disabled as server is running in - non-erasure coded mode. - +
+ These features are unavailable in a single-disk setup. +
+ Please deploy a server in{" "} + + Distributed Mode + {" "} + to use these features. +


diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx index 2a153850a..8e1f84ece 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectDetails.tsx @@ -254,7 +254,7 @@ const ObjectDetails = ({ const [versions, setVersions] = useState([]); const [filterVersion, setFilterVersion] = useState(""); const [deleteOpen, setDeleteOpen] = useState(false); - const [metadataLoad, setMetadataLoad] = useState(false); + const [metadataLoad, setMetadataLoad] = useState(true); const [metadata, setMetadata] = useState({}); const [selectedTab, setSelectedTab] = useState(0); @@ -292,7 +292,6 @@ const ObjectDetails = ({ } setLoadObjectData(false); - setMetadataLoad(true); }) .catch((error: ErrorResponseHandler) => { setErrorSnackMessage(error); diff --git a/restapi/user_bucket_quota.go b/restapi/user_bucket_quota.go index ed335bfaa..a5e951ed7 100644 --- a/restapi/user_bucket_quota.go +++ b/restapi/user_bucket_quota.go @@ -96,9 +96,6 @@ 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 { diff --git a/restapi/user_buckets.go b/restapi/user_buckets.go index fbc587e62..8e71f6d65 100644 --- a/restapi/user_buckets.go +++ b/restapi/user_buckets.go @@ -22,10 +22,8 @@ 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" @@ -202,10 +200,6 @@ func setBucketVersioningResponse(session *models.Principal, bucketName string, p } 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() @@ -256,12 +250,6 @@ func getBucketReplicationResponse(session *models.Principal, bucketName string) } 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() @@ -288,13 +276,6 @@ func getBucketVersionedResponse(session *models.Principal, bucketName string) (* return bucketVResponse, nil } -var serverBackendType madmin.BackendType -var serverBackendOnce sync.Once - -func isErasureBackend() bool { - return serverBackendType == madmin.Erasure -} - // getAccountInfo fetches a list of all buckets allowed to that particular client from MinIO Servers func getAccountInfo(ctx context.Context, client MinioAdmin) ([]*models.Bucket, error) { info, err := client.AccountInfo(ctx) @@ -302,10 +283,6 @@ func getAccountInfo(ctx context.Context, client MinioAdmin) ([]*models.Bucket, e return []*models.Bucket{}, err } - serverBackendOnce.Do(func() { - serverBackendType = info.Server.Type - }) - var bucketInfos []*models.Bucket for _, bucket := range info.Buckets { diff --git a/restapi/user_objects.go b/restapi/user_objects.go index 02952c17f..7f9a7f0dd 100644 --- a/restapi/user_objects.go +++ b/restapi/user_objects.go @@ -197,7 +197,7 @@ func getListObjectsResponse(session *models.Principal, params user_api.ListObjec if params.Recursive != nil { recursive = *params.Recursive } - if isErasureBackend() && params.WithVersions != nil { + if params.WithVersions != nil { withVersions = *params.WithVersions } if params.WithMetadata != nil { @@ -230,7 +230,16 @@ func getListObjectsResponse(session *models.Principal, params user_api.ListObjec // listBucketObjects gets an array of objects in a bucket func listBucketObjects(ctx context.Context, client MinioClient, bucketName string, prefix string, recursive, withVersions bool, withMetadata bool) ([]*models.BucketObject, error) { var objects []*models.BucketObject - for lsObj := range client.listObjects(ctx, bucketName, minio.ListObjectsOptions{Prefix: prefix, Recursive: recursive, WithVersions: withVersions, WithMetadata: withMetadata}) { + opts := minio.ListObjectsOptions{ + Prefix: prefix, + Recursive: recursive, + WithVersions: withVersions, + WithMetadata: withMetadata, + } + if withMetadata { + opts.MaxKeys = 1 + } + for lsObj := range client.listObjects(ctx, bucketName, opts) { if lsObj.Err != nil { return nil, lsObj.Err }