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

Commit 201e553

Browse files
committed
Merge branch 'master' of https://github.com/gluster/glusterd2 into rebalance
2 parents ef84e98 + 2b38ce4 commit 201e553

File tree

8 files changed

+132
-109
lines changed

8 files changed

+132
-109
lines changed

constants/constants.go

Lines changed: 0 additions & 11 deletions
This file was deleted.

doc/quick-start-user-guide.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,26 @@ These packages require dependencies present in [EPEL](https://fedoraproject.org/
3131
Install packages that provide GlusterFS server (brick process) and client (fuse, libgfapi):
3232

3333
```sh
34-
# curl -o /etc/yum.repos.d/glusterfs-nighthly-master.repo http://artifacts.ci.centos.org/gluster/nightly/master.repo
34+
# curl -o /etc/yum.repos.d/glusterfs-nightly-master.repo http://artifacts.ci.centos.org/gluster/nightly/master.repo
3535
# yum install glusterfs-server glusterfs-fuse glusterfs-api
3636
```
3737

3838
### Download glusterd2
3939

40-
Glusterd2 is a single binary without any external dependencies. Like all Go programs, dependencies are statically linked. You can download the [latest release](https://github.com/gluster/glusterd2/releases) from Github.
40+
As we do not have releases often, our nightly RPMs are generally more stable
41+
as they contain the latest fixes. If you are on centos 7, you can download the
42+
latest glusterd2 nightly RPM using the following method:
4143

4244
```sh
43-
$ wget https://github.com/gluster/glusterd2/releases/download/v4.0dev-7/glusterd2-v4.0dev-7-linux-amd64.tar.xz
44-
$ tar -xf glusterd2-v4.0dev-7-linux-amd64.tar.xz
45+
# curl -o /etc/yum.repos.d/glusterd2-nightly-master.repo http://artifacts.ci.centos.org/gluster/gd2-nightly/gd2-master.repo
46+
# yum install glusterd2
4547
```
4648

49+
Alternatlively, if you are using a non-RPM based distro, you can download
50+
binaries of the latest release. Like all Go programs, glusterd2 is a single
51+
binary (statically linked) without external dependencies. You can download the
52+
[latest release](https://github.com/gluster/glusterd2/releases) from Github.
53+
4754
### Running glusterd2
4855

4956
**Create a working directory:** This is where glusterd2 will store all data which includes logs, pid files, etcd information etc. For this example, we will be using a temporary path. If a working directory is not specified, it defaults to current directory.

glustercli/cmd/georep.go

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -274,27 +274,27 @@ func (a *georepAction) String() string {
274274
}
275275

276276
func handleGeorepAction(args []string, action georepAction) {
277-
masterdata, remotedata, err := getVolIDs(args)
277+
masterVolID, remoteVolID, err := getVolIDs(args)
278278
if err != nil {
279279
failure(fmt.Sprintf("Geo-replication %s failed.\n", action.String()), err, 1)
280280
}
281281
switch action {
282282
case georepStart:
283-
_, err = client.GeorepStart(masterdata.id, remotedata.id, flagGeorepCmdForce)
283+
_, err = client.GeorepStart(masterVolID, remoteVolID, flagGeorepCmdForce)
284284
case georepStop:
285-
_, err = client.GeorepStop(masterdata.id, remotedata.id, flagGeorepCmdForce)
285+
_, err = client.GeorepStop(masterVolID, remoteVolID, flagGeorepCmdForce)
286286
case georepPause:
287-
_, err = client.GeorepPause(masterdata.id, remotedata.id, flagGeorepCmdForce)
287+
_, err = client.GeorepPause(masterVolID, remoteVolID, flagGeorepCmdForce)
288288
case georepResume:
289-
_, err = client.GeorepResume(masterdata.id, remotedata.id, flagGeorepCmdForce)
289+
_, err = client.GeorepResume(masterVolID, remoteVolID, flagGeorepCmdForce)
290290
case georepDelete:
291-
err = client.GeorepDelete(masterdata.id, remotedata.id, flagGeorepCmdForce)
291+
err = client.GeorepDelete(masterVolID, remoteVolID, flagGeorepCmdForce)
292292
}
293293

294294
if err != nil {
295295
if verbose {
296296
log.WithFields(log.Fields{
297-
"volume": masterdata.volname,
297+
"volume": args[0],
298298
"error": err.Error(),
299299
}).Error("geo-replication", action.String(), "failed")
300300
}
@@ -363,33 +363,49 @@ func getRemoteClient(host string) (string, *restclient.Client, error) {
363363
return clienturl, restclient.New(clienturl, "", "", "", true), nil
364364
}
365365

366-
func getVolIDs(pargs []string) (*volumeDetails, *volumeDetails, error) {
367-
var masterdata *volumeDetails
368-
var remotedata *volumeDetails
369-
var err error
366+
func getVolIDs(pargs []string) (string, string, error) {
367+
var (
368+
masterVolID string
369+
remoteVolID string
370+
)
371+
372+
allSessions, err := client.GeorepStatus("", "")
373+
if err != nil {
374+
failure(errGeorepStatusCommandFailed, err, 1)
375+
}
370376

371377
if len(pargs) >= 1 {
372-
masterdata, err = getVolumeDetails(pargs[0], nil)
373-
if err != nil {
374-
return nil, nil, err
378+
for _, s := range allSessions {
379+
if s.MasterVol == pargs[0] {
380+
masterVolID = s.MasterID.String()
381+
}
382+
}
383+
if masterVolID == "" {
384+
return "", "", errors.New("failed to get master volume info")
375385
}
376386
}
377387

378388
if len(pargs) >= 2 {
379389
_, remotehost, remotevol, err := parseRemoteData(pargs[1])
380390
if err != nil {
381-
return nil, nil, err
391+
return "", "", err
382392
}
383-
_, rclient, err := getRemoteClient(remotehost)
384-
if err != nil {
385-
return nil, nil, err
393+
394+
for _, s := range allSessions {
395+
if s.RemoteVol == remotevol {
396+
397+
for _, host := range s.RemoteHosts {
398+
if host.Hostname == remotehost {
399+
remoteVolID = s.RemoteID.String()
400+
}
401+
}
402+
}
386403
}
387-
remotedata, err = getVolumeDetails(remotevol, rclient)
388-
if err != nil {
389-
return nil, nil, err
404+
if remoteVolID == "" {
405+
return "", "", errors.New("failed to get remote volume info")
390406
}
391407
}
392-
return masterdata, remotedata, nil
408+
return masterVolID, remoteVolID, nil
393409
}
394410

395411
var georepStatusCmd = &cobra.Command{
@@ -398,23 +414,23 @@ var georepStatusCmd = &cobra.Command{
398414
Args: cobra.RangeArgs(0, 2),
399415
Run: func(cmd *cobra.Command, args []string) {
400416
var err error
401-
masterdata, remotedata, err := getVolIDs(args)
417+
masterVolID, remoteVolID, err := getVolIDs(args)
402418
if err != nil {
403419
failure(errGeorepStatusCommandFailed, err, 1)
404420
}
405421

406422
var sessions []georepapi.GeorepSession
407-
// If mastervolid or remotevolid is empty then get status of all and then filter
408-
if masterdata == nil || remotedata == nil {
423+
// If masterVolID or remoteVolID is empty then get status of all and then filter
424+
if masterVolID == "" || remoteVolID == "" {
409425
allSessions, err := client.GeorepStatus("", "")
410426
if err != nil {
411427
failure(errGeorepStatusCommandFailed, err, 1)
412428
}
413429
for _, s := range allSessions {
414-
if masterdata != nil && s.MasterID.String() != masterdata.id {
430+
if masterVolID != "" && s.MasterID.String() != masterVolID {
415431
continue
416432
}
417-
if remotedata != nil && s.RemoteID.String() != remotedata.id {
433+
if remoteVolID != "" && s.RemoteID.String() != remoteVolID {
418434
continue
419435
}
420436
sessionDetail, err := client.GeorepStatus(s.MasterID.String(), s.RemoteID.String())
@@ -424,7 +440,7 @@ var georepStatusCmd = &cobra.Command{
424440
sessions = append(sessions, sessionDetail[0])
425441
}
426442
} else {
427-
sessions, err = client.GeorepStatus(masterdata.id, remotedata.id)
443+
sessions, err = client.GeorepStatus(masterVolID, remoteVolID)
428444
if err != nil {
429445
failure(errGeorepStatusCommandFailed, err, 1)
430446
}
@@ -469,12 +485,12 @@ var georepGetCmd = &cobra.Command{
469485
Run: func(cmd *cobra.Command, args []string) {
470486
var err error
471487

472-
masterdata, remotedata, err := getVolIDs(args)
488+
masterVolID, remoteVolID, err := getVolIDs(args)
473489
if err != nil {
474490
failure("Error getting Volume IDs", err, 1)
475491
}
476492

477-
opts, err := client.GeorepGet(masterdata.id, remotedata.id)
493+
opts, err := client.GeorepGet(masterVolID, remoteVolID)
478494
if err != nil {
479495
failure("Error getting Options", err, 1)
480496
}
@@ -540,15 +556,15 @@ var georepSetCmd = &cobra.Command{
540556
Args: cobra.ExactArgs(4),
541557
Run: func(cmd *cobra.Command, args []string) {
542558
var err error
543-
masterdata, remotedata, err := getVolIDs(args)
559+
masterVolID, remoteVolID, err := getVolIDs(args)
544560
if err != nil {
545561
failure("Error getting Volume IDs", err, 1)
546562
}
547563

548564
opts := make(map[string]string)
549565
opts[args[2]] = args[3]
550566

551-
err = client.GeorepSet(masterdata.id, remotedata.id, opts)
567+
err = client.GeorepSet(masterVolID, remoteVolID, opts)
552568
if err != nil {
553569
failure("Geo-replication session config set failed", err, 1)
554570
}
@@ -562,12 +578,12 @@ var georepResetCmd = &cobra.Command{
562578
Args: cobra.MinimumNArgs(3),
563579
Run: func(cmd *cobra.Command, args []string) {
564580
var err error
565-
masterdata, remotedata, err := getVolIDs(args)
581+
masterVolID, remoteVolID, err := getVolIDs(args)
566582
if err != nil {
567583
failure(err.Error(), err, 1)
568584
}
569585

570-
err = client.GeorepReset(masterdata.id, remotedata.id, args[2:])
586+
err = client.GeorepReset(masterVolID, remoteVolID, args[2:])
571587
if err != nil {
572588
failure("Geo-replication session config reset failed", err, 1)
573589
}

0 commit comments

Comments
 (0)