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 ++++--- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'geo-replication') diff --git a/geo-replication/gsyncd.conf.in b/geo-replication/gsyncd.conf.in index 6160c7c7091..c2e4f0dbdc1 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 f54ccd9441e..522279bb7e1 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"] + \ -- cgit