From fbbd936841af6a4ae9ebdc52d4e87da60368353e Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 16 Aug 2012 10:01:43 -0400 Subject: Bcfg2.settings: bcfg2-web.conf is the default, unless bcfg2-web.conf doesn't exit and bcfg2.conf does --- src/lib/Bcfg2/Options.py | 17 +++++++++++++++++ src/lib/Bcfg2/Server/Admin/Syncdb.py | 7 ++----- src/lib/Bcfg2/Server/Core.py | 3 ++- src/lib/Bcfg2/settings.py | 30 ++++++++++++------------------ 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index edebd10b3..3af5885bb 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -477,6 +477,11 @@ DB_PORT = \ deprecated_cf=('statistics', 'database_port')) # Django options +WEB_CFILE = \ + Option('Web interface configuration file', + default="/etc/bcfg2-web.conf", + cmd='-W', + cf=('statistics', 'config'),) DJANGO_TIME_ZONE = \ Option('Django timezone', default=None, @@ -894,6 +899,7 @@ SERVER_COMMON_OPTIONS = dict(repo=SERVER_REPOSITORY, cert=SERVER_CERT, ca=SERVER_CA, protocol=SERVER_PROTOCOL, + web_configfile=WEB_CFILE, backend=SERVER_BACKEND) CRYPT_OPTIONS = dict(encrypt=ENCRYPT, @@ -969,6 +975,17 @@ CLIENT_COMMON_OPTIONS = \ CLIENT_COMMON_OPTIONS.update(DRIVER_OPTIONS) CLIENT_COMMON_OPTIONS.update(CLI_COMMON_OPTIONS) +DATABASE_COMMON_OPTIONS = dict(web_configfile=WEB_CFILE, + db_engine=DB_ENGINE, + db_name=DB_NAME, + db_user=DB_USER, + db_password=DB_PASSWORD, + db_host=DB_HOST, + db_port=DB_PORT, + time_zone=DJANGO_TIME_ZONE, + django_debug=DJANGO_DEBUG, + web_prefix=DJANGO_WEB_PREFIX) + class OptionParser(OptionSet): """ diff --git a/src/lib/Bcfg2/Server/Admin/Syncdb.py b/src/lib/Bcfg2/Server/Admin/Syncdb.py index 72d3d469e..bff232b05 100644 --- a/src/lib/Bcfg2/Server/Admin/Syncdb.py +++ b/src/lib/Bcfg2/Server/Admin/Syncdb.py @@ -8,12 +8,9 @@ class Syncdb(Bcfg2.Server.Admin.Mode): __shorthelp__ = ("Sync the Django ORM with the configured database") __longhelp__ = __shorthelp__ + "\n\nbcfg2-admin syncdb" __usage__ = "bcfg2-admin syncdb" - options = {'configfile': Bcfg2.Options.CFILE, + options = {'web_configfile': Bcfg2.Options.WEB_CFILE, 'repo': Bcfg2.Options.SERVER_REPOSITORY} - def __init__(self, setup): - Bcfg2.Server.Admin.Mode.__init__(self, setup) - def __call__(self, args): import Bcfg2.Server.Admin Bcfg2.Server.Admin.Mode.__call__(self, args) @@ -26,7 +23,7 @@ class Syncdb(Bcfg2.Server.Admin.Mode): # the syncdb command, but we have to wait to set up the # environment until we've read the config, which has to wait # until we've parsed options. it's a windy, twisting road. - Bcfg2.settings.read_config(cfile=self.opts['configfile'], + Bcfg2.settings.read_config(cfile=self.opts['web_configfile'], repo=self.opts['repo']) setup_environ(Bcfg2.settings) import Bcfg2.Server.models diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py index 3cb4854bd..377932614 100644 --- a/src/lib/Bcfg2/Server/Core.py +++ b/src/lib/Bcfg2/Server/Core.py @@ -106,7 +106,8 @@ class BaseCore(object): # generate Django ORM settings. this must be done _before_ we # load plugins - Bcfg2.settings.read_config(cfile=self.cfile, repo=self.datastore) + Bcfg2.settings.read_config(cfile=self.setup['web_configfile'], + repo=self.datastore) self._database_available = False # verify our database schema diff --git a/src/lib/Bcfg2/settings.py b/src/lib/Bcfg2/settings.py index ae0cff070..ab71bbae5 100644 --- a/src/lib/Bcfg2/settings.py +++ b/src/lib/Bcfg2/settings.py @@ -1,6 +1,4 @@ -# TODO -# since were merging configs load and warn on deprecated fields - +import os import sys import Bcfg2.Options @@ -27,26 +25,22 @@ TEMPLATE_DEBUG = DEBUG MEDIA_URL = '/site_media' +# default config file is /etc/bcfg2-web.conf, UNLESS /etc/bcfg2.conf +# exists AND /etc/bcfg2-web.conf does not exist. +DEFAULT_CONFIG = Bcfg2.Options.WEB_CFILE.default +if (not os.path.exists(Bcfg2.Options.WEB_CFILE.default) and + os.path.exists(Bcfg2.Options.CFILE.default)): + DEFAULT_CONFIG = Bcfg2.Options.CFILE.default -def read_config(cfile='/etc/bcfg2.conf', repo=None, quiet=False): +def read_config(cfile=DEFAULT_CONFIG, repo=None, quiet=False): global DATABASE_ENGINE, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, \ DATABASE_HOST, DATABASE_PORT, DEBUG, TEMPLATE_DEBUG, TIME_ZONE, \ MEDIA_URL - setup = \ - Bcfg2.Options.OptionParser(dict(repo=Bcfg2.Options.SERVER_REPOSITORY, - configfile=Bcfg2.Options.CFILE, - db_engine=Bcfg2.Options.DB_ENGINE, - db_name=Bcfg2.Options.DB_NAME, - db_user=Bcfg2.Options.DB_USER, - db_password=Bcfg2.Options.DB_PASSWORD, - db_host=Bcfg2.Options.DB_HOST, - db_port=Bcfg2.Options.DB_PORT, - time_zone=Bcfg2.Options.DJANGO_TIME_ZONE, - django_debug=Bcfg2.Options.DJANGO_DEBUG, - web_prefix=Bcfg2.Options.DJANGO_WEB_PREFIX), - quiet=quiet) - setup.parse([Bcfg2.Options.CFILE.cmd, '/etc/bcfg2-web.conf', cfile]) + optinfo = Bcfg2.Options.DATABASE_COMMON_OPTIONS + optinfo['repo'] = Bcfg2.Options.SERVER_REPOSITORY + setup = Bcfg2.Options.OptionParser(optinfo, quiet=quiet) + setup.parse([Bcfg2.Options.WEB_CFILE.cmd, cfile]) if repo is None: repo = setup['repo'] -- cgit v1.2.3-1-g7c22