MCPcopy
hub / github.com/rclone/rclone / setGetVersioning

Method setGetVersioning

backend/s3/s3.go:3752–3798  ·  view source on GitHub ↗

Set or get bucket versioning. Pass no arguments to get, or pass "Enabled" or "Suspended" Updates f.versioning

(ctx context.Context, arg ...string)

Source from the content-addressed store, hash-verified

3750//
3751// Updates f.versioning
3752func (f *Fs) setGetVersioning(ctx context.Context, arg ...string) (status types.BucketVersioningStatus, err error) {
3753 if len(arg) > 1 {
3754 return "", errors.New("too many arguments")
3755 }
3756 if f.rootBucket == "" {
3757 return "", errors.New("need a bucket")
3758 }
3759 if len(arg) == 1 {
3760 var versioning = types.VersioningConfiguration{
3761 Status: types.BucketVersioningStatus(arg[0]),
3762 }
3763 // Disabled is indicated by the parameter missing
3764 if versioning.Status == types.BucketVersioningStatus("Disabled") {
3765 versioning.Status = types.BucketVersioningStatus("")
3766 }
3767 req := s3.PutBucketVersioningInput{
3768 Bucket: &f.rootBucket,
3769 VersioningConfiguration: &versioning,
3770 }
3771 err := f.pacer.Call(func() (bool, error) {
3772 _, err = f.c.PutBucketVersioning(ctx, &req)
3773 return f.shouldRetry(ctx, err)
3774 })
3775 if err != nil {
3776 return "", err
3777 }
3778 }
3779 req := s3.GetBucketVersioningInput{
3780 Bucket: &f.rootBucket,
3781 }
3782 var resp *s3.GetBucketVersioningOutput
3783 err = f.pacer.Call(func() (bool, error) {
3784 resp, err = f.c.GetBucketVersioning(ctx, &req)
3785 return f.shouldRetry(ctx, err)
3786 })
3787 f.versioning.Valid = true
3788 f.versioning.Value = false
3789 if err != nil {
3790 fs.Errorf(f, "Failed to read versioning status, assuming unversioned: %v", err)
3791 return "", err
3792 }
3793 if len(resp.Status) == 0 {
3794 return "Unversioned", err
3795 }
3796 f.versioning.Value = true
3797 return resp.Status, err
3798}
3799
3800// CleanUp removes all pending multipart uploads older than 24 hours
3801func (f *Fs) CleanUp(ctx context.Context) (err error) {

Callers 3

CommandMethod · 0.95
isVersionedMethod · 0.95
InternalTestVersionsMethod · 0.95

Calls 3

shouldRetryMethod · 0.95
ErrorfFunction · 0.92
CallMethod · 0.45

Tested by 1

InternalTestVersionsMethod · 0.76