mirror of
https://github.com/lucaspalomodevelop/indico-plugins.git
synced 2026-03-12 23:27:22 +00:00
78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
# This file is part of the Indico plugins.
|
|
# Copyright (C) 2002 - 2024 CERN
|
|
#
|
|
# The Indico plugins are free software; you can redistribute
|
|
# them and/or modify them under the terms of the MIT License;
|
|
# see the LICENSE file for more details.
|
|
|
|
from datetime import timedelta
|
|
|
|
from wtforms.fields import BooleanField
|
|
from wtforms.validators import DataRequired, Optional
|
|
|
|
from indico.core.plugins import IndicoPlugin
|
|
from indico.core.settings.converters import TimedeltaConverter
|
|
from indico.web.forms.base import IndicoForm
|
|
from indico.web.forms.fields import IndicoPasswordField, TimeDeltaField
|
|
from indico.web.forms.widgets import SwitchWidget
|
|
|
|
from indico_prometheus import _
|
|
from indico_prometheus.blueprint import blueprint
|
|
|
|
|
|
class PluginSettingsForm(IndicoForm):
|
|
enabled = BooleanField(
|
|
_('Enabled'), [DataRequired()],
|
|
description=_('Endpoint enabled. Turn this on once you set a proper bearer token.'),
|
|
widget=SwitchWidget()
|
|
)
|
|
global_cache_ttl = TimeDeltaField(
|
|
_('Global Cache TTL'),
|
|
[DataRequired()],
|
|
description=_('TTL for "global" cache (everything)'),
|
|
units=('seconds', 'minutes', 'hours')
|
|
)
|
|
heavy_cache_ttl = TimeDeltaField(
|
|
_('Heavy Cache TTL'),
|
|
[DataRequired()],
|
|
description=_('TTL for "heavy" cache (more expensive queries such as attachments)'),
|
|
units=('seconds', 'minutes', 'hours')
|
|
)
|
|
token = IndicoPasswordField(
|
|
_('Bearer Token'),
|
|
[Optional()],
|
|
toggle=True,
|
|
description=_('Authentication bearer token for Prometheus')
|
|
)
|
|
active_user_age = TimeDeltaField(
|
|
_('Max. Active user age'),
|
|
[DataRequired()],
|
|
description=_('Time since login after which a user is not considered active anymore'),
|
|
units=('minutes', 'hours', 'days')
|
|
)
|
|
|
|
|
|
class PrometheusPlugin(IndicoPlugin):
|
|
"""Prometheus
|
|
|
|
Provides a metrics endpoint which can be queried by Prometheus
|
|
"""
|
|
|
|
configurable = True
|
|
settings_form = PluginSettingsForm
|
|
default_settings = {
|
|
'enabled': False,
|
|
'global_cache_ttl': timedelta(minutes=5),
|
|
'heavy_cache_ttl': timedelta(minutes=30),
|
|
'token': '',
|
|
'active_user_age': timedelta(hours=48)
|
|
}
|
|
settings_converters = {
|
|
'global_cache_ttl': TimedeltaConverter,
|
|
'heavy_cache_ttl': TimedeltaConverter,
|
|
'active_user_age': TimedeltaConverter
|
|
}
|
|
|
|
def get_blueprints(self):
|
|
return blueprint
|