|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package pubshards
-
- import (
- "fmt"
-
- "github.com/chzyer/readline"
- "github.com/spf13/cobra"
- cliapi "gitlink.org.cn/cloudream/jcs-pub/client/sdk/api/v1"
- jcstypes "gitlink.org.cn/cloudream/jcs-pub/common/types"
- "gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd"
- "gitlink.org.cn/cloudream/jcs-pub/jcsctl/cmd/userspace"
- )
-
- func init() {
- var opt createOption
- c := &cobra.Command{
- Use: "create",
- Short: "create a new pubshards",
- Args: cobra.NoArgs,
- RunE: func(c *cobra.Command, args []string) error {
- ctx := cmd.GetCmdCtx(c)
- return create(c, ctx, opt, args)
- },
- }
- PubShardsCmd.AddCommand(c)
- }
-
- type createOption struct {
- }
-
- func create(c *cobra.Command, ctx *cmd.CommandContext, opt createOption, args []string) error {
- rl, err := readline.New("> ")
- if err != nil {
- return err
- }
- defer rl.Close()
-
- var blder userspace.UserSpaceBuilder
-
- name := cmd.ReadString(rl, "请输入共享分片存储名称")
-
- stgTypes := []string{"Local", "OBS", "OSS", "COS", "EFile", "S3"}
- idx := cmd.SelectOne(rl, "请选择共享分片存储的存储服务类型", stgTypes)
- switch stgTypes[idx] {
- case "Local":
- blder.AskLocal(rl)
- case "OBS":
- blder.AskOBS(rl)
- case "OSS":
- blder.AskOSS(rl)
- case "COS":
- blder.AskCOS(rl)
- case "EFile":
- blder.AskEFile(rl)
- case "S3":
- blder.AskS3(rl)
- }
-
- blder.AskShardStore(rl, true)
-
- blder.AskWorkingDir(rl)
-
- hubID := cmd.ReadInt(rl, "请输入管理共享分片存储的工作组件ID")
-
- var pwd string
- for {
- pwd = string(cmd.ReadPassword(rl, "请输入共享分片存储的密码"))
- pwd2 := string(cmd.ReadPassword(rl, "请再次输入共享分片存储的密码"))
- if pwd == pwd2 {
- break
- }
- fmt.Println("两次输入的密码不一致,请重新输入")
- }
-
- resp, err := ctx.Client.PubShards().Create(cliapi.PubShardsCreate{
- Name: name,
- Storage: blder.Storage,
- Credential: blder.Credential,
- ShardStore: *blder.ShardStore,
- Features: blder.Features,
- WorkingDir: blder.WorkingDir,
- Password: pwd,
- MasterHub: jcstypes.HubID(hubID),
- })
- if err != nil {
- return err
- }
-
- fmt.Printf("创建共享分片存储成功, ID为: %v\n可将此ID和密码分发给其他人以加入共享分片存储\n", resp.PubShards.PubShardsID)
- if !cmd.ReadBool(rl, "是否要现在加入共享分片存储") {
- return nil
- }
-
- usName := cmd.ReadString(rl, "请输入新用户空间的名称")
- _, err = ctx.Client.PubShards().Join(cliapi.PubShardsJoin{
- Name: usName,
- PubShardsID: resp.PubShards.PubShardsID,
- Password: pwd,
- })
- if err != nil {
- return err
- }
-
- return nil
- }
|