diff options
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r-- | src/lib/Bcfg2/Options.py | 55 |
1 files changed, 40 insertions, 15 deletions
diff --git a/src/lib/Bcfg2/Options.py b/src/lib/Bcfg2/Options.py index 37781e2ed..e768284b9 100644 --- a/src/lib/Bcfg2/Options.py +++ b/src/lib/Bcfg2/Options.py @@ -1,11 +1,12 @@ """Option parsing library for utilities.""" -import re -import os -import sys import copy -import shlex import getopt +import inspect +import os +import re +import shlex +import sys import Bcfg2.Client.Tools # Compatibility imports from Bcfg2.Bcfg2Py3k import ConfigParser @@ -61,7 +62,8 @@ class Option(object): return value def __init__(self, desc, default, cmd=False, odesc=False, - env=False, cf=False, cook=False, long_arg=False): + env=False, cf=False, cook=False, long_arg=False, + deprecated_cf=None): self.desc = desc self.default = default self.cmd = cmd @@ -75,6 +77,7 @@ class Option(object): self.odesc = odesc self.env = env self.cf = cf + self.deprecated_cf = deprecated_cf self.boolean = False if not odesc and not cook and isinstance(self.default, bool): self.boolean = True @@ -134,6 +137,15 @@ class Option(object): return except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): pass + if self.deprecated_cf: + try: + self.value = self.get_cooked_value(configparser.get(*self.deprecated_cf)) + print "Warning: [%s] %s is deprecated, use [%s] %s instead" % \ + (self.cf[0], self.cf[1], self.deprecated_cf[0], self.deprecated_cf[1]) + return + except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): + pass + # Default value not cooked self.value = self.default @@ -149,8 +161,14 @@ class OptionSet(dict): self.cfp = DefaultConfigParser() if (len(self.cfp.read(self.cfile)) == 0 and ('quiet' not in kwargs or not kwargs['quiet'])): - print("Warning! Unable to read specified configuration file: %s" % - self.cfile) + # suppress warnings if called from bcfg2-admin init + caller = inspect.stack()[-1][1].split('/')[-1] + if caller == 'bcfg2-admin' and len(sys.argv) > 1: + if sys.argv[1] == 'init': + return + else: + print("Warning! Unable to read specified configuration file: %s" % + self.cfile) def buildGetopt(self): return ''.join([opt.buildGetopt() for opt in list(self.values())]) @@ -428,28 +446,34 @@ SERVER_BACKEND = \ # database options DB_ENGINE = \ Option('Database engine', - default='django.db.backends.sqlite3', - cf=('database', 'engine')) + default='sqlite3', + cf=('database', 'engine'), + deprecated_cf=('statistics', 'database_engine')) DB_NAME = \ Option('Database name', default=os.path.join(SERVER_REPOSITORY.default, "bcfg2.sqlite"), - cf=('database', 'name')) + cf=('database', 'name'), + deprecated_cf=('statistics', 'database_name')) DB_USER = \ Option('Database username', default=None, - cf=('database', 'user')) + cf=('database', 'user'), + deprecated_cf=('statistics', 'database_user')) DB_PASSWORD = \ Option('Database password', default=None, - cf=('database', 'password')) + cf=('database', 'password'), + deprecated_cf=('statistics', 'database_password')) DB_HOST = \ Option('Database host', default='localhost', - cf=('database', 'host')) + cf=('database', 'host'), + deprecated_cf=('statistics', 'database_host')) DB_PORT = \ Option('Database port', default='', - cf=('database', 'port'),) + cf=('database', 'port'), + deprecated_cf=('statistics', 'database_port')) # Django options DJANGO_TIME_ZONE = \ @@ -459,7 +483,8 @@ DJANGO_TIME_ZONE = \ DJANGO_DEBUG = \ Option('Django debug', default=None, - cf=('statistics', 'debug'),) + cf=('statistics', 'web_debug'), + cook=get_bool,) # Django options DJANGO_WEB_PREFIX = \ Option('Web prefix', |