mirror of https://github.com/Icinga/icinga2.git
parent
6832625bcc
commit
ba4286b549
|
@ -1,40 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
import random
|
|
||||||
|
|
||||||
import utils
|
|
||||||
|
|
||||||
|
|
||||||
USERNAME = 'Icinga 2 Admin'
|
|
||||||
|
|
||||||
|
|
||||||
def send_command(command):
|
|
||||||
return LIVESTATUS.query('COMMAND [{0}] {1}'.format(int(time.time()), command))
|
|
||||||
|
|
||||||
|
|
||||||
def test_host_comments(hostname):
|
|
||||||
print repr(send_command('ADD_HOST_COMMENT;'+hostname+';0;'+USERNAME+';test'))
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
def test_service_comments(hostname, servicename):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
failure = False
|
|
||||||
|
|
||||||
# Check whether host comments are properly processed
|
|
||||||
if not test_host_comments('localhost') or not test_host_comments('nsca-ng'):
|
|
||||||
failure = True
|
|
||||||
|
|
||||||
return 1 if failure else 0
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
with utils.LiveStatusSocket('/var/run/icinga2/cmd/livestatus') as LIVESTATUS:
|
|
||||||
sys.exit(main())
|
|
||||||
|
|
|
@ -82,10 +82,14 @@ def _parse_pgsql_result(resultset):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class LiveStatusError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class LiveStatusSocket(object):
|
class LiveStatusSocket(object):
|
||||||
options = [
|
options = [
|
||||||
'OutputFormat: json',
|
|
||||||
'KeepAlive: on',
|
'KeepAlive: on',
|
||||||
|
'OutputFormat: json',
|
||||||
'ResponseHeader: fixed16'
|
'ResponseHeader: fixed16'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -108,17 +112,34 @@ class LiveStatusSocket(object):
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
|
|
||||||
def query(self, command):
|
def query(self, command):
|
||||||
full_command = '\n'.join([command] + self.options)
|
self.send(command)
|
||||||
self.send(full_command + '\n')
|
statuscode, response = self.recv()
|
||||||
return self.recv()
|
|
||||||
|
if statuscode != 200:
|
||||||
|
raise LiveStatusError(statuscode, response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
def send(self, query):
|
def send(self, query):
|
||||||
print repr(query)
|
full_query = '\n'.join([query] + self.options)
|
||||||
self.sock.sendall(query.encode('utf-8'))
|
self.sock.sendall((full_query + '\n\n').encode('utf-8'))
|
||||||
|
|
||||||
def recv(self):
|
def recv(self):
|
||||||
|
response = b''
|
||||||
response_header = self.sock.recv(16)
|
response_header = self.sock.recv(16)
|
||||||
response_code = int(response_header[:3])
|
response_code = int(response_header[:3])
|
||||||
response_length = int(response_header[3:].strip())
|
response_length = int(response_header[3:].strip())
|
||||||
return json.loads(self.sock.recv(response_length).decode('utf-8'))
|
|
||||||
|
if response_length > 0:
|
||||||
|
while len(response) < response_length:
|
||||||
|
response += self.sock.recv(response_length - len(response))
|
||||||
|
|
||||||
|
response = response.decode('utf-8')
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = json.loads(response)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return response_code, response
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue