561522c6d3
Fix some FA5 regressions Fix uploading cert files Add fix some icons
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
import logging
|
|
import yaml
|
|
import io
|
|
|
|
from config_app.config_util.config.baseprovider import BaseProvider
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
CONFIG_FILENAME = 'config.yaml'
|
|
|
|
class InMemoryProvider(BaseProvider):
|
|
def __init__(self):
|
|
self.files = {}
|
|
self.config = {}
|
|
self.was_loaded = False
|
|
|
|
@property
|
|
def provider_id(self):
|
|
return 'memory'
|
|
|
|
def update_app_config(self, app_config):
|
|
self.config = app_config
|
|
|
|
def get_config(self):
|
|
return self.config
|
|
|
|
def save_config(self, config_object):
|
|
self.config = config_object
|
|
self.was_loaded = True
|
|
|
|
def config_exists(self):
|
|
return self.was_loaded
|
|
|
|
def volume_exists(self):
|
|
return True
|
|
|
|
def volume_file_exists(self, filename):
|
|
return any([ name.startswith(filename) for name in self.files ])
|
|
|
|
def get_volume_file(self, filename, mode='r'):
|
|
return self.files[filename]
|
|
|
|
def write_volume_file(self, filename, contents):
|
|
raise Exception('Not implemented yet')
|
|
|
|
def remove_volume_file(self, filename):
|
|
raise Exception('Not implemented yet')
|
|
|
|
def list_volume_directory(self, path):
|
|
return [ name for name in self.files if name.startswith(path) ]
|
|
|
|
def save_volume_file(self, filename, flask_file):
|
|
self.files[filename] = flask_file.read()
|
|
|
|
def requires_restart(self, app_config):
|
|
raise Exception('Not implemented yet')
|
|
|
|
def get_volume_path(self, directory, filename):
|
|
# Here we can just access the filename since we're storing the tarball files with their full path
|
|
if directory.endswith('/'):
|
|
return directory + filename
|
|
else:
|
|
return directory + '/' + filename
|
|
|
|
def load_from_tarball(self, tarfile):
|
|
for tarinfo in tarfile.getmembers():
|
|
if tarinfo.isfile():
|
|
if tarinfo.name == CONFIG_FILENAME:
|
|
self.config = yaml.load(tarfile.extractfile(tarinfo.name).read())
|
|
else:
|
|
self.files[tarinfo.name] = tarfile.extractfile(tarinfo.name).read()
|
|
self.was_loaded = True
|
|
|