projects
/
osm
/
common.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Code Cleanup and adding unit tests
[osm/common.git]
/
osm_common
/
fslocal.py
diff --git
a/osm_common/fslocal.py
b/osm_common/fslocal.py
index
3686b36
..
5bae0e9
100644
(file)
--- a/
osm_common/fslocal.py
+++ b/
osm_common/fslocal.py
@@
-15,19
+15,20
@@
# See the License for the specific language governing permissions and
# limitations under the License.
# See the License for the specific language governing permissions and
# limitations under the License.
-import os
-import logging
-# import tarfile
from http import HTTPStatus
from http import HTTPStatus
+import logging
+import os
from shutil import rmtree
from shutil import rmtree
+import tarfile
+import zipfile
+
from osm_common.fsbase import FsBase, FsException
__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
class FsLocal(FsBase):
from osm_common.fsbase import FsBase, FsException
__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
class FsLocal(FsBase):
-
- def __init__(self, logger_name='fs', lock=False):
+ def __init__(self, logger_name="fs", lock=False):
super().__init__(logger_name, lock)
self.path = None
super().__init__(logger_name, lock)
self.path = None
@@
-42,8
+43,11
@@
class FsLocal(FsBase):
if not self.path.endswith("/"):
self.path += "/"
if not os.path.exists(self.path):
if not self.path.endswith("/"):
self.path += "/"
if not os.path.exists(self.path):
- raise FsException("Invalid configuration param at '[storage]': path '{}' does not exist".format(
- config["path"]))
+ raise FsException(
+ "Invalid configuration param at '[storage]': path '{}' does not exist".format(
+ config["path"]
+ )
+ )
except FsException:
raise
except Exception as e: # TODO refine
except FsException:
raise
except Exception as e: # TODO refine
@@
-113,10
+117,10
@@
class FsLocal(FsBase):
f = "/".join(storage)
return os.path.getsize(self.path + f)
f = "/".join(storage)
return os.path.getsize(self.path + f)
- def file_extract(self,
tar
_object, path):
+ def file_extract(self,
compressed
_object, path):
"""
extract a tar file
"""
extract a tar file
- :param
tar_object: object of type tar
+ :param
compressed_object: object of type tar or zip
:param path: can be a str or a str list, or a tar object where to extract the tar_object
:return: None
"""
:param path: can be a str or a str list, or a tar object where to extract the tar_object
:return: None
"""
@@
-124,7
+128,13
@@
class FsLocal(FsBase):
f = self.path + path
else:
f = self.path + "/".join(path)
f = self.path + path
else:
f = self.path + "/".join(path)
- tar_object.extractall(path=f)
+
+ if type(compressed_object) is tarfile.TarFile:
+ compressed_object.extractall(path=f)
+ elif (
+ type(compressed_object) is zipfile.ZipFile
+ ): # Just a check to know if this works with both tar and zip
+ compressed_object.extractall(path=f)
def file_open(self, storage, mode):
"""
def file_open(self, storage, mode):
"""
@@
-140,9
+150,13
@@
class FsLocal(FsBase):
f = "/".join(storage)
return open(self.path + f, mode)
except FileNotFoundError:
f = "/".join(storage)
return open(self.path + f, mode)
except FileNotFoundError:
- raise FsException("File {} does not exist".format(f), http_code=HTTPStatus.NOT_FOUND)
+ raise FsException(
+ "File {} does not exist".format(f), http_code=HTTPStatus.NOT_FOUND
+ )
except IOError:
except IOError:
- raise FsException("File {} cannot be opened".format(f), http_code=HTTPStatus.BAD_REQUEST)
+ raise FsException(
+ "File {} cannot be opened".format(f), http_code=HTTPStatus.BAD_REQUEST
+ )
def dir_ls(self, storage):
"""
def dir_ls(self, storage):
"""
@@
-157,9
+171,13
@@
class FsLocal(FsBase):
f = "/".join(storage)
return os.listdir(self.path + f)
except NotADirectoryError:
f = "/".join(storage)
return os.listdir(self.path + f)
except NotADirectoryError:
- raise FsException("File {} does not exist".format(f), http_code=HTTPStatus.NOT_FOUND)
+ raise FsException(
+ "File {} does not exist".format(f), http_code=HTTPStatus.NOT_FOUND
+ )
except IOError:
except IOError:
- raise FsException("File {} cannot be opened".format(f), http_code=HTTPStatus.BAD_REQUEST)
+ raise FsException(
+ "File {} cannot be opened".format(f), http_code=HTTPStatus.BAD_REQUEST
+ )
def file_delete(self, storage, ignore_non_exist=False):
"""
def file_delete(self, storage, ignore_non_exist=False):
"""
@@
-176,9
+194,15
@@
class FsLocal(FsBase):
if os.path.exists(f):
rmtree(f)
elif not ignore_non_exist:
if os.path.exists(f):
rmtree(f)
elif not ignore_non_exist:
- raise FsException("File {} does not exist".format(storage), http_code=HTTPStatus.NOT_FOUND)
+ raise FsException(
+ "File {} does not exist".format(storage),
+ http_code=HTTPStatus.NOT_FOUND,
+ )
except (IOError, PermissionError) as e:
except (IOError, PermissionError) as e:
- raise FsException("File {} cannot be deleted: {}".format(f, e), http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
+ raise FsException(
+ "File {} cannot be deleted: {}".format(f, e),
+ http_code=HTTPStatus.INTERNAL_SERVER_ERROR,
+ )
def sync(self, from_path=None):
pass # Not needed in fslocal
def sync(self, from_path=None):
pass # Not needed in fslocal