actionsmap: add global flag to disable cache and lock

This commit is contained in:
Alexandre Aubin 2021-12-25 15:41:09 +01:00
parent 964483b23b
commit ef08a8be53
2 changed files with 8 additions and 3 deletions

View file

@ -414,6 +414,9 @@ class ActionsMap(object):
# Read actions map from yaml file # Read actions map from yaml file
actionsmap = read_yaml(actionsmap_yml) actionsmap = read_yaml(actionsmap_yml)
if not actionsmap["_global"].get("cache", True):
return actionsmap
# Delete old cache files # Delete old cache files
for old_cache in glob.glob(f"{actionsmap_yml_dir}/.{actionsmap_yml_file}.*.pkl"): for old_cache in glob.glob(f"{actionsmap_yml_dir}/.{actionsmap_yml_file}.*.pkl"):
os.remove(old_cache) os.remove(old_cache)
@ -536,7 +539,7 @@ class ActionsMap(object):
full_action_name = "%s.%s.%s" % (namespace, category, action) full_action_name = "%s.%s.%s" % (namespace, category, action)
# Lock the moulinette for the namespace # Lock the moulinette for the namespace
with MoulinetteLock(namespace, timeout): with MoulinetteLock(namespace, timeout, self.enable_lock):
start = time() start = time()
try: try:
mod = __import__( mod = __import__(
@ -618,6 +621,7 @@ class ActionsMap(object):
_global = actionsmap.pop("_global", {}) _global = actionsmap.pop("_global", {})
self.namespace = _global["namespace"] self.namespace = _global["namespace"]
self.enable_lock = _global.get("lock", True)
self.default_authentication = _global["authentication"][ self.default_authentication = _global["authentication"][
interface_type interface_type
] ]

View file

@ -291,10 +291,11 @@ class MoulinetteLock(object):
base_lockfile = "/var/run/moulinette_%s.lock" base_lockfile = "/var/run/moulinette_%s.lock"
def __init__(self, namespace, timeout=None, interval=0.5): def __init__(self, namespace, timeout=None, enable_lock=True, interval=0.5):
self.namespace = namespace self.namespace = namespace
self.timeout = timeout self.timeout = timeout
self.interval = interval self.interval = interval
self.enable_lock = enable_lock
self._lockfile = self.base_lockfile % namespace self._lockfile = self.base_lockfile % namespace
self._stale_checked = False self._stale_checked = False
@ -421,7 +422,7 @@ class MoulinetteLock(object):
return False return False
def __enter__(self): def __enter__(self):
if not self._locked: if self.enable_lock and not self._locked:
self.acquire() self.acquire()
return self return self