Skip to content
This repository was archived by the owner on Mar 26, 2020. It is now read-only.

Commit acbb488

Browse files
committed
Merge branch 'master' of https://github.com/gluster/glusterd2 into rebalance
2 parents a6c3f10 + d31eef4 commit acbb488

84 files changed

Lines changed: 823 additions & 2081 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gopkg.lock

Lines changed: 40 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,7 @@
8989
[[constraint]]
9090
name = "github.com/asaskevich/govalidator"
9191
version = "v8"
92+
93+
[[constraint]]
94+
name = "go.opencensus.io"
95+
version = "0.11.0"

e2e/config/1.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ peeraddress = "127.0.0.1:24008"
77
clientaddress = "127.0.0.1:24007"
88
etcdcurls = "http://127.0.0.1:2479"
99
etcdpurls = "http://127.0.0.1:2480"
10-
#restauth should be set to false to disable REST authentication in glusterd2
11-
#restauth = false
10+
restauth = true

e2e/config/2.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ peeraddress = "127.0.0.1:23008"
77
clientaddress = "127.0.0.1:23007"
88
etcdcurls = "http://127.0.0.1:2379"
99
etcdpurls = "http://127.0.0.1:2380"
10-
#restauth should be set to false to disable REST authentication in glusterd2
11-
restauth = true
10+
restauth = true

e2e/config/3.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ peeraddress = "127.0.0.1:22008"
77
clientaddress = "127.0.0.1:22007"
88
etcdcurls = "http://127.0.0.1:2279"
99
etcdpurls = "http://127.0.0.1:2280"
10-
#restauth should be set to false to disable REST authentication in glusterd2
11-
restauth = true
10+
restauth = true

e2e/config/4.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ peeraddress = "127.0.0.1:21008"
77
clientaddress = "127.0.0.1:21007"
88
etcdcurls = "http://127.0.0.1:2179"
99
etcdpurls = "http://127.0.0.1:2180"
10-
#restauth should be set to false to disable REST authentication in glusterd2
1110
restauth = true

e2e/smartvol_ops_test.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"syscall"
77
"testing"
88

9-
smartvolapi "github.com/gluster/glusterd2/plugins/smartvol/api"
9+
"github.com/gluster/glusterd2/pkg/api"
1010

