[openstack-dev] [Nova] Configuration validation

Mark McLoughlin markmc at redhat.com
Mon Nov 11 23:08:34 UTC 2013


Hi Nikola,

On Mon, 2013-11-11 at 12:44 +0100, Nikola Đipanov wrote:
> Hey all,
> 
> During the summit session on the the VMWare driver roadmap, a topic of
> validating the passed configuration prior to starting services came up
> (see [1] for more detail on how it's connected to that specific topic).
> 
> Several ideas were thrown around during the session mostly documented in
> [1].
> 
> There are a few more cases when something like this could be useful (see
> bug [2] and related patch [3]), and I was wondering if a slightly
> different approach might be useful. For example use an already existing
> validation hook in the service class [4] to call into a validation
> framework that will potentially stop the service with proper
> logging/notifications. The obvious benefit would be that there is no
> pre-run required from the user, and the danger of running a
> misconfigured stack is smaller.

One thing worth trying would be to encode the validation rules in the
config option declaration.

Some rules could be straightforward, like:

opts = [
  StrOpt('foo_url',
         validate_rule=cfg.MatchesRegexp('(git|http)://')),
]

but the rule you describe is more complex e.g.

def validate_proxy_url(conf, group, key, value):
    if not conf.vnc_enabled:
        return
    if conf.ssl_only and value.startswith("http://"):
        raise ValueError('ssl_only option detected, but ...')

opts = [
  StrOpt('novncproxy_base_url',
         validate_rule=validate_proxy_url),
  ...
]

I'm not sure I love this yet, but it's worth experimenting with.

Mark.




More information about the OpenStack-dev mailing list