Added re-try when removing job
authorAleksey Maksimov <ctpeko3a@gmail.com>
Sat, 12 Apr 2014 16:48:05 +0000 (00:48 +0800)
committerAleksey Maksimov <ctpeko3a@gmail.com>
Sat, 12 Apr 2014 16:48:05 +0000 (00:48 +0800)
Becuase Jenkins sometimes breaks for
unknown reason while removing jobs

jenkinsapi/jobs.py

index 23f1133..eda5e7c 100644 (file)
@@ -29,11 +29,24 @@ class Jobs(object):
         :param job_name: name of a exist job, str
         """
         if job_name in self:
-            delete_job_url = self[job_name].get_delete_url()
-            self.jenkins.requester.post_and_confirm_status(
-                delete_job_url,
-                data='some random bytes...'
-            )
+            try:
+                delete_job_url = self[job_name].get_delete_url()
+                self.jenkins.requester.post_and_confirm_status(
+                    delete_job_url,
+                    data='some random bytes...'
+                )
+            except JenkinsAPIException:
+                # Sometimes jenkins throws NPE when removing job
+                # It removes job ok, but it is good to be sure
+                # so we re-try if job was not deleted
+                self.jenkins.poll()
+                if job_name in self:
+                    delete_job_url = self[job_name].get_delete_url()
+                    self.jenkins.requester.post_and_confirm_status(
+                        delete_job_url,
+                        data='some random bytes...'
+                    )
+
             self.jenkins.poll()
 
     def __setitem__(self, key, value):