Merge "Fixing py35 unicode bug"
This commit is contained in:
commit
b5222d2f91
|
@ -99,3 +99,16 @@ def delete_file(path):
|
|||
|
||||
def delete_dir(dir_path):
|
||||
return shutil.rmtree(dir_path)
|
||||
|
||||
|
||||
def file_type(path):
|
||||
"""Identifies what the type of file is."""
|
||||
signature = {
|
||||
"\x1f\x8b\x08": "gz",
|
||||
"\x42\x5a\x68": "bz2",
|
||||
"\x50\x4b\x03\x04": "zip"
|
||||
}
|
||||
with open(path, "r") as f:
|
||||
for sig, f_type in signature.items():
|
||||
if f.read(4).startswith(sig):
|
||||
return f_type
|
||||
|
|
|
@ -20,7 +20,7 @@ import tempfile
|
|||
from oslo_config import cfg
|
||||
|
||||
from syntribos.clients.http.client import SynHTTPClient
|
||||
from syntribos._i18n import _LI, _LE, _LW # noqa
|
||||
from syntribos._i18n import _, _LI, _LE, _LW # noqa
|
||||
|
||||
CONF = cfg.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -67,7 +67,7 @@ def download(uri, cache_dir=None):
|
|||
saved_umask = os.umask(0o77)
|
||||
fname = uri.split("/")[-1]
|
||||
try:
|
||||
with open(fname, 'w') as fh:
|
||||
with open(fname, 'wb') as fh:
|
||||
fh.write(resp.content)
|
||||
return os.path.abspath(fname)
|
||||
except IOError:
|
||||
|
@ -76,19 +76,6 @@ def download(uri, cache_dir=None):
|
|||
os.umask(saved_umask)
|
||||
|
||||
|
||||
def file_type(path):
|
||||
"""Identifies what the type of file is."""
|
||||
signature = {
|
||||
"\x1f\x8b\x08": "gz",
|
||||
"\x42\x5a\x68": "bz2",
|
||||
"\x50\x4b\x03\x04": "zip"
|
||||
}
|
||||
with open(path) as f:
|
||||
for sig, f_type in signature.items():
|
||||
if f.read(4).startswith(sig):
|
||||
return f_type
|
||||
|
||||
|
||||
def extract_tar(abs_path):
|
||||
"""Extract a gzipped tar file from the given absolute_path
|
||||
|
||||
|
@ -117,9 +104,12 @@ def extract_tar(abs_path):
|
|||
each_f = os.path.abspath(os.path.join(work_dir, fh.name))
|
||||
if os.path.realpath(each_f).startswith(work_dir):
|
||||
yield fh
|
||||
|
||||
with tarfile.open(tar_file, mode="r:gz") as tarf:
|
||||
tarf.extractall(path=remote_path, members=safe_paths(tarf))
|
||||
try:
|
||||
with tarfile.open(tar_file, mode="r:gz") as tarf:
|
||||
tarf.extractall(path=remote_path, members=safe_paths(tarf))
|
||||
except tarfile.ExtractError as e:
|
||||
LOG.error(_LE("Unable to extract the file: %s") % e)
|
||||
raise
|
||||
os.remove(abs_path)
|
||||
return remote_path
|
||||
|
||||
|
@ -138,14 +128,15 @@ def get(uri, cache_dir=None):
|
|||
temp = tempfile.TemporaryFile(dir=os.path.abspath(user_base_dir))
|
||||
temp.close()
|
||||
except OSError:
|
||||
LOG.error(_("Failed to write remote files to: %s") %
|
||||
LOG.error(_LE("Failed to write remote files to: %s") %
|
||||
os.path.abspath(user_base_dir))
|
||||
exit(1)
|
||||
abs_path = download(uri, os.path.abspath(user_base_dir))
|
||||
else:
|
||||
abs_path = download(uri)
|
||||
if not file_type(abs_path) == "gz":
|
||||
try:
|
||||
return extract_tar(abs_path)
|
||||
except (tarfile.TarError, Exception):
|
||||
msg = _("Not a gz file, returning abs_path")
|
||||
LOG.debug(msg)
|
||||
return abs_path
|
||||
return extract_tar(abs_path)
|
||||
|
|
Loading…
Reference in New Issue