From 8bf74cdbb0626e51a63c3317ed2b7b9d60ae778a Mon Sep 17 00:00:00 2001 From: Giorgos Korfiatis <gkorf@grnet.gr> Date: Thu, 21 May 2015 15:07:28 +0300 Subject: [PATCH] message for live update --- agkyra/syncer/localfs_client.py | 6 ++++-- agkyra/syncer/messaging.py | 10 ++++++++++ agkyra/syncer/pithos_client.py | 6 ++++-- test.py | 2 ++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/agkyra/syncer/localfs_client.py b/agkyra/syncer/localfs_client.py index 0bf2dd1..ea28969 100644 --- a/agkyra/syncer/localfs_client.py +++ b/agkyra/syncer/localfs_client.py @@ -450,8 +450,10 @@ class LocalfsSourceHandle(object): live_info = local_path_changes( self.staged_path, self.source_state) if live_info is not None: - logger.warning("Actual info differs in %s for object: '%s'; " - "updating..." % (self.SIGNATURE, self.objname)) + msg = messaging.LiveInfoUpdateMessage( + archive=self.SIGNATURE, objname=self.objname, + info=live_info, logger=logger) + self.settings.messager.put(msg) new_state = self.source_state.set(info=live_info) self.update_state(new_state) self.source_state = new_state diff --git a/agkyra/syncer/messaging.py b/agkyra/syncer/messaging.py index 72bfe21..bf07b88 100644 --- a/agkyra/syncer/messaging.py +++ b/agkyra/syncer/messaging.py @@ -49,6 +49,16 @@ class UpdateMessage(Message): (self.archive, self.objname, self.serial)) +class LiveInfoUpdateMessage(Message): + def __init__(self, *args, **kwargs): + Message.__init__(self, *args, **kwargs) + self.archive = kwargs["archive"] + self.objname = kwargs["objname"] + self.info = kwargs["info"] + self.logger.warning("Actual info differs in %s for object: '%s'; " + "updating..." % (self.archive, self.objname)) + + class SyncMessage(Message): def __init__(self, *args, **kwargs): Message.__init__(self, *args, **kwargs) diff --git a/agkyra/syncer/pithos_client.py b/agkyra/syncer/pithos_client.py index 4764d50..f3b7c37 100644 --- a/agkyra/syncer/pithos_client.py +++ b/agkyra/syncer/pithos_client.py @@ -149,8 +149,10 @@ class PithosSourceHandle(object): def check_update_source_state(self, actual_info): if actual_info != self.source_state.info: - logger.warning("Actual info differs in %s for object: '%s'; " - "updating..." % (self.SIGNATURE, self.objname)) + msg = messaging.LiveInfoUpdateMessage( + archive=self.SIGNATURE, objname=self.objname, + info=actual_info, logger=logger) + self.settings.messager.put(msg) new_state = self.source_state.set(info=actual_info) self.update_state(new_state) self.source_state = new_state diff --git a/test.py b/test.py index ea9ab1d..62bc4ea 100644 --- a/test.py +++ b/test.py @@ -389,6 +389,7 @@ with open(fchanged_path, "w") as f: s.decide_file_sync(fchanged) assert_message(messaging.SyncMessage) +assert_message(messaging.LiveInfoUpdateMessage) assert_message(messaging.AckSyncMessage) state = db.get_state(s.SLAVE, fchanged) @@ -414,6 +415,7 @@ new_fupch_etag = r1['etag'] s.decide_file_sync(fupch) assert_message(messaging.SyncMessage) +assert_message(messaging.LiveInfoUpdateMessage) assert_message(messaging.AckSyncMessage) state = db.get_state(s.MASTER, fupch) new_fupch_info = state.info -- GitLab