[Kimchi-devel] [PATCH 4/6] Move ISO path validation to IsoImage()
Ramon Medeiros
ramonn at linux.vnet.ibm.com
Mon Dec 30 20:25:34 UTC 2013
On 12/30/2013 03:09 PM, Aline Manera wrote:
> From: Aline Manera <alinefm at br.ibm.com>
>
> That way we will have a single point to check ISO path validation.
> And the user doesn't need to care about it as IsoImage() will check if the ISO
> path is local, remote or invalid.
>
> Signed-off-by: Aline Manera <alinefm at br.ibm.com>
> ---
> src/kimchi/isoinfo.py | 55 +++++++++++++++++++++++++++----------------------
> 1 file changed, 30 insertions(+), 25 deletions(-)
>
> diff --git a/src/kimchi/isoinfo.py b/src/kimchi/isoinfo.py
> index 7b7fa78..dd26204 100644
> --- a/src/kimchi/isoinfo.py
> +++ b/src/kimchi/isoinfo.py
> @@ -134,13 +134,37 @@ class IsoImage(object):
> EL_TORITO_VALIDATION_ENTRY = struct.Struct("=BBH24sHBB")
> EL_TORITO_BOOT_ENTRY = struct.Struct("=BBHBBHL20x")
>
> - def __init__(self, path, remote = False):
> + def __init__(self, path, remote = None):
> self.path = path
> self.volume_id = None
> self.bootable = False
> - self.remote = remote
> +
> + if remote is not None:
> + self.remote = remote
> + else:
> + self.remote = self._is_iso_remote()
to avoid make to many indentations, you can do:
self.remote = remote
if remote == None:
self.remote = self._is_iso_remote()
i think it's more clean
> +
> self._scan()
>
> + def _is_iso_remote(self):
> + if os.path.isfile(self.path):
> + return False
> +
> + if self._check_url_path():
> + return True
> +
> + raise IsoFormatError('ISO %s does not exist' % self.path)
> +
> + def _check_url_path(self):
> + try:
> + code = urllib2.urlopen(self.path).getcode()
> + if code != 200:
> + return False
> + except (urllib2.HTTPError, ValueError):
> + return False
> +
> + return True
> +
> def _unpack(self, s, data):
> return s.unpack(data[:s.size])
>
> @@ -246,7 +270,7 @@ class Matcher(object):
> return self.lastmatch.group(num)
>
>
> -def _probe_iso(fname, remote = False):
> +def _probe_iso(fname, remote = None):
> try:
> iso = IsoImage(fname, remote)
> except Exception, e:
> @@ -298,39 +322,20 @@ def probe_iso(status_helper, params):
> continue
> iso = os.path.join(root, name)
> try:
> - ret = _probe_iso(iso)
> + ret = _probe_iso(iso, False)
> update_result(iso, ret)
> except:
> continue
> - elif os.path.isfile(loc):
> - ret = _probe_iso(loc, False)
> - update_result(loc, ret)
> else:
> - ret = _probe_iso(loc, True)
> + ret = _probe_iso(loc)
> update_result(loc, ret)
>
> if status_helper != None:
> status_helper('', True)
>
> -def _check_url_path(path):
> - try:
> - code = urllib2.urlopen(path).getcode()
> - if code != 200:
> - return False
> - except (urllib2.HTTPError, ValueError):
> - return False
> -
> - return True
>
> def probe_one(iso):
> - if os.path.isfile(iso):
> - remote = False
> - elif _check_url_path(iso):
> - remote = True
> - else:
> - raise IsoFormatError('ISO %s does not exist' % iso)
> -
> - return _probe_iso(iso, remote)
> + return _probe_iso(iso)
>
>
> if __name__ == '__main__':
--
Ramon Nunes Medeiros
Software Engineer - Linux Technology Center Brazil
IBM Systems & Technology Group
Phone : +55 19 2132 7878
ramonn at br.ibm.com
More information about the Kimchi-devel
mailing list