[openstack-dev] [all] DevStack gate local.conf support - action might be required to fix some jobs

Sean Dague sean at dague.net
Fri Feb 24 11:56:27 UTC 2017


This week we've managed to get through one of the long overdue changes
to the test infrastructure, which is making devstack-gate /
project-config support and understand devstack's local.conf. Like all
big transitions, it did not go quite as smoothly as hoped.

We broke everything using devstack plugins for about 12 hours on
Thursday due to a line ending handling issue that wasn't caught during
review (but that's all fixed now). There were issues specific to
Ironic that took longer to resolve, but I think we're working there now.

Given that there aren't a ton of well defined interfaces around this,
some jobs might still be broken. Here is a bit of a guide on how to
correct those going forward.


There can only be one of local.conf / localrc
=============================================

One of the things that people seem to have figured out is that under
some circumstances if you write both a localrc and a local.conf, they
both get used. That is mostly due to a bug, and stops really working
the moment local.conf has a [[local|localrc]] section in it.

If you are building a localrc file directly in something like a
pre-test hook, you'll need to write to a local.conf file instead. An
example of such an issue, and the fix, can be seen here on the Heat
project -
https://review.openstack.org/#/c/437686/1/heat_integrationtests/pre_test_hook.sh

Overall it's actually *not* recommended to configure things in
pre_test_hook.sh like this, because it's relying on some pass through
behavior which isn't a hard contract. It seems to be working for now,
but there are some other suggestions.


local_conf in project-config
============================

A much requested feature was the ability to set local.conf (including
post-config sections) in project-config definitions. There is now a
way to do that.

::
    local_conf:
          conf: |
               [[local|localrc]]
               foo=a
               [[post-config|$NEUTRON_CONF]]
               [DEFAULT]
               global_physnet_mtu = 1400

is an example of what we are trying to enable here. We'll try to get
some jobs merged today using it so there will be some more examples
that people can work with.


devstack plugins
================

DevStack plugins allow you to load and change any settings you want,
and run arbitrary python code during the stack.sh run. A lot of what
is done in the pre_test_hook.sh by many projects, could rather be done
by an additional plugin, which also would let people reproduce those
configs for local testing very easily.


If you have other issues
========================

If you find your jobs failing, and it looks like it is because the new
local.conf did not get generated correctly, please feel free to jump
into the #openstack-infra IRC channel and provide links to the jobs
and logs in question. We've been trying to debug as we go and figure
out situations that weren't anticipated.

Thanks to the Ironic and Heat teams to helping with some of those
unanticipated ones, and working to help us test solutions.

The fixes, like in the Heat case, may require projects to update their
testing (and backport that to stable branches). In an ideal world that
wouldn't be the case, but the lack of an interface to support
local.conf in devstack-gate caused folks to do lots of work arounds
using whatever seemed to work to get their job done. Some were more
inventive than others. The hope is that with the stable ``local_conf``
stanza in project-config we're going to have something we can support
going forward even as infrastructure evolves.

-- 
Sean Dague
http://dague.net



More information about the OpenStack-dev mailing list