Set or get bucket versioning. Pass no arguments to get, or pass "Enabled" or "Suspended" Updates f.versioning
(ctx context.Context, arg ...string)
| 3750 | // |
| 3751 | // Updates f.versioning |
| 3752 | func (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 |
| 3801 | func (f *Fs) CleanUp(ctx context.Context) (err error) { |