4
"github.com/cubefs/cubefs/proto"
5
"github.com/cubefs/cubefs/sdk/master"
6
"github.com/spf13/cobra"
10
cmdVersionUse = "version [COMMAND]"
11
cmdVersionShort = "Manage cluster volumes versions"
12
cmdVersionCreateShort = "create volume version"
13
cmdVersionDelShort = "del volume version"
14
cmdVersionListShort = "list volume version"
15
cmdVersionSetStrategyShort = "set volume version strategy"
18
func newVersionCmd(client *master.MasterClient) *cobra.Command {
19
cmd := &cobra.Command{
21
Short: cmdVersionShort,
22
Args: cobra.MinimumNArgs(0),
23
Aliases: []string{"version"},
26
newVersionCreateCmd(client),
27
newVersionDelCmd(client),
28
newVersionListCmd(client),
29
newVersionStrategyCmd(client),
34
func newVersionCreateCmd(client *master.MasterClient) *cobra.Command {
36
cmd := &cobra.Command{
37
Use: CliFlagVersionCreate,
38
Short: cmdVersionCreateShort,
39
Aliases: []string{"create"},
40
Run: func(cmd *cobra.Command, args []string) {
42
stdout("need volume name\n")
45
var verList *proto.VolVersionInfoList
51
if _, err = client.AdminAPI().CreateVersion(volumeName); err != nil {
54
stdout("create command be received by master and it's a asynchronous command,now try get the latest list\n")
55
if verList, err = client.AdminAPI().GetVerList(volumeName); err != nil {
58
stdout("%v\n\n", volumeVersionTableHeader)
59
for id, ver := range verList.VerList {
60
if id == len(verList.VerList)-1 {
63
stdout("%v\n", formatVerInfoTableRow(ver))
67
cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
71
func newVersionListCmd(client *master.MasterClient) *cobra.Command {
73
cmd := &cobra.Command{
74
Use: CliFlagVersionList,
75
Short: cmdVersionListShort,
76
Aliases: []string{"create"},
77
Run: func(cmd *cobra.Command, args []string) {
79
stdout("need volume name\n")
84
verList *proto.VolVersionInfoList
90
if verList, err = client.AdminAPI().GetVerList(volumeName); err != nil {
93
stdout("%v\n", volumeVersionTableHeader)
94
for id, ver := range verList.VerList {
95
if id == len(verList.VerList)-1 {
98
stdout("%v\n", formatVerInfoTableRow(ver))
102
cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
106
func newVersionDelCmd(client *master.MasterClient) *cobra.Command {
107
var optKeyword string
108
cmd := &cobra.Command{
109
Use: CliFlagVersionDel,
110
Short: cmdVersionDelShort,
111
Aliases: []string{"create"},
112
Run: func(cmd *cobra.Command, args []string) {
114
stdout("USAGE:./cfs-cli version verCreate volName verSeq\n")
122
if err = client.AdminAPI().DeleteVersion(args[0], args[1]); err != nil {
127
cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
131
func newVersionStrategyCmd(client *master.MasterClient) *cobra.Command {
132
var optKeyword string
133
cmd := &cobra.Command{
134
Use: CliFlagVersionSetStrategy,
135
Short: cmdVersionSetStrategyShort,
136
Aliases: []string{"create"},
137
Run: func(cmd *cobra.Command, args []string) {
139
stdout("USAGE:./cfs-cli version verSetStrategy volName periodic count enable isForce\n")
147
if err = client.AdminAPI().SetStrategy(args[0], args[1], args[2], args[3], args[4]); err != nil {
152
cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")