import os import os.path import yaml import jinja2 QUAYPATH = os.getenv("QUAYPATH", ".") QUAYDIR = os.getenv("QUAYDIR", "/") QUAYCONF_DIR = os.getenv("QUAYCONF", os.path.join(QUAYDIR, QUAYPATH, "conf")) STATIC_DIR = os.path.join(QUAYDIR, 'static/') def write_config(filename, **kwargs): with open(filename + ".jnj") as f: template = jinja2.Template(f.read()) rendered = template.render(kwargs) with open(filename, 'w') as f: f.write(rendered) def generate_nginx_config(): """ Generates nginx config from the app config """ use_https = os.path.exists(os.path.join(QUAYCONF_DIR, 'stack/ssl.key')) write_config(os.path.join(QUAYCONF_DIR, 'nginx/nginx.conf'), use_https=use_https) def generate_server_config(config): """ Generates server config from the app config """ config = config or {} tuf_server = config.get('TUF_SERVER', None) tuf_host = config.get('TUF_HOST', None) signing_enabled = config.get('FEATURE_SIGNING', False) maximum_layer_size = config.get('MAXIMUM_LAYER_SIZE', '20G') write_config( os.path.join(QUAYCONF_DIR, 'nginx/server-base.conf'), tuf_server=tuf_server, tuf_host=tuf_host, signing_enabled=signing_enabled, maximum_layer_size=maximum_layer_size, static_dir=STATIC_DIR) if __name__ == "__main__": if os.path.exists(os.path.join(QUAYCONF_DIR, 'stack/config.yaml')): with open(os.path.join(QUAYCONF_DIR, 'stack/config.yaml'), 'r') as f: config = yaml.load(f) else: config = None generate_server_config(config) generate_nginx_config()