summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Utils.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-07 10:00:37 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-14 15:12:20 -0500
commitfd67a2735ada342251cb6baaa4e678532566e975 (patch)
tree1f3f37ccacb853cf500243cd02d7a87b27022e14 /src/lib/Bcfg2/Utils.py
parent9bec4d6bbab599bee72256c7e09fe214cb849a1b (diff)
downloadbcfg2-fd67a2735ada342251cb6baaa4e678532566e975.tar.gz
bcfg2-fd67a2735ada342251cb6baaa4e678532566e975.tar.bz2
bcfg2-fd67a2735ada342251cb6baaa4e678532566e975.zip
moved common file locking code into Bcfg2.Utils
Diffstat (limited to 'src/lib/Bcfg2/Utils.py')
-rw-r--r--src/lib/Bcfg2/Utils.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Utils.py b/src/lib/Bcfg2/Utils.py
index ba17e1a63..247e4f16b 100644
--- a/src/lib/Bcfg2/Utils.py
+++ b/src/lib/Bcfg2/Utils.py
@@ -2,6 +2,7 @@
used by both client and server. Stuff that doesn't fit anywhere
else. """
+import fcntl
from Bcfg2.Compat import any # pylint: disable=W0622
@@ -65,3 +66,12 @@ class PackedDigitRange(object):
def __len__(self):
return sum(r[1] - r[0] + 1 for r in self.ranges) + len(self.ints)
+
+
+def locked(fd):
+ """ Acquire a lock on a file """
+ try:
+ fcntl.lockf(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
+ except IOError:
+ return True
+ return False