bundles/sshmon: rewrite check_github_for_new_release
This commit is contained in:
parent
58192620b9
commit
b8a109efb0
2 changed files with 55 additions and 21 deletions
|
@ -1,33 +1,66 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from requests import get
|
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
|
|
||||||
if not len(argv) == 3:
|
from requests import get
|
||||||
print('Usage: check_github_for_new_release <repo> <version>')
|
|
||||||
exit(3)
|
try:
|
||||||
|
# Arch Linux (possibly future Ubuntu releases)
|
||||||
|
from packaging.version import parse
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
# Debian
|
||||||
|
from setuptools._vendor.packaging.version import parse
|
||||||
|
|
||||||
|
|
||||||
|
assert (
|
||||||
|
len(argv) >= 3
|
||||||
|
), "Usage: check_github_for_new_release <repo> <version> [tag prefix]"
|
||||||
|
|
||||||
repo = argv[1]
|
repo = argv[1]
|
||||||
current_version = argv[2]
|
current_version = argv[2]
|
||||||
|
if len(argv) >= 4:
|
||||||
|
tag_prefix = argv[3]
|
||||||
|
else:
|
||||||
|
tag_prefix = ""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = get('https://api.github.com/repos/{}/releases/latest'.format(repo), headers={'Accept': 'application/json'}).json()
|
r = get(
|
||||||
except Exception as e:
|
"https://api.github.com/repos/{}/releases".format(repo),
|
||||||
print(repr(e))
|
headers={"Accept": "application/json"},
|
||||||
exit(3)
|
)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
newest_release = r['tag_name']
|
releases = r.json()
|
||||||
|
|
||||||
if newest_release != current_version:
|
newest_release = None
|
||||||
print('There is a newer version available: {} (currently installed: {})'.format(newest_release, current_version))
|
|
||||||
|
|
||||||
if r['prerelease'] or r['draft']:
|
for i in releases:
|
||||||
print('Please note this is only a prerelease/draft.')
|
if i["tag_name"].startswith(tag_prefix):
|
||||||
|
if newest_release is None or parse(i["tag_name"]) > parse(
|
||||||
|
newest_release["tag_name"]
|
||||||
|
):
|
||||||
|
newest_release = i
|
||||||
|
|
||||||
|
assert newest_release is not None, "Could not determine latest release"
|
||||||
|
|
||||||
|
if parse(newest_release["tag_name"]) > parse(current_version):
|
||||||
|
print(
|
||||||
|
"There is a newer version available: {} (currently installed: {})".format(
|
||||||
|
newest_release["tag_name"], current_version
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
if newest_release["prerelease"] or newest_release["draft"]:
|
||||||
|
print("Please note this is only a prerelease/draft.")
|
||||||
|
|
||||||
# Don't alert people for prereleases.
|
# Don't alert people for prereleases.
|
||||||
exit(0)
|
exit(0)
|
||||||
else:
|
else:
|
||||||
exit(2)
|
exit(2)
|
||||||
else:
|
else:
|
||||||
print('Currently installed version matches newest release on github')
|
print("Currently installed version matches newest release on github")
|
||||||
exit(0)
|
exit(0)
|
||||||
|
except Exception as e:
|
||||||
|
print(repr(e))
|
||||||
|
exit(3)
|
||||||
|
|
|
@ -7,6 +7,7 @@ defaults = {
|
||||||
'libwww-perl': {}, # needed by check_nginx_status
|
'libwww-perl': {}, # needed by check_nginx_status
|
||||||
'monitoring-plugins': {},
|
'monitoring-plugins': {},
|
||||||
'python3-requests': {},
|
'python3-requests': {},
|
||||||
|
'python3-setuptools': {}, # needed by check_github_for_new_release
|
||||||
'sysstat': {}, # needed by check_cpu_stats
|
'sysstat': {}, # needed by check_cpu_stats
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Reference in a new issue