diff --git a/roles/openqa/dispatcher/files/openqa-arm-delete b/roles/openqa/dispatcher/files/openqa-arm-delete new file mode 100755 index 0000000000..4de6735a9b --- /dev/null +++ b/roles/openqa/dispatcher/files/openqa-arm-delete @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2016 Red Hat +# +# This script is free software; you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Author(s): Adam Williamson + +"""Simple script to wipe ARM vmlinuz/initrd if no tests are running. +Works around https://github.com/os-autoinst/openQA/pull/673 +""" + +from openqa_client.client import OpenQA_Client +from openqa_client.const import JOB_PENDING_STATES + +def main(): + """Main function.""" + client = OpenQA_Client() + params = { + 'arch': 'arm', + 'state': ','.join(JOB_PENDING_STATES), + } + pending = client.openqa_request('GET', 'jobs', params=params)['jobs'] + if pending: + # Not safe to wipe while jobs are running or scheduled. + return + + for _file in ('/var/lib/openqa/share/factory/other/initrd.img', + '/var/lib/openqa/share/factory/other/vmlinuz'): + if os.path.isfile(_file): + os.remove(_file) + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + sys.stderr.write("Interrupted, exiting...\n") + sys.exit(1) diff --git a/roles/openqa/dispatcher/tasks/main.yml b/roles/openqa/dispatcher/tasks/main.yml index 55efa9319a..bb894cef02 100644 --- a/roles/openqa/dispatcher/tasks/main.yml +++ b/roles/openqa/dispatcher/tasks/main.yml @@ -124,3 +124,6 @@ - restart fedmsg-hub tags: - config + +- name: Wipe ARM kernel/initramfs hourly (workaround https://github.com/os-autoinst/openQA/pull/673 ) + copy: src=openqa-arm-delete dest=/etc/cron.hourly owner=root group=root mode=0755