41 lines
1 KiB
Python
Executable file
41 lines
1 KiB
Python
Executable file
#!/usr/bin/python -tt
|
|
|
|
import ansible
|
|
import ansible.runner
|
|
import sys
|
|
|
|
|
|
|
|
|
|
def isbuilding(res, host):
|
|
if res['contacted'][host]['stdout'].strip() == 'none':
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
|
|
pattern = 'builders'
|
|
if len(sys.argv) > 1:
|
|
pattern=';'.join(sys.argv[1:])
|
|
|
|
conn = ansible.runner.Runner(pattern=pattern, timeout=20, forks=30, remote_user='root')
|
|
conn.module_name='shell'
|
|
# this checks koji building or anything running as mock or mockbuilder
|
|
# first part check if kojid has any child processes
|
|
# second part is our catch for failure
|
|
# third part is to see if anything is running as mock or mockbuilder
|
|
conn.module_args="ps -opid= --ppid $(pidof -s -x kojid) || echo -n none || ps -u mock -u mockbuilder -opid="
|
|
res = conn.run()
|
|
|
|
for host in sorted(res['dark'].keys() + res['contacted'].keys()):
|
|
print host,
|
|
if host in res['dark']:
|
|
print ' down'
|
|
else:
|
|
if isbuilding(res, host):
|
|
print ' yes'
|
|
else:
|
|
print ' no'
|
|
|
|
|
|
|