|
@@ -6,6 +6,9 @@ from django.utils.safestring import mark_safe
|
|
from django.conf import settings
|
|
from django.conf import settings
|
|
from django.contrib.admin import SimpleListFilter
|
|
from django.contrib.admin import SimpleListFilter
|
|
|
|
|
|
|
|
+import socket, json
|
|
|
|
+from collections import namedtuple
|
|
|
|
+
|
|
|
|
|
|
class ActiveFilter(SimpleListFilter):
|
|
class ActiveFilter(SimpleListFilter):
|
|
title = 'actif'
|
|
title = 'actif'
|
|
@@ -85,3 +88,27 @@ def send_notification(subject, message, recipients, **kwargs):
|
|
settings.SERVER_EMAIL, recipients, **kwargs,
|
|
settings.SERVER_EMAIL, recipients, **kwargs,
|
|
)
|
|
)
|
|
mail.send()
|
|
mail.send()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def from_livestatus(get, query=[], columns=[]):
|
|
|
|
+ query = ['GET %s' % get] + query
|
|
|
|
+ if columns:
|
|
|
|
+ query += ["Columns: " + ' '.join(columns)]
|
|
|
|
+ query += ['OutputFormat: json']
|
|
|
|
+ query = ''.join(map(lambda s: s + '\n', query))
|
|
|
|
+ if columns:
|
|
|
|
+ Line = namedtuple(get.capitalize(), columns)
|
|
|
|
+ else:
|
|
|
|
+ Line = None
|
|
|
|
+ lines = []
|
|
|
|
+ with socket.create_connection(("nucnagios.tetaneutral.net", "8622")) as sock:
|
|
|
|
+ sock.send(query.encode('utf-8'))
|
|
|
|
+ sock.shutdown(socket.SHUT_WR)
|
|
|
|
+ infile = sock.makefile(encoding='utf-8')
|
|
|
|
+ data = json.load(infile)
|
|
|
|
+ for entry in data:
|
|
|
|
+ if not Line:
|
|
|
|
+ Line = namedtuple(get.capitalize(), entry)
|
|
|
|
+ continue
|
|
|
|
+ lines.append(Line(*entry))
|
|
|
|
+ return lines
|