[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH master] Refactor DNS resolver reset.



---
 pyanaconda/gui.py                 |    6 ++++++
 pyanaconda/iw/advanced_storage.py |    2 --
 pyanaconda/iw/network_gui.py      |    3 ---
 pyanaconda/iw/task_gui.py         |    6 ------
 pyanaconda/kickstart.py           |    1 -
 pyanaconda/network.py             |   19 +++++++++++--------
 pyanaconda/yuminstall.py          |    8 --------
 7 files changed, 17 insertions(+), 28 deletions(-)

diff --git a/pyanaconda/gui.py b/pyanaconda/gui.py
index ebd0085..a7707e3 100755
--- a/pyanaconda/gui.py
+++ b/pyanaconda/gui.py
@@ -965,6 +965,10 @@ class InstallInterface(InstallInterfaceBase):
                 if just_setup:
                     if failed_devs:
                         self._handleDeviceActivationFail(failed_devs)
+                    if len(failed_devs) < len(waited_devs):
+                        # if any device was activated, remember to reset
+                        # resolver
+                        networkEnabled = True
                 else:
                     networkEnabled = install_device not in failed_devs
                     if not networkEnabled:
@@ -973,6 +977,8 @@ class InstallInterface(InstallInterfaceBase):
             if just_setup:
                 break
 
+        if networkEnabled:
+            network.resetResolver()
         return networkEnabled
 
     def _handleDeviceActivationFail(self, devices):
diff --git a/pyanaconda/iw/advanced_storage.py b/pyanaconda/iw/advanced_storage.py
index 8a9d07f..24a5010 100644
--- a/pyanaconda/iw/advanced_storage.py
+++ b/pyanaconda/iw/advanced_storage.py
@@ -22,7 +22,6 @@ _ = lambda x: gettext.ldgettext("anaconda", x)
 import gobject
 import gtk
 import gtk.glade
-import urlgrabber.grabber
 import datacombo
 import DeviceSelector
 from pyanaconda import gui
@@ -430,7 +429,6 @@ def addIscsiDrive(anaconda):
     if not network.hasActiveNetDev():
         if not anaconda.intf.enableNetwork():
             return gtk.RESPONSE_CANCEL
-        urlgrabber.grabber.reset_curl_obj()
 
     # go through the wizard's dialogs, read the user input (selected nodes,
     # login credentials) and provide it to the iscsi subsystem
diff --git a/pyanaconda/iw/network_gui.py b/pyanaconda/iw/network_gui.py
index f7a4f92..dead8ca 100644
--- a/pyanaconda/iw/network_gui.py
+++ b/pyanaconda/iw/network_gui.py
@@ -30,7 +30,6 @@ import gobject
 import subprocess
 import gtk
 from pyanaconda import isys
-import urlgrabber.grabber
 
 from pyanaconda.constants import *
 import gettext
@@ -65,8 +64,6 @@ class NetworkWindow(InstallWindow):
 
     def _setupNetwork(self, *args):
         self.intf.enableNetwork(just_setup=True)
-        if network.hasActiveNetDev():
-            urlgrabber.grabber.reset_curl_obj()
 
     def focus(self):
         self.hostnameEntry.grab_focus()
diff --git a/pyanaconda/iw/task_gui.py b/pyanaconda/iw/task_gui.py
index cba030d..e639010 100644
--- a/pyanaconda/iw/task_gui.py
+++ b/pyanaconda/iw/task_gui.py
@@ -35,7 +35,6 @@ from pyanaconda import network
 from pyanaconda import iutil
 
 from pyanaconda.yuminstall import AnacondaYumRepo
-import urlgrabber.grabber
 import yum.Errors
 
 import logging
@@ -45,7 +44,6 @@ def setupRepo(anaconda, repo):
     if repo.needsNetwork() and not network.hasActiveNetDev():
         if not anaconda.intf.enableNetwork():
             return False
-        urlgrabber.grabber.reset_curl_obj()
     try:
         anaconda.backend.doRepoSetup(anaconda, thisrepo=repo.id, fatalerrors=False)
         anaconda.backend.doSackSetup(anaconda, thisrepo=repo.id, fatalerrors=False)
@@ -313,7 +311,6 @@ class RepoEditor:
                       "networking, but there was an error enabling the "
                       "network on your system."))
                 return False
-            urlgrabber.grabber.reset_curl_obj()
 
         import tempfile
         dest = tempfile.mkdtemp("", repo.name.replace(" ", ""), "/mnt")
@@ -540,7 +537,6 @@ class TaskWindow(InstallWindow):
             if not self.anaconda.intf.enableNetwork():
                 return gtk.RESPONSE_CANCEL
 
-            urlgrabber.grabber.reset_curl_obj()
 
         dialog = RepoEditor(self.anaconda, repo)
         dialog.createDialog()
