42 lines
863 B
Text
42 lines
863 B
Text
|
#!/usr/bin/env python3
|
||
|
|
||
|
from requests import get
|
||
|
from sys import exit
|
||
|
|
||
|
api_key = '${api_key}'
|
||
|
|
||
|
try:
|
||
|
json = get('http://[::1]:22030/plugin/softwareupdate/check', headers={'X-Api-Key': api_key}).json()
|
||
|
except Exception as e:
|
||
|
print(repr(e))
|
||
|
exit(3)
|
||
|
|
||
|
updates = set()
|
||
|
errors = set()
|
||
|
|
||
|
for identifier, info in json['information'].items():
|
||
|
if info['updateAvailable']:
|
||
|
updates.add(info['displayName'])
|
||
|
|
||
|
if not json['environment']['supported']:
|
||
|
errors.add('OctoPrint runs in an unsupported environment!')
|
||
|
|
||
|
if not json['storage']['sufficient']:
|
||
|
errors.add('OctoPrint reports insufficient storage!')
|
||
|
|
||
|
|
||
|
for error in sorted(errors):
|
||
|
print(error)
|
||
|
|
||
|
if len(updates) > 0:
|
||
|
print('Updates available: {}'.format(', '.join(sorted(updates))))
|
||
|
|
||
|
|
||
|
if len(errors) > 0:
|
||
|
exit(2)
|
||
|
elif len(updates) > 0:
|
||
|
exit(1)
|
||
|
else:
|
||
|
print('OK')
|
||
|
exit(0)
|