X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_common%2Ffsbase.py;h=219dbe158913ab8982edac82d5ff08845b4eef7f;hb=HEAD;hp=60c0c0fb5bba65a3fcd7ba55c61b468c10407397;hpb=3054f783ac759b221233fd0a82424aa105e4ea2e;p=osm%2Fcommon.git diff --git a/osm_common/fsbase.py b/osm_common/fsbase.py index 60c0c0f..a03fb32 100644 --- a/osm_common/fsbase.py +++ b/osm_common/fsbase.py @@ -1,5 +1,27 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Telefonica S.A. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from http import HTTPStatus +import logging +from threading import Lock + +from osm_common.common_utils import FakeLock + __author__ = "Alfonso Tierno " @@ -11,8 +33,24 @@ class FsException(Exception): class FsBase(object): - def __init__(self): - pass + def __init__(self, logger_name="fs", lock=False): + """ + Constructor of FsBase + :param logger_name: logging name + :param lock: Used to protect simultaneous access to the same instance class by several threads: + False, None: Do not protect, this object will only be accessed by one thread + True: This object needs to be protected by several threads accessing. + Lock object. Use thi Lock for the threads access protection + """ + self.logger = logging.getLogger(logger_name) + if not lock: + self.lock = FakeLock() + elif lock is True: + self.lock = Lock() + elif isinstance(lock, Lock): + self.lock = lock + else: + raise ValueError("lock parameter must be a Lock class or boolean") def get_params(self): return {} @@ -24,19 +62,31 @@ class FsBase(object): pass def mkdir(self, folder): - pass + raise FsException("Method 'mkdir' not implemented") + + def dir_rename(self, src, dst): + raise FsException("Method 'dir_rename' not implemented") + + def dir_ls(self, storage): + raise FsException("Method 'dir_ls' not implemented") def file_exists(self, storage): - pass + raise FsException("Method 'file_exists' not implemented") def file_size(self, storage): - pass + raise FsException("Method 'file_size' not implemented") def file_extract(self, tar_object, path): - pass + raise FsException("Method 'file_extract' not implemented") def file_open(self, storage, mode): - pass + raise FsException("Method 'file_open' not implemented") def file_delete(self, storage, ignore_non_exist=False): - pass + raise FsException("Method 'file_delete' not implemented") + + def sync(self, from_path=None): + raise FsException("Method 'sync' not implemented") + + def reverse_sync(self, from_path): + raise FsException("Method 'reverse_sync' not implemented")