--- a/ceph_deploy/hosts/photon/install.py 2017-03-30 23:17:51.357073655 +0000 +++ b/ceph_deploy/hosts/photon/install.py 2017-03-30 21:59:36.921406467 +0000 @@ -0,0 +1,88 @@ +from ceph_deploy.lib import remoto +from ceph_deploy.hosts.centos.install import repo_install, mirror_install # noqa +from ceph_deploy.util.paths import gpg +from ceph_deploy.hosts.common import map_components + + +NON_SPLIT_PACKAGES = ['ceph-osd', 'ceph-mon', 'ceph-mds'] + + +def install(distro, version_kind, version, adjust_repos, **kw): + packages = map_components( + NON_SPLIT_PACKAGES, + kw.pop('components', []) + ) + gpgcheck = kw.pop('gpgcheck', 1) + + logger = distro.conn.logger + release = distro.release + machine = distro.machine_type + + if version_kind in ['stable', 'testing']: + key = 'release' + else: + key = 'autobuild' + + if adjust_repos: + if distro.packager.name == 'yum': + distro.packager.install('yum-plugin-priorities') + # haven't been able to determine necessity of check_obsoletes with DNF + distro.conn.remote_module.enable_yum_priority_obsoletes() + logger.warning('check_obsoletes has been enabled for Yum priorities plugin') + + if version_kind in ['stable', 'testing']: + distro.packager.add_repo_gpg_key(gpg.url(key)) + + if version_kind == 'stable': + url = 'https://download.ceph.com/rpm-{version}/fc{release}/'.format( + version=version, + release=release, + ) + elif version_kind == 'testing': + url = 'https://download.ceph.com/rpm-testing/fc{release}'.format( + release=release, + ) + + remoto.process.run( + distro.conn, + [ + 'rpm', + '-Uvh', + '--replacepkgs', + '--force', + '--quiet', + '{url}noarch/ceph-release-1-0.fc{release}.noarch.rpm'.format( + url=url, + release=release, + ), + ] + ) + + # set the right priority + logger.warning('ensuring that /etc/yum.repos.d/ceph.repo contains a high priority') + distro.conn.remote_module.set_repo_priority(['Ceph', 'Ceph-noarch', 'ceph-source']) + logger.warning('altered ceph.repo priorities to contain: priority=1') + + elif version_kind in ['dev', 'dev_commit']: + logger.info('skipping install of ceph-release package') + logger.info('repo file will be created manually') + mirror_install( + distro, + 'http://gitbuilder.ceph.com/ceph-rpm-fc{release}-{machine}-basic/{sub}/{version}/'.format( + release=release.split(".", 1)[0], + machine=machine, + sub='ref' if version_kind == 'dev' else 'sha1', + version=version), + gpg.url(key), + adjust_repos=True, + extra_installs=False, + gpgcheck=gpgcheck, + ) + + else: + raise Exception('unrecognized version_kind %s' % version_kind) + + print packages + distro.packager.install( + packages + )