cubefs

Форк
0
/
version.go 
154 строки · 4.0 Кб
1
package cmd
2

3
import (
4
	"github.com/cubefs/cubefs/proto"
5
	"github.com/cubefs/cubefs/sdk/master"
6
	"github.com/spf13/cobra"
7
)
8

9
const (
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"
16
)
17

18
func newVersionCmd(client *master.MasterClient) *cobra.Command {
19
	cmd := &cobra.Command{
20
		Use:     cmdVersionUse,
21
		Short:   cmdVersionShort,
22
		Args:    cobra.MinimumNArgs(0),
23
		Aliases: []string{"version"},
24
	}
25
	cmd.AddCommand(
26
		newVersionCreateCmd(client),
27
		newVersionDelCmd(client),
28
		newVersionListCmd(client),
29
		newVersionStrategyCmd(client),
30
	)
31
	return cmd
32
}
33

34
func newVersionCreateCmd(client *master.MasterClient) *cobra.Command {
35
	var optKeyword string
36
	cmd := &cobra.Command{
37
		Use:     CliFlagVersionCreate,
38
		Short:   cmdVersionCreateShort,
39
		Aliases: []string{"create"},
40
		Run: func(cmd *cobra.Command, args []string) {
41
			if len(args) == 0 {
42
				stdout("need volume name\n")
43
				return
44
			}
45
			var verList *proto.VolVersionInfoList
46
			volumeName := args[0]
47
			var err error
48
			defer func() {
49
				errout(err)
50
			}()
51
			if _, err = client.AdminAPI().CreateVersion(volumeName); err != nil {
52
				return
53
			}
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 {
56
				return
57
			}
58
			stdout("%v\n\n", volumeVersionTableHeader)
59
			for id, ver := range verList.VerList {
60
				if id == len(verList.VerList)-1 {
61
					break
62
				}
63
				stdout("%v\n", formatVerInfoTableRow(ver))
64
			}
65
		},
66
	}
67
	cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
68
	return cmd
69
}
70

71
func newVersionListCmd(client *master.MasterClient) *cobra.Command {
72
	var optKeyword string
73
	cmd := &cobra.Command{
74
		Use:     CliFlagVersionList,
75
		Short:   cmdVersionListShort,
76
		Aliases: []string{"create"},
77
		Run: func(cmd *cobra.Command, args []string) {
78
			if len(args) == 0 {
79
				stdout("need volume name\n")
80
				return
81
			}
82
			var (
83
				volumeName = args[0]
84
				verList    *proto.VolVersionInfoList
85
				err        error
86
			)
87
			defer func() {
88
				errout(err)
89
			}()
90
			if verList, err = client.AdminAPI().GetVerList(volumeName); err != nil {
91
				return
92
			}
93
			stdout("%v\n", volumeVersionTableHeader)
94
			for id, ver := range verList.VerList {
95
				if id == len(verList.VerList)-1 {
96
					break
97
				}
98
				stdout("%v\n", formatVerInfoTableRow(ver))
99
			}
100
		},
101
	}
102
	cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
103
	return cmd
104
}
105

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) {
113
			if len(args) <= 1 {
114
				stdout("USAGE:./cfs-cli version verCreate volName verSeq\n")
115
				return
116
			}
117

118
			var err error
119
			defer func() {
120
				errout(err)
121
			}()
122
			if err = client.AdminAPI().DeleteVersion(args[0], args[1]); err != nil {
123
				return
124
			}
125
		},
126
	}
127
	cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
128
	return cmd
129
}
130

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) {
138
			if len(args) <= 3 {
139
				stdout("USAGE:./cfs-cli version verSetStrategy volName periodic count enable isForce\n")
140
				return
141
			}
142

143
			var err error
144
			defer func() {
145
				errout(err)
146
			}()
147
			if err = client.AdminAPI().SetStrategy(args[0], args[1], args[2], args[3], args[4]); err != nil {
148
				return
149
			}
150
		},
151
	}
152
	cmd.Flags().StringVar(&optKeyword, "keyword", "", "Specify keyword of volume name to filter")
153
	return cmd
154
}
155

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.