[f19-branch/master] Add variable substitution to repo urls (#967531)

Vratislav Podzimek vpodzime at redhat.com
Fri May 31 07:35:18 UTC 2013


On Thu, 2013-05-30 at 16:38 -0700, Brian C. Lane wrote:
> From: "Brian C. Lane" <bcl at redhat.com>
> 
> kickstarts require an install option (cdrom, url, etc.) but previously
> there was a bug and you could leave these out and it would use whatever
> repos were configured. This behavior has been fixed, but that makes it
> difficult to share kickstarts across releases.
> 
> This patch adds $releasever and $basearch variable support (like in yum
> config files) to kickstart repos. Both baseurl and mirrorlist support
> these so that now the kickstart can have this and it will do the right
> thing:
> 
> url --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
> ---
>  pyanaconda/packaging/yumpayload.py | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
> index 6cd223d..5f1fcd3 100644
> --- a/pyanaconda/packaging/yumpayload.py
> +++ b/pyanaconda/packaging/yumpayload.py
> @@ -875,6 +875,25 @@ reposdir=%s
>              except RepoMDError:
>                  log.error("failed to get groups for repo %s" % yumrepo.id)
>  
> +    def _replaceVars(self, url):
> +        """ Replace url variables with their values
> +
> +            :param url: url string to do replacement on
> +            :type url:  string
> +            :returns:   string with variables substituted
> +            :rtype:     string or None
> +
> +            Currently supports $releasever and $basearch
> +        """
> +        if not url:
> +            return url
> +
> +        with _yum_lock:
> +            url = url.replace("$releasever", self._yum.conf.yumvar['releasever'])
> +        url = url.replace("$basearch", blivet.arch.getArch())
> +
> +        return url
> +
>      def _addYumRepo(self, name, baseurl, mirrorlist=None, proxyurl=None, **kwargs):
>          """ Add a yum repo to the YumBase instance. """
>          from yum.Errors import RepoError
> @@ -907,6 +926,10 @@ reposdir=%s
>                  log.error("Failed to parse proxy for _addYumRepo %s: %s" \
>                            % (proxyurl, e))
>  
> +        if baseurl:
> +            baseurl = self._replaceVars(baseurl)
> +        if mirrorlist:
> +            mirrorlist = self._replaceVars(mirrorlist)
>          log.debug("adding yum repo %s with baseurl %s and mirrorlist %s"
>                      % (name, baseurl, mirrorlist))
>          with _yum_lock:
Clever idea! ACK for both branches.

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list