1111
"github.com/stretchr/testify/require"
1212
)
@@ -32,12 +32,12 @@ func testSmartVolumeDistribute(t *testing.T) {
3232
r := require.New(t)
3333
smartvolname := formatVolName(t.Name())
3434
// create Distribute 3 Volume
35-
createReq := smartvolapi.VolCreateReq{
35+
createReq := api.VolCreateReq{
3636
Name: smartvolname,
3737
Size: 60,
3838
DistributeCount: 3,
3939
}
40-
volinfo, err := client.SmartVolumeCreate(createReq)
40+
volinfo, err := client.VolumeCreate(createReq)
4141
r.Nil(err)
4242

4343
r.Len(volinfo.Subvols, 3)
@@ -57,12 +57,12 @@ func testSmartVolumeReplicate2(t *testing.T) {
5757
r := require.New(t)
5858
smartvolname := formatVolName(t.Name())
5959
// create Replica 2 Volume
60-
createReq := smartvolapi.VolCreateReq{
60+
createReq := api.VolCreateReq{
6161
Name: smartvolname,
6262
Size: 20,
6363
ReplicaCount: 2,
6464
}
65-
volinfo, err := client.SmartVolumeCreate(createReq)
65+
volinfo, err := client.VolumeCreate(createReq)
6666
r.Nil(err)
6767

6868
r.Len(volinfo.Subvols, 1)
@@ -80,12 +80,12 @@ func testSmartVolumeReplicate3(t *testing.T) {
8080

8181
smartvolname := formatVolName(t.Name())
8282
// create Replica 3 Volume
83-
createReq := smartvolapi.VolCreateReq{
83+
createReq := api.VolCreateReq{
8484
Name: smartvolname,
8585
Size: 20,
8686
ReplicaCount: 3,
8787
}
88-
volinfo, err := client.SmartVolumeCreate(createReq)
88+
volinfo, err := client.VolumeCreate(createReq)
8989
r.Nil(err)
9090

9191
r.Len(volinfo.Subvols, 1)
@@ -103,13 +103,13 @@ func testSmartVolumeArbiter(t *testing.T) {
103103

104104
smartvolname := formatVolName(t.Name())
105105
// create Replica 3 Arbiter Volume
106-
createReq := smartvolapi.VolCreateReq{
106+
createReq := api.VolCreateReq{
107107
Name: smartvolname,
108108
Size: 20,
109109
ReplicaCount: 3,
110110
ArbiterCount: 1,
111111
}
112-
volinfo, err := client.SmartVolumeCreate(createReq)
112+
volinfo, err := client.VolumeCreate(createReq)
113113
r.Nil(err)
114114

115115
r.Len(volinfo.Subvols, 1)
@@ -132,12 +132,12 @@ func testSmartVolumeDisperse(t *testing.T) {
132132
smartvolname := formatVolName(t.Name())
133133

134134
// create Disperse Volume
135-
createReq := smartvolapi.VolCreateReq{
135+
createReq := api.VolCreateReq{
136136
Name: smartvolname,
137137
Size: 40,
138138
DisperseCount: 3,
139139
}
140-
volinfo, err := client.SmartVolumeCreate(createReq)
140+
volinfo, err := client.VolumeCreate(createReq)
141141
r.Nil(err)
142142

143143
r.Len(volinfo.Subvols, 1)
@@ -157,14 +157,14 @@ func testSmartVolumeDistributeReplicate(t *testing.T) {
157157
smartvolname := formatVolName(t.Name())
158158

159159
// create Distribute Replicate(2x3) Volume
160-
createReq := smartvolapi.VolCreateReq{
160+
createReq := api.VolCreateReq{
161161
Name: smartvolname,
162162
Size: 40,
163163
DistributeCount: 2,
164164
ReplicaCount: 3,
165165
SubvolZonesOverlap: true,
166166
}
167-
volinfo, err := client.SmartVolumeCreate(createReq)
167+
volinfo, err := client.VolumeCreate(createReq)
168168
r.Nil(err)
169169

170170
r.Len(volinfo.Subvols, 2)
@@ -188,14 +188,14 @@ func testSmartVolumeDistributeDisperse(t *testing.T) {
188188
smartvolname := formatVolName(t.Name())
189189

190190
// create Distribute Disperse(2x3) Volume
191-
createReq := smartvolapi.VolCreateReq{
191+
createReq := api.VolCreateReq{
192192
Name: smartvolname,
193193
Size: 80,
194194
DistributeCount: 2,
195195
DisperseCount: 3,
196196
SubvolZonesOverlap: true,
197197
}
198-
volinfo, err := client.SmartVolumeCreate(createReq)
198+
volinfo, err := client.VolumeCreate(createReq)
199199
r.Nil(err)
200200

201201
r.Len(volinfo.Subvols, 2)
@@ -216,10 +216,10 @@ func testSmartVolumeDistributeDisperse(t *testing.T) {
216216
func testSmartVolumeWithoutName(t *testing.T) {
217217
r := require.New(t)
218218

219-
createReq := smartvolapi.VolCreateReq{
219+
createReq := api.VolCreateReq{
220220
Size: 20,
221221
}
222-
volinfo, err := client.SmartVolumeCreate(createReq)
222+
volinfo, err := client.VolumeCreate(createReq)
223223
r.Nil(err)
224224

225225
r.Nil(client.VolumeDelete(volinfo.Name))

e2e/snapshot_ops_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func TestSnapshot(t *testing.T) {
8282

8383
/*
8484
TODO:
85-
test snapshot on a volume that is expanded or shrinked
85+
test snapshot on a volume that is expanded or shrunk
8686
*/
8787

8888
}

glustercli/cmd/common.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"io"
66
"os"
77
"strings"
8+
"time"
89

910
"github.com/gluster/glusterd2/pkg/restclient"
1011
)
@@ -20,6 +21,7 @@ var (
2021

2122
func initRESTClient(hostname, user, secret, cacert string, insecure bool) {
2223
client = restclient.New(hostname, user, secret, cacert, insecure)
24+
client.SetTimeout(time.Duration(flagTimeout) * time.Second)
2325
}
2426

2527
func isConnectionRefusedErr(err error) bool {

glustercli/cmd/root.go

Lines changed: 55 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@ import (
1111
"github.com/spf13/cobra"
1212
)
1313

14+
var (
15+
// variables set by LDFLAGS during build time
16+
defaultAuthPath = ""
17+
)
18+
19+
var (
20+
// global variables set during runtime
21+
secret string
22+
)
23+
24+
const (
25+
defaultLogLevel = "INFO"
26+
defaultTimeout = 30 // in seconds
27+
)
28+
1429
// RootCmd represents main command
1530
var RootCmd = &cobra.Command{
1631
Use: "glustercli",
@@ -21,53 +36,64 @@ var RootCmd = &cobra.Command{
2136
fmt.Println("Error initializing log file ", err)
2237
}
2338

24-
if flagAuthFile == "" && flagSecret == "" {
25-
data, err := ioutil.ReadFile(defaultAuthPath)
26-
if err != nil && !os.IsNotExist(err) {
27-
if verbose {
28-
log.WithError(err).Error("failed to read secret")
29-
}
39+
// Secret is taken in following order of precedence (highest to lowest):
40+
// --secret
41+
// --secret-file
42+
// GLUSTERD2_AUTH_SECRET (environment variable)
43+
// --secret-file (default path)
44+
45+
// NOTE: For simplicity, we don't distinguish between an empty
46+
// value and an unset value.
47+
48+
// --secret
49+
if flagSecret != "" {
50+
secret = flagSecret
51+
}
52+
53+
// --secret-file
54+
if flagSecretFile != "" && secret == "" {
55+
data, err := ioutil.ReadFile(flagSecretFile)
56+
if err != nil {
57+
failure(fmt.Sprintf("failed to read secret file %s", flagSecretFile),
58+
err, 1)
3059
}
3160
secret = string(data)
3261
}
3362

34-
if flagAuthFile != "" {
35-
data, err := ioutil.ReadFile(flagAuthFile)
36-
if err != nil {
63+
// GLUSTERD2_AUTH_SECRET
64+
if secret == "" {
65+
secret = os.Getenv("GLUSTERD2_AUTH_SECRET")
66+
}
67+
68+
// --secret-file (default path)
69+
if flagSecretFile == "" && secret == "" {
70+
data, err := ioutil.ReadFile(defaultAuthPath)
71+
if err != nil && !os.IsNotExist(err) {
3772
if verbose {
38-
log.WithError(err).Error("failed to read secret")
73+
log.WithError(err).Error(
74+
fmt.Sprintf("failed to read default secret file %s", defaultAuthPath))
3975
}
40-
failure("failed to read secret", err, 1)
4176
}
4277
secret = string(data)
4378
}
4479

45-
if flagSecret != "" {
46-
secret = flagSecret
47-
}
48-
4980
initRESTClient(flagEndpoints[0], flagUser, secret, flagCacert, flagInsecure)
5081
},
5182
}
5283

5384
var (
85+
// set by command line flags
5486
flagXMLOutput bool
5587
flagJSONOutput bool
56-
flagEndpoints []string
57-
flagCacert string
5888
flagInsecure bool
59-
flagLogLevel string
6089
verbose bool
90+
flagCacert string
91+
flagLogLevel string
6192
flagUser string
6293
flagSecret string
63-
flagAuthFile string
64-
secret string
65-
//defaultAuthPath is set by LDFLAGS
66-
defaultAuthPath = ""
67-
)
68-
69-
const (
70-
defaultLogLevel = "INFO"
94+
flagSecretFile string
95+
flagEndpoints []string
96+
flagTimeout uint
7197
)
7298

7399
func init() {
@@ -76,11 +102,13 @@ func init() {
76102
RootCmd.PersistentFlags().BoolVarP(&flagJSONOutput, "json", "", false, "JSON Output")
77103
RootCmd.PersistentFlags().StringSliceVar(&flagEndpoints, "endpoints", []string{"http://127.0.0.1:24007"}, "glusterd2 endpoints")
78104
RootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output")
105+
RootCmd.PersistentFlags().UintVar(&flagTimeout, "timeout", defaultTimeout,
106+
"overall client timeout (in seconds) which includes time taken to read the response body")
79107

80108
//user and secret for token authentication
81109
RootCmd.PersistentFlags().StringVar(&flagUser, "user", "glustercli", "Username for authentication")
82110
RootCmd.PersistentFlags().StringVar(&flagSecret, "secret", "", "Password for authentication")
83-
RootCmd.PersistentFlags().StringVar(&flagAuthFile, "authfile", "", "Auth file path, which contains secret for authentication")
111+
RootCmd.PersistentFlags().StringVar(&flagSecretFile, "secret-file", "", "Path to file which contains the secret for authentication")
84112

85113
// Log options
86114
RootCmd.PersistentFlags().StringVarP(&flagLogLevel, logging.LevelFlag, "", defaultLogLevel, logging.LevelHelp)

0 commit comments

Comments
 (0)