Added versioning edit in console (#645)
This commit is contained in:
@@ -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, ¶ms)
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user