urlfetcher: Drop explicit prepare/cleanup calls
We can do this automatically easily enough. The downsides of not cleaning up are pretty minor these days anyways without the 'mount' handling
This commit is contained in:
parent
9995ebc86b
commit
9e4287321f
|
@ -198,11 +198,7 @@ def _testURL(fetcher, testdata):
|
||||||
|
|
||||||
def _fetchWrapper(url, cb):
|
def _fetchWrapper(url, cb):
|
||||||
fetcher = urlfetcher.fetcherForURI(url, "/tmp", meter)
|
fetcher = urlfetcher.fetcherForURI(url, "/tmp", meter)
|
||||||
try:
|
|
||||||
fetcher.prepareLocation()
|
|
||||||
return cb(fetcher)
|
return cb(fetcher)
|
||||||
finally:
|
|
||||||
fetcher.cleanupLocation()
|
|
||||||
|
|
||||||
|
|
||||||
def _testURLWrapper(testdata):
|
def _testURLWrapper(testdata):
|
||||||
|
|
|
@ -217,6 +217,8 @@ class vmmCreate(vmmGObjectUI):
|
||||||
if self._storage_browser:
|
if self._storage_browser:
|
||||||
self._storage_browser.close()
|
self._storage_browser.close()
|
||||||
self._set_conn(None)
|
self._set_conn(None)
|
||||||
|
self._failed_guest = None
|
||||||
|
self._guest = None
|
||||||
|
|
||||||
def _cleanup(self):
|
def _cleanup(self):
|
||||||
if self._storage_browser:
|
if self._storage_browser:
|
||||||
|
@ -331,8 +333,6 @@ class vmmCreate(vmmGObjectUI):
|
||||||
Reset all UI state to default values. Conn specific state is
|
Reset all UI state to default values. Conn specific state is
|
||||||
populated in _populate_conn_state
|
populated in _populate_conn_state
|
||||||
"""
|
"""
|
||||||
self._failed_guest = None
|
|
||||||
self._guest = None
|
|
||||||
self.reset_finish_cursor()
|
self.reset_finish_cursor()
|
||||||
|
|
||||||
self.widget("create-pages").set_current_page(PAGE_NAME)
|
self.widget("create-pages").set_current_page(PAGE_NAME)
|
||||||
|
|
|
@ -106,7 +106,6 @@ class InstallerTreeMedia(object):
|
||||||
return self._cached_fetcher
|
return self._cached_fetcher
|
||||||
|
|
||||||
def _get_store(self, guest, fetcher):
|
def _get_store(self, guest, fetcher):
|
||||||
# Caller is responsible for calling fetcher prepare/cleanup if needed
|
|
||||||
if not self._cached_store:
|
if not self._cached_store:
|
||||||
self._cached_store = urldetect.getDistroStore(guest, fetcher)
|
self._cached_store = urldetect.getDistroStore(guest, fetcher)
|
||||||
return self._cached_store
|
return self._cached_store
|
||||||
|
@ -143,17 +142,7 @@ class InstallerTreeMedia(object):
|
||||||
|
|
||||||
def prepare(self, guest, meter):
|
def prepare(self, guest, meter):
|
||||||
fetcher = self._get_fetcher(guest, meter)
|
fetcher = self._get_fetcher(guest, meter)
|
||||||
try:
|
|
||||||
try:
|
|
||||||
fetcher.prepareLocation()
|
|
||||||
except ValueError as e:
|
|
||||||
logging.debug("Error preparing install location",
|
|
||||||
exc_info=True)
|
|
||||||
raise ValueError(_("Invalid install location: ") + str(e))
|
|
||||||
|
|
||||||
return self._prepare_kernel_url(guest, fetcher)
|
return self._prepare_kernel_url(guest, fetcher)
|
||||||
finally:
|
|
||||||
fetcher.cleanupLocation()
|
|
||||||
|
|
||||||
def cleanup(self, guest):
|
def cleanup(self, guest):
|
||||||
ignore = guest
|
ignore = guest
|
||||||
|
@ -176,25 +165,15 @@ class InstallerTreeMedia(object):
|
||||||
if self._media_type not in [MEDIA_URL]:
|
if self._media_type not in [MEDIA_URL]:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
try:
|
|
||||||
fetcher = self._get_fetcher(guest, None)
|
fetcher = self._get_fetcher(guest, None)
|
||||||
fetcher.prepareLocation()
|
|
||||||
|
|
||||||
# This will throw an error for us
|
# This will throw an error for us
|
||||||
ignore = self._get_store(guest, fetcher)
|
ignore = self._get_store(guest, fetcher)
|
||||||
finally:
|
|
||||||
fetcher.cleanupLocation()
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def detect_distro(self, guest):
|
def detect_distro(self, guest):
|
||||||
if self._media_type in [MEDIA_ISO]:
|
if self._media_type in [MEDIA_ISO]:
|
||||||
return InstallerTreeMedia.detect_iso_distro(guest, self.location)
|
return InstallerTreeMedia.detect_iso_distro(guest, self.location)
|
||||||
|
|
||||||
try:
|
|
||||||
fetcher = self._get_fetcher(guest, None)
|
fetcher = self._get_fetcher(guest, None)
|
||||||
fetcher.prepareLocation()
|
|
||||||
|
|
||||||
store = self._get_store(guest, fetcher)
|
store = self._get_store(guest, fetcher)
|
||||||
return store.get_osdict_info()
|
return store.get_osdict_info()
|
||||||
finally:
|
|
||||||
fetcher.cleanupLocation()
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ class _URLFetcher(object):
|
||||||
self.meter = meter
|
self.meter = meter
|
||||||
|
|
||||||
logging.debug("Using scratchdir=%s", scratchdir)
|
logging.debug("Using scratchdir=%s", scratchdir)
|
||||||
|
self._prepare()
|
||||||
|
|
||||||
|
|
||||||
####################
|
####################
|
||||||
|
@ -103,18 +104,21 @@ class _URLFetcher(object):
|
||||||
"""
|
"""
|
||||||
return self._is_iso
|
return self._is_iso
|
||||||
|
|
||||||
def prepareLocation(self):
|
def _prepare(self):
|
||||||
"""
|
"""
|
||||||
Perform any necessary setup
|
Perform any necessary setup
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def cleanupLocation(self):
|
def _cleanup(self):
|
||||||
"""
|
"""
|
||||||
Perform any necessary cleanup
|
Perform any necessary cleanup
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self._cleanup()
|
||||||
|
|
||||||
def can_access(self):
|
def can_access(self):
|
||||||
"""
|
"""
|
||||||
Return True if the location URL seems to be valid
|
Return True if the location URL seems to be valid
|
||||||
|
@ -165,10 +169,10 @@ class _URLFetcher(object):
|
||||||
class _HTTPURLFetcher(_URLFetcher):
|
class _HTTPURLFetcher(_URLFetcher):
|
||||||
_session = None
|
_session = None
|
||||||
|
|
||||||
def prepareLocation(self):
|
def _prepare(self):
|
||||||
self._session = requests.Session()
|
self._session = requests.Session()
|
||||||
|
|
||||||
def cleanupLocation(self):
|
def _cleanup(self):
|
||||||
if self._session:
|
if self._session:
|
||||||
try:
|
try:
|
||||||
self._session.close()
|
self._session.close()
|
||||||
|
@ -219,7 +223,7 @@ class _HTTPURLFetcher(_URLFetcher):
|
||||||
class _FTPURLFetcher(_URLFetcher):
|
class _FTPURLFetcher(_URLFetcher):
|
||||||
_ftp = None
|
_ftp = None
|
||||||
|
|
||||||
def prepareLocation(self):
|
def _prepare(self):
|
||||||
if self._ftp:
|
if self._ftp:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -246,7 +250,7 @@ class _FTPURLFetcher(_URLFetcher):
|
||||||
return urlobj, size
|
return urlobj, size
|
||||||
|
|
||||||
|
|
||||||
def cleanupLocation(self):
|
def _cleanup(self):
|
||||||
if not self._ftp:
|
if not self._ftp:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue