mirror of
https://github.com/quay/quay.git
synced 2025-04-18 10:44:06 +03:00
Currently the prometheus and GC workers are not running correctly. Reverting the following commits: -4e1a985e70
-dac183a1ef
-68a0d9eaf0
-af1aacea08
-f334b80098
66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
import logging
|
|
|
|
from data.logs_model.table_logs_model import TableLogsModel
|
|
from data.logs_model.document_logs_model import DocumentLogsModel
|
|
from data.logs_model.combined_model import CombinedLogsModel
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def _transition_model(*args, **kwargs):
|
|
return CombinedLogsModel(
|
|
DocumentLogsModel(*args, **kwargs),
|
|
TableLogsModel(*args, **kwargs),
|
|
)
|
|
|
|
|
|
_LOG_MODELS = {
|
|
"database": TableLogsModel,
|
|
"transition_reads_both_writes_es": _transition_model,
|
|
"elasticsearch": DocumentLogsModel,
|
|
}
|
|
|
|
_PULL_LOG_KINDS = {"pull_repo", "repo_verb"}
|
|
|
|
|
|
class LogsModelProxy(object):
|
|
def __init__(self):
|
|
self._model = None
|
|
|
|
def initialize(self, model):
|
|
self._model = model
|
|
logger.info("===============================")
|
|
logger.info("Using logs model `%s`", self._model)
|
|
logger.info("===============================")
|
|
|
|
def __getattr__(self, attr):
|
|
if not self._model:
|
|
raise AttributeError("LogsModelProxy is not initialized")
|
|
return getattr(self._model, attr)
|
|
|
|
|
|
logs_model = LogsModelProxy()
|
|
|
|
|
|
def configure(app_config):
|
|
logger.debug("Configuring log lodel")
|
|
model_name = app_config.get("LOGS_MODEL", "database")
|
|
model_config = app_config.get("LOGS_MODEL_CONFIG", {})
|
|
|
|
def should_skip_logging(kind_name, namespace_name, is_free_namespace):
|
|
if namespace_name and namespace_name in app_config.get("DISABLED_FOR_AUDIT_LOGS", {}):
|
|
return True
|
|
|
|
if kind_name in _PULL_LOG_KINDS:
|
|
if namespace_name and namespace_name in app_config.get("DISABLED_FOR_PULL_LOGS", {}):
|
|
return True
|
|
|
|
if app_config.get("FEATURE_DISABLE_PULL_LOGS_FOR_FREE_NAMESPACES"):
|
|
if is_free_namespace:
|
|
return True
|
|
|
|
return False
|
|
|
|
model_config["should_skip_logging"] = should_skip_logging
|
|
logs_model.initialize(_LOG_MODELS[model_name](**model_config))
|