24 Commits

Author SHA1 Message Date
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
Jay Pipes
eec5c1afa1 Adds SSL configuration params to the client
* Adds SSL configuration params to all client classes
* Adds unit test for bad SSL client configuration
* Refactors the registry methods to no longer need
  configuration options passed, and to configure the
  registry client once, on images.Controller.__init__
* Adds glance-api.conf options for SSL support in
  registry client connections.
* Adds SSL CA file socket wrappers via a client auth
  HTTPS connection class
* Adds server SSL support, but not functional tests
  for SSL support yet. Still need to research self-signed
  cert generation for tests...
* Updates documentation for bind and startup options
* Adds functional test case for secure communication
  with API server stood up with SSL supprt. Note it is
  not very DRY. There is some DRY cleanup to do in the
  future...

TODO: Integrate options with bin/glance CLI tool

Change-Id: Ie9fcd36337cc93fd5beeabb9186ad5e93ae2a0f0
2011-10-11 16:40:06 -04:00
Justin Shepherd
8a33e24311 Addresses glance/+spec/i18n
Added gettext.install to glance endpoints, setup.py, and run_tests.py. Wrapped all exceptions in common/exception.py with gettext.

Included fix for bug lp:823676.

Change-Id: Ied4381e1676227afea857acd01f4754e6a181106
2011-08-10 09:09:56 -05:00
jaypipes@gmail.com
75575b41c6 Adds documentation on configuring logging and a test that log_file works. It didn't, so this also inludes fixes for setting up log handling :) 2011-03-08 16:52:38 -05:00
jaypipes@gmail.com
bb5f1229ef Use Nova's path trick in all bins... 2011-02-21 17:11:27 -05:00
jaypipes@gmail.com
ff8586d685 Remove no-longer-needed imports... 2011-02-09 15:24:59 -05:00
jaypipes@gmail.com
c269e4da17 Remove extraneous debug import... 2011-02-09 15:23:39 -05:00
jaypipes@gmail.com
610499b5ff Changes the server daemon programs to be configured only via
paste.deploy configuration files. Removed ability to configure
server options from CLI options when starting the servers with
the exception of --verbose and --debug, which are useful during
debugging.

Updated the documentation controllingservers.rst.
2011-02-09 15:02:13 -05:00
jaypipes@gmail.com
66f4b78234 Adds bin/glance-control program server daemonization wrapper
program based on Swift's swift-init script.

Adds a crap-ton of documentation on installing Glance and
controlling Glance's server programs.

This was necessary since when glance.common.server was removed
from Glance and paste.deploy used, we lost the ability to control
server daemonization with CLI options. This adds back some of that
functionality while still using paste.deploy like Swift does.
2011-02-04 18:59:52 -05:00
jaypipes@gmail.com
294228aacb Removes lockfile and custom python-daemon server initialization
in favour of paste.deploy.

We use a solution that is a hybrid of the code in Nova and Swift:

* We continue to use the object-based WSGI Server/Router objects
  in glance.common.wsgi.
* We load options from a configuration file like Swift does, merging
  in the typed options returned from glance.common.config.parse_options()

NOTE: Due to http://trac.pythonpaste.org/pythonpaste/ticket/379, we
removed the CLI option --log-format and use a hard-coded DEFAULT_LOG_FORMAT.
You are still able to adjust the log format using the --log-config-file
option, however, and setting the format string in the log config file.
2011-02-03 10:23:48 -05:00
jaypipes@gmail.com
9b95532069 Adds facilities for configuring Glance's servers via
configuration files.

glance-api, glance-registry, and glance-combined now process
a set of configuration files in order, with options read from
later files overriding values in earlier files:

/etc/glance.cnf
/etc/glance/glance.conf
~/glance.cnf
~/.glance/glance.cnf
./glance.cnf

The new glance.common.config.get_config_file_options() function
processes these config files into a mapping of key/value
option pairs. This mapping can now be passed to the
glance.common.config.parse_options() function as default values

Adds a sample glance.cnf to the etc/ directory
2011-02-02 21:17:38 -05:00
Rick Harris
cc06221694 Refactoring into option groups 2011-02-02 10:40:57 -06:00
jaypipes@gmail.com
3bf2b100b9 Adds --debug option for DEBUG-level logging. --verbose now only
outputs INFO-level log records.

Adds --log-date-format option for greater control over the log
record date format.

Makes config.setup_logging() set up all loggers, not just an application's
specific logger. Fixes issue Rick brought up about logging config file
being overridden by adding a return statement after logging.config stuff
is done.
2011-02-01 16:22:49 -05:00
jaypipes@gmail.com
e477609770 Fixes from Rick's review. Thanks, Rick. 2011-02-01 14:51:43 -05:00
jaypipes@gmail.com
61711e0378 First round of logging functionality:
* Adds option group for logging-only configuration settings
* Adds /etc and /etc/logging.cnf.sample as an example of setting
  up logging configuration directly with a config file
* Adds to glance.common.config a couple function useful in
  adding logging options and setting up the logger(s)

Next round will include the addition of a --debug option and
lots more debugging output to the loggers.
2011-02-01 13:18:40 -05:00
jaypipes@gmail.com
daa4a429f7 Fixes lp710789 - use-optparse breaks daemonized process stop
Fix was simple. args = FLAGS(argv) returns ALL argv's including
the program name. optparse.OptionParser.parse_args() does not
return the program name as args[0], instead it returns args[1:].

In glance.common.server.serve(), we were checking:

action = 'start':
if len(args) > 1:
    action = args.pop()

Changing this to if len(args): fixed the problem.
2011-01-31 13:21:30 -05:00
jaypipes@gmail.com
5fb01cb37b Rework what comes back from parse_options()[0] to not stringify option values. Keep them typed. 2011-01-28 16:15:33 -06:00
jaypipes@gmail.com
604a843357 Remove use of gflags entirely. Use optparse. 2011-01-28 15:54:34 -06:00
Cerberus
21d3c72224 A few more I missed 2011-01-26 22:04:29 -06:00
Cerberus
5afa9e2b18 Merge prop fixes 2011-01-26 11:26:54 -06:00
Cerberus
84a6d4cd0e Added copyright info 2011-01-24 15:48:03 -06:00
Ewan Mellor
f11c8c4c07 Bug #696385: Glance is not pep8-clean
Fix all Glance's pep8 problems.
2011-01-02 02:47:59 +00:00
jaypipes@gmail.com
9c2a8f25d9 Fixes binaries, updates WSGI file to more recent version from Nova, and fixes an issue in SQLAlchemy API that was being hidden by stubs and only showed up when starting up the actual binaries and testing... 2010-12-18 13:00:21 -05:00
jaypipes@gmail.com
45335fc866 This is the first part of simplifying the Glance API and
consolidating the Teller and Parallax APIs into a single,
unified Glance API.

The following changes were made:
* Change the bin/teller-server to bin/glance-api
* Remove the notion of Teller as something the user
  has to be aware of. Call the previous "Teller backends"
  simple "stores".
* Moves /glance/teller/controllers.py to /glance/server.py
* Break out the filesystem store into a separate file

Next steps:
* Hide Parallax behind a unified API
* Update docs and wiki
* Refactor image registry database to include more
  information about images
* Refactor notion of an image identifier to be a Glance URI
2010-12-13 20:56:11 -05:00