diff options
Diffstat (limited to 'geo-replication/syncdaemon/resource.py')
-rw-r--r-- | geo-replication/syncdaemon/resource.py | 69 |
1 files changed, 17 insertions, 52 deletions
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index 185722f5df0..79dc9e79e9d 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -35,6 +35,8 @@ from syncdutils import GsyncdError, select, privileged, boolify, funcode from syncdutils import umask, entry2pb, gauxpfx, errno_wrap, lstat from syncdutils import NoPurgeTimeAvailable, PartialHistoryAvailable from syncdutils import ChangelogException +from syncdutils import CHANGELOG_AGENT_CLIENT_VERSION + UrlRX = re.compile('\A(\w+)://([^ *?[]*)\Z') HostRX = re.compile('[a-z\d](?:[a-z\d.-]*[a-z\d])?', re.I) @@ -127,19 +129,7 @@ class _MetaXattr(object): return getattr(self, meth) -class _MetaChangelog(object): - - def __getattr__(self, meth): - from libgfchangelog import Changes as LChanges - xmeth = [m for m in dir(LChanges) if m[0] != '_'] - if not meth in xmeth: - return - for m in xmeth: - setattr(self, m, getattr(LChanges, m)) - return getattr(self, meth) - Xattr = _MetaXattr() -Changes = _MetaChangelog() class Popen(subprocess.Popen): @@ -669,39 +659,6 @@ class Server(object): errno_wrap(os.chown, [go, uid, gid], [ENOENT], [ESTALE, EINVAL]) @classmethod - def changelog_register(cls, cl_brick, cl_dir, cl_log, cl_level, retries=0): - Changes.cl_register(cl_brick, cl_dir, cl_log, cl_level, retries) - - @classmethod - def changelog_scan(cls): - Changes.cl_scan() - - @classmethod - def changelog_getchanges(cls): - return Changes.cl_getchanges() - - @classmethod - def changelog_done(cls, clfile): - Changes.cl_done(clfile) - - @classmethod - def history_changelog(cls, changelog_path, start, end, num_parallel): - return Changes.cl_history_changelog(changelog_path, start, end, - num_parallel) - - @classmethod - def history_changelog_scan(cls): - return Changes.cl_history_scan() - - @classmethod - def history_changelog_getchanges(cls): - return Changes.cl_history_getchanges() - - @classmethod - def history_changelog_done(cls, clfile): - Changes.cl_history_done(clfile) - - @classmethod @_pathguard def setattr(cls, path, adct): """set file attributes @@ -932,9 +889,6 @@ class AbstractUrl(object): return self.get_url() - ### Concrete resource classes ### - - class FILE(AbstractUrl, SlaveLocal, SlaveRemote): """scheme class for file:// urls @@ -1311,16 +1265,27 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote): # register the crawlers and start crawling # g1 ==> Xsync, g2 ==> config.change_detector(changelog by default) # g3 ==> changelog History + (inf, ouf, ra, wa) = gconf.rpc_fd.split(',') + os.close(int(ra)) + os.close(int(wa)) + changelog_agent = RepceClient(int(inf), int(ouf)) + rv = changelog_agent.version() + if int(rv) != CHANGELOG_AGENT_CLIENT_VERSION: + raise GsyncdError( + "RePCe major version mismatch(changelog agent): " + "local %s, remote %s" % + (CHANGELOG_AGENT_CLIENT_VERSION, rv)) + g1.register() try: (workdir, logfile) = g2.setup_working_dir() # register with the changelog library # 9 == log level (DEBUG) # 5 == connection retries - brickserver.changelog_register(gconf.local_path, - workdir, logfile, 9, 5) - g2.register() - g3.register() + changelog_agent.register(gconf.local_path, + workdir, logfile, 9, 5) + g2.register(changelog_agent) + g3.register(changelog_agent) except ChangelogException as e: logging.debug("Changelog register failed: %s - %s" % (e.errno, e.strerror)) |