Files
1Panel/agent/utils/cloud_storage/cloud_storage_client.go
ssongliu 1ab3da1fab fix: apply timeout to snapshot uploads (#13275)
* fix: apply timeout to snapshot uploads

* fix: honor snapshot upload timeouts for sftp and upyun
2026-07-16 11:21:26 +08:00

63 lines
1.8 KiB
Go

package cloud_storage
import (
"context"
"github.com/1Panel-dev/1Panel/agent/buserr"
"github.com/1Panel-dev/1Panel/agent/constant"
"github.com/1Panel-dev/1Panel/agent/utils/cloud_storage/client"
)
type CloudStorageClient interface {
ListBuckets() ([]interface{}, error)
ListObjects(prefix string) ([]string, error)
Exist(path string) (bool, error)
Delete(path string) (bool, error)
Upload(ctx context.Context, src, target string) (bool, error)
Download(src, target string) (bool, error)
Size(path string) (int64, error)
}
func NewCloudStorageClient(backupType string, vars map[string]interface{}) (CloudStorageClient, error) {
switch backupType {
case constant.Local:
return client.NewLocalClient(vars)
case constant.S3:
return client.NewS3Client(vars)
case constant.OSS:
return client.NewOssClient(vars)
case constant.Sftp:
return client.NewSftpClient(vars)
case constant.WebDAV:
return client.NewWebDAVClient(vars)
case constant.MinIo:
return client.NewMinIoClient(vars)
case constant.Cos:
return client.NewCosClient(vars)
case constant.Kodo:
return client.NewKodoClient(vars)
case constant.OneDrive:
return client.NewOneDriveClient(vars)
case constant.UPYUN:
return client.NewUpClient(vars)
case constant.ALIYUN:
return client.NewALIClient(vars)
case constant.GoogleDrive:
return client.NewGoogleDriveClient(vars)
default:
return nil, buserr.WithName("ErrNotSupportType", backupType)
}
}
func NewCloudStorageClientWithContext(ctx context.Context, backupType string, vars map[string]interface{}) (CloudStorageClient, error) {
switch backupType {
case constant.Sftp:
return client.NewSftpClientWithContext(ctx, vars)
case constant.WebDAV:
return client.NewWebDAVClientWithContext(ctx, vars)
default:
return NewCloudStorageClient(backupType, vars)
}
}