]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
install: make extra_packages distro-agnostic (in a limited way)
authorNathan Cutler <ncutler@suse.com>
Fri, 20 Jul 2018 14:20:31 +0000 (16:20 +0200)
committerNathan Cutler <ncutler@suse.com>
Wed, 1 Aug 2018 14:53:14 +0000 (16:53 +0200)
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 <ncutler@suse.com>
teuthology/task/install/__init__.py

index 458b2c2b842a17cf2f8af973e9d6066d8348cc3c..3bb66a13c75bf195af96aa92d861e199de2dc3fa 100644 (file)
@@ -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