From 9a94e0095a51981cc668ac0269667a307c45923c Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Wed, 11 Jan 2012 09:49:53 +0100 Subject: add network_monitor --- sublab_project/sublab_monitor/tasks.py | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 sublab_project/sublab_monitor/tasks.py (limited to 'sublab_project/sublab_monitor/tasks.py') diff --git a/sublab_project/sublab_monitor/tasks.py b/sublab_project/sublab_monitor/tasks.py new file mode 100644 index 0000000..33dcad6 --- /dev/null +++ b/sublab_project/sublab_monitor/tasks.py @@ -0,0 +1,46 @@ +"""Celery tasks. +""" +from datetime import timedelta +from celery.task import PeriodicTask +import subprocess + +import sublab_monitor + +class NetworkStatus(PeriodicTask): + """Periodic task for getting sublab network status + """ + hosts = { + 'taifun': '172.22.83.5', + 'trieste': '172.22.80.4', + 'nautilus': '172.22.80.7', + } + run_every = timedelta(minutes=4) + ignore_result = True + + def __init__(self, *args, **kwargs): + PeriodicTask.__init__(self, *args, **kwargs) + + + @staticmethod + def host_alive(host): + rc = subprocess.call(['ping', '-c', '2', '-W', '1', host]) + + if rc == 0: + return True + else: + return False + + def run(self, **kwargs): + """Ping all the hosts. + """ + self.logger = self.get_logger(**kwargs) + + results = {} + for host, target in self.hosts.items(): + results[host] = self.host_alive(target) + + storage = sublab_monitor.Storage('network_status') + for host, status in results.items(): + storage.set(host, status) + + return repr(results) -- cgit v1.2.1