From: Zack Cerza Date: Thu, 9 Feb 2017 20:53:57 +0000 (-0700) Subject: Move FileLock out of repo_utils X-Git-Tag: 1.1.0~456^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=401e6e831437fe0f1f625224aa4f40f6aa966c21;p=teuthology.git Move FileLock out of repo_utils Signed-off-by: Zack Cerza --- diff --git a/teuthology/repo_utils.py b/teuthology/repo_utils.py index 6e80bde4e..fee402e74 100644 --- a/teuthology/repo_utils.py +++ b/teuthology/repo_utils.py @@ -1,4 +1,3 @@ -import fcntl import logging import os import re @@ -6,8 +5,9 @@ import shutil import subprocess import time +from teuthology.util.flock import FileLock from .config import config -from .contextutil import safe_while, MaxWhileTries +from .contextutil import MaxWhileTries, safe_while from .exceptions import BootstrapError, BranchNotFoundError, GitError log = logging.getLogger(__name__) @@ -349,24 +349,3 @@ def bootstrap_teuthology(dest_path): shutil.rmtree(venv_path, ignore_errors=True) raise BootstrapError("Bootstrap failed!") touch_file(sentinel) - - -class FileLock(object): - def __init__(self, filename, noop=False): - self.filename = filename - self.file = None - self.noop = noop - - def __enter__(self): - if not self.noop: - assert self.file is None - self.file = file(self.filename, 'w') - fcntl.lockf(self.file, fcntl.LOCK_EX) - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - if not self.noop: - assert self.file is not None - fcntl.lockf(self.file, fcntl.LOCK_UN) - self.file.close() - self.file = None diff --git a/teuthology/util/__init__.py b/teuthology/util/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/teuthology/util/flock.py b/teuthology/util/flock.py new file mode 100644 index 000000000..4264216d9 --- /dev/null +++ b/teuthology/util/flock.py @@ -0,0 +1,22 @@ +import fcntl + + +class FileLock(object): + def __init__(self, filename, noop=False): + self.filename = filename + self.file = None + self.noop = noop + + def __enter__(self): + if not self.noop: + assert self.file is None + self.file = file(self.filename, 'w') + fcntl.lockf(self.file, fcntl.LOCK_EX) + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if not self.noop: + assert self.file is not None + fcntl.lockf(self.file, fcntl.LOCK_UN) + self.file.close() + self.file = None