def custom_repo(distro, args, cd_conf, rlogger, install_ceph=None):
    """
    A custom repo install helper that will go through config checks to retrieve
    repos (and any extra repos defined) and install those

    ``cd_conf`` is the object built from argparse that holds the flags and
    information needed to determine what metadata from the configuration to be
    used.
    """
    default_repo = cd_conf.get_default_repo()
    components = detect_components(args, distro)
    if args.release in cd_conf.get_repos():
        LOG.info('will use repository from conf: %s' % args.release)
        default_repo = args.release
    elif default_repo:
        LOG.info('will use default repository: %s' % default_repo)

    # At this point we know there is a cd_conf and that it has custom
    # repos make sure we were able to detect and actual repo
    if not default_repo:
        LOG.warning('a ceph-deploy config was found with repos \
            but could not default to one')
    else:
        options = dict(cd_conf.items(default_repo))
        options['install_ceph'] = False if install_ceph is False else True
        extra_repos = cd_conf.get_list(default_repo, 'extra-repos')
        rlogger.info('adding custom repository file')
        try:
            distro.repo_install(
                distro,
                default_repo,
                options.pop('baseurl'),
                options.pop('gpgkey'),
                components=components,
                **options
            )
        except KeyError as err:
            raise RuntimeError('missing required key: %s in config section: %s' % (err, default_repo))

        for xrepo in extra_repos:
            rlogger.info('adding extra repo file: %s.repo' % xrepo)
            options = dict(cd_conf.items(xrepo))
            try:
                distro.repo_install(
                    distro,
                    xrepo,
                    options.pop('baseurl'),
                    options.pop('gpgkey'),
                    components=components,
                    **options
                )
            except KeyError as err:
                raise RuntimeError('missing required key: %s in config section: %s' % (err, xrepo))
def custom_repo ( distro , args , cd_conf , rlogger , install_ceph = None ) : default_repo = cd_conf . get_default_repo ( ) components = detect_components ( args , distro ) if args . release in cd_conf . get_repos ( ) : LOG . info ( 'will use repository from conf: %s' % args . release ) default_repo = args . release elif default_repo : LOG . info ( 'will use default repository: %s' % default_repo ) if not default_repo : LOG . warning ( 'a ceph-deploy config was found with repos \
            but could not default to one' ) else : options = dict ( cd_conf . items ( default_repo ) ) options [ 'install_ceph' ] = False if install_ceph is False else True extra_repos = cd_conf . get_list ( default_repo , 'extra-repos' ) rlogger . info ( 'adding custom repository file' ) try : distro . repo_install ( distro , default_repo , options . pop ( 'baseurl' ) , options . pop ( 'gpgkey' ) , components = components , ** options ) except KeyError as err : raise RuntimeError ( 'missing required key: %s in config section: %s' % ( err , default_repo ) ) for xrepo in extra_repos : rlogger . info ( 'adding extra repo file: %s.repo' % xrepo ) options = dict ( cd_conf . items ( xrepo ) ) try : distro . repo_install ( distro , xrepo , options . pop ( 'baseurl' ) , options . pop ( 'gpgkey' ) , components = components , ** options ) except KeyError as err : raise RuntimeError ( 'missing required key: %s in config section: %s' % ( err , xrepo ) )
A custom repo install helper that will go through config checks to retrieve
    repos (and any extra repos defined) and install those

    ``cd_conf`` is the object built from argparse that holds the flags and
    information needed to determine what metadata from the configuration to be
    used.