Browse Source

增加列出用户拥有的桶和桶内文件的命令

gitlink
Sydonian 2 years ago
parent
commit
72c22b7094
5 changed files with 73 additions and 22 deletions
  1. +2
    -1
      main.go
  2. +48
    -0
      services/bucket.go
  3. +7
    -18
      services/command_service.go
  4. +3
    -3
      services/command_service_ec.go
  5. +13
    -0
      services/service.go

+ 2
- 1
main.go View File

@@ -6,6 +6,7 @@ import (

log "github.com/sirupsen/logrus"
"gitlink.org.cn/cloudream/coordinator/config"
"gitlink.org.cn/cloudream/coordinator/services"
mydb "gitlink.org.cn/cloudream/db"
rasvr "gitlink.org.cn/cloudream/rabbitmq/server"
"gitlink.org.cn/cloudream/utils/logger"
@@ -29,7 +30,7 @@ func main() {
log.Fatalf("new db failed, err: %s", err.Error())
}

cmdSvr, err := rasvr.NewCoordinatorServer(NewCommandService(db))
cmdSvr, err := rasvr.NewCoordinatorServer(services.NewService(db))
if err != nil {
log.Fatalf("new coordinator server failed, err: %s", err.Error())
}


+ 48
- 0
services/bucket.go View File

@@ -0,0 +1,48 @@
package services

import (
log "github.com/sirupsen/logrus"
"gitlink.org.cn/cloudream/db/model"
ramsg "gitlink.org.cn/cloudream/rabbitmq/message"
"gitlink.org.cn/cloudream/utils/consts/errorcode"
)

func (svc *Service) GetBucket(userID int, bucketID int) (model.Bucket, error) {
// TODO
panic("not implement yet")
}

func (svc *Service) GetUserBuckets(msg *ramsg.GetUserBucketsCommand) ramsg.GetUserBucketsResp {
buckets, err := svc.db.GetUserBuckets(msg.UserID)

if err != nil {
log.WithField("UserID", msg.UserID).
Warnf("get user buckets failed, err: %s", err.Error())
return ramsg.NewGetUserBucketsRespFailed(errorcode.OPERATION_FAILED, "get all buckets failed")
}

return ramsg.NewGetUserBucketsRespOK(buckets)
}

func (svc *Service) GetBucketObjects(msg *ramsg.GetBucketObjectsCommand) ramsg.GetBucketObjectsResp {
objects, err := svc.db.GetBucketObjects(msg.UserID, msg.BucketID)

if err != nil {
log.WithField("UserID", msg.UserID).
WithField("BucketID", msg.BucketID).
Warnf("get bucket objects failed, err: %s", err.Error())
return ramsg.NewGetBucketObjectsRespFailed(errorcode.OPERATION_FAILED, "get all buckets failed")
}

return ramsg.NewGetBucketObjectsRespOK(objects)
}

func (svc *Service) CreateBucket(userID int, bucketName string) (model.Bucket, error) {
// TODO
panic("not implement yet")
}

func (src *Service) DeleteBucket(userID int, bucketID int) error {
// TODO
panic("not implement yet")
}

command_service.go → services/command_service.go View File

@@ -1,8 +1,7 @@
package main
package services

import (
log "github.com/sirupsen/logrus"
mydb "gitlink.org.cn/cloudream/db"
ramsg "gitlink.org.cn/cloudream/rabbitmq/message"
"gitlink.org.cn/cloudream/utils"

@@ -10,17 +9,7 @@ import (
"gitlink.org.cn/cloudream/utils/consts/errorcode"
)

type CommandService struct {
db *mydb.DB
}

func NewCommandService(db *mydb.DB) *CommandService {
return &CommandService{
db: db,
}
}

func (service *CommandService) Read(msg *ramsg.ReadCommand) ramsg.ReadResp {
func (service *Service) Read(msg *ramsg.ReadCommand) ramsg.ReadResp {
var hashes []string
blockIDs := []int{0}

@@ -106,7 +95,7 @@ func (service *CommandService) Read(msg *ramsg.ReadCommand) ramsg.ReadResp {
)
}

func (service *CommandService) RepWrite(msg *ramsg.RepWriteCommand) ramsg.WriteResp {
func (service *Service) RepWrite(msg *ramsg.RepWriteCommand) ramsg.WriteResp {
// TODO 需要在此处判断同名对象是否存在。等到WriteRepHash时再判断一次。
// 此次的判断只作为参考,具体是否成功还是看WriteRepHash的结果

@@ -138,7 +127,7 @@ func (service *CommandService) RepWrite(msg *ramsg.RepWriteCommand) ramsg.WriteR
return ramsg.NewCoorWriteRespOK(ids, ips)
}

func (service *CommandService) WriteRepHash(msg *ramsg.WriteRepHashCommand) ramsg.WriteHashResp {
func (service *Service) WriteRepHash(msg *ramsg.WriteRepHashCommand) ramsg.WriteHashResp {
_, err := service.db.CreateRepObject(msg.BucketID, msg.ObjectName, msg.FileSizeInBytes, msg.ReplicateNumber, msg.NodeIDs, msg.Hashes)
if err != nil {
log.WithField("BucketName", msg.BucketID).
@@ -150,7 +139,7 @@ func (service *CommandService) WriteRepHash(msg *ramsg.WriteRepHashCommand) rams
return ramsg.NewCoorWriteHashRespOK()
}

func (service *CommandService) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
func (service *Service) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
//查询数据库,获取冗余类型,冗余参数
//jh:使用command中的bucketname和objectname查询对象表,获得redundancy,EcName,fileSizeInBytes
//-若redundancy是rep,查询对象副本表, 获得repHash
@@ -239,11 +228,11 @@ func (service *CommandService) Move(msg *ramsg.MoveCommand) ramsg.MoveResp {
)
}

func (service *CommandService) TempCacheReport(msg *ramsg.TempCacheReport) {
func (service *Service) TempCacheReport(msg *ramsg.TempCacheReport) {
service.db.BatchInsertOrUpdateCache(msg.Hashes, msg.NodeID)
}

func (service *CommandService) AgentStatusReport(msg *ramsg.AgentStatusReport) {
func (service *Service) AgentStatusReport(msg *ramsg.AgentStatusReport) {
//jh:根据command中的Ip,插入节点延迟表,和节点表的NodeStatus
//根据command中的Ip,插入节点延迟表


command_service_ec.go → services/command_service_ec.go View File

@@ -1,10 +1,10 @@
package main
package services

import (
ramsg "gitlink.org.cn/cloudream/rabbitmq/message"
)

func (service *CommandService) ECWrite(msg *ramsg.ECWriteCommand) ramsg.WriteResp {
func (service *Service) ECWrite(msg *ramsg.ECWriteCommand) ramsg.WriteResp {
panic("not implement yet!")

/*
@@ -56,7 +56,7 @@ func (service *CommandService) ECWrite(msg *ramsg.ECWriteCommand) ramsg.WriteRes
*/
}

func (service *CommandService) WriteECHash(msg *ramsg.WriteECHashCommand) ramsg.WriteHashResp {
func (service *Service) WriteECHash(msg *ramsg.WriteECHashCommand) ramsg.WriteHashResp {
panic("not implement yet!")

/*

+ 13
- 0
services/service.go View File

@@ -0,0 +1,13 @@
package services

import mydb "gitlink.org.cn/cloudream/db"

type Service struct {
db *mydb.DB
}

func NewService(db *mydb.DB) *Service {
return &Service{
db: db,
}
}

Loading…
Cancel
Save