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