From 75b08d590cd598a6872fc0da819ed6475f65b42d Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Wed, 10 May 2023 15:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E6=96=87=E4=BB=B6=E5=90=8E?= =?UTF-8?q?=E5=86=99=E5=85=A5StorageObject=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/services/storage.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/internal/services/storage.go b/internal/services/storage.go index fbec121..8883675 100644 --- a/internal/services/storage.go +++ b/internal/services/storage.go @@ -9,7 +9,20 @@ import ( log "gitlink.org.cn/cloudream/utils/logger" ) -func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObjectToStorageResp { +func (service *Service) MoveObjectToStorage(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObjectToStorageResp { + err := service.db.Storage().UserMoveObjectTo(msg.Body.UserID, msg.Body.ObjectID, msg.Body.StorageID) + if err != nil { + log.WithField("UserID", msg.Body.UserID). + WithField("ObjectID", msg.Body.ObjectID). + WithField("StorageID", msg.Body.StorageID). + Warnf("user move object to storage failed, err: %s", err.Error()) + return ramsg.ReplyFailed[coormsg.MoveObjectToStorageResp](errorcode.OPERATION_FAILED, "user move object to storage failed") + } + + return ramsg.ReplyOK(coormsg.NewMoveObjectToStorageRespBody()) +} + +func (service *Service) PreMoveObjectToStorage(msg *coormsg.PreMoveObjectToStorage) *coormsg.PreMoveObjectToStorageResp { //查询数据库,获取冗余类型,冗余参数 //jh:使用command中的bucketname和objectname查询对象表,获得redundancy,EcName,fileSizeInBytes //-若redundancy是rep,查询对象副本表, 获得repHash @@ -20,15 +33,13 @@ func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObje //--查询节点延迟表,得到command.destination与各个nodeIps的的延迟,存到一个map类型中(Delay) //--kx:根据查出来的hash/hashs、nodeIps、TempOrPins、Times(移动/读取策略)、Delay确定hashs、ids - // TODO 需要在StorageData中增加记录 - // 查询用户关联的存储服务 stg, err := service.db.QueryUserStorage(msg.Body.UserID, msg.Body.StorageID) if err != nil { log.WithField("UserID", msg.Body.UserID). WithField("StorageID", msg.Body.StorageID). Warnf("query storage directory failed, err: %s", err.Error()) - return ramsg.ReplyFailed[coormsg.MoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query storage directory failed") + return ramsg.ReplyFailed[coormsg.PreMoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query storage directory failed") } // 查询文件对象 @@ -36,7 +47,7 @@ func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObje if err != nil { log.WithField("ObjectID", msg.Body.ObjectID). Warnf("query Object failed, err: %s", err.Error()) - return ramsg.ReplyFailed[coormsg.MoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query Object failed") + return ramsg.ReplyFailed[coormsg.PreMoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query Object failed") } //-若redundancy是rep,查询对象副本表, 获得repHash @@ -46,7 +57,7 @@ func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObje objectRep, err := service.db.GetObjectRep(object.ObjectID) if err != nil { log.Warnf("query ObjectRep failed, err: %s", err.Error()) - return ramsg.ReplyFailed[coormsg.MoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query ObjectRep failed") + return ramsg.ReplyFailed[coormsg.PreMoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query ObjectRep failed") } hashs = append(hashs, objectRep.RepHash) @@ -55,7 +66,7 @@ func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObje blockHashs, err := service.db.QueryObjectBlock(object.ObjectID) if err != nil { log.Warnf("query ObjectBlock failed, err: %s", err.Error()) - return ramsg.ReplyFailed[coormsg.MoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query ObjectBlock failed") + return ramsg.ReplyFailed[coormsg.PreMoveObjectToStorageResp](errorcode.OPERATION_FAILED, "query ObjectBlock failed") } ecPolicies := *utils.GetEcPolicy() @@ -89,7 +100,7 @@ func (service *Service) Move(msg *coormsg.MoveObjectToStorage) *coormsg.MoveObje }*/ } - return ramsg.ReplyOK(coormsg.NewMoveObjectToStorageRespBody( + return ramsg.ReplyOK(coormsg.NewPreMoveObjectToStorageRespBody( stg.NodeID, stg.Directory, object.Redundancy,