def mirror_install(distro, repo_url, gpg_url, adjust_repos, extra_installs=True): repo_url = repo_url.strip('/') # Remove trailing slashes gpg_url_path = gpg_url.split('file://')[-1] # Remove file if present pkg_managers.yum_clean(distro.conn) if adjust_repos: remoto.process.run( distro.conn, [ 'rpm', '--import', gpg_url_path, ] ) ceph_repo_content = templates.ceph_repo.format( repo_url=repo_url, gpg_url=gpg_url ) distro.conn.remote_module.write_yum_repo(ceph_repo_content) # set the right priority install_yum_priorities(distro) distro.conn.remote_module.set_repo_priority(['Ceph', 'Ceph-noarch', 'ceph-source']) distro.conn.logger.warning('alter.d ceph.repo priorities to contain: priority=1') if extra_installs: pkg_managers.yum(distro.conn, 'ceph')
def repo_install(distro, reponame, baseurl, gpgkey, **kw): logger = distro.conn.logger # Get some defaults name = kw.pop('name', '%s repo' % reponame) enabled = kw.pop('enabled', 1) gpgcheck = kw.pop('gpgcheck', 1) install_ceph = kw.pop('install_ceph', False) proxy = kw.pop('proxy', '') # will get ignored if empty _type = 'repo-md' baseurl = baseurl.strip('/') # Remove trailing slashes pkg_managers.yum_clean(distro.conn) if gpgkey: remoto.process.run( distro.conn, [ 'rpm', '--import', gpgkey, ] ) repo_content = templates.custom_repo( reponame=reponame, name=name, baseurl=baseurl, enabled=enabled, gpgcheck=gpgcheck, _type=_type, gpgkey=gpgkey, proxy=proxy, **kw ) distro.conn.remote_module.write_yum_repo( repo_content, "%s.repo" % reponame ) repo_path = '/etc/yum.repos.d/{reponame}.repo'.format(reponame=reponame) # set the right priority if kw.get('priority'): install_yum_priorities(distro) logger.warning( 'ensuring that {repo_path} contains a high priority'.format( repo_path=repo_path) ) distro.conn.remote_module.set_repo_priority([reponame], repo_path) logger.warning('altered {reponame}.repo priorities to contain: priority=1'.format( reponame=reponame) ) # Some custom repos do not need to install ceph if install_ceph: pkg_managers.yum(distro.conn, 'ceph')
def test_fedora(self): self.distro.release = ("20", "0") self.distro.normalized_name = "fedora" util.install_yum_priorities(self.distro, _yum=self.yum) assert self.yum.call_args[0][1] == "yum-plugin-priorities"
def test_centos_five(self): self.distro.release = ("5", "0") self.distro.normalized_name = "centos" util.install_yum_priorities(self.distro, _yum=self.yum) assert self.yum.call_args[0][1] == "yum-priorities"
def install(distro, version_kind, version, adjust_repos): logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) pkg_managers.yum_clean(distro.conn) # Even before EPEL, make sure we have `wget` has_wget = distro.conn.remote_module.which('wget') if not has_wget: pkg_managers.yum(distro.conn, 'wget') # Get EPEL installed before we continue: if adjust_repos: install_epel(distro) install_yum_priorities(distro) if version_kind in ['stable', 'testing']: key = 'release' else: key = 'autobuild' if adjust_repos: if version_kind != 'dev': remoto.process.run( distro.conn, [ 'rpm', '--import', "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key) ] ) if version_kind == 'stable': url = 'http://ceph.com/rpm-{version}/{repo}/'.format( version=version, repo=repo_part, ) elif version_kind == 'testing': url = 'http://ceph.com/rpm-testing/{repo}/'.format(repo=repo_part) remoto.process.run( distro.conn, [ 'rpm', '-Uvh', '--replacepkgs', '{url}noarch/ceph-release-1-0.{dist}.noarch.rpm'.format(url=url, dist=dist), ], ) if version_kind == 'dev': 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-centos{release}-{machine}-basic/ref/{version}/'.format( release=release.split(".", 1)[0], machine=machine, version=version), "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key), adjust_repos=True, extra_installs=False ) # 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') remoto.process.run( distro.conn, [ 'yum', '-y', 'install', 'ceph', ], )
def install(distro, version_kind, version, adjust_repos): 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: install_yum_priorities(distro) if version_kind != 'dev': remoto.process.run( distro.conn, [ 'rpm', '--import', "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key) ] ) if version_kind == 'stable': url = 'http://ceph.com/rpm-{version}/fc{release}/'.format( version=version, release=release, ) elif version_kind == 'testing': url = 'http://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, ), ] ) if version_kind == 'dev': 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/ref/{version}/'.format( release=release.split(".", 1)[0], machine=machine, version=version), "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key), adjust_repos=True, extra_installs=False ) # 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') remoto.process.run( distro.conn, [ 'yum', '-y', '-q', 'install', 'ceph', ], )
def install(distro, version_kind, version, adjust_repos): logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) pkg_managers.yum_clean(distro.conn) # Get EPEL installed before we continue: if adjust_repos: install_epel(distro) install_yum_priorities(distro) 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']: key = 'release' else: key = 'autobuild' if adjust_repos: if version_kind != 'dev': remoto.process.run( distro.conn, [ 'rpm', '--import', "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key) ] ) if version_kind == 'stable': url = 'http://ceph.com/rpm-{version}/{repo}/'.format( version=version, repo=repo_part, ) elif version_kind == 'testing': url = 'http://ceph.com/rpm-testing/{repo}/'.format(repo=repo_part) remoto.process.run( distro.conn, [ 'rpm', '-Uvh', '--replacepkgs', '{url}noarch/ceph-release-1-0.{dist}.noarch.rpm'.format(url=url, dist=dist), ], ) if version_kind == 'dev': 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-centos{release}-{machine}-basic/ref/{version}/'.format( release=release.split(".", 1)[0], machine=machine, version=version), "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key), adjust_repos=True, extra_installs=False ) # 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') remoto.process.run( distro.conn, [ 'yum', '-y', 'install', 'ceph', 'radosgw', ], )
def install(distro, version_kind, version, adjust_repos): logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) pkg_managers.yum_clean(distro.conn) # Even before EPEL, make sure we have `wget` has_wget = distro.conn.remote_module.which("wget") if not has_wget: pkg_managers.yum(distro.conn, "wget") # Get EPEL installed before we continue: if adjust_repos: install_epel(distro) install_yum_priorities(distro) if version_kind in ["stable", "testing"]: key = "release" else: key = "autobuild" if adjust_repos: if version_kind != "dev": remoto.process.run( distro.conn, ["rpm", "--import", "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key)], ) if version_kind == "stable": url = "http://ceph.com/rpm-{version}/{repo}/".format(version=version, repo=repo_part) elif version_kind == "testing": url = "http://ceph.com/rpm-testing/{repo}/".format(repo=repo_part) remoto.process.run( distro.conn, [ "rpm", "-Uvh", "--replacepkgs", "{url}noarch/ceph-release-1-0.{dist}.noarch.rpm".format(url=url, dist=dist), ], ) if version_kind == "dev": 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-centos{release}-{machine}-basic/ref/{version}/".format( release=release.split(".", 1)[0], machine=machine, version=version ), "https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/{key}.asc".format(key=key), adjust_repos=True, extra_installs=False, ) # 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") remoto.process.run(distro.conn, ["yum", "-y", "install", "ceph"])
def install(distro, version_kind, version, adjust_repos, **kw): # note: when split packages for ceph land for Fedora, # `kw['components']` will have those. Unused for now. 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: install_yum_priorities(distro) distro.conn.remote_module.enable_yum_priority_obsoletes() logger.warning( 'check_obsoletes has been enabled for Yum priorities plugin') if version_kind != 'dev': remoto.process.run(distro.conn, ['rpm', '--import', gpg.url(key)]) if version_kind == 'stable': url = 'http://ceph.com/rpm-{version}/fc{release}/'.format( version=version, release=release, ) elif version_kind == 'testing': url = 'http://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, ), ]) if version_kind == 'dev': 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/ref/{version}/' .format(release=release.split(".", 1)[0], machine=machine, version=version), gpg.url(key), adjust_repos=True, extra_installs=False) # 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') remoto.process.run( distro.conn, [ 'yum', '-y', '-q', 'install', 'ceph', 'ceph-radosgw', ], )
def install(distro, version_kind, version, adjust_repos, **kw): # note: when split packages for ceph land for Fedora, # `kw['components']` will have those. Unused for now. 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: install_yum_priorities(distro) distro.conn.remote_module.enable_yum_priority_obsoletes() logger.warning('check_obsoletes has been enabled for Yum priorities plugin') if version_kind != 'dev': remoto.process.run( distro.conn, [ 'rpm', '--import', gpg.url(key) ] ) if version_kind == 'stable': url = 'http://ceph.com/rpm-{version}/fc{release}/'.format( version=version, release=release, ) elif version_kind == 'testing': url = 'http://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, ), ] ) if version_kind == 'dev': 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/ref/{version}/'.format( release=release.split(".", 1)[0], machine=machine, version=version), gpg.url(key), adjust_repos=True, extra_installs=False ) # 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') remoto.process.run( distro.conn, [ 'yum', '-y', '-q', 'install', 'ceph', 'ceph-radosgw', ], )
def test_fedora(self): self.distro.release = ('20', '0') self.distro.normalized_name = 'fedora' util.install_yum_priorities(self.distro, _yum=self.yum) assert self.yum.call_args[0][1] == 'yum-plugin-priorities'
def test_centos_five(self): self.distro.release = ('5', '0') self.distro.normalized_name = 'centos' util.install_yum_priorities(self.distro, _yum=self.yum) assert self.yum.call_args[0][1] == 'yum-priorities'