增加下载Package到UserSpace的命令
This commit is contained in:
parent
e4ae3cd25b
commit
ba46e08e68
|
@ -186,9 +186,6 @@ func (svc *UserSpaceService) Test(req cliapi.UserSpaceTest) (*cliapi.UserSpaceTe
|
|||
}
|
||||
|
||||
func (svc *UserSpaceService) DownloadPackage(packageID clitypes.PackageID, userspaceID clitypes.UserSpaceID, rootPath string) error {
|
||||
coorCli := stgglb.CoordinatorRPCPool.Get()
|
||||
defer coorCli.Release()
|
||||
|
||||
destStg := svc.UserSpaceMeta.Get(userspaceID)
|
||||
if destStg == nil {
|
||||
return fmt.Errorf("userspace not found: %d", userspaceID)
|
||||
|
|
|
@ -169,7 +169,7 @@ func Test_Storage(t *testing.T) {
|
|||
})
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
_, err = cli.UserSpaceDownloadPackage(UserSpaceDownloadPackageReq{
|
||||
_, err = cli.UserSpace().DownloadPackage(UserSpaceDownloadPackageReq{
|
||||
PackageID: createResp.Package.PackageID,
|
||||
UserSpaceID: 1,
|
||||
})
|
||||
|
|
|
@ -8,6 +8,14 @@ import (
|
|||
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
|
||||
)
|
||||
|
||||
type UserSpaceService struct {
|
||||
*Client
|
||||
}
|
||||
|
||||
func (c *Client) UserSpace() *UserSpaceService {
|
||||
return &UserSpaceService{c}
|
||||
}
|
||||
|
||||
const UserSpaceDownloadPackagePath = "/userSpace/downloadPackage"
|
||||
|
||||
type UserSpaceDownloadPackageReq struct {
|
||||
|
@ -26,7 +34,7 @@ func (r *UserSpaceDownloadPackageResp) ParseResponse(resp *http.Response) error
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceDownloadPackage(req UserSpaceDownloadPackageReq) (*UserSpaceDownloadPackageResp, error) {
|
||||
func (c *UserSpaceService) DownloadPackage(req UserSpaceDownloadPackageReq) (*UserSpaceDownloadPackageResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceDownloadPackageResp{})
|
||||
}
|
||||
|
||||
|
@ -52,7 +60,7 @@ func (r *UserSpaceCreatePackageResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceCreatePackage(req UserSpaceCreatePackageReq) (*UserSpaceCreatePackageResp, error) {
|
||||
func (c *UserSpaceService) CreatePackage(req UserSpaceCreatePackageReq) (*UserSpaceCreatePackageResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceCreatePackageResp{})
|
||||
}
|
||||
|
||||
|
@ -74,11 +82,11 @@ func (r *UserSpaceGetResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceGet(req UserSpaceGet) (*UserSpaceGetResp, error) {
|
||||
func (c *UserSpaceService) Get(req UserSpaceGet) (*UserSpaceGetResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceGetResp{})
|
||||
}
|
||||
|
||||
const UserSpaceGetByNamePath = "/userspace/getByName"
|
||||
const UserSpaceGetByNamePath = "/userSpace/getByName"
|
||||
|
||||
type UserSpaceGetByName struct {
|
||||
Name string `form:"name" url:"name" binding:"required"`
|
||||
|
@ -89,18 +97,18 @@ func (r *UserSpaceGetByName) MakeParam() *sdks.RequestParam {
|
|||
}
|
||||
|
||||
type UserSpaceGetByNameResp struct {
|
||||
clitypes.UserSpace
|
||||
UserSpace clitypes.UserSpace `json:"userSpace"`
|
||||
}
|
||||
|
||||
func (r *UserSpaceGetByNameResp) ParseResponse(resp *http.Response) error {
|
||||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceGetByName(req UserSpaceGetByName) (*UserSpaceGetByNameResp, error) {
|
||||
func (c *UserSpaceService) GetByName(req UserSpaceGetByName) (*UserSpaceGetByNameResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceGetByNameResp{})
|
||||
}
|
||||
|
||||
const UserSpaceGetAllPath = "/userspace/getAll"
|
||||
const UserSpaceGetAllPath = "/userSpace/getAll"
|
||||
|
||||
type UserSpaceGetAll struct{}
|
||||
|
||||
|
@ -116,7 +124,7 @@ func (r *UserSpaceGetAllResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceGetAll() (*UserSpaceGetAllResp, error) {
|
||||
func (c *UserSpaceService) GetAll() (*UserSpaceGetAllResp, error) {
|
||||
req := UserSpaceGetAll{}
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceGetAllResp{})
|
||||
}
|
||||
|
@ -145,7 +153,7 @@ func (r *UserSpaceCreateResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceCreate(req UserSpaceCreate) (*UserSpaceCreateResp, error) {
|
||||
func (c *UserSpaceService) Create(req UserSpaceCreate) (*UserSpaceCreateResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceCreateResp{})
|
||||
}
|
||||
|
||||
|
@ -164,14 +172,14 @@ func (r *UserSpaceUpdate) MakeParam() *sdks.RequestParam {
|
|||
}
|
||||
|
||||
type UserSpaceUpdateResp struct {
|
||||
clitypes.UserSpace
|
||||
UserSpace clitypes.UserSpace `json:"userSpace"`
|
||||
}
|
||||
|
||||
func (r *UserSpaceUpdateResp) ParseResponse(resp *http.Response) error {
|
||||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceUpdate(req UserSpaceUpdate) (*UserSpaceUpdateResp, error) {
|
||||
func (c *UserSpaceService) Update(req UserSpaceUpdate) (*UserSpaceUpdateResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceUpdateResp{})
|
||||
}
|
||||
|
||||
|
@ -192,7 +200,7 @@ func (r *UserSpaceDeleteResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceDelete(req UserSpaceDelete) (*UserSpaceDeleteResp, error) {
|
||||
func (c *UserSpaceService) Delete(req UserSpaceDelete) (*UserSpaceDeleteResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceDeleteResp{})
|
||||
}
|
||||
|
||||
|
@ -217,6 +225,6 @@ func (r *UserSpaceTestResp) ParseResponse(resp *http.Response) error {
|
|||
return sdks.ParseCodeDataJSONResponse(resp, r)
|
||||
}
|
||||
|
||||
func (c *Client) UserSpaceTest(req UserSpaceTest) (*UserSpaceTestResp, error) {
|
||||
func (c *UserSpaceService) Test(req UserSpaceTest) (*UserSpaceTestResp, error) {
|
||||
return JSONAPI(&c.cfg, c.httpCli, &req, &UserSpaceTestResp{})
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ func create(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
return
|
||||
}
|
||||
|
||||
_, err = ctx.Client.UserSpaceCreate(userSpace.UserSpaceCreate)
|
||||
_, err = ctx.Client.UserSpace().Create(userSpace.UserSpaceCreate)
|
||||
if err != nil {
|
||||
fmt.Printf("\033[31m保存配置失败: %v\033[0m", err)
|
||||
return
|
||||
|
|
|
@ -60,7 +60,7 @@ func delete(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
return
|
||||
}
|
||||
|
||||
resp, err := ctx.Client.UserSpaceGet(cliapi.UserSpaceGet{
|
||||
resp, err := ctx.Client.UserSpace().Get(cliapi.UserSpaceGet{
|
||||
UserSpaceID: clitypes.UserSpaceID(id),
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -78,7 +78,7 @@ func delete(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
}
|
||||
name := strings.TrimSpace(nameInput)
|
||||
|
||||
resp, err := ctx.Client.UserSpaceGetByName(cliapi.UserSpaceGetByName{
|
||||
resp, err := ctx.Client.UserSpace().GetByName(cliapi.UserSpaceGetByName{
|
||||
Name: name,
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -100,7 +100,7 @@ func delete(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
return
|
||||
}
|
||||
|
||||
_, err = ctx.Client.UserSpaceDelete(cliapi.UserSpaceDelete{
|
||||
_, err = ctx.Client.UserSpace().Delete(cliapi.UserSpaceDelete{
|
||||
UserSpaceID: userSpace.UserSpaceID,
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
package userspace
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
|
||||
"gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var opt option
|
||||
c := &cobra.Command{
|
||||
Use: "getp <bucket_name>/<package_name> <space_name>:<root_path>",
|
||||
Short: "download package all files to user space",
|
||||
Args: cobra.ExactArgs(2),
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
ctx := cmd.GetCmdCtx(c)
|
||||
return getp(c, ctx, opt, args)
|
||||
},
|
||||
}
|
||||
// c.Flags().StringVar(&opt.Prefix, "prefix", "", "download objects with this prefix")
|
||||
// c.Flags().StringVar(&opt.NewPrefix, "new", "", "replace prefix specified by --prefix with this prefix")
|
||||
// c.Flags().BoolVar(&opt.Zip, "zip", false, "download as zip file")
|
||||
// c.Flags().StringVarP(&opt.Output, "output", "o", "", "output zip file name")
|
||||
UserSpaceCmd.AddCommand(c)
|
||||
}
|
||||
|
||||
type option struct {
|
||||
// Prefix string
|
||||
// NewPrefix string
|
||||
// Zip bool
|
||||
// Output string
|
||||
}
|
||||
|
||||
func getp(c *cobra.Command, ctx *cmd.CommandContext, opt option, args []string) error {
|
||||
comps := strings.Split(args[0], "/")
|
||||
if len(comps) != 2 {
|
||||
return fmt.Errorf("invalid package name: %s", args[0])
|
||||
}
|
||||
|
||||
bucketName, packageName := comps[0], comps[1]
|
||||
|
||||
comps = strings.Split(args[1], ":")
|
||||
if len(comps) != 2 {
|
||||
return fmt.Errorf("invalid space name and root path: %s", args[1])
|
||||
}
|
||||
|
||||
spaceName, rootPath := comps[0], comps[1]
|
||||
|
||||
getPkg, err := ctx.Client.Package().GetByFullName(cliapi.PackageGetByFullName{
|
||||
BucketName: bucketName,
|
||||
PackageName: packageName,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("get package %v: %w", args[0], err)
|
||||
}
|
||||
|
||||
getSpace, err := ctx.Client.UserSpace().GetByName(cliapi.UserSpaceGetByName{
|
||||
Name: spaceName,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("get user space %v: %w", spaceName, err)
|
||||
}
|
||||
|
||||
startTime := time.Now()
|
||||
|
||||
_, err = ctx.Client.UserSpace().DownloadPackage(cliapi.UserSpaceDownloadPackageReq{
|
||||
PackageID: getPkg.Package.PackageID,
|
||||
UserSpaceID: getSpace.UserSpace.UserSpaceID,
|
||||
RootPath: rootPath,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("download package %v to user space %v: %w", args[0], spaceName, err)
|
||||
}
|
||||
|
||||
dt := time.Since(startTime)
|
||||
|
||||
fmt.Printf("download package %v to user space %v success, time: %v\n", args[0], spaceName, dt)
|
||||
return nil
|
||||
}
|
|
@ -35,7 +35,7 @@ type lsOpt struct {
|
|||
func ls(c *cobra.Command, ctx *cmd.CommandContext, opt lsOpt, args []string) error {
|
||||
// 仅ls无参数
|
||||
if len(args) == 0 {
|
||||
resp, err := ctx.Client.UserSpaceGetAll()
|
||||
resp, err := ctx.Client.UserSpace().GetAll()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ func ls(c *cobra.Command, ctx *cmd.CommandContext, opt lsOpt, args []string) err
|
|||
return fmt.Errorf("ID必须是数字")
|
||||
}
|
||||
|
||||
result, err := ctx.Client.UserSpaceGet(cliapi.UserSpaceGet{
|
||||
result, err := ctx.Client.UserSpace().Get(cliapi.UserSpaceGet{
|
||||
UserSpaceID: clitypes.UserSpaceID(id),
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -67,7 +67,7 @@ func ls(c *cobra.Command, ctx *cmd.CommandContext, opt lsOpt, args []string) err
|
|||
userSpace = &result.UserSpace
|
||||
|
||||
} else {
|
||||
result, err := ctx.Client.UserSpaceGetByName(cliapi.UserSpaceGetByName{
|
||||
result, err := ctx.Client.UserSpace().GetByName(cliapi.UserSpaceGetByName{
|
||||
Name: searchKey,
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
@ -7,7 +7,6 @@ import (
|
|||
|
||||
"github.com/chzyer/readline"
|
||||
"github.com/spf13/cobra"
|
||||
"gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
|
||||
cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
|
||||
clitypes "gitlink.org.cn/cloudream/jcs-pub/client/types"
|
||||
cortypes "gitlink.org.cn/cloudream/jcs-pub/coordinator/types"
|
||||
|
@ -15,7 +14,7 @@ import (
|
|||
)
|
||||
|
||||
type UserSpaceUpdate struct {
|
||||
api.UserSpaceUpdate
|
||||
cliapi.UserSpaceUpdate
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
@ -50,7 +49,7 @@ func update(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
return
|
||||
}
|
||||
|
||||
resp, err := ctx.Client.UserSpaceGet(cliapi.UserSpaceGet{
|
||||
resp, err := ctx.Client.UserSpace().Get(cliapi.UserSpaceGet{
|
||||
UserSpaceID: clitypes.UserSpaceID(id),
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -87,7 +86,7 @@ func update(c *cobra.Command, ctx *cmd.CommandContext) {
|
|||
return
|
||||
}
|
||||
|
||||
_, err = ctx.Client.UserSpaceUpdate(userSpaceUpdate.UserSpaceUpdate)
|
||||
_, err = ctx.Client.UserSpace().Update(userSpaceUpdate.UserSpaceUpdate)
|
||||
if err != nil {
|
||||
fmt.Printf("\033[31m更新配置失败: %v\033[0m", err)
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue