[openstack-dev] [devstack][zuul] About devstack plugin orders and the log to contain the running local.conf

James E. Blair corvus at inaugust.com
Wed Nov 22 22:55:00 UTC 2017

corvus at inaugust.com (James E. Blair) writes:

> "gong_ys2004" <gong_ys2004 at aliyun.com> writes:
>> Hi, everyone
>> I am trying to migrate tacker's functional CI job into new zuul v3
>> framework, but it seems:
>> 1. the devstack plugin order is not the one I specified in the .zuull.yaml
>> https://review.openstack.org/#/c/516004/4/.zuul.yaml:I
>> have:      devstack_plugins:
>>         heat: https://git.openstack.org/openstack/heat
>>         networking-sfc:  https://git.openstack.org/openstack/networking-sfc
>>         aodh: https://git.openstack.org/openstack/aodh
>>         ceilometer: https://git.openstack.org/openstack/ceilometer
>>         barbican: https://git.openstack.org/openstack/barbican
>>         mistral: https://git.openstack.org/openstack/mistral
>>         tacker: https://git.openstack.org/openstack/tacker
>> but the running order
>> seems:http://logs.openstack.org/04/516004/4/check/tacker-functional-devstack/f365f21/job-output.txt.gz:
>> local plugins=,ceilometer,aodh,mistral,networking-sfc,heat,tacker,barbican
>> I need barbican to start before tacker.
> [I changed the subject to replace the 'openstack' tag with 'devstack',
> which is what I assume was intended.]
> As Yatin Karel later notes, this is handled as a regular python
> dictionary which means we process the keys in an indeterminate order.
> I can think of a few ways we can address this:
> 3) Add dependency information to devstack plugins, but rather than
> having devstack resolve it, have the Ansible role which writes out the
> local.conf read that information and resolve the order.  This lets us
> keep the actual information in plugins so we don't have to continually
> update the role, but it lets us perform the processing in the role
> (which is in Python) when writing the config file.
> After considering all of those, I think I favor option 3, because we
> should be able to implement it without too much difficulty, it will
> improve things by providing a known and documented location for plugins
> to specify dependencies, and once it is in place, we can still implement
> option 1 later if we want, using the same declaration.

I discussed this with Dean and we agreed on something close to this
option, except that we would do it in such a way that devstack could
potentially make use of this in the future.  For starters, it will be
easy for devstack to error if someone adds plugins in the wrong order.
If someone feels like having a lot of fun, they could actually implement
a dependency resolver in devstack.

I have two patches which implement this idea:


Once those land, we'll need to add the appropriate lines to barbican and
tacker's devstack plugin settings files, then the job you're creating
should start those plugins in the right order automatically.


More information about the OpenStack-dev mailing list