diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/Bcfg2/Logger.py | 10 | ||||
-rw-r--r-- | src/lib/Bcfg2/Options.py | 55 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Admin/Init.py | 2 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Core.py | 9 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Hostbase.py | 23 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Packages/Yum.py | 10 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Pkgmgr.py | 1 | ||||
-rw-r--r-- | src/lib/Bcfg2/settings.py | 2 |
8 files changed, 72 insertions, 40 deletions
diff --git a/src/lib/Bcfg2/Logger.py b/src/lib/Bcfg2/Logger.py index 81b45550f..903209ac3 100644 --- a/src/lib/Bcfg2/Logger.py +++ b/src/lib/Bcfg2/Logger.py @@ -57,9 +57,11 @@ class TermiosFormatter(logging.Formatter): lines = int(math.ceil(float(len(record.msg)) / columns)) for lineNumber in range(lines): indices = [idx for idx in [(colNum * lines) + lineNumber - for colNum in range(columns)] if idx < len(record.msg)] - format = (len(indices) * (" %%-%ds " % columnWidth)) - returns.append(format % tuple([record.msg[idx] for idx in indices])) + for colNum in range(columns)] + if idx < len(record.msg)] + retformat = (len(indices) * (" %%-%ds " % columnWidth)) + returns.append(retformat % tuple([record.msg[idx] + for idx in indices])) else: returns.append(str(record.msg)) if record.exc_info: @@ -86,6 +88,8 @@ class FragmentingSysLogHandler(logging.handlers.SysLogHandler): error = record.exc_info record.exc_info = None msgdata = record.msg + if len(msgdata) == 0: + return while msgdata: newrec = copy.copy(record) newrec.msg = msgdata[:250] 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', diff --git a/src/lib/Bcfg2/Server/Admin/Init.py b/src/lib/Bcfg2/Server/Admin/Init.py index 65194de06..cbcef3405 100644 --- a/src/lib/Bcfg2/Server/Admin/Init.py +++ b/src/lib/Bcfg2/Server/Admin/Init.py @@ -28,7 +28,7 @@ engine = sqlite3 # 'postgresql', 'mysql', 'mysql_old', 'sqlite3' or 'ado_mssql'. name = # Or path to database file if using sqlite3. -#<repository>/etc/brpt.sqlite is default path if left empty +#<repository>/bcfg2.sqlite is default path if left empty user = # Not used with sqlite3. password = diff --git a/src/lib/Bcfg2/Server/Core.py b/src/lib/Bcfg2/Server/Core.py index 5b84a334d..660d2c3ef 100644 --- a/src/lib/Bcfg2/Server/Core.py +++ b/src/lib/Bcfg2/Server/Core.py @@ -105,13 +105,14 @@ class BaseCore(object): # verify our database schema try: from Bcfg2.Server.SchemaUpdater import update_database, UpdaterError - update_database() + try: + update_database() + except UpdaterError: + self.logger.error("Failed to update database schema") + raise CoreInitError except ImportError: # assume django is not installed pass - except UpdaterError: - self.logger.error("Failed to update database schema") - raise CoreInitError except Exception: inst = sys.exc_info()[1] self.logger.error("Failed to update database schema") diff --git a/src/lib/Bcfg2/Server/Plugins/Hostbase.py b/src/lib/Bcfg2/Server/Plugins/Hostbase.py index e9c1c1cff..69b019160 100644 --- a/src/lib/Bcfg2/Server/Plugins/Hostbase.py +++ b/src/lib/Bcfg2/Server/Plugins/Hostbase.py @@ -3,19 +3,24 @@ This file provides the Hostbase plugin. It manages dns/dhcp/nis host information """ +from lxml.etree import Element, SubElement import os +import re +from time import strftime os.environ['DJANGO_SETTINGS_MODULE'] = 'Bcfg2.Server.Hostbase.settings' -from lxml.etree import Element, SubElement import Bcfg2.Server.Plugin from Bcfg2.Server.Plugin import PluginExecutionError, PluginInitError -from time import strftime -from sets import Set from django.template import Context, loader from django.db import connection -import re # Compatibility imports from Bcfg2.Bcfg2Py3k import StringIO +try: + set +except NameError: + # deprecated since python 2.6 + from sets import Set as set + class Hostbase(Bcfg2.Server.Plugin.Plugin, Bcfg2.Server.Plugin.Structure, @@ -383,7 +388,7 @@ class Hostbase(Bcfg2.Server.Plugin.Plugin, """) hostbase = cursor.fetchall() domains = [host[0].split(".", 1)[1] for host in hostbase] - domains_set = Set(domains) + domains_set = set(domains) domain_data = [(domain, domains.count(domain)) for domain in domains_set] domain_data.sort() @@ -393,7 +398,7 @@ class Hostbase(Bcfg2.Server.Plugin.Plugin, ips = cursor.fetchall() three_octets = [ip[0].rstrip('0123456789').rstrip('.') \ for ip in ips] - three_octets_set = Set(three_octets) + three_octets_set = set(three_octets) three_octets_data = [(octet, three_octets.count(octet)) \ for octet in three_octets_set] three_octets_data.sort() @@ -412,7 +417,7 @@ class Hostbase(Bcfg2.Server.Plugin.Plugin, append_data.append((three_octet, tuple(tosort))) two_octets = [ip.rstrip('0123456789').rstrip('.') for ip in three_octets] - two_octets_set = Set(two_octets) + two_octets_set = set(two_octets) two_octets_data = [(octet, two_octets.count(octet)) for octet in two_octets_set] two_octets_data.sort() @@ -446,7 +451,7 @@ class Hostbase(Bcfg2.Server.Plugin.Plugin, else: if appenddata[0] == ip[0]: simple = False - ips.append((appenddata[2], appenddata[0], Set(namelist), + ips.append((appenddata[2], appenddata[0], set(namelist), cnamelist, simple, appenddata[1])) appenddata = ip simple = True @@ -455,7 +460,7 @@ class Hostbase(Bcfg2.Server.Plugin.Plugin, if ip[4]: cnamelist.append(ip[4].split('.', 1)[0]) simple = False - ips.append((appenddata[2], appenddata[0], Set(namelist), + ips.append((appenddata[2], appenddata[0], set(namelist), cnamelist, simple, appenddata[1])) context = Context({ 'subnet': subnet[0], diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py index ce1d9886f..24187d7a9 100644 --- a/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py +++ b/src/lib/Bcfg2/Server/Plugins/Packages/Yum.py @@ -1,14 +1,11 @@ import os import re import sys -import time import copy -import glob import socket import logging -import threading import lxml.etree -from subprocess import Popen, PIPE, STDOUT +from subprocess import Popen, PIPE import Bcfg2.Server.Plugin from Bcfg2.Bcfg2Py3k import StringIO, cPickle, HTTPError, URLError, \ ConfigParser, file @@ -434,7 +431,7 @@ class YumCollection(Collection): default="auto")) if attrs['version'] == 'any': return attrs - + if pkgtup[1]: attrs['arch'] = pkgtup[1] if pkgtup[2]: @@ -621,7 +618,6 @@ class YumSource(Source): self.filemap, self.url_map), cache, 2) cache.close() - def load_state(self): if not self.use_yum: data = file(self.cachefile) @@ -636,7 +632,7 @@ class YumSource(Source): usettings = [{'version':self.version, 'component':comp, 'arch':arch} for comp in self.components] - else: # rawurl given + else: # rawurl given usettings = [{'version':self.version, 'component':None, 'arch':arch}] diff --git a/src/lib/Bcfg2/Server/Plugins/Pkgmgr.py b/src/lib/Bcfg2/Server/Plugins/Pkgmgr.py index 87fac9b1b..7dac907e1 100644 --- a/src/lib/Bcfg2/Server/Plugins/Pkgmgr.py +++ b/src/lib/Bcfg2/Server/Plugins/Pkgmgr.py @@ -11,6 +11,7 @@ import Bcfg2.Server.Lint try: set except NameError: + # deprecated since python 2.6 from sets import Set as set logger = logging.getLogger('Bcfg2.Plugins.Pkgmgr') diff --git a/src/lib/Bcfg2/settings.py b/src/lib/Bcfg2/settings.py index 815a9529b..ae0cff070 100644 --- a/src/lib/Bcfg2/settings.py +++ b/src/lib/Bcfg2/settings.py @@ -52,7 +52,7 @@ def read_config(cfile='/etc/bcfg2.conf', repo=None, quiet=False): repo = setup['repo'] DATABASES['default'] = \ - dict(ENGINE=setup['db_engine'], + dict(ENGINE="django.db.backends.%s" % setup['db_engine'], NAME=setup['db_name'], USER=setup['db_user'], PASSWORD=setup['db_password'], |