diff --git a/requirements.txt b/requirements.txt index 7045cb8..eb35569 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ pbr>=1.6 # Apache-2.0 # Left unversioned as designed to align with OpenStack component being snapped jinja2 jsonschema +oslo.concurrency diff --git a/snap_openstack/base.py b/snap_openstack/base.py index 8a488c5..ddbf8d6 100644 --- a/snap_openstack/base.py +++ b/snap_openstack/base.py @@ -19,6 +19,8 @@ import os import shutil import yaml +from oslo_concurrency import lockutils + from snap_openstack.renderer import SnapFileRenderer LOG = logging.getLogger(__name__) @@ -79,6 +81,8 @@ class OpenStackSnap(object): self.configuration = yaml.load(config) self.snap_env = snap_env() + @lockutils.synchronized('setup.lock', external=True, + lock_path="/var/lock/snap-openstack") def setup(self): '''Perform any pre-execution snap setup