fix(delete): fix delete handler to add org filter for bucket lookup (#17834)
parent
d82aa62fff
commit
50b51e14b3
|
@ -148,7 +148,7 @@ func decodeDeleteRequest(ctx context.Context, r *http.Request, orgSvc influxdb.O
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if dr.Bucket, err = queryBucket(ctx, r, bucketSvc); err != nil {
|
||||
if dr.Bucket, err = queryBucket(ctx, dr.Org.ID, r, bucketSvc); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dr, nil
|
||||
|
|
|
@ -53,8 +53,8 @@ func queryOrganization(ctx context.Context, r *http.Request, svc platform.Organi
|
|||
// This will try to find the bucket using an ID string or
|
||||
// the name. It interprets the &bucket= parameter as either the name
|
||||
// or the ID.
|
||||
func queryBucket(ctx context.Context, r *http.Request, svc platform.BucketService) (b *platform.Bucket, err error) {
|
||||
filter := platform.BucketFilter{}
|
||||
func queryBucket(ctx context.Context, orgID platform.ID, r *http.Request, svc platform.BucketService) (b *platform.Bucket, err error) {
|
||||
filter := platform.BucketFilter{OrganizationID: &orgID}
|
||||
if bucket := r.URL.Query().Get(Bucket); bucket != "" {
|
||||
if id, err := platform.IDFromString(bucket); err == nil {
|
||||
filter.ID = id
|
||||
|
|
|
@ -161,7 +161,7 @@ func Test_queryBucket(t *testing.T) {
|
|||
},
|
||||
},
|
||||
{
|
||||
name: "org name finds organization",
|
||||
name: "bucket name finds bucket",
|
||||
want: &platform.Bucket{
|
||||
ID: platform.ID(1),
|
||||
Name: "bucket1",
|
||||
|
@ -208,10 +208,32 @@ func Test_queryBucket(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
{
|
||||
name: "invalid orgID fails to return bucket",
|
||||
want: &platform.Bucket{
|
||||
ID: platform.ID(1),
|
||||
},
|
||||
args: args{
|
||||
ctx: context.Background(),
|
||||
r: httptest.NewRequest(http.MethodPost, "/api/v2/query?bucket=0000000000000001", nil),
|
||||
svc: &mock.BucketService{
|
||||
FindBucketFn: func(ctx context.Context, filter platform.BucketFilter) (*platform.Bucket, error) {
|
||||
if *filter.OrganizationID == platform.ID(1) {
|
||||
return &platform.Bucket{
|
||||
ID: platform.ID(1),
|
||||
}, nil
|
||||
}
|
||||
return nil, &platform.Error{
|
||||
Code: platform.EInvalid,
|
||||
Msg: "unknown bucket",
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
}}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := queryBucket(tt.args.ctx, tt.args.r, tt.args.svc)
|
||||
got, err := queryBucket(tt.args.ctx, platform.ID(1), tt.args.r, tt.args.svc)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("queryBucket() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
|
|
|
@ -2,7 +2,6 @@ package tenant
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"github.com/influxdata/influxdb/v2"
|
||||
"github.com/influxdata/influxdb/v2/kv"
|
||||
|
@ -57,8 +56,8 @@ func (s *Service) FindBucket(ctx context.Context, filter influxdb.BucketFilter)
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if len(buckets) != 1 {
|
||||
return nil, errors.New("unkown error")
|
||||
if len(buckets) < 1 {
|
||||
return nil, ErrBucketNotFound
|
||||
}
|
||||
|
||||
return buckets[0], nil
|
||||
|
@ -108,6 +107,11 @@ func (s *Service) FindBuckets(ctx context.Context, filter influxdb.BucketFilter,
|
|||
return nil, 0, err
|
||||
}
|
||||
|
||||
if len(opt) > 0 && len(buckets) >= opt[0].Limit {
|
||||
// if we have reached the limit we will not add system buckets
|
||||
return buckets, len(buckets), nil
|
||||
}
|
||||
|
||||
// NOTE: this is a remnant of the old system.
|
||||
// There are org that do not have system buckets stored, but still need to be displayed.
|
||||
needsSystemBuckets := true
|
||||
|
|
Loading…
Reference in New Issue