Added versioning edit in console (#645)

This commit is contained in:
Alex
2021-03-19 18:48:58 -06:00
committed by GitHub
parent 26f7982323
commit 03dc83af3a
11 changed files with 305 additions and 17 deletions

View File

@@ -89,7 +89,14 @@ func registerBucketsHandlers(api *operations.ConsoleAPI) {
}
return user_api.NewGetBucketVersioningOK().WithPayload(getBucketVersioning)
})
// update bucket versioning
api.UserAPISetBucketVersioningHandler = user_api.SetBucketVersioningHandlerFunc(func(params user_api.SetBucketVersioningParams, session *models.Principal) middleware.Responder {
err := setBucketVersioningResponse(session, params.BucketName, &params)
if err != nil {
return user_api.NewSetBucketVersioningDefault(500).WithPayload(err)
}
return user_api.NewSetBucketVersioningCreated()
})
// get bucket replication
api.UserAPIGetBucketReplicationHandler = user_api.GetBucketReplicationHandlerFunc(func(params user_api.GetBucketReplicationParams, session *models.Principal) middleware.Responder {
getBucketReplication, err := getBucketReplicationdResponse(session, params.BucketName)
@@ -200,6 +207,47 @@ func getAddBucketReplicationdResponse(session *models.Principal, bucketName stri
return nil
}
type VersionState string
const (
VersionEnable VersionState = "enable"
VersionSuspend = "suspend"
)
// removeBucket deletes a bucket
func doSetVersioning(client MCClient, state VersionState) error {
err := client.setVersioning(context.Background(), string(state))
if err != nil {
log.Println("error setting versioning for bucket:", err.Cause)
return err.Cause
}
return nil
}
func setBucketVersioningResponse(session *models.Principal, bucketName string, params *user_api.SetBucketVersioningParams) *models.Error {
s3Client, err := newS3BucketClient(session, bucketName, "")
if err != nil {
return prepareError(err)
}
// create a mc S3Client interface implementation
// defining the client to be used
amcClient := mcClient{client: s3Client}
var versioningState VersionState = VersionSuspend
if params.Body.Versioning {
versioningState = VersionEnable
}
err2 := doSetVersioning(amcClient, versioningState)
if err2 != nil {
return prepareError(err2)
}
return nil
}
func getBucketReplicationdResponse(session *models.Principal, bucketName string) (*models.BucketReplicationResponse, error) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*20)
defer cancel()