Source code for redirectory.libs_int.config.configuration
import confuse
configuration_path_env_var = "REDIRECTORY_CONFIG_DIR"
configuration_template = {
"deployment": confuse.Choice(["prod", "dev", "test"]),
"log_level": confuse.Choice(["debug", "info", "warning", "error", "critical"]),
"node_type": confuse.Choice(["management", "worker", "compiler"]),
"directories": {
"data": confuse.String(),
"ui": confuse.String()
},
"service": {
"ip": confuse.String(),
"port": confuse.Integer(),
"metrics_port": confuse.Integer()
},
"database": {
"type": confuse.Choice(["sqlite", "mysql"]),
"path": confuse.String(default="redirectory_sqlite.db"),
"host": confuse.String(default="localhost"),
"port": confuse.Integer(default=3306),
"name": confuse.String(default="redirectory"),
"username": confuse.String(default="user"),
"password": confuse.String(default="pass")
},
"hyperscan": {
"domain_db": confuse.String(default="hs_compiled_domain.hsd"),
"rules_db": confuse.String(default="hs_compiled_rules.hsd")
},
"kubernetes": {
"namespace": confuse.String(default="redirectory"),
"worker_selector": confuse.String(default="app=redirectory-worker"),
"management_selector": confuse.String(default="app=redirectory-management")
}
}
[docs]class Configuration:
__instance = None
__config_parser = None
values = None
path = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = super(Configuration, cls).__new__(cls)
cls.__instance.__config_parser = confuse.Configuration("redirectory", __name__, read=False)
cls.__instance.__config_parser._env_var = configuration_path_env_var
cls.__instance.__config_parser.read()
cls.__instance.values = cls.__instance.__config_parser.get(template=configuration_template)
cls.__instance.path = cls.__instance.__config_parser.config_dir()
return cls.__instance