summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--geo-replication/syncdaemon/configinterface.py.in24
-rw-r--r--geo-replication/syncdaemon/gsyncd.py9
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