MCPcopy
hub / github.com/rclone/rclone / lifecycleCommand

Method lifecycleCommand

backend/b2/b2.go:2469–2537  ·  view source on GitHub ↗
(ctx context.Context, name string, arg []string, opt map[string]string)

Source from the content-addressed store, hash-verified

2467}
2468
2469func (f *Fs) lifecycleCommand(ctx context.Context, name string, arg []string, opt map[string]string) (out any, err error) {
2470 var newRule api.LifecycleRule
2471 if daysStr := opt["daysFromHidingToDeleting"]; daysStr != "" {
2472 days, err := strconv.Atoi(daysStr)
2473 if err != nil {
2474 return nil, fmt.Errorf("bad daysFromHidingToDeleting: %w", err)
2475 }
2476 newRule.DaysFromHidingToDeleting = &days
2477 }
2478 if daysStr := opt["daysFromUploadingToHiding"]; daysStr != "" {
2479 days, err := strconv.Atoi(daysStr)
2480 if err != nil {
2481 return nil, fmt.Errorf("bad daysFromUploadingToHiding: %w", err)
2482 }
2483 newRule.DaysFromUploadingToHiding = &days
2484 }
2485 if daysStr := opt["daysFromStartingToCancelingUnfinishedLargeFiles"]; daysStr != "" {
2486 days, err := strconv.Atoi(daysStr)
2487 if err != nil {
2488 return nil, fmt.Errorf("bad daysFromStartingToCancelingUnfinishedLargeFiles: %w", err)
2489 }
2490 newRule.DaysFromStartingToCancelingUnfinishedLargeFiles = &days
2491 }
2492 bucketName, _ := f.split("")
2493 if bucketName == "" {
2494 return nil, errors.New("bucket required")
2495
2496 }
2497
2498 skip := operations.SkipDestructive(ctx, name, "update lifecycle rules")
2499
2500 var bucket *api.Bucket
2501 if !skip && (newRule.DaysFromHidingToDeleting != nil || newRule.DaysFromUploadingToHiding != nil || newRule.DaysFromStartingToCancelingUnfinishedLargeFiles != nil) {
2502 bucketID, err := f.getBucketID(ctx, bucketName)
2503 if err != nil {
2504 return nil, err
2505 }
2506 opts := rest.Opts{
2507 Method: "POST",
2508 Path: "/b2_update_bucket",
2509 }
2510 var request = api.UpdateBucketRequest{
2511 ID: bucketID,
2512 AccountID: f.info.AccountID,
2513 LifecycleRules: []api.LifecycleRule{newRule},
2514 }
2515 var response api.Bucket
2516 err = f.pacer.Call(func() (bool, error) {
2517 resp, err := f.srv.CallJSON(ctx, &opts, &request, &response)
2518 return f.shouldRetry(ctx, resp, err)
2519 })
2520 if err != nil {
2521 return nil, err
2522 }
2523 bucket = &response
2524 } else {
2525 err = f.listBucketsToFn(ctx, bucketName, func(b *api.Bucket) error {
2526 bucket = b

Callers 2

CommandMethod · 0.95

Calls 8

splitMethod · 0.95
getBucketIDMethod · 0.95
shouldRetryMethod · 0.95
listBucketsToFnMethod · 0.95
SkipDestructiveFunction · 0.92
ErrorfMethod · 0.45
CallMethod · 0.45
CallJSONMethod · 0.45

Tested by 1