Changed response type for Add bucket (#2721)

Signed-off-by: Benjamin Perez <benjamin@bexsoft.net>
This commit is contained in:
Alex
2023-03-17 17:36:42 -06:00
committed by GitHub
parent f20fa0b1c8
commit 72a1e5eefb
9 changed files with 204 additions and 69 deletions

View File

@@ -881,8 +881,11 @@ func init() {
}
],
"responses": {
"201": {
"description": "A successful response."
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/makeBucketsResponse"
}
},
"default": {
"description": "Generic error response.",
@@ -7119,6 +7122,14 @@ func init() {
}
}
},
"makeBucketsResponse": {
"type": "object",
"properties": {
"bucketName": {
"type": "string"
}
}
},
"metadata": {
"type": "object",
"properties": {
@@ -9866,8 +9877,11 @@ func init() {
}
],
"responses": {
"201": {
"description": "A successful response."
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/makeBucketsResponse"
}
},
"default": {
"description": "Generic error response.",
@@ -16233,6 +16247,14 @@ func init() {
}
}
},
"makeBucketsResponse": {
"type": "object",
"properties": {
"bucketName": {
"type": "string"
}
}
},
"metadata": {
"type": "object",
"properties": {

View File

@@ -30,29 +30,49 @@ import (
"github.com/minio/console/models"
)
// MakeBucketCreatedCode is the HTTP code returned for type MakeBucketCreated
const MakeBucketCreatedCode int = 201
// MakeBucketOKCode is the HTTP code returned for type MakeBucketOK
const MakeBucketOKCode int = 200
/*
MakeBucketCreated A successful response.
MakeBucketOK A successful response.
swagger:response makeBucketCreated
swagger:response makeBucketOK
*/
type MakeBucketCreated struct {
type MakeBucketOK struct {
/*
In: Body
*/
Payload *models.MakeBucketsResponse `json:"body,omitempty"`
}
// NewMakeBucketCreated creates MakeBucketCreated with default headers values
func NewMakeBucketCreated() *MakeBucketCreated {
// NewMakeBucketOK creates MakeBucketOK with default headers values
func NewMakeBucketOK() *MakeBucketOK {
return &MakeBucketCreated{}
return &MakeBucketOK{}
}
// WithPayload adds the payload to the make bucket o k response
func (o *MakeBucketOK) WithPayload(payload *models.MakeBucketsResponse) *MakeBucketOK {
o.Payload = payload
return o
}
// SetPayload sets the payload to the make bucket o k response
func (o *MakeBucketOK) SetPayload(payload *models.MakeBucketsResponse) {
o.Payload = payload
}
// WriteResponse to the client
func (o *MakeBucketCreated) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
func (o *MakeBucketOK) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses
rw.WriteHeader(201)
rw.WriteHeader(200)
if o.Payload != nil {
payload := o.Payload
if err := producer.Produce(rw, payload); err != nil {
panic(err) // let the recovery middleware deal with this
}
}
}
/*

View File

@@ -54,10 +54,11 @@ func registerBucketsHandlers(api *operations.ConsoleAPI) {
})
// make bucket
api.BucketMakeBucketHandler = bucketApi.MakeBucketHandlerFunc(func(params bucketApi.MakeBucketParams, session *models.Principal) middleware.Responder {
if err := getMakeBucketResponse(session, params); err != nil {
makeBucketResponse, err := getMakeBucketResponse(session, params)
if err != nil {
return bucketApi.NewMakeBucketDefault(int(err.Code)).WithPayload(err)
}
return bucketApi.NewMakeBucketCreated()
return bucketApi.NewMakeBucketOK().WithPayload(makeBucketResponse)
})
// delete bucket
api.BucketDeleteBucketHandler = bucketApi.DeleteBucketHandlerFunc(func(params bucketApi.DeleteBucketParams, session *models.Principal) middleware.Responder {
@@ -450,17 +451,17 @@ func makeBucket(ctx context.Context, client MinioClient, bucketName string, obje
}
// getMakeBucketResponse performs makeBucket() to create a bucket with its access policy
func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucketParams) *models.Error {
func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucketParams) (*models.MakeBucketsResponse, *models.Error) {
ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
defer cancel()
// bucket request needed to proceed
br := params.Body
if br == nil {
return ErrorWithContext(ctx, ErrBucketBodyNotInRequest)
return nil, ErrorWithContext(ctx, ErrBucketBodyNotInRequest)
}
mClient, err := newMinioClient(session)
if err != nil {
return ErrorWithContext(ctx, err)
return nil, ErrorWithContext(ctx, err)
}
// create a minioClient interface implementation
// defining the client to be used
@@ -472,7 +473,7 @@ func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucke
}
if err := makeBucket(ctx, minioClient, *br.Name, br.Locking); err != nil {
return ErrorWithContext(ctx, err)
return nil, ErrorWithContext(ctx, err)
}
// make sure to delete bucket if an errors occurs after bucket was created
@@ -489,14 +490,14 @@ func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucke
if br.Versioning || br.Retention != nil {
s3Client, err := newS3BucketClient(session, *br.Name, "")
if err != nil {
return ErrorWithContext(ctx, err)
return nil, ErrorWithContext(ctx, err)
}
// create a mc S3Client interface implementation
// defining the client to be used
amcClient := mcClient{client: s3Client}
if err = doSetVersioning(amcClient, VersionEnable); err != nil {
return ErrorWithContext(ctx, fmt.Errorf("error setting versioning for bucket: %s", err))
return nil, ErrorWithContext(ctx, fmt.Errorf("error setting versioning for bucket: %s", err))
}
}
@@ -504,7 +505,7 @@ func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucke
if br.Quota != nil && br.Quota.Enabled != nil && *br.Quota.Enabled {
mAdmin, err := NewMinioAdminClient(session)
if err != nil {
return ErrorWithContext(ctx, err)
return nil, ErrorWithContext(ctx, err)
}
// create a minioClient interface implementation
// defining the client to be used
@@ -519,10 +520,10 @@ func getMakeBucketResponse(session *models.Principal, params bucketApi.MakeBucke
if br.Retention != nil {
err = setBucketRetentionConfig(ctx, minioClient, *br.Name, *br.Retention.Mode, *br.Retention.Unit, br.Retention.Validity)
if err != nil {
return ErrorWithContext(ctx, err)
return nil, ErrorWithContext(ctx, err)
}
}
return nil
return &models.MakeBucketsResponse{BucketName: *br.Name}, nil
}
// setBucketAccessPolicy set the access permissions on an existing bucket.