glance/glance/common
Mark McLoughlin 57c4e9b6c6 Convert glance to use the new cfg module
The changes here are substantial and widespread, but in summary:

  - We use cfg to parse the CLI and config files, rather than optparse
    and PasteDeploy

  - A schema is defined for all configuration options close to the code
    which uses the option

  - 2 ConfigOpts sub-classes are added to config.py basically just
    defining how to find config files; this means we can now use e.g.
    glance.conf for base config values which glance-api.conf can
    override

  - load_paste_app() is changed to load the paste app from the last
    config file in the stack and pass the app the ConfigOpts instance

  - The generic app and filter factories in wsgi.py are modified to
    pass a ConfigOpts instance to the apps and filters

  - A ConfigOpts subclass is added for the unit tests which writes out
    config values to a temporary config file and uses cfg to parse that

I've tried to keep the switch as unobtrusive as possible leaving further
cleanups for later e.g.

  - Moving PasteDeploy config out of the config files - I think it would
    be good to aim for having users modify the PasteDeploy config files
    only in fairly rare circumstances. To achieve this, we might define
    a number of common pipelines in the PasteDeploy config and allow
    the user to choose between those pipelines in the glance config.

  - We should add help strings to all the opts, even just for the sake
    of documenting them

  - We should move a bunch of the options into groups - e.g. all the
    rabbit options

  - We no longer rely on config files for default values, so the default
    config files could contain nothing but comments - i.e. explaining
    each option and showing what the default for it is - making it
    obvious where a user has explicitly set a value

There are a couple of behavioural changes which I don't think are
signifcant but are worth mentioning:

  - We used to support passing a config file as a positional argument
    but don't anymore; AFAICT, it was only used by glance-manage when
    launching servers and I've changed that to pass --config-file

  - log_opt_values() doesn't log unknown opts, so won't log any values
    for opts which get registered at runtime later

Change-Id: Iafa998a2a8d860f1ad57e2cd2afee69686ed58ba
2011-12-08 22:32:52 +00:00
..
__init__.py Merge prop fixes 2011-01-26 11:26:54 -06:00
auth.py Fix Keystone API skew issue with Glance client. 2011-11-02 16:33:04 +00:00
cfg.py Add new cfg module 2011-12-08 22:32:46 +00:00
client.py Fixes LP Bug#861650 - Glance client deps 2011-11-30 09:41:22 -05:00
config.py Convert glance to use the new cfg module 2011-12-08 22:32:52 +00:00
context.py Convert glance to use the new cfg module 2011-12-08 22:32:52 +00:00
crypt.py Adds option to encrypt 'location' metadata. 2011-11-03 17:25:01 +00:00
exception.py Fix Keystone API skew issue with Glance client. 2011-11-02 16:33:04 +00:00
notifier.py Convert glance to use the new cfg module 2011-12-08 22:32:52 +00:00
utils.py Fixes LP Bug#861650 - Glance client deps 2011-11-30 09:41:22 -05:00
wsgi.py Convert glance to use the new cfg module 2011-12-08 22:32:52 +00:00