From 89b2d85439be439b427a575d5b89ed452e1e7248 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Thu, 26 Jan 2012 08:29:00 -0500 Subject: suppress error message from bcfg2-admin Reports module if Reports not configured (#1056) --- src/lib/Server/Admin/Reports.py | 20 ++++++++------------ src/lib/Server/Admin/__init__.py | 1 - src/lib/Server/Reports/settings.py | 10 ++++------ src/sbin/bcfg2-admin | 5 ++--- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/lib/Server/Admin/Reports.py b/src/lib/Server/Admin/Reports.py index 3f25f11af..bdfa5c2d6 100644 --- a/src/lib/Server/Admin/Reports.py +++ b/src/lib/Server/Admin/Reports.py @@ -8,9 +8,6 @@ import pickle import platform import sys import traceback -from Bcfg2.Server.Reports.importscript import load_stats -from Bcfg2.Server.Reports.updatefix import update_database -from Bcfg2.Server.Reports.utils import * from lxml.etree import XML, XMLSyntaxError # Compatibility import @@ -22,16 +19,15 @@ if sys.version_info >= (2, 5): else: from md5 import md5 -# Load django -import django.core.management - +# Prereq issues can be signaled with ImportError, so no try needed # FIXME - settings file uses a hardcoded path for /etc/bcfg2.conf -try: - import Bcfg2.Server.Reports.settings -except Exception: - e = sys.exc_info()[1] - sys.stderr.write("Failed to load configuration settings. %s\n" % e) - raise SystemExit(1) +import Bcfg2.Server.Reports.settings + +# Load django and reports stuff _after_ we know we can load settings +import django.core.management +from Bcfg2.Server.Reports.importscript import load_stats +from Bcfg2.Server.Reports.updatefix import update_database +from Bcfg2.Server.Reports.utils import * project_directory = os.path.dirname(Bcfg2.Server.Reports.settings.__file__) project_name = os.path.basename(project_directory) diff --git a/src/lib/Server/Admin/__init__.py b/src/lib/Server/Admin/__init__.py index 96d9703ba..d71d789e7 100644 --- a/src/lib/Server/Admin/__init__.py +++ b/src/lib/Server/Admin/__init__.py @@ -8,7 +8,6 @@ __all__ = [ 'Group', 'Init', 'Minestruct', - 'Mode', 'Perf', 'Pull', 'Query', diff --git a/src/lib/Server/Reports/settings.py b/src/lib/Server/Reports/settings.py index 2b35d0d05..952e3eae6 100644 --- a/src/lib/Server/Reports/settings.py +++ b/src/lib/Server/Reports/settings.py @@ -6,9 +6,8 @@ from Bcfg2.Bcfg2Py3k import ConfigParser # Django settings for bcfg2 reports project. c = ConfigParser.ConfigParser() if len(c.read(['/etc/bcfg2.conf', '/etc/bcfg2-web.conf'])) == 0: - print("Please check that bcfg2.conf or bcfg2-web.conf exists " - "and is readable by your web server.") - sys.exit(1) + raise ImportError("Please check that bcfg2.conf or bcfg2-web.conf exists " + "and is readable by your web server.") try: DEBUG = c.getboolean('statistics', 'web_debug') @@ -30,8 +29,7 @@ try: db_engine = c.get('statistics', 'database_engine') except ConfigParser.NoSectionError: e = sys.exc_info()[1] - print("Failed to determine database engine: %s" % e) - sys.exit(1) + raise ImportError("Failed to determine database engine: %s" % e) db_name = '' if c.has_option('statistics', 'database_name'): db_name = c.get('statistics', 'database_name') @@ -122,7 +120,7 @@ AUTHORIZED_GROUP = '' try: import django.contrib.auth except ImportError: - print('Import of Django module failed. Is Django installed?') + raise ImportError('Import of Django module failed. Is Django installed?') django.contrib.auth.LOGIN_URL = '/login' SESSION_EXPIRE_AT_BROWSER_CLOSE = True diff --git a/src/sbin/bcfg2-admin b/src/sbin/bcfg2-admin index 386c8dd47..6a502afde 100755 --- a/src/sbin/bcfg2-admin +++ b/src/sbin/bcfg2-admin @@ -6,13 +6,12 @@ import logging import Bcfg2.Server.Core import Bcfg2.Logger import Bcfg2.Options +import Bcfg2.Server.Admin # Compatibility import from Bcfg2.Bcfg2Py3k import StringIO log = logging.getLogger('bcfg2-admin') -import Bcfg2.Server.Admin - def mode_import(modename): """Load Bcfg2.Server.Admin..""" modname = modename.capitalize() @@ -66,7 +65,7 @@ def main(): if setup['args'][0] in get_modes(): modname = setup['args'][0].capitalize() - if len(setup['args']) > 1 and setup['args'][1] == 'help': + if len(setup['args']) > 1 and setup['args'][1] == 'help': print(mode_import(modname).__longhelp__) raise SystemExit(0) try: -- cgit v1.2.3-1-g7c22