diff --git a/mk_livestatus/livestatus.py b/mk_livestatus/livestatus.py index 25ccdf9..1dae80c 100644 --- a/mk_livestatus/livestatus.py +++ b/mk_livestatus/livestatus.py @@ -5,7 +5,7 @@ import socket import json - +import time __all__ = ['Query', 'Socket'] @@ -16,6 +16,7 @@ def __init__(self, conn, resource): self._resource = resource self._columns = [] self._filters = [] + self._command = [] def call(self): try: @@ -27,13 +28,17 @@ def call(self): __call__ = call def __str__(self): - request = 'GET %s' % (self._resource) - if self._columns and any(self._columns): - request += '\nColumns: %s' % (' '.join(self._columns)) - if self._filters: - for filter_line in self._filters: - request += '\nFilter: %s' % (filter_line) - request += '\nOutputFormat: json\nColumnHeaders: on\n' + if self._resource.upper() != 'SEND': + request = 'GET %s' % (self._resource) + if self._columns and any(self._columns): + request += '\nColumns: %s' % (' '.join(self._columns)) + if self._filters: + for filter_line in self._filters: + request += '\nFilter: %s' % (filter_line) + request += '\nOutputFormat: json\nColumnHeaders: on\n' + else: + timestamp = str(int(time.time())) + request = "COMMAND [{0}] {1}\n".format(timestamp, ' '.join(self._command).encode('utf-8')) return request def columns(self, *args): @@ -44,6 +49,9 @@ def filter(self, filter_str): self._filters.append(filter_str) return self + def command(self, command_str): + self._command.append(command_str) + return self class Socket(object): def __init__(self, peer):