update storage buckets to use a shared persisted secrets type. add options

This commit is contained in:
Danielle Miu authored and Timothy Messier committed 2023-05-31 12:18:16 +00:00
1 parent 70a950b7a3
commit bb82fa6507
9 files changed
+534 -328

No files matched your search

+13 -6
View File
@@ -14,6 +14,7 @@ import (
"sync"
"time"
"github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/storagebuckets"
plgpb "github.com/hashicorp/boundary/sdk/pbs/plugin"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -134,7 +135,7 @@ func (l *LoopbackStorage) onCreateStorageBucket(ctx context.Context, req *plgpb.
}
}
return &plgpb.OnCreateStorageBucketResponse{
Persisted: &plgpb.StorageBucketPersisted{
Persisted: &storagebuckets.StorageBucketPersisted{
Data: req.GetBucket().GetSecrets(),
},
}, nil
@@ -148,7 +149,7 @@ func (l *LoopbackStorage) onUpdateStorageBucket(ctx context.Context, req *plgpb.
if req.GetNewBucket() == nil {
return nil, status.Errorf(codes.InvalidArgument, "%s: missing storage bucket", op)
}
if req.GetNewBucket().GetSecrets() == nil {
if req.Persisted == nil {
return nil, status.Errorf(codes.InvalidArgument, "%s: missing secrets", op)
}
l.m.Lock()
@@ -161,10 +162,16 @@ func (l *LoopbackStorage) onUpdateStorageBucket(ctx context.Context, req *plgpb.
return nil, status.Errorf(err.errCode, "%s: %s", op, err.errMsg)
}
}
return &plgpb.OnUpdateStorageBucketResponse{
Persisted: &plgpb.StorageBucketPersisted{
var sec *storagebuckets.StorageBucketPersisted
if req.NewBucket.Secrets != nil {
sec = &storagebuckets.StorageBucketPersisted{
Data: req.GetNewBucket().GetSecrets(),
},
}
} else {
sec = req.Persisted
}
return &plgpb.OnUpdateStorageBucketResponse{
Persisted: sec,
}, nil
}
@@ -176,7 +183,7 @@ func (l *LoopbackStorage) onDeleteStorageBucket(ctx context.Context, req *plgpb.
if req.GetBucket() == nil {
return nil, status.Errorf(codes.InvalidArgument, "%s: missing storage bucket", op)
}
if req.GetBucket().GetSecrets() == nil {
if req.Persisted == nil {
return nil, status.Errorf(codes.InvalidArgument, "%s: missing secrets", op)
}
return &plgpb.OnDeleteStorageBucketResponse{}, nil
+12
View File
@@ -145,6 +145,9 @@ func TestLoopbackOnUpdateStorageBucket(t *testing.T) {
"AWS_SECRET_ACCESS_KEY": structpb.NewStringValue("secret_access_key"),
},
}
persisted := &storagebuckets.StorageBucketPersisted{
Data: secrets,
}
tests := []struct {
name string
@@ -165,6 +168,7 @@ func TestLoopbackOnUpdateStorageBucket(t *testing.T) {
request: &plgpb.OnUpdateStorageBucketRequest{
NewBucket: &storagebuckets.StorageBucket{
BucketName: "aws_s3_mock",
Secrets: secrets,
},
},
expectedErr: codes.InvalidArgument,
@@ -176,6 +180,7 @@ func TestLoopbackOnUpdateStorageBucket(t *testing.T) {
BucketName: "bucket_dne",
Secrets: secrets,
},
Persisted: persisted,
},
expectedErr: codes.NotFound,
},
@@ -186,6 +191,7 @@ func TestLoopbackOnUpdateStorageBucket(t *testing.T) {
BucketName: "aws_s3_err",
Secrets: secrets,
},
Persisted: persisted,
},
expectedErr: codes.PermissionDenied,
},
@@ -196,6 +202,7 @@ func TestLoopbackOnUpdateStorageBucket(t *testing.T) {
BucketName: "aws_s3_mock",
Secrets: secrets,
},
Persisted: persisted,
},
},
}
@@ -233,6 +240,9 @@ func TestLoopbackOnDeleteStorageBucket(t *testing.T) {
"AWS_SECRET_ACCESS_KEY": structpb.NewStringValue("secret_access_key"),
},
}
persisted := &storagebuckets.StorageBucketPersisted{
Data: secrets,
}
tests := []struct {
name string
@@ -253,6 +263,7 @@ func TestLoopbackOnDeleteStorageBucket(t *testing.T) {
request: &plgpb.OnDeleteStorageBucketRequest{
Bucket: &storagebuckets.StorageBucket{
BucketName: "aws_s3_mock",
Secrets: secrets,
},
},
expectedErr: codes.InvalidArgument,
@@ -264,6 +275,7 @@ func TestLoopbackOnDeleteStorageBucket(t *testing.T) {
BucketName: "aws_s3_mock",
Secrets: secrets,
},
Persisted: persisted,
},
},
}