From: Nathan Cutler Date: Fri, 20 Jul 2018 14:20:31 +0000 (+0200) Subject: install: make extra_packages distro-agnostic (in a limited way) X-Git-Tag: 1.1.0~318^2~3 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=88a19ebf9fa4311e1b79f22b7904627afd790388;p=teuthology.git install: make extra_packages distro-agnostic (in a limited way) Where "distro-agnostic (in a limited way)" means: allow the user to specify different lists for DEB and RPM. This fix does not address the case when two RPM distros, or two DEB distros, have different names for a given package/capability. Fixes: http://tracker.ceph.com/issues/25020 Signed-off-by: Nathan Cutler --- diff --git a/teuthology/task/install/__init__.py b/teuthology/task/install/__init__.py index 458b2c2b84..3bb66a13c7 100644 --- a/teuthology/task/install/__init__.py +++ b/teuthology/task/install/__init__.py @@ -227,13 +227,17 @@ def install(ctx, config): package_list = get_package_list(ctx, config) debs = package_list['deb'] - rpm = package_list['rpm'] + rpms = package_list['rpm'] # pull any additional packages out of config - extra_pkgs = config.get('extra_packages') + extra_pkgs = config.get('extra_packages', []) log.info('extra packages: {packages}'.format(packages=extra_pkgs)) - debs += extra_pkgs - rpm += extra_pkgs + if isinstance(extra_pkgs, dict): + debs += extra_pkgs.get('deb', []) + rpms += extra_pkgs.get('rpm', []) + else: + debs += extra_pkgs + rpms += extra_pkgs # When extras is in the config we want to purposely not install ceph. # This is typically used on jobs that use ceph-deploy to install ceph @@ -245,8 +249,8 @@ def install(ctx, config): debs = ['ceph-test', 'ceph-fuse', 'librados2', 'librbd1', 'python-ceph'] - rpm = ['ceph-fuse', 'librbd1', 'librados2', 'ceph-test', 'python-ceph'] - package_list = dict(deb=debs, rpm=rpm) + rpms = ['ceph-fuse', 'librbd1', 'librados2', 'ceph-test', 'python-ceph'] + package_list = dict(deb=debs, rpm=rpms) install_packages(ctx, package_list, config) try: yield @@ -351,7 +355,6 @@ def upgrade_common(ctx, config, deploy_style): remotes = upgrade_remote_to_config(ctx, config) project = config.get('project', 'ceph') - # FIXME: extra_pkgs is not distro-agnostic extra_pkgs = config.get('extra_packages', []) log.info('extra packages: {packages}'.format(packages=extra_pkgs)) @@ -362,8 +365,10 @@ def upgrade_common(ctx, config, deploy_style): pkgs = get_package_list(ctx, config)[system_type] log.info("Upgrading {proj} {system_type} packages: {pkgs}".format( proj=project, system_type=system_type, pkgs=', '.join(pkgs))) - # FIXME: again, make extra_pkgs distro-agnostic - pkgs += extra_pkgs + if isinstance(extra_pkgs, dict): + pkgs += extra_pkgs.get(system_type, []) + else: + pkgs += extra_pkgs installed_version = packaging.get_package_version(remote, 'ceph-common') upgrade_version = get_upgrade_version(ctx, node, remote) @@ -462,6 +467,10 @@ def task(ctx, config): project: samba branch: foo extra_packages: ['samba'] + - install: + extra_packages: + deb: ['librados-dev', 'libradosstriper-dev'] + rpm: ['librados-devel', 'libradosstriper-devel'] - install: rhbuild: 1.3.0 playbook: downstream_setup.yml