from __future__ import print_function
-import contextlib
+from contextlib import contextmanager
from threading import Thread
from time import sleep
-from file_helpers import get_filesystem_fill_states, FilesystemFillState
from datetime import datetime as dt
-from buffers import LogarithmicBuffer
from itertools import tee
from warnings import warn
from sys import stderr, exit as sys_exit
# only added in python 3.2
WARN_BASE_CLASS = UserWarning
+from buffers import LogarithmicBuffer
+from file_helpers import get_filesystem_fill_states, FilesystemFillState
+from iter_helpers import pairwise
+
#: filesystems shown by df that usually do not correspond to something on disc
#: (except maybe swap)
-NOT_REAL_FILESYSTEMS = 'none', 'shmfs', 'procfs', 'tmpfs'
+NOT_REAL_FILESYSTEMS = 'none', 'shmfs', 'procfs', 'tmpfs', 'ramfs'
class DiscFullPreventionError(Exception):
# call user-defined function to decide
min_time = None
- if any(time > 0 for time in times_until_empty):
+ if any(time != None and time > 0 for time in times_until_empty):
min_time = min(time for time in times_until_empty
- if time>0)
+ if time != None and time>0)
avg_time = calc_time_until_zero(fill_states[0],
fill_states[-1])
self.decision_function(fs_state,
Values should be one like :py:data:`KILL_EXCEPTION`
"""
- if curr_state.name == '/dev/mapper/ssd2-local':
- print('checking ssd2: free is {0:.1f}MB, warn at {1:.1f}MB, err at {2:.1f}MB'
- .format(float(curr_state.available) / MEGABYTE,
- float(size_warn) / MEGABYTE,
- float(size_err) / MEGABYTE))
-
# err?
raise_err = False
if curr_state.available < size_err:
return (new_date - dt.now()).total_seconds() - time_diff
-def pairwise(iterable):
- """ s -> (s0,s1), (s1,s2), (s2, s3), ...
-
- taken from itertool recipes in python api doc of itertools
- """
- a, b = tee(iterable)
- next(b, None)
- return zip(a, b)
-
-
METHOD_THREAD = 'thread'
METHOD_ALARM = 'alarm'
-@contextlib.contextmanager
+@contextmanager
def disc_fill_checked(method=METHOD_THREAD, *args, **kwargs):
""" run test function while watching disc space