fedora-ansible/scripts/isbuilding

51 lines
1.8 KiB
Python
Executable File

#!/usr/bin/python -tt
# Author: Toshio Kuratomi <toshio@fedoraproject.org>
# Copyright: December, 2015
# License: LGPLv3+
import sys
from ansible import plugins
from ansible.plugins.callback import CallbackBase
from ansible.plugins.callback import default
from ansible.cli.adhoc import AdHocCLI
class ResultAccumulator(CallbackBase):
def __init__(self, *args, **kwargs):
super(ResultAccumulator, self).__init__(*args, **kwargs)
self.host_status = {}
def v2_runner_on_unreachable(self, result):
self.host_status[result._host.get_name()] = 'unreachable'
def v2_runner_on_ok(self, result, *args, **kwargs):
if result._result.get('stdout', '').strip() == 'none':
self.host_status[result._host.get_name()] = 'not building'
else:
self.host_status[result._host.get_name()] = 'building'
def v2_runner_on_failed(self, result, *args, **kwargs):
self.host_status[result._host.get_name()] = 'failed'
if __name__ == '__main__':
pattern = 'builders'
if len(sys.argv) > 1:
pattern = ';'.join(sys.argv[1:])
args = [sys.argv[0], pattern, '-f', '30', '-T', '20', '-u', 'root']
args.extend(['-m', 'shell', '-a', 'ps -opid\\\\= --ppid $(pidof -s -x kojid) || echo -n none || ps -u mock -u mockbuilder -opid\\\\='])
cb = ResultAccumulator()
cli = AdHocCLI(args, callback=cb)
cli.parse()
cli.run()
for host in sorted(cb.host_status):
if cb.host_status[host] == 'unreachable':
print('%s down' % host)
if cb.host_status[host] == 'not building':
print('%s no' % host)
if cb.host_status[host] == 'building':
print('%s yes' % host)
if cb.host_status[host] == 'failed':
print('%s: command failed on host' % host)