1 # -*- coding: utf-8 -*-
3 # Copyright 2018 Telefonica S.A.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
19 from http
import HTTPStatus
21 from threading
import Lock
23 from osm_common
.common_utils
import FakeLock
26 __author__
= "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
29 class FsException(Exception):
30 def __init__(self
, message
, http_code
=HTTPStatus
.INTERNAL_SERVER_ERROR
):
31 self
.http_code
= http_code
32 Exception.__init
__(self
, "storage exception " + message
)
36 def __init__(self
, logger_name
="fs", lock
=False):
39 :param logger_name: logging name
40 :param lock: Used to protect simultaneous access to the same instance class by several threads:
41 False, None: Do not protect, this object will only be accessed by one thread
42 True: This object needs to be protected by several threads accessing.
43 Lock object. Use thi Lock for the threads access protection
45 self
.logger
= logging
.getLogger(logger_name
)
47 self
.lock
= FakeLock()
50 elif isinstance(lock
, Lock
):
53 raise ValueError("lock parameter must be a Lock class or boolean")
58 def fs_connect(self
, config
):
61 def fs_disconnect(self
):
64 def mkdir(self
, folder
):
65 raise FsException("Method 'mkdir' not implemented")
67 def dir_rename(self
, src
, dst
):
68 raise FsException("Method 'dir_rename' not implemented")
70 def dir_ls(self
, storage
):
71 raise FsException("Method 'dir_ls' not implemented")
73 def file_exists(self
, storage
):
74 raise FsException("Method 'file_exists' not implemented")
76 def file_size(self
, storage
):
77 raise FsException("Method 'file_size' not implemented")
79 def file_extract(self
, tar_object
, path
):
80 raise FsException("Method 'file_extract' not implemented")
82 def file_open(self
, storage
, mode
):
83 raise FsException("Method 'file_open' not implemented")
85 def file_delete(self
, storage
, ignore_non_exist
=False):
86 raise FsException("Method 'file_delete' not implemented")
88 def sync(self
, from_path
=None):
89 raise FsException("Method 'sync' not implemented")
91 def reverse_sync(self
, from_path
):
92 raise FsException("Method 'reverse_sync' not implemented")