commit: 92ea4ca1710dd5eefbda4f97687ea76e34812d50 Author: Max Magorsch <arzano <AT> gentoo <DOT> org> AuthorDate: Mon Apr 27 18:08:22 2020 +0000 Commit: Max Magorsch <arzano <AT> gentoo <DOT> org> CommitDate: Mon Apr 27 18:08:22 2020 +0000 URL: https://gitweb.gentoo.org/proj/gentoo-mirrorstats.git/commit/?id=92ea4ca1
Generate a json file containing the mirmon data The new generate-json.py script will parse the data generated by mirmon which is present in the state file and convert it to json. A json file called 'state.json' will be created so that the mirmon data can be properly parsed. Signed-off-by: Max Magorsch <arzano <AT> gentoo.org> json/generate-json.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ mirmon-distfiles.sh | 4 +++- mirmon-rsync.sh | 4 +++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/json/generate-json.py b/json/generate-json.py new file mode 100755 index 0000000..1786bf9 --- /dev/null +++ b/json/generate-json.py @@ -0,0 +1,47 @@ +#!/usr/bin/python + +# +# Convert a mirmon.state file to json +# +# This script will parse a mirmon state file, convert the content +# to json and print the json to stdout. +# +# Usage: +# $ generate-json.py path_to_mirmon_state_file +# +# The json will be printed to stdout. In case of an error, the +# exception will be printed to stderr. +# + +import json +import sys + +try: + with open(str(sys.argv[1])) as file_in: + mirrors = {} + for raw_line in file_in: + + line = raw_line.split(" ") + protocol = line[0].split("://")[0] + url = line[0].split("://")[1] + + state = { + "Protocol" : protocol, + "Url" : url, + "Age" : line[1], + "StatusLastProbe" : line[2], + "TimeLastSuccessfulProbe" : line[3], + "ProbeHistory" : line[4], + "StateHistory" : line[5], + "LastProbe" : line[6].strip(), + } + + if url not in mirrors: + mirrors[url] = [] + + mirrors[url].append(state) + + print(json.dumps(mirrors)) + +except Exception as e: + print("Could not convert mirmon state file to json: " + str(e), file=sys.stderr) diff --git a/mirmon-distfiles.sh b/mirmon-distfiles.sh index f8012cc..3e14e87 100755 --- a/mirmon-distfiles.sh +++ b/mirmon-distfiles.sh @@ -13,4 +13,6 @@ cd /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/distfiles_mirrors sed \ -e 's#mirrors</H2>#<a href="http://www.gentoo.org/main/en/mirrors2.xml">mirrors</a></H2>#' \ >../../htdocs/distfiles/index.html <../../htdocs/distfiles/index-wip.html - +# Generate a json file containing the state of each mirror +../json/generate-json.py /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/distfiles_mirrors/var/mirmon.state \ + > ../../htdocs/distfiles/state.json diff --git a/mirmon-rsync.sh b/mirmon-rsync.sh index 5df1c73..900832d 100755 --- a/mirmon-rsync.sh +++ b/mirmon-rsync.sh @@ -28,4 +28,6 @@ echo "gentoo rsync://35.190.132.250" >> ./var/g.mirrors sed \ -e 's#mirrors</H2>#<a href="http://www.gentoo.org/main/en/mirrors-rsync.xml">mirrors</a></H2>#' \ >../../htdocs/rsync/index.html <../../htdocs/rsync/index-wip.html - +# Generate a json file containing the state of each mirror +../json/generate-json.py /var/www/mirrorstats.gentoo.org/gentoo-mirrorstats/rsync_mirrors/var/mirmon.state \ + > ../../htdocs/rsync/state.json