diff options
Diffstat (limited to 'geo-replication')
-rw-r--r-- | geo-replication/syncdaemon/configinterface.py.in | 24 | ||||
-rw-r--r-- | geo-replication/syncdaemon/gsyncd.py | 9 |
2 files changed, 23 insertions, 10 deletions
diff --git a/geo-replication/syncdaemon/configinterface.py.in b/geo-replication/syncdaemon/configinterface.py.in index 5d67b8a471a..e1cf007a2b8 100644 --- a/geo-replication/syncdaemon/configinterface.py.in +++ b/geo-replication/syncdaemon/configinterface.py.in @@ -30,6 +30,7 @@ config_version = 2.0 re_type = type(re.compile('')) +TMPL_CONFIG_FILE = "@GLUSTERD_WORKDIR@/geo-replication/gsyncd_template.conf" # (SECTION, OPTION, OLD VALUE, NEW VALUE) CONFIGS = ( @@ -79,10 +80,17 @@ CONFIGS = ( ) -def upgrade_config_file(path): +def upgrade_config_file(path, confdata): config_change = False config = ConfigParser.RawConfigParser() - config.read(path) + # If confdata.rx present then glusterd is adding config values, + # it will create config file if not exists. config.read is fine in + # this case since any other error will be raised during write. + if getattr(confdata, "rx", False): + config.read(path) + else: + with open(path) as fp: + config.readfp(fp) for sec, opt, oldval, newval in CONFIGS: try: @@ -190,7 +198,7 @@ class GConffile(object): s2[k] = v self.config._sections[n] = s2 - def __init__(self, path, peers, *dd): + def __init__(self, path, peers, confdata, *dd): """ - .path: location of config file - .config: underlying ConfigParser instance @@ -202,7 +210,12 @@ class GConffile(object): self.path = path self.auxdicts = dd self.config = ConfigParser.RawConfigParser() - self.config.read(path) + if getattr(confdata, "rx", False): + self.config.read(path) + else: + with open(path) as fp: + self.config.readfp(fp) + self.dev, self.ino, self.mtime = -1, -1, -1 self._normconfig() @@ -217,7 +230,8 @@ class GConffile(object): sres = None self.config = ConfigParser.RawConfigParser() - self.config.read(self.path) + with open(self.path) as fp: + self.config.readfp(fp) self._normconfig() def get_realtime(self, opt): diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py index f41756a0b93..c2699a183ae 100644 --- a/geo-replication/syncdaemon/gsyncd.py +++ b/geo-replication/syncdaemon/gsyncd.py @@ -29,7 +29,7 @@ from gconf import gconf from syncdutils import FreeObject, norm, grabpidfile, finalize from syncdutils import log_raise_exception, privileged, boolify from syncdutils import GsyncdError, select, set_term_handler -from configinterface import GConffile, upgrade_config_file +from configinterface import GConffile, upgrade_config_file, TMPL_CONFIG_FILE import resource from monitor import monitor import xml.etree.ElementTree as XET @@ -536,12 +536,11 @@ def main_i(): if name == 'remote': namedict['remotehost'] = x.remotehost if not 'config_file' in rconf: - rconf['config_file'] = os.path.join( - os.path.dirname(sys.argv[0]), "conf/gsyncd_template.conf") + rconf['config_file'] = TMPL_CONFIG_FILE - upgrade_config_file(rconf['config_file']) + upgrade_config_file(rconf['config_file'], confdata) gcnf = GConffile( - rconf['config_file'], canon_peers, + rconf['config_file'], canon_peers, confdata, defaults.__dict__, opts.__dict__, namedict) checkpoint_change = False |