= d dl Z d dlZd dlmZ dZej ed Zdada G d de
ZddZd Z
edd
ZdS ) N)contextmanagerz/etc/containerz.ve.cfg.lockFc e Zd ZdS )LockFailedExceptionN)__name__
__module____qualname__ py/clveconfig/ve_lock.pyr r s Dr
r c t dS | rda t t dd a t j t t j n"# t $ r}t d |d }~ww xY wt
dd t t t t j t dS )NFTza+zutf-8)encodingz$IO error happened while getting lockr )LOCK_FD
LOCK_WRITEopen LOCK_FILEfcntlflockfilenoLOCK_EXIOErrorr seektruncatewritestrosgetpidflush)r es r setup_global_lockr s u
Qy$999
GNN$$em4444 Q Q Q!"HIIqPQLLAMM#bikk""###MMOOO4s A
A
A<'A77A<c ` t rdS t t d adS d S )NFT)r r closer r
r release_lockr" . s6 u
t r
c # L K t | dV t dS )zQ
Usage:
with acquire_lock():
... do something with ve.cfg ...
N)r r" )r s r acquire_lockr$ ; s, e EEENNNNNr
)F)r r
contextlibr
CONFIG_DIRpathjoinr r r Exceptionr r r" r$ r r
r