コード例 #1
0
ファイル: install.py プロジェクト: justyu/ceph-deploy
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)
コード例 #2
0
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: install.py プロジェクト: JialiangSong/ceph-deploy
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
ファイル: install.py プロジェクト: ceph/ceph-deploy
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)
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
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']
        )
コード例 #11
0
ファイル: install.py プロジェクト: ceph/ceph-deploy
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)
コード例 #12
0
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)
コード例 #13
0
ファイル: install.py プロジェクト: justyu/ceph-deploy
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)
コード例 #14
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 = 'el7'
    machine = distro.machine_type

    if version_kind in ['stable', 'testing']:
        key = 'release'
    else:
        key = 'autobuild'

    print packages
    distro.packager.install(packages)
コード例 #15
0
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)
コード例 #16
0
ファイル: install.py プロジェクト: ceph/ceph-deploy
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)
コード例 #17
0
ファイル: install.py プロジェクト: zhouyuan/ceph-deploy
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)
コード例 #18
0
ファイル: install.py プロジェクト: SUSE/ceph-deploy
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)
コード例 #19
0
ファイル: install.py プロジェクト: JialiangSong/ceph-deploy
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)
コード例 #20
0
ファイル: install.py プロジェクト: zhouyuan/ceph-deploy
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)
コード例 #21
0
 def test_map_components_no_components(self):
     packages = map_components(['ceph-mon'], [])
     assert len(packages) == 0
コード例 #22
0
 def test_map_components_no_components(self):
     packages = map_components(['ceph-mon'], [])
     assert len(packages) == 0
コード例 #23
0
ファイル: install.py プロジェクト: STEI-ITB/roseph
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)
コード例 #24
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
    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)
コード例 #25
0
ファイル: install.py プロジェクト: zhouyuan/ceph-deploy
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)
コード例 #26
0
ファイル: install.py プロジェクト: imzhulei/ceph-deploy
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)
コード例 #27
0
 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']))
コード例 #28
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
    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)
コード例 #29
0
ファイル: install.py プロジェクト: ceph/ceph-deploy
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)
コード例 #30
0
 def test_map_components_all_split(self):
     components = ['ceph-mon', 'ceph-osd']
     packages = map_components([], components)
     assert set(packages) == set(components)
コード例 #31
0
 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'])
コード例 #32
0
 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'])
コード例 #33
0
ファイル: install.py プロジェクト: AvengerMoJo/ceph-deploy
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
    )
コード例 #34
0
 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']))
コード例 #35
0
ファイル: install.py プロジェクト: b-ranto/ceph-deploy
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)
コード例 #36
0
 def test_map_components_all_split(self):
     components = ['ceph-mon', 'ceph-osd']
     packages = map_components([], components)
     assert set(packages) == set(components)