45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import logging
|
|
|
|
|
|
from pyinfra.config import CONFIG
|
|
from pyinfra.exceptions import DataLoadingFailure
|
|
from pyinfra.storage.adapters.adapter import StorageAdapter
|
|
from pyinfra.utils.retry import retry
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(CONFIG.service.logging_level)
|
|
|
|
|
|
class Storage:
|
|
def __init__(self, adapter: StorageAdapter):
|
|
self.__adapter = adapter
|
|
|
|
def make_bucket(self, bucket_name):
|
|
self.__adapter.make_bucket(bucket_name)
|
|
|
|
def has_bucket(self, bucket_name):
|
|
return self.__adapter.has_bucket(bucket_name)
|
|
|
|
def put_object(self, bucket_name, object_name, data):
|
|
self.__adapter.put_object(bucket_name, object_name, data)
|
|
|
|
def get_object(self, bucket_name, object_name):
|
|
return self.__get_object(bucket_name, object_name)
|
|
|
|
@retry(DataLoadingFailure)
|
|
def __get_object(self, bucket_name, object_name):
|
|
try:
|
|
return self.__adapter.get_object(bucket_name, object_name)
|
|
except Exception as err:
|
|
logging.error(err)
|
|
raise DataLoadingFailure from err
|
|
|
|
def get_all_objects(self, bucket_name):
|
|
return self.__adapter.get_all_objects(bucket_name)
|
|
|
|
def clear_bucket(self, bucket_name):
|
|
return self.__adapter.clear_bucket(bucket_name)
|
|
|
|
def get_all_object_names(self, bucket_name, prefix=None):
|
|
return self.__adapter.get_all_object_names(bucket_name, prefix=prefix)
|