mirror of
https://github.com/versity/versitygw.git
synced 2026-04-22 21:50:29 +00:00
Merge pull request #1415 from versity/sis/listbuckets-region
fix: adds bucket region in ListBuckets result
This commit is contained in:
@@ -51,6 +51,8 @@ const (
|
||||
minPartNumber = 1
|
||||
maxPartNumber = 10000
|
||||
defaultMaxBuckets = int32(10000)
|
||||
|
||||
defaultRegion = "us-east-1"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -30,6 +30,10 @@ func (c S3ApiController) ListBuckets(ctx *fiber.Ctx) (*Response, error) {
|
||||
prefix := ctx.Query("prefix")
|
||||
maxBucketsStr := ctx.Query("max-buckets")
|
||||
acct := utils.ContextKeyAccount.Get(ctx).(auth.Account)
|
||||
region, ok := utils.ContextKeyRegion.Get(ctx).(string)
|
||||
if !ok {
|
||||
region = defaultRegion
|
||||
}
|
||||
|
||||
maxBuckets := defaultMaxBuckets
|
||||
if maxBucketsStr != "" {
|
||||
@@ -51,8 +55,15 @@ func (c S3ApiController) ListBuckets(ctx *fiber.Ctx) (*Response, error) {
|
||||
ContinuationToken: cToken,
|
||||
Prefix: prefix,
|
||||
})
|
||||
if err != nil {
|
||||
return &Response{}, err
|
||||
}
|
||||
|
||||
for i := range res.Buckets.Bucket {
|
||||
res.Buckets.Bucket[i].BucketRegion = region
|
||||
}
|
||||
|
||||
return &Response{
|
||||
Data: res,
|
||||
MetaOpts: &MetaOptions{},
|
||||
}, err
|
||||
Data: res,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -58,15 +58,12 @@ func TestS3ApiController_ListBuckets(t *testing.T) {
|
||||
name: "backend returns error",
|
||||
input: testInput{
|
||||
locals: defaultLocals,
|
||||
beRes: validRes,
|
||||
beErr: s3err.GetAPIError(s3err.ErrNoSuchBucket),
|
||||
beRes: s3response.ListAllMyBucketsResult{},
|
||||
},
|
||||
output: testOutput{
|
||||
response: &Response{
|
||||
Data: validRes,
|
||||
MetaOpts: &MetaOptions{},
|
||||
},
|
||||
err: s3err.GetAPIError(s3err.ErrNoSuchBucket),
|
||||
response: &Response{},
|
||||
err: s3err.GetAPIError(s3err.ErrNoSuchBucket),
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -80,8 +77,7 @@ func TestS3ApiController_ListBuckets(t *testing.T) {
|
||||
},
|
||||
output: testOutput{
|
||||
response: &Response{
|
||||
Data: validRes,
|
||||
MetaOpts: &MetaOptions{},
|
||||
Data: validRes,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -317,6 +317,7 @@ type ListAllMyBucketsResult struct {
|
||||
|
||||
type ListAllMyBucketsEntry struct {
|
||||
Name string
|
||||
BucketRegion string
|
||||
CreationDate time.Time
|
||||
}
|
||||
|
||||
|
||||
@@ -1726,7 +1726,7 @@ func HeadBucket_success(s *S3Conf) error {
|
||||
func ListBuckets_as_user(s *S3Conf) error {
|
||||
testName := "ListBuckets_as_user"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
buckets := []types.Bucket{{Name: &bucket}}
|
||||
buckets := []types.Bucket{{Name: &bucket, BucketRegion: &s.awsRegion}}
|
||||
for range 6 {
|
||||
bckt := getBucketName()
|
||||
|
||||
@@ -1736,7 +1736,8 @@ func ListBuckets_as_user(s *S3Conf) error {
|
||||
}
|
||||
|
||||
buckets = append(buckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1787,7 +1788,7 @@ func ListBuckets_as_user(s *S3Conf) error {
|
||||
func ListBuckets_as_admin(s *S3Conf) error {
|
||||
testName := "ListBuckets_as_admin"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
buckets := []types.Bucket{{Name: &bucket}}
|
||||
buckets := []types.Bucket{{Name: &bucket, BucketRegion: &s.awsRegion}}
|
||||
for range 6 {
|
||||
bckt := getBucketName()
|
||||
|
||||
@@ -1797,7 +1798,8 @@ func ListBuckets_as_admin(s *S3Conf) error {
|
||||
}
|
||||
|
||||
buckets = append(buckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1849,7 +1851,7 @@ func ListBuckets_with_prefix(s *S3Conf) error {
|
||||
testName := "ListBuckets_with_prefix"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
prefix := "my-prefix-"
|
||||
allBuckets, prefixedBuckets := []types.Bucket{{Name: &bucket}}, []types.Bucket{}
|
||||
allBuckets, prefixedBuckets := []types.Bucket{{Name: &bucket, BucketRegion: &s.awsRegion}}, []types.Bucket{}
|
||||
for i := range 5 {
|
||||
bckt := getBucketName()
|
||||
if i%2 == 0 {
|
||||
@@ -1862,12 +1864,14 @@ func ListBuckets_with_prefix(s *S3Conf) error {
|
||||
}
|
||||
|
||||
allBuckets = append(allBuckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
|
||||
if i%2 == 0 {
|
||||
prefixedBuckets = append(prefixedBuckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1936,7 +1940,7 @@ func ListBuckets_invalid_max_buckets(s *S3Conf) error {
|
||||
func ListBuckets_truncated(s *S3Conf) error {
|
||||
testName := "ListBuckets_truncated"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
buckets := []types.Bucket{{Name: &bucket}}
|
||||
buckets := []types.Bucket{{Name: &bucket, BucketRegion: &s.awsRegion}}
|
||||
for range 5 {
|
||||
bckt := getBucketName()
|
||||
|
||||
@@ -1946,7 +1950,8 @@ func ListBuckets_truncated(s *S3Conf) error {
|
||||
}
|
||||
|
||||
buckets = append(buckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2027,7 +2032,7 @@ func ListBuckets_empty_success(s *S3Conf) error {
|
||||
func ListBuckets_success(s *S3Conf) error {
|
||||
testName := "ListBuckets_success"
|
||||
return actionHandler(s, testName, func(s3client *s3.Client, bucket string) error {
|
||||
buckets := []types.Bucket{{Name: &bucket}}
|
||||
buckets := []types.Bucket{{Name: &bucket, BucketRegion: &s.awsRegion}}
|
||||
for range 5 {
|
||||
bckt := getBucketName()
|
||||
|
||||
@@ -2037,7 +2042,8 @@ func ListBuckets_success(s *S3Conf) error {
|
||||
}
|
||||
|
||||
buckets = append(buckets, types.Bucket{
|
||||
Name: &bckt,
|
||||
Name: &bckt,
|
||||
BucketRegion: &s.awsRegion,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -729,6 +729,11 @@ func compareBuckets(list1 []types.Bucket, list2 []types.Bucket) bool {
|
||||
|
||||
for i, elem := range list1 {
|
||||
if *elem.Name != *list2[i].Name {
|
||||
fmt.Printf("bucket names are not equal: %s != %s\n", *elem.Name, *list2[i].Name)
|
||||
return false
|
||||
}
|
||||
if *elem.BucketRegion != *list2[i].BucketRegion {
|
||||
fmt.Printf("bucket regions are not equal: %s != %s\n", *elem.BucketRegion, *list2[i].BucketRegion)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user