e3c68b
From d148248aa3f0dfe7356a13d6fd029f0c6b3746cf Mon Sep 17 00:00:00 2001
e3c68b
From: Kotresh HR <khiremat@redhat.com>
e3c68b
Date: Wed, 8 May 2019 10:56:31 +0530
e3c68b
Subject: [PATCH 162/169] geo-rep: Fix sync-method config
e3c68b
e3c68b
Problem:
e3c68b
When 'use_tarssh' is set to true, it exits with successful
e3c68b
message but the default 'rsync' was used as sync-engine.
e3c68b
The new config 'sync-method' is not allowed to set from cli.
e3c68b
e3c68b
Analysis and Fix:
e3c68b
The 'use_tarssh' config is deprecated with new
e3c68b
config framework and 'sync-method' is the new
e3c68b
config to choose sync-method i.e. tarssh or rsync.
e3c68b
This patch fixes the 'sync-method' config. The allowed
e3c68b
values are tarssh and rsync.
e3c68b
e3c68b
Backport of:
e3c68b
 > Patch: https://review.gluster.org/22683
e3c68b
 > Change-Id: I0edb0319cad0455b29e49f2f08a64ce324735e84
e3c68b
 > BUG: 1707686
e3c68b
 > Signed-off-by: Kotresh HR <khiremat@redhat.com>
e3c68b
e3c68b
Change-Id: I0edb0319cad0455b29e49f2f08a64ce324735e84
e3c68b
fixes: bz#1708067
e3c68b
Signed-off-by: Kotresh HR <khiremat@redhat.com>
e3c68b
Reviewed-on: https://code.engineering.redhat.com/gerrit/172394
e3c68b
Tested-by: RHGS Build Bot <nigelb@redhat.com>
e3c68b
Reviewed-by: Sunny Kumar <sunkumar@redhat.com>
e3c68b
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
e3c68b
---
e3c68b
 geo-replication/gsyncd.conf.in                    | 9 +++++----
e3c68b
 geo-replication/syncdaemon/resource.py            | 7 ++++---
e3c68b
 tests/00-geo-rep/georep-basic-dr-rsync-arbiter.t  | 4 ++--
e3c68b
 tests/00-geo-rep/georep-basic-dr-rsync.t          | 4 ++--
e3c68b
 tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t | 6 +++---
e3c68b
 tests/00-geo-rep/georep-basic-dr-tarssh.t         | 6 +++---
e3c68b
 tests/geo-rep.rc                                  | 3 ++-
e3c68b
 7 files changed, 21 insertions(+), 18 deletions(-)
e3c68b
e3c68b
diff --git a/geo-replication/gsyncd.conf.in b/geo-replication/gsyncd.conf.in
e3c68b
index 6160c7c..c2e4f0d 100644
e3c68b
--- a/geo-replication/gsyncd.conf.in
e3c68b
+++ b/geo-replication/gsyncd.conf.in
e3c68b
@@ -128,10 +128,11 @@ value=
e3c68b
 value=5
e3c68b
 type=int
e3c68b
 
e3c68b
-[use-tarssh]
e3c68b
-value=false
e3c68b
-type=bool
e3c68b
-help=Use sync-mode as tarssh
e3c68b
+[sync-method]
e3c68b
+value=rsync
e3c68b
+help=Sync method for data sync. Available methods are tar over ssh and rsync. Default is rsync.
e3c68b
+validation=choice
e3c68b
+allowed_values=tarssh,rsync
e3c68b
 
e3c68b
 [remote-gsyncd]
e3c68b
 value =
e3c68b
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py
e3c68b
index f54ccd9..522279b 100644
e3c68b
--- a/geo-replication/syncdaemon/resource.py
e3c68b
+++ b/geo-replication/syncdaemon/resource.py
e3c68b
@@ -1512,7 +1512,7 @@ class SSH(object):
e3c68b
 
e3c68b
         return po
e3c68b
 
