From 86adc42d5c02692737c56d16bf2aedb8278cdc98 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Wed, 5 Sep 2018 17:19:39 +1000 Subject: [PATCH] Add ansible runtime script This is designed to run on bridge.o.o and give us an overview of the last few ansible cron runs so we can see if there are issues. Change-Id: I1b23cac74272af891d0b29963dc943bd54128664 --- tools/ansible-runtime.py | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tools/ansible-runtime.py diff --git a/tools/ansible-runtime.py b/tools/ansible-runtime.py new file mode 100644 index 0000000000..7b1bccdd6e --- /dev/null +++ b/tools/ansible-runtime.py @@ -0,0 +1,48 @@ +#!/usr/bin/python3 + +# Copyright 2018 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# This script parses the logfiles on bridge.o.o to give an overview of +# how long the last "run_all.sh" iterations took and give a clue to +# what might have changed inbetween runs. + +from datetime import datetime +import os + +# TODO: reverse walk rotated logs for longer history +with open('/var/log/ansible/run_all_cron.log') as f: + begin = None + for line in f: + if "--- begin run @" in line: + # 2018-09-05T01:10:36+00:00 + begin = datetime.strptime(line[16:-5], '%Y-%m-%dT%H:%M:%S+00:00') + continue + if "--- end run @" in line: + end = datetime.strptime(line[14:-5], '%Y-%m-%dT%H:%M:%S+00:00') + if not begin: + print("end @ %s had no beginning?", end) + continue + runtime = end - begin + # NOTE(ianw): try to get what would have been the HEAD at + # the time the run started. "--first-parent" I hope means + # that we show merge commits of when the change actually + # was in the tree, not when it was originally proposed. + git_head_commit = os.popen('git -C /opt/system-config/ rev-list --first-parent -1 --before="%s" master' % begin).read().strip() + git_head = os.popen('git -C /opt/system-config log --abbrev-commit --pretty=oneline --max-count=1 %s' % git_head_commit).read().strip() + print("%s - %s - %s" % (runtime, begin, git_head)) + begin = None + +if begin: + print("Incomplete run started @ %s" % begin)