From b70edc75a5f7f3411f8d4a4c99952ffbd197fa67 Mon Sep 17 00:00:00 2001 From: Antoine Catton <acatton@tiolive.com> Date: Fri, 27 Jan 2012 16:25:39 +0100 Subject: [PATCH] Mostly working version of watchdog. Need to be fully tested. --- slapos/wordpress/ia/watchdog/__init__.py | 3 +- slapos/wordpress/ia/watchdog/connection.py | 32 ++++++++-------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/slapos/wordpress/ia/watchdog/__init__.py b/slapos/wordpress/ia/watchdog/__init__.py index 0f64255..b7413cd 100644 --- a/slapos/wordpress/ia/watchdog/__init__.py +++ b/slapos/wordpress/ia/watchdog/__init__.py @@ -46,7 +46,8 @@ def main(): while True: time.sleep(args.frequency) server.get_master() - server.think(1) + # XXX: Hard coding 5 minutes + server.think(5) diff --git a/slapos/wordpress/ia/watchdog/connection.py b/slapos/wordpress/ia/watchdog/connection.py index 8e8014e..c0b71bf 100644 --- a/slapos/wordpress/ia/watchdog/connection.py +++ b/slapos/wordpress/ia/watchdog/connection.py @@ -39,10 +39,16 @@ from slapos.slap import slap def get_status(feed_content): feed = feedparser.parse(feed_content) - # Just for test purpose - # here should be the algorithm saying if we - # should rename or not the partition. - return False + + error_amount = 0 + for entry in feed.entries: + if 'FAIL' in entry.content: + error_amount += 1 + # XXX: Hard coding maximum error amount + # is 3. + if error_amount >= 3: + return False + return True def get_timestamp(minutes_ago): result = datetime.datetime.now() @@ -120,10 +126,6 @@ class Server(Connector): for url in json.loads(connector.GET('getPeers').read())]) except: pass - # For debug purpose only. - # Need to be remove in the future in order to - # swallow everything - raise @staticmethod def _convert_uuid(id_): @@ -141,10 +143,6 @@ class Server(Connector): type_ = value.GET('info/type').read() except: pass - # For debug purpose only. - # Need to be remove in the future in order to - # swallow everything - raise else: to_set_none = deque() # Look for peer having same type (type should be unique) @@ -182,10 +180,6 @@ class Server(Connector): failed_list.append(peer) except: pass - # For debug purpose only. - # Need to be remove in the future in order to - # swallow everything - raise return self.get_peer_id(id_).geturl() @@ -236,10 +230,6 @@ class Server(Connector): pass except: pass - # For debug purpose only. - # Need to be remove in the future in order to - # swallow everything - raise def get_type(self, type_): for peer_type, peer in self._peers.itervalues(): @@ -257,6 +247,8 @@ class Server(Connector): def down(self, connector): new_name = 'down_%s' % uuid.uuid4().hex self.rename(connector, new_name) + # XXX: EXTREMELY Dirty Workaround to avoid bug #20120127-6487F8 + time.sleep(10) self.slaprequest(partition_reference=new_name, software_type='down') -- GitLab