diff options
Diffstat (limited to 'geo-replication/syncdaemon')
| -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  | 
