summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Bcfg2')
-rw-r--r--src/lib/Bcfg2/Logger.py10
-rw-r--r--src/lib/Bcfg2/Options.py55
-rw-r--r--src/lib/Bcfg2/Server/Admin/Init.py2
-rw-r--r--src/lib/Bcfg2/Server/Core.py9
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Hostbase.py23
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Yum.py10
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Pkgmgr.py1
-rw-r--r--src/lib/Bcfg2/settings.py2
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'],