[openstack-dev] [nova][oslo] oslo.config and import chains
Kevin L. Mitchell
kevin.mitchell at rackspace.com
Thu Aug 7 16:11:58 UTC 2014
On Thu, 2014-08-07 at 10:55 -0500, Matt Riedemann wrote:
>
> On 8/7/2014 10:27 AM, Kevin L. Mitchell wrote:
> > On Thu, 2014-08-07 at 12:15 +0100, Matthew Booth wrote:
> >> A (the?) solution is to register_opts() in foo before importing any
> >> modules which might also use oslo.config.
> >
> > Actually, I disagree. The real problem here is the definition of
> > bar_func(). The default value of the parameter "arg" will likely always
> > be the default value of foo_opt, rather than the configured value,
> > because "CONF.foo_opt" will be evaluated at module load time. The way
> > bar_func() should be defined would be:
> >
> > def bar_func(arg=None):
> > if not arg:
> > arg = CONF.foo_opt
> > …
> >
> > That ensures that arg will be the configured value, and should also
> > solve the import conflict.
> >
>
> Surely you mean:
>
> if arg is not None:
>
> right?! I'm pretty sure there is a hacking check for that now too...
No, I meant "if not arg", which would be true if arg is None—or 0, or
empty string, or False. If those alternate false values are potential
values of arg, then clearly an "if arg is None" would be the correct
incantation. However, an "if arg is not None" would never be
appropriate for this logic :) (And the hacking check is against "if arg
== None" or "if arg != None"…)
--
Kevin L. Mitchell <kevin.mitchell at rackspace.com>
Rackspace
More information about the OpenStack-dev
mailing list