ceph/monitoring/ceph-mixin/tests_alerts/test_syntax.py
Arthur Outhenin-Chalandre 98236e3a1d
mgr/dashboard: monitoring: refactor into ceph-mixin
Mixin is a way to bundle dashboards, prometheus rules and alerts into
jsonnet package. Shifting to mixin will allow easier integration with
monitoring automation that some users may use.

This commit moves `/monitoring/grafana/dashboards` and
`/monitoring/prometheus` to `/monitoring/ceph-mixin`. Prometheus alerts
was also converted to Jsonnet using an automated way (from yaml to json
to jsonnet). This commit minimises any change made to the generated files
and should not change neithers the dashboards nor the Prometheus alerts.

In the future some configuration will also be added to jsonnet to add
more functionalities to the dashboards or alerts (i.e.: multi cluster).

Fixes: https://tracker.ceph.com/issues/53374
Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
2022-02-03 13:08:20 +01:00

43 lines
1.1 KiB
Python
Executable File

import pytest
import os
import yaml
from .utils import promtool_available, call
from .settings import ALERTS_FILE, UNIT_TESTS_FILE
def load_yaml(file_name):
yaml_data = None
with open(file_name, 'r') as alert_file:
raw = alert_file.read()
try:
yaml_data = yaml.safe_load(raw)
except yaml.YAMLError as e:
pass
return yaml_data
def test_alerts_present():
assert os.path.exists(ALERTS_FILE), f"{ALERTS_FILE} not found"
def test_unittests_present():
assert os.path.exists(UNIT_TESTS_FILE), f"{UNIT_TESTS_FILE} not found"
@pytest.mark.skipif(not os.path.exists(ALERTS_FILE), reason=f"{ALERTS_FILE} missing")
def test_rules_format():
assert load_yaml(ALERTS_FILE)
@pytest.mark.skipif(not os.path.exists(UNIT_TESTS_FILE), reason=f"{UNIT_TESTS_FILE} missing")
def test_unittests_format():
assert load_yaml(UNIT_TESTS_FILE)
@pytest.mark.skipif(not promtool_available(), reason="promtool is not installed. Unable to check syntax")
def test_rule_syntax():
completion = call(f"promtool check rules {ALERTS_FILE}")
assert completion.returncode == 0
assert b"SUCCESS" in completion.stdout