You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

storage.go 1.8 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package cmdline
  2. import (
  3. "fmt"
  4. "time"
  5. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  6. )
  7. func StorageLoadPackage(ctx CommandContext, packageID cdssdk.PackageID, storageID cdssdk.StorageID) error {
  8. startTime := time.Now()
  9. defer func() {
  10. fmt.Printf("%v\n", time.Since(startTime).Seconds())
  11. }()
  12. nodeID, taskID, err := ctx.Cmdline.Svc.StorageSvc().StartStorageLoadPackage(1, packageID, storageID)
  13. if err != nil {
  14. return fmt.Errorf("start loading package to storage: %w", err)
  15. }
  16. for {
  17. complete, fullPath, err := ctx.Cmdline.Svc.StorageSvc().WaitStorageLoadPackage(nodeID, taskID, time.Second*10)
  18. if complete {
  19. if err != nil {
  20. return fmt.Errorf("moving complete with: %w", err)
  21. }
  22. fmt.Printf("Load To: %s\n", fullPath)
  23. return nil
  24. }
  25. if err != nil {
  26. return fmt.Errorf("wait moving: %w", err)
  27. }
  28. }
  29. }
  30. func StorageCreatePackage(ctx CommandContext, bucketID cdssdk.BucketID, name string, storageID cdssdk.StorageID, path string) error {
  31. startTime := time.Now()
  32. defer func() {
  33. fmt.Printf("%v\n", time.Since(startTime).Seconds())
  34. }()
  35. nodeID, taskID, err := ctx.Cmdline.Svc.StorageSvc().StartStorageCreatePackage(1, bucketID, name, storageID, path, nil)
  36. if err != nil {
  37. return fmt.Errorf("start storage uploading package: %w", err)
  38. }
  39. for {
  40. complete, packageID, err := ctx.Cmdline.Svc.StorageSvc().WaitStorageCreatePackage(nodeID, taskID, time.Second*10)
  41. if complete {
  42. if err != nil {
  43. return fmt.Errorf("uploading complete with: %w", err)
  44. }
  45. fmt.Printf("%d\n", packageID)
  46. return nil
  47. }
  48. if err != nil {
  49. return fmt.Errorf("wait uploading: %w", err)
  50. }
  51. }
  52. }
  53. func init() {
  54. commands.MustAdd(StorageLoadPackage, "stg", "pkg", "load")
  55. commands.MustAdd(StorageCreatePackage, "stg", "pkg", "new")
  56. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。