ScriptLock   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
c 0
b 0
f 0
dl 0
loc 25
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __exit__() 0 6 1
A __init__() 0 5 1
A __enter__() 0 8 1
1
'''
2
    Locking helper functions.
3
'''
4
5
from twisted.python.lockfile import FilesystemLock
6
import os
7
8
import logging
9
logger = logging.getLogger('opensubmitexec')
10
11
12
def break_lock(config):
13
    fname = config.get("Execution", "pidfile")
14
    try:
15
        os.remove(fname)
16
        logger.info("Lock file at {0} removed.".format(fname))
17
    except FileNotFoundError:
18
        logger.info("No lock file found at {0}.".format(fname))
19
20
21
class ScriptLock():
22
    config = None
23
    flock = None
24
25
    def __init__(self, config):
26
        '''
27
        Parse machine-local configuration file.
28
        '''
29
        self.config = config
30
31
    def __enter__(self):
32
        '''
33
        Be a context manager.
34
        '''
35
        fname = self.config.get("Execution", "pidfile")
36
        self.flock = FilesystemLock(fname)
37
        logger.debug("Obtaining script lock")
38
        self.flock.lock()
39
40
    def __exit__(self, exc_type, exc_value, traceback):
41
        '''
42
        Be a context manager.
43
        '''
44
        logger.debug("Releasing script lock")
45
        self.flock.unlock()
46