Skip to content

Commit

Permalink
Merge pull request #20 from nicholasmhughes/fix-keyerror-id-not-present
Browse files Browse the repository at this point in the history
Fix keyerror id not present
  • Loading branch information
nicholasmhughes authored Mar 12, 2023
2 parents 7879f88 + 7046797 commit 456e5ac
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ repos:
args: [--silent, -E, fix_docstrings]

- repo: https://github.com/asottile/pyupgrade
rev: v2.23.3
rev: v2.38.4
hooks:
- id: pyupgrade
name: Rewrite Code to be Py3+
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ This project uses [Semantic Versioning](https://semver.org/) - MAJOR.MINOR.PATCH

# Changelog

Saltext.Prometheus 2.0.1 (2023-03-12)
=====================================

Fixed
-----

- Fix KeyError thrown when requiring state is not run (#20)


Saltext.Prometheus 2.0.0 (2022-10-13)
=====================================

Expand Down
4 changes: 3 additions & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,15 @@ tests =
mock==3.0.5
pytest==6.2.4
pytest-salt-factories==0.906.0
jinja2<3.1
dev =
nox==2021.6.12
pre-commit==2.13.0
pylint<2.14.0
SaltPyLint
docs =
sphinx
sphinx>=3.5.1
jinja2<3.1
furo
sphinx-copybutton
sphinx-prompt
Expand Down
17 changes: 12 additions & 5 deletions src/saltext/prometheus/returners/prometheus_textfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ def returner(ret):
)
gauge_salt_aborted.set(0)
for state_id, state_return in ret["return"].items():
if not state_return["result"] and state_return["__id__"] in opts["abort_state_ids"]:
if not state_return["result"] and state_return.get("__id__") in opts["abort_state_ids"]:
gauge_salt_aborted.set(1)

if opts["add_state_name"]:
Expand All @@ -409,10 +409,17 @@ def returner(ret):
label_values.append(__grains__["saltversion"].split("+", maxsplit=1)[0])
keys_dict = output.pop(key)
gauge_keys = Gauge(key, keys_dict["help"], labels, registry=registry)
if label_values:
gauge_keys.labels(*label_values).set(keys_dict["value"])
else:
gauge_keys.set(keys_dict["value"])
try:
if label_values:
gauge_keys.labels(*label_values).set(keys_dict["value"])
else:
gauge_keys.set(keys_dict["value"])
except ValueError:
keys_dict["value"] = keys_dict["value"].split("rc", maxsplit=1)[0]
if label_values:
gauge_keys.labels(*label_values).set(keys_dict["value"])
else:
gauge_keys.set(keys_dict["value"])

write_to_textfile(opts["filename"], registry)
if not salt.utils.platform.is_windows():
Expand Down
2 changes: 1 addition & 1 deletion src/saltext/prometheus/version.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# pylint: disable=missing-module-docstring
__version__ = "2.0.0"
__version__ = "2.0.1"
52 changes: 47 additions & 5 deletions tests/unit/returners/test_prometheus_textfile_return.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# pylint: disable=unused-argument,invalid-name
import os
import re
from pathlib import Path

import pytest
import salt.utils.files
Expand Down Expand Up @@ -115,7 +116,7 @@ def test_basic_prometheus_output_with_default_options(patch_dunders, job_ret, ca
"# TYPE salt_last_completed gauge",
"# HELP salt_version Version of installed Salt package",
"# TYPE salt_version gauge",
"salt_version {}".format(salt.version.__version__),
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
"# HELP salt_version_tagged Version of installed Salt package as a tag",
"# TYPE salt_version_tagged gauge",
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
Expand Down Expand Up @@ -199,7 +200,9 @@ def test_when_add_state_name_is_set_then_correct_output_should_be_in_correct_fil
"# TYPE salt_last_completed gauge",
"# HELP salt_version Version of installed Salt package",
"# TYPE salt_version gauge",
'salt_version{{state="{}"}} {}'.format(state_name, salt.version.__version__),
'salt_version{{state="{}"}} {}'.format(
state_name, salt.version.__version__.split("rc", maxsplit=1)[0]
),
"# HELP salt_version_tagged Version of installed Salt package as a tag",
"# TYPE salt_version_tagged gauge",
'salt_version_tagged{{salt_version="{}",state="{}"}} 1.0'.format(
Expand Down Expand Up @@ -263,7 +266,7 @@ def test_prometheus_output_with_show_failed_state_option_and_abort_state_ids(
"# TYPE salt_last_completed gauge",
"# HELP salt_version Version of installed Salt package",
"# TYPE salt_version gauge",
"salt_version {}".format(salt.version.__version__),
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
"# HELP salt_version_tagged Version of installed Salt package as a tag",
"# TYPE salt_version_tagged gauge",
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
Expand Down Expand Up @@ -381,7 +384,7 @@ def test_fail_comments_lengths(patch_dunders, job_ret, cache_dir, minion):
"# TYPE salt_last_completed gauge",
"# HELP salt_version Version of installed Salt package",
"# TYPE salt_version gauge",
"salt_version {}".format(salt.version.__version__),
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
"# HELP salt_version_tagged Version of installed Salt package as a tag",
"# TYPE salt_version_tagged gauge",
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
Expand Down Expand Up @@ -450,7 +453,7 @@ def test_fail_comments_lengths(patch_dunders, job_ret, cache_dir, minion):
"# TYPE salt_last_completed gauge",
"# HELP salt_version Version of installed Salt package",
"# TYPE salt_version gauge",
"salt_version {}".format(salt.version.__version__),
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
"# HELP salt_version_tagged Version of installed Salt package as a tag",
"# TYPE salt_version_tagged gauge",
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
Expand Down Expand Up @@ -529,3 +532,42 @@ def test_prometheus_output_with_raw_version(patch_dunders, job_ret, cache_dir, m

assert salt_version == float_version
assert salt_version_tagged == expected_version


def test_requisite_handling(patch_dunders, cache_dir, minion):
job_ret = {
"fun": "state.apply",
"fun_args": ["prom_ret"],
"id": "d10-saltgit-01.example.local",
"jid": "20230312161844491819",
"out": "highstate",
"retcode": 2,
"return": {
"test_|-failure_|-failure_|-fail_without_changes": {
"__id__": "failure",
"__run_num__": 0,
"__sls__": "prom_ret",
"changes": {},
"comment": "Failure!",
"duration": 1.074,
"name": "failure",
"result": False,
"start_time": "16:18:44.771989",
},
"test_|-wont_run_|-wont_run_|-succeed_without_changes": {
"__run_num__": 1,
"__sls__": "prom_ret",
"changes": {},
"comment": "One or more requisite failed: prom_ret.failure",
"duration": 0.005,
"result": False,
"start_time": "16:18:44.773443",
},
},
"success": True,
}

prometheus_textfile.__opts__.update({"abort_state_ids": ["echo includeme"]})
prometheus_textfile.returner(job_ret)

assert Path(os.path.join(cache_dir, "prometheus_textfile", "salt.prom")).exists()

0 comments on commit 456e5ac

Please sign in to comment.