From 9d4f01972775eb6c601f5a7f55715002df2fecb1 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 27 Aug 2012 20:48:15 -0400 Subject: added better common walk_packages implementation for python 2.4 and 2.5 Conflicts: src/lib/Bcfg2/Client/Tools/__init__.py --- src/lib/Bcfg2/Client/Tools/POSIX/__init__.py | 26 ++++++-------------------- src/lib/Bcfg2/Client/Tools/__init__.py | 20 +++----------------- 2 files changed, 9 insertions(+), 37 deletions(-) (limited to 'src/lib/Bcfg2/Client') diff --git a/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py b/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py index 6316c749c..a0a8ac9f2 100644 --- a/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py +++ b/src/lib/Bcfg2/Client/Tools/POSIX/__init__.py @@ -4,9 +4,9 @@ import os import re import sys import shutil -import pkgutil from datetime import datetime import Bcfg2.Client.Tools +from Bcfg2.Compat import walk_packages try: from base import POSIXTool except ImportError: @@ -45,26 +45,12 @@ class POSIX(Bcfg2.Client.Tools.Tool): # this must be called at run-time, not at compile-time, or we # get wierd circular import issues. self._handlers = dict() - 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 = os.path.splitext(os.path.basename(submodule))[0] - if mod not in ['__init__']: - submodules.append((None, mod, True)) - - for submodule in submodules: - if submodule[1] == 'base': + for submodule in walk_packages(path=__path__, prefix=__name__ + "."): + mname = submodule[1].rsplit('.', 1)[-1] + if mname == 'base': continue - module = getattr(__import__("%s.%s" % - (__name__, - submodule[1])).Client.Tools.POSIX, - submodule[1]) - hdlr = getattr(module, "POSIX" + submodule[1]) + module = getattr(__import__(submodule[1]).Client.Tools.POSIX, mname) + hdlr = getattr(module, "POSIX" + mname) if POSIXTool in hdlr.__mro__: # figure out what entry type this handler handles etype = hdlr.__name__[5:].lower() diff --git a/src/lib/Bcfg2/Client/Tools/__init__.py b/src/lib/Bcfg2/Client/Tools/__init__.py index b38eca739..b058ae16c 100644 --- a/src/lib/Bcfg2/Client/Tools/__init__.py +++ b/src/lib/Bcfg2/Client/Tools/__init__.py @@ -3,25 +3,11 @@ import os import sys import stat import time -import pkgutil from subprocess import Popen, PIPE - import Bcfg2.Client.XML -from Bcfg2.Compat import input - -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 = os.path.splitext(os.path.basename(submodule))[0] - if mod not in ['__init__']: - submodules.append((None, mod, True)) - -__all__ = [m[1] for m in submodules] +from Bcfg2.Compat import input, walk_packages + +__all__ = [m[1] for m in walk_packages(path=__path__)] drivers = [item for item in __all__ if item not in ['rpmtools']] default = [item for item in drivers if item not in ['RPM', 'Yum']] -- cgit v1.2.3-1-g7c22