def test_urlopen_fails(self, monkeypatch): def bad_urlopen(url): raise HTTPError('url', 500, 'error', '', StringIO()) monkeypatch.setattr(net, 'urlopen', bad_urlopen) with pytest.raises(RuntimeError): net.get_request('https://example.ceph.com')
def install(distro, version_kind, version, adjust_repos, **kw): packages = 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' if version_kind in ['dev', 'dev_commit']: 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.codename, version=kw['args'].dev, sha1=kw['args'].dev_commit or 'latest', arch=machine ) LOG.debug('fetching repo information from: %s' % shaman_url) chacra_url = net.get_request(shaman_url).geturl() content = net.get_chacra_repo(shaman_url) # set the repo priority for the right domain fqdn = urlparse(chacra_url).hostname distro.conn.remote_module.set_apt_priority(fqdn) distro.conn.remote_module.write_sources_list_content(content) extra_install_flags = ['-o', 'Dpkg::Options::=--force-confnew', '--allow-unauthenticated'] else: 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, ) 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) extra_install_flags = ['-o', 'Dpkg::Options::=--force-confnew'] distro.packager.clean() # TODO this does not downgrade -- should it? if packages: distro.packager.install( packages, extra_install_flags=extra_install_flags )
def install(distro, version_kind, version, adjust_repos, **kw): packages = kw.pop('components', []) codename = distro.codename machine = distro.machine_type extra_install_flags = [] 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' if version_kind in ['dev', 'dev_commit']: 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.codename, version=kw['args'].dev, sha1=kw['args'].dev_commit or 'latest', arch=machine) LOG.debug('fetching repo information from: %s' % shaman_url) chacra_url = net.get_request(shaman_url).geturl() content = net.get_chacra_repo(shaman_url) # set the repo priority for the right domain fqdn = urlparse(chacra_url).hostname distro.conn.remote_module.set_apt_priority(fqdn) distro.conn.remote_module.write_sources_list_content(content) extra_install_flags = [ '-o', 'Dpkg::Options::=--force-confnew', '--allow-unauthenticated' ] else: 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, ) 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) extra_install_flags = ['-o', 'Dpkg::Options::=--force-confnew'] distro.packager.clean() # TODO this does not downgrade -- should it? if packages: distro.packager.install(packages, extra_install_flags=extra_install_flags)