Merge "Deprecated tox -downloadcache option removed"
diff --git a/doc/source/launchers.rst b/doc/source/launchers.rst
index 0a1e0e7..c61cea8 100644
--- a/doc/source/launchers.rst
+++ b/doc/source/launchers.rst
@@ -239,7 +239,7 @@
instead. As an example, the OpenStack project uses the following
script to prepare the workspace for its integration testing:
- https://github.com/openstack-infra/devstack-gate/blob/master/devstack-vm-gate-wrap.sh
+ https://git.openstack.org/cgit/openstack-infra/devstack-gate/tree/devstack-vm-gate-wrap.sh
Turbo Hipster Worker
~~~~~~~~~~~~~~~~~~~~
diff --git a/requirements.txt b/requirements.txt
index 6318a59..3eb1b2c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-pbr>=0.5.21,<1.0
+pbr>=1.1.0
argparse
PyYAML>=3.1.0
@@ -12,7 +12,7 @@
statsd>=1.0.0,<3.0
voluptuous>=0.7
gear>=0.5.7,<1.0.0
-apscheduler>=2.1.1,<3.0
+apscheduler>=3.0
PrettyTable>=0.6,<0.8
babel>=1.0
six>=1.6.0
diff --git a/zuul/scheduler.py b/zuul/scheduler.py
index f8321d1..151aae1 100644
--- a/zuul/scheduler.py
+++ b/zuul/scheduler.py
@@ -1535,13 +1535,23 @@
def updateBuildDescriptions(self, build_set):
for build in build_set.getBuilds():
- desc = self.formatDescription(build)
- self.sched.launcher.setBuildDescription(build, desc)
+ try:
+ desc = self.formatDescription(build)
+ self.sched.launcher.setBuildDescription(build, desc)
+ except:
+ # Log the failure and let loop continue
+ self.log.error("Failed to update description for build %s" %
+ (build))
if build_set.previous_build_set:
for build in build_set.previous_build_set.getBuilds():
- desc = self.formatDescription(build)
- self.sched.launcher.setBuildDescription(build, desc)
+ try:
+ desc = self.formatDescription(build)
+ self.sched.launcher.setBuildDescription(build, desc)
+ except:
+ # Log the failure and let loop continue
+ self.log.error("Failed to update description for "
+ "build %s in previous build set" % (build))
def onBuildStarted(self, build):
self.log.debug("Build %s started" % build)
diff --git a/zuul/trigger/timer.py b/zuul/trigger/timer.py
index c93a638..d42e3db 100644
--- a/zuul/trigger/timer.py
+++ b/zuul/trigger/timer.py
@@ -13,7 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
-import apscheduler.scheduler
+from apscheduler.schedulers.background import BackgroundScheduler
+from apscheduler.triggers.cron import CronTrigger
import logging
import voluptuous as v
from zuul.model import EventFilter, TriggerEvent
@@ -26,7 +27,7 @@
def __init__(self, trigger_config={}, sched=None, connection=None):
super(TimerTrigger, self).__init__(trigger_config, sched, connection)
- self.apsched = apscheduler.scheduler.Scheduler()
+ self.apsched = BackgroundScheduler()
self.apsched.start()
def _onTrigger(self, pipeline_name, timespec):
@@ -62,7 +63,7 @@
def postConfig(self):
for job in self.apsched.get_jobs():
- self.apsched.unschedule_job(job)
+ job.remove()
for pipeline in self.sched.layout.pipelines.values():
for ef in pipeline.manager.event_filters:
if ef.trigger != self:
@@ -81,14 +82,11 @@
second = parts[5]
else:
second = None
- self.apsched.add_cron_job(self._onTrigger,
- day=dom,
- day_of_week=dow,
- hour=hour,
- minute=minute,
- second=second,
- args=(pipeline.name,
- timespec,))
+ trigger = CronTrigger(day=dom, day_of_week=dow, hour=hour,
+ minute=minute, second=second)
+
+ self.apsched.add_job(self._onTrigger, trigger=trigger,
+ args=(pipeline.name, timespec,))
def getSchema():