Example #1
0
    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')
Example #2
0
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
        )
Example #3
0
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)