fix NAS gateway support for policy/notification (#9765)

Fixes #9764
This commit is contained in:
Harshavardhana
2020-06-03 13:18:54 -07:00
committed by GitHub
parent b91040f7fb
commit 5686a7e273
8 changed files with 79 additions and 73 deletions

View File

@@ -39,6 +39,7 @@ import (
"github.com/minio/minio/cmd/config"
xhttp "github.com/minio/minio/cmd/http"
"github.com/minio/minio/cmd/logger"
"github.com/minio/minio/pkg/bucket/policy"
"github.com/minio/minio/pkg/color"
"github.com/minio/minio/pkg/lock"
"github.com/minio/minio/pkg/madmin"
@@ -361,6 +362,44 @@ func (fs *FSObjects) MakeBucketWithLocation(ctx context.Context, bucket, locatio
return nil
}
// GetBucketPolicy - only needed for FS in NAS mode
func (fs *FSObjects) GetBucketPolicy(ctx context.Context, bucket string) (*policy.Policy, error) {
meta, err := loadBucketMetadata(ctx, fs, bucket)
if err != nil {
return nil, BucketPolicyNotFound{Bucket: bucket}
}
if meta.policyConfig == nil {
return nil, BucketPolicyNotFound{Bucket: bucket}
}
return meta.policyConfig, nil
}
// SetBucketPolicy - only needed for FS in NAS mode
func (fs *FSObjects) SetBucketPolicy(ctx context.Context, bucket string, p *policy.Policy) error {
meta, err := loadBucketMetadata(ctx, fs, bucket)
if err != nil {
return err
}
configData, err := json.Marshal(p)
if err != nil {
return err
}
meta.PolicyConfigJSON = configData
return meta.Save(ctx, fs)
}
// DeleteBucketPolicy - only needed for FS in NAS mode
func (fs *FSObjects) DeleteBucketPolicy(ctx context.Context, bucket string) error {
meta, err := loadBucketMetadata(ctx, fs, bucket)
if err != nil {
return err
}
meta.PolicyConfigJSON = nil
return meta.Save(ctx, fs)
}
// GetBucketInfo - fetch bucket metadata info.
func (fs *FSObjects) GetBucketInfo(ctx context.Context, bucket string) (bi BucketInfo, e error) {
atomic.AddInt64(&fs.activeIOCount, 1)