diff --git a/check_scrutiny_disks.py b/check_scrutiny_disks.py
index 519d104..1c8756b 100755
--- a/check_scrutiny_disks.py
+++ b/check_scrutiny_disks.py
@@ -89,23 +89,49 @@ def main(args):
'display_name': item['metadata']['display_name']
})
+ dt = '
' if args.html else ''
+ dts = '' if args.html else ''
+ dd = '' if args.html else '\t- '
+ dds = '' if args.html else ''
+
return_code = nagios.OK
if len(crit_disks):
return_code = nagios.CRITICAL
- print(f'CRITICAL: {len(crit_disks)} {"error" if len(results) == 0 else "errors"} - {args.scrutiny_endpoint}')
- print('Disks with Errors:')
+ if len(warn_disks):
+ x = f' and {len(warn_disks)} {"warning" if len(results) > 1 else "warnings"}'
+ else:
+ x = ''
+ print(f'CRITICAL: {len(crit_disks)} {"error" if len(results) > 1 else "errors"}{x}')
+
+ print('')
+ print(f'{dt}Disks with Errors:{dts}')
+
for disk, warns in crit_disks.items():
- print(f'\t- /dev/{disk}: {", ".join([x["display_name"] for x in warns])}')
+ if args.html:
+ disk_name = f'- /dev/{disk}'
+ else:
+ disk_name = f'\t- /dev/{disk}'
+ print(f'{dd}{disk_name}: {", ".join([x["display_name"] for x in warns])}{dds}')
+
+ print('
', end='')
+
if len(warn_disks):
if return_code < nagios.CRITICAL:
return_code = nagios.WARNING
- print(f'WARNING: {len(crit_disks)} {"warning" if len(results) == 0 else "warnings"} - {args.scrutiny_endpoint}')
- print('Disks with issues:')
+ print(f'WARNING: {len(crit_disks)} {"warning" if len(results) > 1 else "warnings"}')
+
+ print('')
+ print(f'{dt}Disks with issues:{dts}')
for disk, warns in warn_disks.items():
- print(f'\t- /dev/{disk}: {", ".join([x["display_name"] for x in warns])}')
+ if args.html:
+ disk_name = f'- /dev/{disk}'
+ else:
+ disk_name = f'\t- /dev/{disk}'
+ print(f'{dd}{disk_name}: {", ".join([x["display_name"] for x in warns])}{dds}')
+ print('
', end='')
if not len(crit_disks) and not len(warn_disks):
- print(f'OK: all {len(results)} {"disk" if len(results) == 0 else "disks"} are healthy!', end='')
+ print(f'OK: all {len(results)} {"disk" if len(results) > 1 else "disks"} are healthy!', end='')
print(f"|'warnings'={len(warn_disks)};;; 'errors'={len(crit_disks)};;; 'num_disks'={len(results)};;;")
sys.exit(return_code)
@@ -115,8 +141,16 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description='')
parser.add_argument('--scrutiny-endpoint', required=True, help='Base URL for scrutiny.')
parser.add_argument('--warn-non-critical', action='store_true', help='Warn when a non-critical metric is marked as failed.')
+ parser.add_argument('--html', action='store_true', help='Print HTML.')
+ parser.add_argument('--pretty-url', help='The pretty URL to link to when printing HTML.')
args = parser.parse_args()
+
+ if args.html and not args.pretty_url:
+ print('UKNOWN: when using --html you must also set --pretty-url')
+ sys.exit(nagios.UNKNOWN)
+
args.scrutiny_endpoint = args.scrutiny_endpoint.strip('/')
+ args.pretty_url = args.pretty_url.strip('/') if args.pretty_url else None
try:
main(args)
except Exception as e: