import os import sys import tempfile possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) sys.path.insert(0, possible_topdir) from devstack import utils from devstack import settings from devstack import component from devstack.progs import common EPEL_DISTRO = settings.RHEL6 def get_epels(c, distro): cls = common.get_action_cls(settings.INSTALL, c) dummy_config = common.get_config() dummy_root = tempfile.gettempdir() instance = cls(instances=set(), distro=distro, packager=None, config=dummy_config, root=dummy_root, opts=list(), keep_old=False) if not isinstance(instance, component.PkgInstallComponent): return None else: pkgs = instance._get_pkgs_expanded() epel_pkgs = dict() for (name, info) in pkgs.items(): meta = info.get("meta") or dict() if meta and meta.get("epel"): epel_pkgs[name] = info return epel_pkgs if __name__ == "__main__": me = os.path.basename(sys.argv[0]) distro = EPEL_DISTRO for c in sorted(settings.COMPONENT_NAMES): print("Packages for %s:" % (utils.color_text(c, 'green', bold=True, underline=True))) pkgs = get_epels(c, distro) if not pkgs: print("\t- %s" % (utils.color_text('N/A', 'red'))) else: names = sorted(pkgs.keys()) for name in names: real_name = name info = pkgs.get(name) or dict() if 'version' in info: real_name = "%s (%s)" % (name, utils.color_text(str(info.get('version')), 'blue', bold=True)) print("\t- %s" % real_name)