Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions check_monit.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,14 @@ def get_service_output(service_type, element):

# Service Type Program
if service_type == 7:
return element.findall('program/output')[0].text
return_value = None
for output_item in element.findall('program/output'):
# type( output_item ) is <class 'xml.etree.ElementTree.Element'>
return_value = output_item.text if return_value is None else f"{return_value}; {output_item.text}"
if return_value is None:
return_value = 'no command output available'

return return_value

return 'Service (type={0}) not implemented'.format(service_type)

Expand All @@ -121,8 +128,8 @@ def get_service_states(services):
for service in services:
# Get the monitor state for the service (0: Not, 1: Yes, 2: Init, 4: Waiting)
monitor = int(service.find('monitor').text)
# if the monitor is yes or initialize, check its status
if monitor in (1, 2):
# ignore 'Monitor_not' (0)
if monitor != 0:
status = int(service.find('status').text)
if status == 0:
count_ok += 1
Expand Down
8 changes: 8 additions & 0 deletions test_check_monit.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,18 @@ def test_service_output(self):
actual = get_service_output(3, input_element)
self.assertEqual(actual, 'unittest')

input_element = ET.ElementTree(ET.fromstring("""<doc><program><output></output></program></doc>"""))
actual = get_service_output(7, input_element)
self.assertEqual(actual, 'no command output available')

input_element = ET.ElementTree(ET.fromstring("""<doc><program><output>foobar</output></program></doc>"""))
actual = get_service_output(7, input_element)
self.assertEqual(actual, 'foobar')

input_element = ET.ElementTree(ET.fromstring("""<doc><program><output>foot</output><output>bath</output></program></doc>"""))
actual = get_service_output(7, input_element)
self.assertEqual(actual, 'foot; bath')

class UtilTesting(unittest.TestCase):

@mock.patch('builtins.print')
Expand Down