diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-27 20:48:15 -0400 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2012-08-27 21:00:37 -0400 |
commit | 9d4f01972775eb6c601f5a7f55715002df2fecb1 (patch) | |
tree | 76d50c71915e19767495301abb34fed42ac3a1a4 /src/lib/Bcfg2/Server | |
parent | c07cc475cbafec24e747d6907f3bf7257e441934 (diff) | |
download | bcfg2-9d4f01972775eb6c601f5a7f55715002df2fecb1.tar.gz bcfg2-9d4f01972775eb6c601f5a7f55715002df2fecb1.tar.bz2 bcfg2-9d4f01972775eb6c601f5a7f55715002df2fecb1.zip |
added better common walk_packages implementation for python 2.4 and 2.5
Conflicts:
src/lib/Bcfg2/Client/Tools/__init__.py
Diffstat (limited to 'src/lib/Bcfg2/Server')
-rw-r--r-- | src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py | 27 | ||||
-rw-r--r-- | src/lib/Bcfg2/Server/SchemaUpdater/__init__.py | 22 |
2 files changed, 9 insertions, 40 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py index 1cce36f4b..08b873948 100644 --- a/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py +++ b/src/lib/Bcfg2/Server/Plugins/Cfg/__init__.py @@ -4,12 +4,11 @@ import re import os import sys import stat -import pkgutil import logging import lxml.etree import Bcfg2.Options import Bcfg2.Server.Plugin -from Bcfg2.Compat import u_str, unicode, b64encode +from Bcfg2.Compat import u_str, unicode, b64encode, walk_packages import Bcfg2.Server.Lint logger = logging.getLogger(__name__) @@ -153,24 +152,12 @@ class CfgEntrySet(Bcfg2.Server.Plugin.EntrySet): global PROCESSORS if PROCESSORS is None: PROCESSORS = [] - if hasattr(pkgutil, 'walk_packages'): - submodules = pkgutil.walk_packages(path=__path__) - else: - #python 2.4 - import glob - submodules = [] - for path in __path__: - for submodule in glob.glob(os.path.join(path, "*.py")): - mod = '.'.join(submodule.split("/")[-1].split('.')[:-1]) - if mod != '__init__': - submodules.append((None, mod, True)) - - for submodule in submodules: - module = getattr(__import__("%s.%s" % - (__name__, - submodule[1])).Server.Plugins.Cfg, - submodule[1]) - proc = getattr(module, submodule[1]) + for submodule in walk_packages(path=__path__, + prefix=__name__ + "."): + mname = submodule[1].rsplit('.', 1)[-1] + module = getattr(__import__(submodule[1]).Server.Plugins.Cfg, + mname) + proc = getattr(module, mname) if set(proc.__mro__).intersection([CfgInfo, CfgFilter, CfgGenerator, CfgVerifier]): PROCESSORS.append(proc) diff --git a/src/lib/Bcfg2/Server/SchemaUpdater/__init__.py b/src/lib/Bcfg2/Server/SchemaUpdater/__init__.py index 79c144811..e7a3191bc 100644 --- a/src/lib/Bcfg2/Server/SchemaUpdater/__init__.py +++ b/src/lib/Bcfg2/Server/SchemaUpdater/__init__.py @@ -2,12 +2,11 @@ from django.db import connection, DatabaseError from django.core.exceptions import ImproperlyConfigured import django.core.management import logging -import pkgutil import re import sys import traceback -from Bcfg2.Compat import CmpMixin +from Bcfg2.Compat import CmpMixin, walk_packages from Bcfg2.Server.models import InternalDatabaseVersion from Bcfg2.Server.SchemaUpdater.Routines import UpdaterRoutineException, \ UpdaterRoutine @@ -23,18 +22,6 @@ class SchemaTooOldError(UpdaterError): pass -def _walk_packages(paths): - """Python 2.4 lacks this routine""" - import glob - submodules = [] - for path in paths: - for submodule in glob.glob("%s/*.py" % path): - mod = '.'.join(submodule.split("/")[-1].split('.')[:-1]) - if mod != '__init__': - submodules.append((None, mod, False)) - return submodules - - def _release_to_version(release): """ Build a release base for a version @@ -207,12 +194,7 @@ def update_database(): logger.debug("Verifying database schema") updaters = [] - if hasattr(pkgutil, 'walk_packages'): - submodules = pkgutil.walk_packages(path=Changes.__path__) - else: - #python 2.4 - submodules = _walk_packages(Changes.__path__) - for loader, submodule, ispkg in submodules: + for loader, submodule, ispkg in walk_packages(path=Changes.__path__): if ispkg: continue try: |