e3c68b
-    def tarssh(self, files, slaveurl, log_err=False):
e3c68b
+    def tarssh(self, files, log_err=False):
e3c68b
         """invoke tar+ssh
e3c68b
         -z (compress) can be use if needed, but omitting it now
e3c68b
         as it results in weird error (tar+ssh errors out (errcode: 2)
e3c68b
@@ -1520,10 +1520,11 @@ class SSH(object):
e3c68b
         if not files:
e3c68b
             raise GsyncdError("no files to sync")
e3c68b
         logging.debug("files: " + ", ".join(files))
e3c68b
-        (host, rdir) = slaveurl.split(':')
e3c68b
+        (host, rdir) = self.slaveurl.split(':')
e3c68b
+
e3c68b
         tar_cmd = ["tar"] + \
e3c68b
             ["--sparse", "-cf", "-", "--files-from", "-"]
e3c68b
-        ssh_cmd = gconf.get("ssh-command-tar").split() + \
e3c68b
+        ssh_cmd = gconf.get("ssh-command").split() + \
e3c68b
             gconf.get("ssh-options-tar").split() + \
e3c68b
             ["-p", str(gconf.get("ssh-port"))] + \
e3c68b
             [host, "tar"] + \
e3c68b
diff --git a/tests/00-geo-rep/georep-basic-dr-rsync-arbiter.t b/tests/00-geo-rep/georep-basic-dr-rsync-arbiter.t
e3c68b
index 1a55ed2..8b90347 100644
e3c68b
--- a/tests/00-geo-rep/georep-basic-dr-rsync-arbiter.t
e3c68b
+++ b/tests/00-geo-rep/georep-basic-dr-rsync-arbiter.t
e3c68b
@@ -159,7 +159,7 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${slave_mnt}/changelog_chown_f1
e3c68b
 
e3c68b
 #logrotate
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/logrotate
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
 
e3c68b
 #CREATE+RENAME
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 create_rename_ok ${slave_mnt}/create_rename_test_file
e3c68b
@@ -209,7 +209,7 @@ TEST create_rename_with_existing_destination ${master_mnt}
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rename_with_existing_destination ${slave_mnt}
e3c68b
 
e3c68b
 #Verify arequal for whole volume
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
 
e3c68b
 #Stop Geo-rep
e3c68b
 TEST $GEOREP_CLI $master $slave stop
e3c68b
diff --git a/tests/00-geo-rep/georep-basic-dr-rsync.t b/tests/00-geo-rep/georep-basic-dr-rsync.t
e3c68b
index d0c0fc9..428e9ed 100644
e3c68b
--- a/tests/00-geo-rep/georep-basic-dr-rsync.t
e3c68b
+++ b/tests/00-geo-rep/georep-basic-dr-rsync.t
e3c68b
@@ -160,7 +160,7 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${slave_mnt}/changelog_chown_f1
e3c68b
 
e3c68b
 #logrotate
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/logrotate
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
 
e3c68b
 #CREATE+RENAME
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 create_rename_ok ${slave_mnt}/create_rename_test_file
e3c68b
@@ -210,7 +210,7 @@ TEST create_rename_with_existing_destination ${master_mnt}
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rename_with_existing_destination ${slave_mnt}
e3c68b
 
e3c68b
 #Verify arequal for whole volume
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
 
e3c68b
 #Stop Geo-rep
e3c68b
 TEST $GEOREP_CLI $master $slave stop
e3c68b
diff --git a/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t b/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t
e3c68b
index cb530ad..8fed929 100644
e3c68b
--- a/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t
e3c68b
+++ b/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t
e3c68b
@@ -81,7 +81,7 @@ TEST $GEOREP_CLI $master $slave config use_meta_volume true
e3c68b
 TEST $CLI volume set $GMV0 changelog.rollover-time 3
e3c68b
 
e3c68b
 #Config tarssh as sync-engine
e3c68b
-TEST $GEOREP_CLI $master $slave config use_tarssh true
e3c68b
+TEST $GEOREP_CLI $master $slave config sync-method tarssh
e3c68b
 
e3c68b
 #Wait for common secret pem file to be created
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT  0 check_common_secret_file
e3c68b
@@ -162,7 +162,7 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${slave_mnt}/changelog_chown_f1
e3c68b
 
e3c68b
 #logrotate
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/logrotate
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
 
e3c68b
 #CREATE+RENAME
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 create_rename_ok ${slave_mnt}/create_rename_test_file
e3c68b
@@ -208,7 +208,7 @@ TEST create_rename_with_existing_destination ${master_mnt}
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rename_with_existing_destination ${slave_mnt}
e3c68b
 
e3c68b
 #Verify arequal for whole volume
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
 
e3c68b
 #Stop Geo-rep
e3c68b
 TEST $GEOREP_CLI $master $slave stop
e3c68b
diff --git a/tests/00-geo-rep/georep-basic-dr-tarssh.t b/tests/00-geo-rep/georep-basic-dr-tarssh.t
e3c68b
index 9e2f613..feb2de7 100644
e3c68b
--- a/tests/00-geo-rep/georep-basic-dr-tarssh.t
e3c68b
+++ b/tests/00-geo-rep/georep-basic-dr-tarssh.t
e3c68b
@@ -81,7 +81,7 @@ TEST $GEOREP_CLI $master $slave config use_meta_volume true
e3c68b
 TEST $CLI volume set $GMV0 changelog.rollover-time 3
e3c68b
 
e3c68b
 #Config tarssh as sync-engine
e3c68b
-TEST $GEOREP_CLI $master $slave config use_tarssh true
e3c68b
+TEST $GEOREP_CLI $master $slave config sync-method tarssh
e3c68b
 
e3c68b
 #Wait for common secret pem file to be created
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT  0 check_common_secret_file
e3c68b
@@ -162,7 +162,7 @@ EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${slave_mnt}/changelog_chown_f1
e3c68b
 
e3c68b
 #logrotate
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${slave_mnt}/logrotate
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt}/logrotate ${slave_mnt}/logrotate
e3c68b
 
e3c68b
 #CREATE+RENAME
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 create_rename_ok ${slave_mnt}/create_rename_test_file
e3c68b
@@ -208,7 +208,7 @@ TEST create_rename_with_existing_destination ${master_mnt}
e3c68b
 EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rename_with_existing_destination ${slave_mnt}
e3c68b
 
e3c68b
 #Verify arequal for whole volume
e3c68b
-EXPECT_WITHIN $GEO_REP_TIMEOUT 0 arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
+EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${master_mnt} ${slave_mnt}
e3c68b
 
e3c68b
 #Stop Geo-rep
e3c68b
 TEST $GEOREP_CLI $master $slave stop
e3c68b
diff --git a/tests/geo-rep.rc b/tests/geo-rep.rc
e3c68b
index e357ba8..2035b9f 100644
e3c68b
--- a/tests/geo-rep.rc
e3c68b
+++ b/tests/geo-rep.rc
e3c68b
@@ -168,7 +168,8 @@ function arequal_checksum()
e3c68b
 {
e3c68b
     master=$1
e3c68b
     slave=$2
e3c68b
-    diff <(arequal-checksum -p $master) <(arequal-checksum -p $slave) | wc -l
e3c68b
+    ret=$(diff <(arequal-checksum -p $master) <(arequal-checksum -p $slave) | wc -l)
e3c68b
+    echo x$ret
e3c68b
 }
e3c68b
 
e3c68b
 function symlink_ok()
e3c68b
-- 
e3c68b
1.8.3.1
e3c68b