1 |
commit: 562a9dddee7038804e6c17d8da79262ad45deaf5 |
2 |
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Apr 18 01:27:31 2020 +0000 |
4 |
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Apr 23 18:20:35 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=562a9ddd |
7 |
|
8 |
catalyst: Add a Lock class and refactor LockDir |
9 |
|
10 |
This allows us to make lock files directly. |
11 |
|
12 |
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org> |
13 |
|
14 |
catalyst/lock.py | 29 ++++++++++++++++++----------- |
15 |
1 file changed, 18 insertions(+), 11 deletions(-) |
16 |
|
17 |
diff --git a/catalyst/lock.py b/catalyst/lock.py |
18 |
index 5e039fae..ab005163 100644 |
19 |
--- a/catalyst/lock.py |
20 |
+++ b/catalyst/lock.py |
21 |
@@ -8,17 +8,14 @@ from catalyst.fileops import ensure_dirs |
22 |
|
23 |
LockInUse = osutils.LockException |
24 |
|
25 |
- |
26 |
-class LockDir(): |
27 |
- """An object that creates locks inside dirs""" |
28 |
- |
29 |
- def __init__(self, lockdir): |
30 |
- self.gid = 250 |
31 |
- self.lockfile = os.path.join(lockdir, '.catalyst_lock') |
32 |
- ensure_dirs(lockdir) |
33 |
- fileutils.touch(self.lockfile, mode=0o664) |
34 |
- os.chown(self.lockfile, -1, self.gid) |
35 |
- self.lock = osutils.FsLock(self.lockfile) |
36 |
+class Lock: |
37 |
+ """ |
38 |
+ A fnctl-based filesystem lock |
39 |
+ """ |
40 |
+ def __init__(self, lockfile): |
41 |
+ fileutils.touch(lockfile, mode=0o664) |
42 |
+ os.chown(lockfile, uid=-1, gid=250) |
43 |
+ self.lock = osutils.FsLock(lockfile) |
44 |
|
45 |
def read_lock(self): |
46 |
self.lock.acquire_read_lock() |
47 |
@@ -29,3 +26,13 @@ class LockDir(): |
48 |
def unlock(self): |
49 |
# Releasing a write lock is the same as a read lock. |
50 |
self.lock.release_write_lock() |
51 |
+ |
52 |
+class LockDir(Lock): |
53 |
+ """ |
54 |
+ A fnctl-based filesystem lock in a directory |
55 |
+ """ |
56 |
+ def __init__(self, lockdir): |
57 |
+ ensure_dirs(lockdir) |
58 |
+ lockfile = os.path.join(lockdir, '.catalyst_lock') |
59 |
+ |
60 |
+ Lock.__init__(self, lockfile) |