From 80a59eed95c17a8702da10f54f9b6fdf8e90a880 Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Mon, 2 Jul 2018 14:52:53 -0700 Subject: gkeys/lock.py: New LockDir class Signed-off-by: Brian Dolbec --- gkeys/gkeys/lock.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 gkeys/gkeys/lock.py diff --git a/gkeys/gkeys/lock.py b/gkeys/gkeys/lock.py new file mode 100644 index 0000000..5614335 --- /dev/null +++ b/gkeys/gkeys/lock.py @@ -0,0 +1,31 @@ + +import os + +from snakeoil import fileutils +from snakeoil import osutils +from catalyst.fileops import ensure_dirs + + +LockInUse = osutils.LockException + + +class LockDir(object): + """An object that creates locks inside dirs""" + + def __init__(self, lockdir): + #self.gid = 250 + self.lockfile = os.path.join(lockdir, '.gkeys_lock') + ensure_dirs(lockdir) + fileutils.touch(self.lockfile, mode=0o664) + #os.chown(self.lockfile, -1, self.gid) + self.lock = osutils.FsLock(self.lockfile) + + def read_lock(self): + self.lock.acquire_read_lock() + + def write_lock(self): + self.lock.acquire_write_lock() + + def unlock(self): + # Releasing a write lock is the same as a read lock. + self.lock.release_write_lock() -- cgit v1.2.3-65-gdbad