OK = 0 WARN = 1 CRIT = 2 UNKNOWN = 3 def get_data(info): import json all = "" for line in info: all = all + ' '.join(line) return json.loads(all) def inventory_rhctl_status(info): try: inventory = [] inventory.append((None,None)) return inventory except Exception, e: return [] def check_rhctl_status(item, params, info): try: data = get_data(info) if data['Mood'] == 'awakening': return (WARN, 'rhctl is awakening') if data['Mood'] == 'happy': if data['ActiveServer'] == 'master': return (OK, 'rhctl is happy, active server is %s' % data['ActiveServer']) else: return (WARN, 'rhctl is happy, active server is %s(!)' % data['ActiveServer']) if data['Mood'] == 'nervous': return (WARN, 'rhctl is nervous(!), active server is %s' % data['ActiveServer']) if data['Mood'] == 'sad': return (CRIT, 'rhctl is sad(!!), last active server was %s' % data['ActiveServer']) return (UNKNOWN, 'rhctl has unknown(!!) mood: %s' % data['Mood']) except Exception, e: return (UNKNOWN, "rhctl check failed: %s" % e.message) def inventory_rhctl_server(info): try: inventory = [] data = get_data(info) for server in data['Server']: inventory.append((str(server),None)) return inventory except Exception, e: return [] def check_rhctl_server(item, params, info): try: data = get_data(info) if item not in data['Server']: return (UNKNOWN, 'server %s is missing(!!) in status report' % item) if data['Server'][item]['Health'] == "alive": return (OK, 'server %s is alive' % item) if data['Server'][item]['Health'] == "dead": return (CRIT, 'server %s is dead(!!)' % item) return (UNKNOWN, 'server %s health is unknown(!!): %s' % (item, data['Server'][item]['Health'])) except Exception, e: return (UNKNOWN, "rhctl check failed: %s" % e.message) check_info["rhctl.mood"] = { 'check_function': check_rhctl_status, 'inventory_function': inventory_rhctl_status, 'service_description': 'Mood of rhctl', } check_info["rhctl.server"] = { 'check_function': check_rhctl_server, 'inventory_function': inventory_rhctl_server, 'service_description': 'rhctl state of server %s', }