This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/config_app/config_util/config/inmemoryprovider.py
Sam Chow 561522c6d3 Port cor-title and add file check endpoint
Fix some FA5 regressions

Fix uploading cert files

Add fix some icons
2018-06-20 17:36:48 -04:00

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