def repo_install(distro, reponame, baseurl, gpgkey, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop("components", [])) # Get some defaults name = kw.get("name", "%s repo" % reponame) enabled = kw.get("enabled", 1) gpgcheck = kw.get("gpgcheck", 1) install_ceph = kw.pop("install_ceph", False) proxy = kw.get("proxy") _type = "repo-md" baseurl = baseurl.strip("/") # Remove trailing slashes 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, ) distro.conn.remote_module.write_file("/etc/zypp/repos.d/%s" % (reponame), repo_content) # Some custom repos do not need to install ceph if install_ceph and packages: distro.packager.install(packages)
def repo_install(distro, repo_name, baseurl, gpgkey, **kw): packages = map_components( NON_SPLIT_COMPONENTS, kw.pop('components', []) ) # Get some defaults safe_filename = '%s.list' % repo_name.replace(' ', '-') install_ceph = kw.pop('install_ceph', False) baseurl = baseurl.strip('/') # Remove trailing slashes distro.packager.add_repo_gpg_key(gpgkey) distro.conn.remote_module.write_sources_list( baseurl, distro.codename, safe_filename ) # set the repo priority for the right domain fqdn = urlparse(baseurl).hostname distro.conn.remote_module.set_apt_priority(fqdn) # repo is not operable until an update distro.packager.clean() if install_ceph and packages: distro.packager.install(packages)
def repo_install(distro, reponame, baseurl, gpgkey, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop('components', [])) # Get some defaults name = kw.get('name', '%s repo' % reponame) enabled = kw.get('enabled', 1) gpgcheck = kw.get('gpgcheck', 1) install_ceph = kw.pop('install_ceph', False) proxy = kw.get('proxy') _type = 'repo-md' baseurl = baseurl.strip('/') # Remove trailing slashes 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, ) distro.conn.remote_module.write_file('/etc/zypp/repos.d/%s' % (reponame), repo_content) # Some custom repos do not need to install ceph if install_ceph and packages: distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, extra_installs=True, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop('components', [])) repo_url = repo_url.strip('/') # Remove trailing slashes gpgcheck = kw.pop('gpgcheck', 1) distro.packager.clean() if adjust_repos: if gpg_url: distro.packager.add_repo_gpg_key(gpg_url) ceph_repo_content = templates.ceph_repo.format( repo_url=repo_url, gpg_url=gpg_url, gpgcheck=gpgcheck, ) content = kw.get('repo_content', ceph_repo_content) distro.conn.remote_module.write_yum_repo(content) # set the right priority if distro.packager.name == 'yum': distro.packager.install('yum-plugin-priorities') distro.conn.remote_module.set_repo_priority( ['Ceph', 'Ceph-noarch', 'ceph-source']) distro.conn.logger.warning( 'altered ceph.repo priorities to contain: priority=1') if extra_installs and packages: distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.get('components', []) ) repo_url = repo_url.strip('/') # Remove trailing slashes gpg_url_path = gpg_url.split('file://')[-1] # Remove file if present gpgcheck = kw.pop('gpgcheck', 1) if adjust_repos: remoto.process.run( distro.conn, [ 'rpm', '--import', gpg_url_path, ] ) ceph_repo_content = templates.zypper_repo.format( repo_url=repo_url, gpg_url=gpg_url, gpgcheck=gpgcheck, ) distro.conn.remote_module.write_file( '/etc/zypp/repos.d/ceph.repo', ceph_repo_content.encode('utf-8')) distro.packager.clean() if packages: distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, extra_installs=True, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) repo_url = repo_url.strip('/') # Remove trailing slashes gpgcheck = kw.pop('gpgcheck', 1) distro.packager.clean() if adjust_repos: if gpg_url: distro.packager.add_repo_gpg_key(gpg_url) ceph_repo_content = templates.ceph_repo.format( repo_url=repo_url, gpg_url=gpg_url, gpgcheck=gpgcheck, ) content = kw.get('repo_content', ceph_repo_content) distro.conn.remote_module.write_yum_repo(content) # set the right priority if distro.packager.name == 'yum': distro.packager.install('yum-plugin-priorities') distro.conn.remote_module.set_repo_priority(['Ceph', 'Ceph-noarch', 'ceph-source']) distro.conn.logger.warning('altered ceph.repo priorities to contain: priority=1') if extra_installs and packages: distro.packager.install(packages)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.get('components', []) ) distro.packager.clean() if packages: distro.packager.install(packages)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop('components', [])) distro.packager.install(packages) # Start and enable services for unit in SYSTEMD_UNITS: if unit not in SYSTEMD_UNITS_SKIP_START: start_service(distro.conn, unit) if unit not in SYSTEMD_UNITS_SKIP_ENABLE: enable_service(distro.conn, unit)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components( NON_SPLIT_COMPONENTS, kw.pop('components', []) ) codename = distro.codename machine = distro.machine_type if version_kind in ['stable', 'testing']: key = 'release' else: key = 'autobuild' distro.packager.install(['ca-certificates', 'apt-transport-https']) if adjust_repos: # Wheezy does not like the download.ceph.com SSL cert protocol = 'https' if codename == 'wheezy': protocol = 'http' distro.packager.add_repo_gpg_key(gpg.url(key, protocol=protocol)) if version_kind == 'stable': url = '{protocol}://download.ceph.com/debian-{version}/'.format( protocol=protocol, version=version, ) elif version_kind == 'testing': url = '{protocol}://download.ceph.com/debian-testing/'.format( protocol=protocol, ) elif version_kind in ['dev', 'dev_commit']: url = 'http://gitbuilder.ceph.com/ceph-deb-{codename}-{machine}-basic/{sub}/{version}'.format( codename=codename, machine=machine, sub='ref' if version_kind == 'dev' else 'sha1', version=version, ) else: raise RuntimeError('Unknown version kind: %r' % version_kind) # set the repo priority for the right domain fqdn = urlparse(url).hostname distro.conn.remote_module.set_apt_priority(fqdn) distro.conn.remote_module.write_sources_list(url, codename) distro.packager.clean() # TODO this does not downgrade -- should it? if packages: distro.packager.install( packages, extra_install_flags=['-o', 'Dpkg::Options::=--force-confnew'] )
def repo_install(distro, reponame, baseurl, gpgkey, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) 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 distro.packager.clean() if gpgkey: distro.packager.add_repo_gpg_key(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'): if distro.packager.name == 'yum': distro.packager.install('yum-plugin-priorities') 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 and packages: distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.get("components", [])) repo_url = repo_url.strip("/") # Remove trailing slashes gpg_url_path = gpg_url.split("file://")[-1] # Remove file if present if adjust_repos: remoto.process.run(distro.conn, ["rpm", "--import", gpg_url_path]) ceph_repo_content = templates.zypper_repo.format(repo_url=repo_url, gpg_url=gpg_url) distro.conn.remote_module.write_file("/etc/zypp/repos.d/ceph.repo", ceph_repo_content) distro.packager.clean() if packages: distro.packager.install(packages)
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 = 'el7' machine = distro.machine_type if version_kind in ['stable', 'testing']: key = 'release' else: key = 'autobuild' print packages distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, **kw): packages = map_components(NON_SPLIT_COMPONENTS, kw.pop('components', [])) repo_url = repo_url.strip('/') # Remove trailing slashes if adjust_repos: distro.packager.add_repo_gpg_key(gpg_url) # set the repo priority for the right domain fqdn = urlparse(repo_url).hostname distro.conn.remote_module.set_apt_priority(fqdn) distro.conn.remote_module.write_sources_list(repo_url, distro.codename) if packages: distro.packager.clean() distro.packager.install(packages)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) distro.packager.install( packages ) # Start and enable services for unit in SYSTEMD_UNITS: if unit not in SYSTEMD_UNITS_SKIP_START: start_service(distro.conn, unit) if unit not in SYSTEMD_UNITS_SKIP_ENABLE: enable_service(distro.conn, unit)
def repo_install(distro, reponame, baseurl, gpgkey, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop("components", [])) 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 distro.packager.clean() if gpgkey: distro.packager.add_repo_gpg_key(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"): if distro.packager.name == "yum": distro.packager.install("yum-plugin-priorities") 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 and packages: distro.packager.install(packages)
def repo_install(distro, reponame, baseurl, gpgkey, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) # Get some defaults name = kw.get('name', '%s repo' % reponame) enabled = kw.get('enabled', 1) gpgcheck = kw.get('gpgcheck', 1) install_ceph = kw.pop('install_ceph', False) proxy = kw.get('proxy') _type = 'repo-md' baseurl = baseurl.strip('/') # Remove trailing slashes 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, ) distro.conn.remote_module.write_file( '/etc/zypp/repos.d/%s' % (reponame), repo_content.encode('utf-8') ) # Some custom repos do not need to install ceph if install_ceph and packages: distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, **kw): packages = map_components( NON_SPLIT_COMPONENTS, kw.pop('components', []) ) repo_url = repo_url.strip('/') # Remove trailing slashes if adjust_repos: distro.packager.add_repo_gpg_key(gpg_url) # set the repo priority for the right domain fqdn = urlparse(repo_url).hostname distro.conn.remote_module.set_apt_priority(fqdn) distro.conn.remote_module.write_sources_list(repo_url, distro.codename) if packages: distro.packager.clean() distro.packager.install(packages)
def mirror_install(distro, repo_url, gpg_url, adjust_repos, extra_installs=True, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop("components", [])) repo_url = repo_url.strip("/") # Remove trailing slashes distro.packager.clean() if adjust_repos: distro.packager.add_repo_gpg_key(gpg_url) 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 if distro.packager.name == "yum": distro.packager.install("yum-plugin-priorities") distro.conn.remote_module.set_repo_priority(["Ceph", "Ceph-noarch", "ceph-source"]) distro.conn.logger.warning("altered ceph.repo priorities to contain: priority=1") if extra_installs and packages: distro.packager.install(packages)
def test_map_components_no_components(self): packages = map_components(['ceph-mon'], []) assert len(packages) == 0
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) distro.packager.install(packages)
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 machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install('epel-release') distro.packager.install('yum-plugin-priorities') 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 in ['stable', 'testing']: repo_suffix = 'el' if distro.normalized_name == 'eurolinux' else 'lp' repo_mapping = { 'name': 'ceph-{suffix}'.format(suffix=repo_suffix), 'baseurl': 'https://repo.eurolinux.local/ceph/14_{suffix}/prod/'.format( suffix=repo_suffix), 'gpgcheck': '1', # actually it's prefix but nvm 'gpgkey_url': 'https://repo.eurolinux.local/ceph/{suffix}_gpg.key'.format( suffix=repo_suffix), 'ssl_verify': '0' } yum_repo_text = '[{name}]\nname=Ceph {name}\nbaseurl={baseurl}' + \ '\ngpgcheck={gpgcheck}\ngpgkey={gpgkey_url}\nsslverify={ssl_verify}' distro.conn.remote_module.write_yum_repo(yum_repo_text) elif version_kind in ['dev', 'dev_commit']: logger.info('skipping install of ceph-release package') logger.info('repo file will be created manually') shaman_url = 'https://shaman.ceph.com/api/repos/ceph/{version}/{sha1}/{distro}/{distro_version}/repo/?arch={arch}'.format( distro=distro.normalized_name, distro_version=distro.normalized_release.major, version=kw['args'].dev, sha1=kw['args'].dev_commit or 'latest', arch=machine) LOG.debug('fetching repo information from: %s' % shaman_url) content = net.get_chacra_repo(shaman_url) mirror_install( distro, '', # empty repo_url None, # no need to use gpg here, repos are unsigned adjust_repos=True, extra_installs=False, gpgcheck=gpgcheck, repo_content=content) else: raise Exception('unrecognized version_kind %s' % version_kind) # 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') if packages: distro.packager.install(packages)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop("components", [])) logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install("epel-release") distro.packager.install("yum-plugin-priorities") 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 in ["stable", "testing"]: distro.packager.add_repo_gpg_key(gpg.url(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), ], ) 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-centos{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, ) else: raise Exception("unrecognized version_kind %s" % version_kind) # 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") if packages: distro.packager.install(packages)
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components(NON_SPLIT_PACKAGES, kw.pop('components', [])) logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install('epel-release') distro.packager.install('yum-plugin-priorities') 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': distro.packager.add_repo_gpg_key(gpg.url(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), 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') if packages: distro.packager.install(packages)
def test_map_components_no_duplicates(self): components = ['ceph-mon', 'ceph-osd', 'ceph-mds'] packages = map_components(['ceph-mds', 'ceph-osd'], components) assert set(packages) == set(['ceph-mon', 'ceph']) assert len(packages) == len(set(['ceph-mon', 'ceph']))
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 machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install('epel-release') distro.packager.install('yum-plugin-priorities') 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 in ['stable', 'testing']: distro.packager.add_repo_gpg_key(gpg.url(key)) if version_kind == 'stable': url = 'https://download.ceph.com/rpm-{version}/{repo}/'.format( version=version, repo=repo_part, ) elif version_kind == 'testing': url = 'https://download.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), ], ) elif version_kind in ['dev', 'dev_commit']: logger.info('skipping install of ceph-release package') logger.info('repo file will be created manually') shaman_url = 'https://shaman.ceph.com/api/repos/ceph/{version}/{sha1}/{distro}/{distro_version}/repo/?arch={arch}'.format( distro=distro.normalized_name, distro_version=distro.normalized_release.major, version=kw['args'].dev, sha1=kw['args'].dev_commit or 'latest', arch=machine) LOG.debug('fetching repo information from: %s' % shaman_url) content = net.get_chacra_repo(shaman_url) mirror_install( distro, '', # empty repo_url None, # no need to use gpg here, repos are unsigned adjust_repos=True, extra_installs=False, gpgcheck=gpgcheck, repo_content=content) else: raise Exception('unrecognized version_kind %s' % version_kind) # 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') if packages: distro.packager.install(packages)
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 machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install('epel-release') distro.packager.install('yum-plugin-priorities') 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 in ['stable', 'testing']: distro.packager.add_repo_gpg_key(gpg.url(key)) if version_kind == 'stable': url = 'https://download.ceph.com/rpm-{version}/{repo}/'.format( version=version, repo=repo_part, ) elif version_kind == 'testing': url = 'https://download.ceph.com/rpm-testing/{repo}/'.format(repo=repo_part) # remove any old ceph-release package from prevoius release remoto.process.run( distro.conn, [ 'yum', 'remove', '-y', 'ceph-release' ], ) remoto.process.run( distro.conn, [ 'yum', 'install', '-y', '{url}noarch/ceph-release-1-0.{dist}.noarch.rpm'.format(url=url, dist=dist), ], ) elif version_kind in ['dev', 'dev_commit']: logger.info('skipping install of ceph-release package') logger.info('repo file will be created manually') shaman_url = 'https://shaman.ceph.com/api/repos/ceph/{version}/{sha1}/{distro}/{distro_version}/repo/?arch={arch}'.format( distro=distro.normalized_name, distro_version=distro.normalized_release.major, version=kw['args'].dev, sha1=kw['args'].dev_commit or 'latest', arch=machine ) LOG.debug('fetching repo information from: %s' % shaman_url) content = net.get_chacra_repo(shaman_url) mirror_install( distro, '', # empty repo_url None, # no need to use gpg here, repos are unsigned adjust_repos=True, extra_installs=False, gpgcheck=gpgcheck, repo_content=content ) else: raise Exception('unrecognized version_kind %s' % version_kind) # 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') if packages: distro.packager.install(packages)
def test_map_components_all_split(self): components = ['ceph-mon', 'ceph-osd'] packages = map_components([], components) assert set(packages) == set(components)
def test_map_components_mds_not_split(self): components = ['ceph-mon', 'ceph-osd', 'ceph-mds'] packages = map_components(['ceph-mds'], components) assert set(packages) == set(['ceph-mon', 'ceph-osd', 'ceph'])
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) 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 ) else: raise Exception('unrecognized version_kind %s' % version_kind) distro.packager.install( packages )
def install(distro, version_kind, version, adjust_repos, **kw): packages = map_components( NON_SPLIT_PACKAGES, kw.pop('components', []) ) logger = distro.conn.logger release = distro.release machine = distro.machine_type repo_part = repository_url_part(distro) dist = rpm_dist(distro) distro.packager.clean() # Get EPEL installed before we continue: if adjust_repos: distro.packager.install('epel-release') distro.packager.install('yum-plugin-priorities') 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': distro.packager.add_repo_gpg_key(gpg.url(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), 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') if packages: distro.packager.install(packages)