MCPcopy
hub / github.com/lxc/incus / storagePoolBucketBackupPost

Function storagePoolBucketBackupPost

cmd/incusd/storage_buckets_backup.go:653–732  ·  view source on GitHub ↗

swagger:operation POST /1.0/storage-pools/{poolName}/buckets/{bucketName}/backups/{backupName} storage storage_pool_buckets_backup_post Rename a storage bucket backup Renames a storage bucket backup. --- consumes: - application/json produces: - application/json parameters: - in: pa

(d *Daemon, r *http.Request)

Source from the content-addressed store, hash-verified

651// "500":
652// $ref: "#/responses/InternalServerError"
653func storagePoolBucketBackupPost(d *Daemon, r *http.Request) response.Response {
654 s := d.State()
655
656 resp := forwardedResponseIfTargetIsRemote(s, r)
657 if resp != nil {
658 return resp
659 }
660
661 projectName, err := project.StorageBucketProject(r.Context(), s.DB.Cluster, request.ProjectParam(r))
662 if err != nil {
663 return response.SmartError(err)
664 }
665
666 poolName, err := pathVar(r, "poolName")
667 if err != nil {
668 return response.SmartError(err)
669 }
670
671 pool, err := storagePools.LoadByName(s, poolName)
672 if err != nil {
673 return response.SmartError(fmt.Errorf("Failed loading storage pool: %w", err))
674 }
675
676 if !pool.Driver().Info().Buckets {
677 return response.BadRequest(errors.New("Storage pool does not support buckets"))
678 }
679
680 bucketName, err := pathVar(r, "bucketName")
681 if err != nil {
682 return response.SmartError(err)
683 }
684
685 backupName, err := pathVar(r, "backupName")
686 if err != nil {
687 return response.SmartError(err)
688 }
689
690 req := api.StorageBucketBackupPost{}
691 err = json.NewDecoder(r.Body).Decode(&req)
692 if err != nil {
693 return response.BadRequest(err)
694 }
695
696 // Quick checks.
697 err = validate.IsAPIName(req.Name, false)
698 if err != nil {
699 return response.BadRequest(fmt.Errorf("Invalid storage bucket backup name: %w", err))
700 }
701
702 oldName := bucketName + internalInstance.SnapshotDelimiter + backupName
703
704 entry, err := storagePoolBucketBackupLoadByName(r.Context(), s, projectName, poolName, oldName)
705 if err != nil {
706 return response.SmartError(err)
707 }
708
709 newName := bucketName + internalInstance.SnapshotDelimiter + req.Name
710

Callers

nothing calls this directly

Calls 15

StorageBucketProjectFunction · 0.92
ProjectParamFunction · 0.92
SmartErrorFunction · 0.92
BadRequestFunction · 0.92
IsAPINameFunction · 0.92
NewURLFunction · 0.92
OperationCreateFunction · 0.92
InternalErrorFunction · 0.92
OperationResponseFunction · 0.92
pathVarFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…