diff options
author | Matt Turner <mattst88@gentoo.org> | 2020-04-17 18:27:31 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gentoo.org> | 2020-04-23 11:20:35 -0700 |
commit | 562a9dddee7038804e6c17d8da79262ad45deaf5 (patch) | |
tree | 8d240ecbb153064f4398c9be3d9d151c1622cbcc /catalyst/lock.py | |
parent | catalyst: Add a function to get full path of executable (diff) | |
download | catalyst-562a9dddee7038804e6c17d8da79262ad45deaf5.tar.gz catalyst-562a9dddee7038804e6c17d8da79262ad45deaf5.tar.bz2 catalyst-562a9dddee7038804e6c17d8da79262ad45deaf5.zip |
catalyst: Add a Lock class and refactor LockDir
This allows us to make lock files directly.
Signed-off-by: Matt Turner <mattst88@gentoo.org>
Diffstat (limited to 'catalyst/lock.py')
-rw-r--r-- | catalyst/lock.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/catalyst/lock.py b/catalyst/lock.py index 5e039fae..ab005163 100644 --- a/catalyst/lock.py +++ b/catalyst/lock.py @@ -8,17 +8,14 @@ from catalyst.fileops import ensure_dirs LockInUse = osutils.LockException - -class LockDir(): - """An object that creates locks inside dirs""" - - def __init__(self, lockdir): - self.gid = 250 - self.lockfile = os.path.join(lockdir, '.catalyst_lock') - ensure_dirs(lockdir) - fileutils.touch(self.lockfile, mode=0o664) - os.chown(self.lockfile, -1, self.gid) - self.lock = osutils.FsLock(self.lockfile) +class Lock: + """ + A fnctl-based filesystem lock + """ + def __init__(self, lockfile): + fileutils.touch(lockfile, mode=0o664) + os.chown(lockfile, uid=-1, gid=250) + self.lock = osutils.FsLock(lockfile) def read_lock(self): self.lock.acquire_read_lock() @@ -29,3 +26,13 @@ class LockDir(): def unlock(self): # Releasing a write lock is the same as a read lock. self.lock.release_write_lock() + +class LockDir(Lock): + """ + A fnctl-based filesystem lock in a directory + """ + def __init__(self, lockdir): + ensure_dirs(lockdir) + lockfile = os.path.join(lockdir, '.catalyst_lock') + + Lock.__init__(self, lockfile) |