#!/usr/bin/env python3


import re
from subprocess import check_output
from sys import argv, exit


def to_bytes(size):
    suffixes = ['', 'K', 'M', 'G', 'T', 'P']
    number, suffix = re.match(r'([0-9\.]+)([A-Z]?)', size).groups()
    if suffix not in suffixes:
        print('Unexpected suffix "{}" in size "{}"'.format(suffix, size))
    return float(number) * 1024**suffixes.index(suffix)


pool = argv[1]
critical_perc = float(argv[2])

try:
    output = check_output(['zpool', 'list', '-Ho', 'size,alloc', pool])
except:
    print('CRITICAL - "zpool" failed')
    exit(2)

size, alloc = output.decode('UTF-8').strip().split()

try:
    size_b = to_bytes(size)
    alloc_b = to_bytes(alloc)
except:
    print('CRITICAL - Could not process output of "zpool list": {}'.format(output))
    exit(2)

percentage = alloc_b / size_b * 100
if percentage > critical_perc:
    print('CRITICAL - Pool "{}" uses {:.2f}% of its space'.format(pool, percentage))
    exit(2)

print('OK - Pool "{}" uses {:.2f}% of its space'.format(pool, percentage))
exit(0)
