summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Options.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2/Options.py')
-rw-r--r--src/lib/Bcfg2/Options.py55
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',