From 072a21576a65b5b0b2597115280972376f076a91 Mon Sep 17 00:00:00 2001 From: Kotresh HR Date: Wed, 8 May 2019 10:56:31 +0530 Subject: geo-rep: Fix sync-method config Problem: When 'use_tarssh' is set to true, it exits with successful message but the default 'rsync' was used as sync-engine. The new config 'sync-method' is not allowed to set from cli. Analysis and Fix: The 'use_tarssh' config is deprecated with new config framework and 'sync-method' is the new config to choose sync-method i.e. tarssh or rsync. This patch fixes the 'sync-method' config. The allowed values are tarssh and rsync. Backport of: > Patch: https://review.gluster.org/22683 > Change-Id: I0edb0319cad0455b29e49f2f08a64ce324735e84 > BUG: 1707686 > Signed-off-by: Kotresh HR Change-Id: I0edb0319cad0455b29e49f2f08a64ce324735e84 fixes: bz#1709737 Signed-off-by: Kotresh HR --- geo-replication/gsyncd.conf.in | 9 +++++---- geo-replication/syncdaemon/resource.py | 7 ++++--- tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t | 2 +- tests/00-geo-rep/georep-basic-dr-tarssh.t | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/geo-replication/gsyncd.conf.in b/geo-replication/gsyncd.conf.in index 6160c7c709..c2e4f0dbdc 100644 --- a/geo-replication/gsyncd.conf.in +++ b/geo-replication/gsyncd.conf.in @@ -128,10 +128,11 @@ value= value=5 type=int -[use-tarssh] -value=false -type=bool -help=Use sync-mode as tarssh +[sync-method] +value=rsync +help=Sync method for data sync. Available methods are tar over ssh and rsync. Default is rsync. +validation=choice +allowed_values=tarssh,rsync [remote-gsyncd] value = diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index f54ccd9441..522279bb7e 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -1512,7 +1512,7 @@ class SSH(object): return po - def tarssh(self, files, slaveurl, log_err=False): + def tarssh(self, files, log_err=False): """invoke tar+ssh -z (compress) can be use if needed, but omitting it now as it results in weird error (tar+ssh errors out (errcode: 2) @@ -1520,10 +1520,11 @@ class SSH(object): if not files: raise GsyncdError("no files to sync") logging.debug("files: " + ", ".join(files)) - (host, rdir) = slaveurl.split(':') + (host, rdir) = self.slaveurl.split(':') + tar_cmd = ["tar"] + \ ["--sparse", "-cf", "-", "--files-from", "-"] - ssh_cmd = gconf.get("ssh-command-tar").split() + \ + ssh_cmd = gconf.get("ssh-command").split() + \ gconf.get("ssh-options-tar").split() + \ ["-p", str(gconf.get("ssh-port"))] + \ [host, "tar"] + \ diff --git a/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t b/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t index cb530adbe0..3757f7b776 100644 --- a/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t +++ b/tests/00-geo-rep/georep-basic-dr-tarssh-arbiter.t @@ -81,7 +81,7 @@ TEST $GEOREP_CLI $master $slave config use_meta_volume true TEST $CLI volume set $GMV0 changelog.rollover-time 3 #Config tarssh as sync-engine -TEST $GEOREP_CLI $master $slave config use_tarssh true +TEST $GEOREP_CLI $master $slave config sync-method tarssh #Wait for common secret pem file to be created EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_common_secret_file diff --git a/tests/00-geo-rep/georep-basic-dr-tarssh.t b/tests/00-geo-rep/georep-basic-dr-tarssh.t index 9e2f613575..0380ed68dc 100644 --- a/tests/00-geo-rep/georep-basic-dr-tarssh.t +++ b/tests/00-geo-rep/georep-basic-dr-tarssh.t @@ -81,7 +81,7 @@ TEST $GEOREP_CLI $master $slave config use_meta_volume true TEST $CLI volume set $GMV0 changelog.rollover-time 3 #Config tarssh as sync-engine -TEST $GEOREP_CLI $master $slave config use_tarssh true +TEST $GEOREP_CLI $master $slave config sync-method tarssh #Wait for common secret pem file to be created EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_common_secret_file -- cgit