]> Frank Brehm's Git Trees - pixelpark/puppetmaster-webhooks.git/commitdiff
Implementing locking of deploying
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 30 Apr 2019 09:20:24 +0000 (11:20 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 30 Apr 2019 09:20:24 +0000 (11:20 +0200)
lib/webhooks/__init__.py
lib/webhooks/deploy.py

index 405ba9e0e3699b95278d6ccc912a50c72ee43e27..9bfc52c427b92cdc04aec60a9ac7e148bb31b934 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/env python3
 # -*- coding: utf-8 -*-
 
-__version__ = '1.6.1'
+__version__ = '1.6.2'
 
 # vim: ts=4 et list
index 5726aeebba96f7c03fa0cad56065e714d556575e..d0de531bf70b0fefb647682123d5db070adb5b1c 100644 (file)
@@ -214,26 +214,34 @@ class WebhookDeployApp(BaseHookApp):
         LOG.info(_("Trying to create lockfile {fn!r} in directory {d!r} ...").format(
             fn=lockfile, d=str(self.locker.lockdir)))
 
-        LOG.info(_("Deploying working directory {f!r} for project {p!r} ...").format(
-            f=full_path, p=full_name))
-
-        if not os.access(parent_dir, os.F_OK):
-            msg = _("Parent directory {d!r} of project {p!r} does not exists.").format(
-                d=parent_dir, p=full_name)
-            LOG.error(msg)
-            self.error_data.append(msg)
-            return True
-
-        if not os.path.isdir(parent_dir):
-            msg = _(
-                "Path for parent directory {d!r} for project {p!r} "
-                "is not a directory.").format(d=parent_dir, p=full_name)
-            LOG.error(msg)
-            self.error_data.append(msg)
-            return True
-
-        self.ensure_workingdir(parent_dir, workdir, branch)
-        self.compile_i18n_msgs(os.path.join(parent_dir, workdir))
+        lock = self.locker.create_lockfile(lockfile)
+
+        try:
+            lock.autoremove = True
+
+            LOG.info(_("Deploying working directory {f!r} for project {p!r} ...").format(
+                f=full_path, p=full_name))
+
+            if not os.access(parent_dir, os.F_OK):
+                msg = _("Parent directory {d!r} of project {p!r} does not exists.").format(
+                    d=parent_dir, p=full_name)
+                LOG.error(msg)
+                self.error_data.append(msg)
+                return True
+
+            if not os.path.isdir(parent_dir):
+                msg = _(
+                    "Path for parent directory {d!r} for project {p!r} "
+                    "is not a directory.").format(d=parent_dir, p=full_name)
+                LOG.error(msg)
+                self.error_data.append(msg)
+                return True
+
+            self.ensure_workingdir(parent_dir, workdir, branch)
+            self.compile_i18n_msgs(os.path.join(parent_dir, workdir))
+
+        finally:
+            lock = None
 
     # -------------------------------------------------------------------------
     def ensure_workingdir(self, parent_dir, workdir, branch=None):