Manage a pool of nodes for a distributed test infrastructure
Go to file
James E. Blair b8035de65f Improve handling of errors in provider manager startup
If a provider (or its configuration) is sufficiently broken that
the provider manager is unable to start, then the launcher will
go into a loop where it attempts to restart all providers in the
system until it succeeds.  During this time, no pool managers are
running which mean all requests are ignored by this launcher.

Nodepool continuously reloads its configuration file, and in case
of an error, the expected behavior is to continue running and allow
the user to correct the configuration and retry after a short delay.

We also expect providers on a launcher to be independent of each
other so that if ones fails, the others continue working.

However since we neither exit, nor process node requests if a
provider manager fails to start, an error with one provider can
cause all providers to stop handling requests with very little
feedback to the operator.

To address this, if a provider manager fails to start, the launcher
will now behave as if the provider were absent from the config file.
It will still emit the error to the log, and it will continuously
attempt to start the provider so that if the error condition abates,
the provider will start.

If there are no providers on-line for a label, then as long as any
provider in the system is running, node requests will be handled
and declined and possibly failed while the broken provider is offilne.

If the system contains only a single provider and it is broken, then
no requests will be handled (failed), which is the current behavior,
and still likely to be the most desirable in that case.

Change-Id: If652e8911993946cee67c4dba5e6f88e55ac7099
2022-01-14 19:07:32 -08:00
contrib/statsd_exporter Add statsd_exporter mapping 2019-09-29 09:30:45 +00:00
doc Switch docs theme to versioned RTD 2021-12-16 11:23:30 -08:00
etc Merge "Add systemd drop-in file for CentOS 7" 2018-05-09 18:09:54 +00:00
nodepool Improve handling of errors in provider manager startup 2022-01-14 19:07:32 -08:00
playbooks Fix gate for Focal issues 2021-05-19 08:18:24 +10:00
releasenotes/notes Azure: add image filter 2021-11-27 09:45:19 -08:00
roles/nodepool-zuul-functional Upgrade pip before installing zuul 2021-02-14 09:21:02 +01:00
tools functional test: check DIB kernel flags 2021-11-25 11:41:09 +11:00
.coveragerc Switch to stestr 2018-04-26 11:52:17 -05:00
.dockerignore Build images with Dockerfile instead of pbrx 2019-01-24 16:11:12 +00:00
.gitignore Require TLS 2021-02-19 18:42:33 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:25:31 +00:00
.stestr.conf Switch to stestr 2018-04-26 11:52:17 -05:00
.zuul.yaml Add py39 testing to nodepool 2021-10-26 12:41:54 -07:00
Dockerfile Dockerfile: install podman from unstable 2021-10-28 16:42:16 +11:00
LICENSE license: remove dos line break 2018-01-19 00:30:22 +00:00
README.rst Update devstack settings and docs for opendev 2019-04-23 13:03:21 +00:00
TESTING.rst Add more detail to TESTING.rst 2020-06-09 08:48:43 -07:00
bindep.txt Update Docker and bindep for Bullseye base images 2021-10-26 11:11:19 +11:00
requirements.txt Bump DIB to 3.16.0 2021-12-03 19:10:29 +11:00
setup.cfg Add py39 testing to nodepool 2021-10-26 12:41:54 -07:00 Bump pbr requirements to >=1.3 2015-09-14 16:19:13 -04:00
test-requirements.txt Azure: switch to Azul 2021-03-08 14:58:31 -08:00
tox.ini Require TLS 2021-02-19 18:42:33 +00:00



Nodepool is a system for managing test node resources. It supports launching single-use test nodes from cloud providers as well as managing access to pre-defined pre-existing nodes. Nodepool is part of a suite of tools that form a comprehensive test system, including Zuul.

The latest documentation for Nodepool is published at:

The latest documentation for Zuul is published at:

Getting Help

There are two Zuul-related mailing lists:


A low-traffic announcement-only list to which every Zuul operator or power-user should subscribe.


General discussion about Zuul, including questions about how to use it, and future development.

You will also find Zuul developers in the #zuul channel on Freenode IRC.


To browse the latest code, see: To clone the latest code, use git clone

Bugs are handled at:!/project/zuul/nodepool

Code reviews are handled by gerrit at

After creating a Gerrit account, use git review to submit patches. Example:

# Do your commits
$ git review
# Enter your username if prompted

Join #zuul on Freenode to discuss development or usage.


Nodepool is free software, licensed under the Apache License, version 2.0.

Python Version Support

Nodepool requires Python 3. It does not support Python 2.