[openstack-dev] [Neutron] Centralizing some config options will break many stadium projects
Ihar Hrachyshka
ihrachys at redhat.com
Tue Nov 1 12:13:41 UTC 2016
Brandon Logan <brandon.logan at rackspace.com> wrote:
> Hello Neutrinos,
> I've come across an issue that I'd like to get input/opinions on. I've
> been reviewing some of the centralize config options reviews and have
> come across a few that would cause issues with other projects that are
> importing these options, especially stadium projects. High level view
> of the issue:
>
> [1] would cause at least 22 projects to need to be fixed based on [2]
> [3] would cause at least 12 projects to need to be fixed based on [4]
>
> [5] looks to affect many other projects as well (I'm being lazy and
> not counting them right now)
>
> Initially, the thinking was that moving the config options around would
> cause some breakage with projects outside of neutron, but that would be
> fine because projects shouldn't really be using neutron as a library
> and using it to register config options. However, with these 3
> patches, I definitely don't feel comfortable breaking the amount of
> projects these would break. It also makes me think that maybe these
> options should be in neutron-lib since they're consumed so widely.
Definitely not neutron-lib material (unless carefully hidden behind clearly
public API).
There is a reason why oslo folks explicitly deny any support for
configuration option names and locations their libraries expose [1].
Options are for operators to change in configuration files, but not to
access them or set programmatically. If there are options that subprojects
need access to, we should expose them via explicitly public API, like we
did with global_physnet_mtu [2].
[1]
http://docs.openstack.org/developer/oslo.config/faq.html#why-are-configuration-options-not-part-of-a-library-s-api
[2]
https://github.com/openstack/neutron/blob/181bdb374fc0c944b1168f27ac7b5cbb0ff0f3c3/neutron/plugins/common/utils.py#L43
> Anyway, I've come up with some possible options to deal with this, but
> would like to hear others' opinions on this:
>
> 1) Let the patches merge and break those projects as a signal that
> importing these shouldn't be done. The affected projects can choose to
> push fixes that continue importing the neutron config options or
> defining their own config options.
> 2) Deprecate the old locations for some timeframe, and then remove
> later.
> 3) Texas Three-Step: change the neutron patches to keep pointers in the
> old locations to the new, and then push patches to the affected repos
> with Depends-On directives. Once all patches merge, push up one more
> patch to neutron to remove the old location.
> 4) Abandon these reviews and do nothing.
> 5) Move these config options to neutron-lib so that they can be used by
> any project. This still requires doing one of the above options,
> however.
> 6) Any others I can't think of?
Whatever makes subprojects stop accessing neutron configuration options
programmatically. If we indeed identify something that plugins MUST have
access to, then let’s work in scope of neutron-lib to expose those options
through public API (not CONF object!)
I believe it's subprojects who should identify and vouch for and propose
neutron-lib patches to expose values they may need in their extensions;
Neutron should of course give a notice about its plans; we could broadly
target those changes to early Pike if we think it’s worth a postponement,
and start talking to subprojects about them driving readiness for the
changes during Ocata.
Ihar
More information about the OpenStack-dev
mailing list