The last month we have been developping a new tool to help us operate Zuul, and today we are happy to announce the first release of the project.

Overview and scope

Zuul Weeder analyzes the configuration objects such as jobs and nodesets and provides a search interface for:

  • Depencencies: what depends on an object.
  • Requirements: what is needed by an object.
  • URL of the configuration files that contains the object.

The goal is to help evaluate the impact of a configuration change. Zuul Weeder leverage a generic dependency graph using the data found in the ZooKeeper database to collect every configuration elements used by any tenants. For example, when removing a node label or a repository.


The service provide two functions:

  • /search/$name returns the list of object matching the requested name.
  • /object/$type/$name returns - the list of configuration file url that directly defines or uses the object, - the list of related objects that are reachable, either by requirement or by dependency.

For example, by visiting /search/centos, the service returns:

  • job tripleo-centos
  • nodeset centos
  • label cloud-centos

And by visiting /object/nodeset/centos, the service returns:

  • The list of zuul.yaml file url that contains a nodeset named centos.
  • The list of jobs and project that depends on this nodeset.
  • The list of node label name that is required by this nodeset.

The results can be scoped to a specific tenant by using the /tenant/$tenant url prefix.