@@ -591,8 +587,6 @@ class TaskWindow(InstallWindow):
                 if not self.anaconda.intf.enableNetwork():
                     return
 
-                urlgrabber.grabber.reset_curl_obj()
-
             repo.enable()
             if not setupRepo(self.anaconda, repo):
                 repo.disable()
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 85ceec8..b7c5e07 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -155,7 +155,6 @@ def getEscrowCertificate(anaconda, url):
                                         custom_icon="error",
                                         custom_buttons=[_("_Exit installer")])
             sys.exit(1)
-        urlgrabber.grabber.reset_curl_obj()
 
     log.info("escrow: downloading %s" % (url,))
 
diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index ae06f1e..f377d1c 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -36,6 +36,7 @@ import dbus
 import tempfile
 from flags import flags
 from simpleconfig import IfcfgFile
+import urlgrabber.grabber
 
 import gettext
 _ = lambda x: gettext.ldgettext("anaconda", x)
@@ -77,7 +78,7 @@ def sanityCheckHostname(hostname):
 
 # Try to determine what the hostname should be for this system
 def getDefaultHostname(anaconda):
-    isys.resetResolv()
+    resetResolver()
 
     hn = None
 
@@ -766,20 +767,16 @@ class Network:
                 waited_devs_props[iface] = device_props_iface
 
         i = 0
-        reset_resolver = False
         while True:
             for dev, device_props_iface in waited_devs_props.items():
                 state = device_props_iface.Get(isys.NM_DEVICE_IFACE, "State")
                 if state == isys.NM_DEVICE_STATE_ACTIVATED:
                     waited_devs_props.pop(dev)
-                    reset_resolver = True
             if len(waited_devs_props) == 0 or i >= CONNECTION_TIMEOUT:
                 break
             i += 1
             time.sleep(1)
 
-        if reset_resolver:
-            isys.resetResolv()
         return waited_devs_props.keys()
 
     # write out current configuration state and wait for NetworkManager
@@ -794,14 +791,12 @@ class Network:
         while i < CONNECTION_TIMEOUT:
             state = props.Get(isys.NM_SERVICE, "State")
             if int(state) == isys.NM_STATE_CONNECTED:
-                isys.resetResolv()
                 return True
             i += 1
             time.sleep(1)
 
         state = props.Get(isys.NM_SERVICE, "State")
         if int(state) == isys.NM_STATE_CONNECTED:
-            isys.resetResolv()
             return True
 
         return False
@@ -811,7 +806,11 @@ class Network:
     # once we have a state
     def bringUp(self):
         self.write()
-        return self.waitForConnection()
+        if self.waitForConnection():
+            resetResolver()
+            return True
+        else:
+            return False
 
     # get a kernel cmdline string for dracut needed for access to host host
     def dracutSetupString(self, networkStorageDevice):
@@ -949,3 +948,7 @@ def ifaceForHostIP(host):
 
     return routeInfo[routeInfo.index("dev") + 1]
 
+def resetResolver():
+    isys.resetResolv()
+    urlgrabber.grabber.reset_curl_obj()
+
diff --git a/pyanaconda/yuminstall.py b/pyanaconda/yuminstall.py
index 71cb581..8f1dccd 100644
--- a/pyanaconda/yuminstall.py
+++ b/pyanaconda/yuminstall.py
@@ -513,8 +513,6 @@ class AnacondaYum(YumSorter):
                         self._baseRepoURL = None
                         return
 
-                    urlgrabber.grabber.reset_curl_obj()
-
                 self._switchImage(1)
                 self.mediagrabber = self.mediaHandler
             elif m.startswith("http") or m.startswith("ftp:"):
@@ -524,8 +522,6 @@ class AnacondaYum(YumSorter):
                     if not self.anaconda.intf.enableNetwork():
                         self._baseRepoURL = None
 
-                    urlgrabber.grabber.reset_curl_obj()
-
                 (opts, server, path) = iutil.parseNfsUrl(m)
                 isys.mount(server+":"+path, self.tree, "nfs", options=opts)
 
@@ -756,8 +752,6 @@ class AnacondaYum(YumSorter):
                             custom_buttons=[_("_Exit installer")])
                         sys.exit(1)
 
-                    urlgrabber.grabber.reset_curl_obj()
-
                     dest = tempfile.mkdtemp("", ksrepo.name.replace(" ", ""), "/mnt")
 
                     # handle "nfs://" prefix
@@ -1206,8 +1200,6 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon
                         type="custom", custom_icon="error",
                         custom_buttons=[_("_Exit installer")])
                     sys.exit(1)
-
-                urlgrabber.grabber.reset_curl_obj()
                 break
 
         self.doRepoSetup(anaconda)
-- 
1.7.2


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]