aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gentoo.org>2020-04-17 18:27:31 -0700
committerMatt Turner <mattst88@gentoo.org>2020-04-23 11:20:35 -0700
commit562a9dddee7038804e6c17d8da79262ad45deaf5 (patch)
tree8d240ecbb153064f4398c9be3d9d151c1622cbcc /catalyst/lock.py
parentcatalyst: Add a function to get full path of executable (diff)
downloadcatalyst-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.py29
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)