From 20d6532342ae0ef089d7e785d80ab4613d107563 Mon Sep 17 00:00:00 2001 From: Giorgos Korfiatis <gkorf@grnet.gr> Date: Fri, 16 Oct 2015 12:37:38 +0300 Subject: [PATCH] handle token renewal and other pithos errors --- agkyra/protocol.py | 10 ++++++++++ agkyra/syncer/messaging.py | 14 ++++++++++++++ agkyra/syncer/pithos_client.py | 6 +++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/agkyra/protocol.py b/agkyra/protocol.py index 6654546..393959a 100644 --- a/agkyra/protocol.py +++ b/agkyra/protocol.py @@ -455,6 +455,16 @@ class WebSocketProtocol(WebSocket): 'STOP BACKEND, %s'% getattr(msg, 'objname', '')) self.set_status(code=STATUS['CONTAINER ERROR']) self.syncer.stop_all_daemons() + elif isinstance(msg, messaging.PithosAuthTokenError): + LOGGER.debug( + 'STOP BACKEND, %s'% getattr(msg, 'objname', '')) + self.set_status(code=STATUS['TOKEN ERROR']) + self.syncer.stop_all_daemons() + elif isinstance(msg, messaging.PithosGenericError): + LOGGER.debug( + 'STOP BACKEND, %s'% getattr(msg, 'objname', '')) + self.set_status(code=STATUS['CRITICAL ERROR']) + self.syncer.stop_all_daemons() LOGGER.debug('Backend message: %s %s' % (msg.name, type(msg))) # Limit the amount of messages consumed each time max_consumption -= 1 diff --git a/agkyra/syncer/messaging.py b/agkyra/syncer/messaging.py index 3349423..67df4c7 100644 --- a/agkyra/syncer/messaging.py +++ b/agkyra/syncer/messaging.py @@ -191,3 +191,17 @@ class PithosSyncEnabled(Message): def __init__(self, *args, **kwargs): Message.__init__(self, *args, **kwargs) self.logger.info("Pithos sync is enabled") + + +class PithosGenericError(Message): + def __init__(self, *args, **kwargs): + Message.__init__(self, *args, **kwargs) + self.exc = kwargs["exc"] + self.logger.error(self.exc) + + +class PithosAuthTokenError(Message): + def __init__(self, *args, **kwargs): + Message.__init__(self, *args, **kwargs) + self.exc = kwargs["exc"] + self.logger.error(self.exc) diff --git a/agkyra/syncer/pithos_client.py b/agkyra/syncer/pithos_client.py index 42f37f9..8a20eb5 100644 --- a/agkyra/syncer/pithos_client.py +++ b/agkyra/syncer/pithos_client.py @@ -287,8 +287,12 @@ class PithosFileClient(FileClient): self.settings.set_pithos_enabled(False) msg = messaging.PithosSyncDisabled(logger=logger) self.settings.messager.put(msg) + elif e.status == 401: + msg = messaging.PithosAuthTokenError(logger=logger, exc=e) + self.settings.messager.put(msg) else: - logger.error(e) + msg = messaging.PithosGenericError(logger=logger, exc=e) + self.settings.messager.put(msg) return {} self.objects = objects upstream_all = {} -- GitLab