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.

package.go 6.2 kB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package coordinator
  2. import (
  3. "gitlink.org.cn/cloudream/common/pkgs/mq"
  4. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  5. stgmod "gitlink.org.cn/cloudream/storage/common/models"
  6. "gitlink.org.cn/cloudream/storage/common/pkgs/db/model"
  7. )
  8. type PackageService interface {
  9. GetPackage(msg *GetPackage) (*GetPackageResp, *mq.CodeMessage)
  10. CreatePackage(msg *CreatePackage) (*CreatePackageResp, *mq.CodeMessage)
  11. UpdateECPackage(msg *UpdatePackage) (*UpdatePackageResp, *mq.CodeMessage)
  12. DeletePackage(msg *DeletePackage) (*DeletePackageResp, *mq.CodeMessage)
  13. GetPackageCachedNodes(msg *GetPackageCachedNodes) (*GetPackageCachedNodesResp, *mq.CodeMessage)
  14. GetPackageLoadedNodes(msg *GetPackageLoadedNodes) (*GetPackageLoadedNodesResp, *mq.CodeMessage)
  15. }
  16. // 获取Package基本信息
  17. var _ = Register(Service.GetPackage)
  18. type GetPackage struct {
  19. mq.MessageBodyBase
  20. UserID cdssdk.UserID `json:"userID"`
  21. PackageID cdssdk.PackageID `json:"packageID"`
  22. }
  23. type GetPackageResp struct {
  24. mq.MessageBodyBase
  25. model.Package
  26. }
  27. func NewGetPackage(userID cdssdk.UserID, packageID cdssdk.PackageID) *GetPackage {
  28. return &GetPackage{
  29. UserID: userID,
  30. PackageID: packageID,
  31. }
  32. }
  33. func NewGetPackageResp(pkg model.Package) *GetPackageResp {
  34. return &GetPackageResp{
  35. Package: pkg,
  36. }
  37. }
  38. func (client *Client) GetPackage(msg *GetPackage) (*GetPackageResp, error) {
  39. return mq.Request(Service.GetPackage, client.rabbitCli, msg)
  40. }
  41. // 创建一个Package
  42. var _ = Register(Service.CreatePackage)
  43. type CreatePackage struct {
  44. mq.MessageBodyBase
  45. UserID cdssdk.UserID `json:"userID"`
  46. BucketID cdssdk.BucketID `json:"bucketID"`
  47. Name string `json:"name"`
  48. }
  49. type CreatePackageResp struct {
  50. mq.MessageBodyBase
  51. PackageID cdssdk.PackageID `json:"packageID"`
  52. }
  53. func NewCreatePackage(userID cdssdk.UserID, bucketID cdssdk.BucketID, name string) *CreatePackage {
  54. return &CreatePackage{
  55. UserID: userID,
  56. BucketID: bucketID,
  57. Name: name,
  58. }
  59. }
  60. func NewCreatePackageResp(packageID cdssdk.PackageID) *CreatePackageResp {
  61. return &CreatePackageResp{
  62. PackageID: packageID,
  63. }
  64. }
  65. func (client *Client) CreatePackage(msg *CreatePackage) (*CreatePackageResp, error) {
  66. return mq.Request(Service.CreatePackage, client.rabbitCli, msg)
  67. }
  68. // 更新EC备份模式的Package
  69. var _ = Register(Service.UpdateECPackage)
  70. type UpdatePackage struct {
  71. mq.MessageBodyBase
  72. PackageID cdssdk.PackageID `json:"packageID"`
  73. Adds []AddObjectInfo `json:"objects"`
  74. Deletes []cdssdk.ObjectID `json:"deletes"`
  75. }
  76. type UpdatePackageResp struct {
  77. mq.MessageBodyBase
  78. }
  79. type AddObjectInfo struct {
  80. Path string `json:"path"`
  81. Size int64 `json:"size,string"`
  82. Redundancy cdssdk.Redundancy `json:"redundancy"`
  83. Blocks []stgmod.ObjectBlockDetail `json:"blocks"`
  84. }
  85. func NewUpdatePackage(packageID cdssdk.PackageID, adds []AddObjectInfo, deletes []cdssdk.ObjectID) *UpdatePackage {
  86. return &UpdatePackage{
  87. PackageID: packageID,
  88. Adds: adds,
  89. Deletes: deletes,
  90. }
  91. }
  92. func NewUpdatePackageResp() *UpdatePackageResp {
  93. return &UpdatePackageResp{}
  94. }
  95. func NewAddObjectInfo(path string, size int64, redundancy cdssdk.Redundancy, blocks []stgmod.ObjectBlockDetail) AddObjectInfo {
  96. return AddObjectInfo{
  97. Path: path,
  98. Size: size,
  99. Redundancy: redundancy,
  100. Blocks: blocks,
  101. }
  102. }
  103. func (client *Client) UpdateECPackage(msg *UpdatePackage) (*UpdatePackageResp, error) {
  104. return mq.Request(Service.UpdateECPackage, client.rabbitCli, msg)
  105. }
  106. // 删除对象
  107. var _ = Register(Service.DeletePackage)
  108. type DeletePackage struct {
  109. mq.MessageBodyBase
  110. UserID cdssdk.UserID `db:"userID"`
  111. PackageID cdssdk.PackageID `db:"packageID"`
  112. }
  113. type DeletePackageResp struct {
  114. mq.MessageBodyBase
  115. }
  116. func NewDeletePackage(userID cdssdk.UserID, packageID cdssdk.PackageID) *DeletePackage {
  117. return &DeletePackage{
  118. UserID: userID,
  119. PackageID: packageID,
  120. }
  121. }
  122. func NewDeletePackageResp() *DeletePackageResp {
  123. return &DeletePackageResp{}
  124. }
  125. func (client *Client) DeletePackage(msg *DeletePackage) (*DeletePackageResp, error) {
  126. return mq.Request(Service.DeletePackage, client.rabbitCli, msg)
  127. }
  128. // 根据PackageID获取object分布情况
  129. var _ = Register(Service.GetPackageCachedNodes)
  130. type GetPackageCachedNodes struct {
  131. mq.MessageBodyBase
  132. UserID cdssdk.UserID `json:"userID"`
  133. PackageID cdssdk.PackageID `json:"packageID"`
  134. }
  135. type PackageCachedNodeInfo struct {
  136. NodeID int64 `json:"nodeID"`
  137. FileSize int64 `json:"fileSize"`
  138. ObjectCount int64 `json:"objectCount"`
  139. }
  140. type GetPackageCachedNodesResp struct {
  141. mq.MessageBodyBase
  142. cdssdk.PackageCachingInfo
  143. }
  144. func NewGetPackageCachedNodes(userID cdssdk.UserID, packageID cdssdk.PackageID) *GetPackageCachedNodes {
  145. return &GetPackageCachedNodes{
  146. UserID: userID,
  147. PackageID: packageID,
  148. }
  149. }
  150. func NewGetPackageCachedNodesResp(nodeInfos []cdssdk.NodePackageCachingInfo, packageSize int64, redunancyType string) *GetPackageCachedNodesResp {
  151. return &GetPackageCachedNodesResp{
  152. PackageCachingInfo: cdssdk.PackageCachingInfo{
  153. NodeInfos: nodeInfos,
  154. PackageSize: packageSize,
  155. RedunancyType: redunancyType,
  156. },
  157. }
  158. }
  159. func (client *Client) GetPackageCachedNodes(msg *GetPackageCachedNodes) (*GetPackageCachedNodesResp, error) {
  160. return mq.Request(Service.GetPackageCachedNodes, client.rabbitCli, msg)
  161. }
  162. // 根据PackageID获取storage分布情况
  163. var _ = Register(Service.GetPackageLoadedNodes)
  164. type GetPackageLoadedNodes struct {
  165. mq.MessageBodyBase
  166. UserID cdssdk.UserID `json:"userID"`
  167. PackageID cdssdk.PackageID `json:"packageID"`
  168. }
  169. type GetPackageLoadedNodesResp struct {
  170. mq.MessageBodyBase
  171. NodeIDs []cdssdk.NodeID `json:"nodeIDs"`
  172. }
  173. func NewGetPackageLoadedNodes(userID cdssdk.UserID, packageID cdssdk.PackageID) *GetPackageLoadedNodes {
  174. return &GetPackageLoadedNodes{
  175. UserID: userID,
  176. PackageID: packageID,
  177. }
  178. }
  179. func NewGetPackageLoadedNodesResp(nodeIDs []cdssdk.NodeID) *GetPackageLoadedNodesResp {
  180. return &GetPackageLoadedNodesResp{
  181. NodeIDs: nodeIDs,
  182. }
  183. }
  184. func (client *Client) GetPackageLoadedNodes(msg *GetPackageLoadedNodes) (*GetPackageLoadedNodesResp, error) {
  185. return mq.Request(Service.GetPackageLoadedNodes, client.rabbitCli, msg)
  186. }

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