commit:     562a9dddee7038804e6c17d8da79262ad45deaf5
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 18 01:27:31 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Thu Apr 23 18:20:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=562a9ddd

catalyst: Add a Lock class and refactor LockDir

This allows us to make lock files directly.

Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 catalyst/lock.py | 29 ++++++++++++++++++-----------
 1 file 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)

Reply via email to