[rhel7-branch/master][PATCH] Don't read proxy for methods that have no proxy (#997410)

Samantha N. Bueno sbueno+anaconda at redhat.com
Thu Aug 15 20:08:01 UTC 2013


Ack.

On Thu, Aug 15, 2013 at 11:11:02AM -0400, David Shea wrote:
> Not every method implements a proxy, so check that the proxy attribute
> exists before reading it. No checks were added to the use of proxy in
> LiveImageKSPayload, since if self.data.method there is not a liveimg,
> something else went terribly wrong.
> ---
>  pyanaconda/packaging/__init__.py   |  6 +++++-
>  pyanaconda/packaging/yumpayload.py | 20 ++++++++++++++++----
>  pyanaconda/ui/gui/spokes/source.py |  8 ++++++--
>  3 files changed, 27 insertions(+), 7 deletions(-)
> 
> diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
> index 41f6a2a..ed00972 100644
> --- a/pyanaconda/packaging/__init__.py
> +++ b/pyanaconda/packaging/__init__.py
> @@ -446,7 +446,11 @@ class Payload(object):
>          log.debug("getting release version from tree at %s (%s)" % (url,
>                                                                      version))
>  
> -        treeinfo = self._getTreeInfo(url, self.data.method.proxy, not flags.noverifyssl)
> +        if hasattr(self.data.method, "proxy"):
> +            proxy = self.data.method.proxy
> +        else:
> +            proxy = None
> +        treeinfo = self._getTreeInfo(url, proxy, not flags.noverifyssl)
>          if treeinfo:
>              c = ConfigParser.ConfigParser()
>              c.read(treeinfo)
> diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
> index c912f8a..f536666 100644
> --- a/pyanaconda/packaging/yumpayload.py
> +++ b/pyanaconda/packaging/yumpayload.py
> @@ -261,7 +261,7 @@ reposdir=%s
>          if self.data.packages.multiLib:
>              buf += "multilib_policy=all\n"
>  
> -        if self.data.method.proxy:
> +        if hasattr(self.data.method, "proxy") and self.data.method.proxy:
>              try:
>                  proxy = ProxyString(self.data.method.proxy)
>                  buf += "proxy=%s\n" % (proxy.noauth_url,)
> @@ -333,7 +333,7 @@ reposdir=%s
>                                  f.write("proxy_password=%s\n" % (proxy.password,))
>                          except ProxyStringError as e:
>                              log.error("Failed to parse proxy for _writeInstallConfig %s: %s" \
> -                                      % (self.data.method.proxy, e))
> +                                      % (ks_repo.proxy, e))
>  
>                      if ks_repo.cost:
>                          f.write("cost=%d\n" % ks_repo.cost)
> @@ -772,9 +772,15 @@ reposdir=%s
>                      raise PayloadSetupError("base repo is unusable")
>  
>              self._yumCacheDirHack()
> +
> +            if hasattr(method, "proxy"):
> +                proxyurl = method.proxy
> +            else:
> +                proxyurl = None
> +
>              try:
>                  self._addYumRepo(BASE_REPO_NAME, url, mirrorlist=mirrorlist,
> -                                 proxyurl=method.proxy, sslverify=sslverify)
> +                                 proxyurl=proxyurl, sslverify=sslverify)
>              except MetadataError as e:
>                  log.error("base repo (%s/%s) not valid -- removing it"
>                            % (method.method, url))
> @@ -794,7 +800,13 @@ reposdir=%s
>          if self._repoNeedsNetwork(repo) and not nm_is_connected():
>              raise NoNetworkError
>  
> -        proxy = repo.proxy or self.data.method.proxy
> +        if repo.proxy:
> +            proxy = repo.proxy
> +        elif hasattr(self.data.method, "proxy"):
> +            proxy = self.data.method.proxy
> +        else:
> +            proxy = None
> +
>          sslverify = not (flags.noverifyssl or repo.noverifyssl)
>  
>          # this repo is already in ksdata, so we only add it to yum here
> diff --git a/pyanaconda/ui/gui/spokes/source.py b/pyanaconda/ui/gui/spokes/source.py
> index ba20564..009d386 100644
> --- a/pyanaconda/ui/gui/spokes/source.py
> +++ b/pyanaconda/ui/gui/spokes/source.py
> @@ -119,7 +119,7 @@ class ProxyDialog(GUIObject):
>          self._proxyUsernameEntry = self.builder.get_object("proxyUsernameEntry")
>          self._proxyPasswordEntry = self.builder.get_object("proxyPasswordEntry")
>  
> -        if not self.data.method.proxy:
> +        if not (hasattr(self.data.method, "proxy") and self.data.method.proxy):
>              self._proxyCheck.set_active(False)
>              self.on_proxy_enable_toggled(self._proxyCheck)
>              self._authCheck.set_active(False)
> @@ -421,7 +421,7 @@ class SourceSpoke(NormalSpoke):
>              log.error("PayloadError: %s" % (e,))
>              self._error = True
>              hubQ.send_message(self.__class__.__name__, _("Failed to set up installation source"))
> -            if not self.data.method.proxy:
> +            if not (hasattr(self.data.method, "proxy") and self.data.method.proxy):
>                  gtk_call_once(self.set_warning, _("Failed to set up installation source; check the repo url"))
>              else:
>                  gtk_call_once(self.set_warning, _("Failed to set up installation source; check the repo url and proxy settings"))
> @@ -749,6 +749,10 @@ class SourceSpoke(NormalSpoke):
>                  self._verifyIsoButton.set_sensitive(True)
>  
>      def on_proxy_clicked(self, button):
> +        # If this method has no proxy, ignore the click
> +        if not hasattr(self.data.method, "proxy"):
> +            return
> +
>          old_proxy = self.data.method.proxy
>          dialog = ProxyDialog(self.data)
>          with enlightbox(self.window, dialog.window):
> -- 
> 1.8.3.1
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches


More information about the anaconda-patches mailing list