Skip to content

Commit 456e5ac

Browse files
Merge pull request #20 from nicholasmhughes/fix-keyerror-id-not-present
Fix keyerror id not present
2 parents 7879f88 + 7046797 commit 456e5ac

File tree

6 files changed

+73
-13
lines changed

6 files changed

+73
-13
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ repos:
5353
args: [--silent, -E, fix_docstrings]
5454

5555
- repo: https://github.com/asottile/pyupgrade
56-
rev: v2.23.3
56+
rev: v2.38.4
5757
hooks:
5858
- id: pyupgrade
5959
name: Rewrite Code to be Py3+

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ This project uses [Semantic Versioning](https://semver.org/) - MAJOR.MINOR.PATCH
44

55
# Changelog
66

7+
Saltext.Prometheus 2.0.1 (2023-03-12)
8+
=====================================
9+
10+
Fixed
11+
-----
12+
13+
- Fix KeyError thrown when requiring state is not run (#20)
14+
15+
716
Saltext.Prometheus 2.0.0 (2022-10-13)
817
=====================================
918

setup.cfg

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,15 @@ tests =
5959
mock==3.0.5
6060
pytest==6.2.4
6161
pytest-salt-factories==0.906.0
62+
jinja2<3.1
6263
dev =
6364
nox==2021.6.12
6465
pre-commit==2.13.0
6566
pylint<2.14.0
6667
SaltPyLint
6768
docs =
68-
sphinx
69+
sphinx>=3.5.1
70+
jinja2<3.1
6971
furo
7072
sphinx-copybutton
7173
sphinx-prompt

src/saltext/prometheus/returners/prometheus_textfile.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ def returner(ret):
383383
)
384384
gauge_salt_aborted.set(0)
385385
for state_id, state_return in ret["return"].items():
386-
if not state_return["result"] and state_return["__id__"] in opts["abort_state_ids"]:
386+
if not state_return["result"] and state_return.get("__id__") in opts["abort_state_ids"]:
387387
gauge_salt_aborted.set(1)
388388

389389
if opts["add_state_name"]:
@@ -409,10 +409,17 @@ def returner(ret):
409409
label_values.append(__grains__["saltversion"].split("+", maxsplit=1)[0])
410410
keys_dict = output.pop(key)
411411
gauge_keys = Gauge(key, keys_dict["help"], labels, registry=registry)
412-
if label_values:
413-
gauge_keys.labels(*label_values).set(keys_dict["value"])
414-
else:
415-
gauge_keys.set(keys_dict["value"])
412+
try:
413+
if label_values:
414+
gauge_keys.labels(*label_values).set(keys_dict["value"])
415+
else:
416+
gauge_keys.set(keys_dict["value"])
417+
except ValueError:
418+
keys_dict["value"] = keys_dict["value"].split("rc", maxsplit=1)[0]
419+
if label_values:
420+
gauge_keys.labels(*label_values).set(keys_dict["value"])
421+
else:
422+
gauge_keys.set(keys_dict["value"])
416423

417424
write_to_textfile(opts["filename"], registry)
418425
if not salt.utils.platform.is_windows():

src/saltext/prometheus/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# pylint: disable=missing-module-docstring
2-
__version__ = "2.0.0"
2+
__version__ = "2.0.1"

tests/unit/returners/test_prometheus_textfile_return.py

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# pylint: disable=unused-argument,invalid-name
22
import os
33
import re
4+
from pathlib import Path
45

56
import pytest
67
import salt.utils.files
@@ -115,7 +116,7 @@ def test_basic_prometheus_output_with_default_options(patch_dunders, job_ret, ca
115116
"# TYPE salt_last_completed gauge",
116117
"# HELP salt_version Version of installed Salt package",
117118
"# TYPE salt_version gauge",
118-
"salt_version {}".format(salt.version.__version__),
119+
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
119120
"# HELP salt_version_tagged Version of installed Salt package as a tag",
120121
"# TYPE salt_version_tagged gauge",
121122
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
@@ -199,7 +200,9 @@ def test_when_add_state_name_is_set_then_correct_output_should_be_in_correct_fil
199200
"# TYPE salt_last_completed gauge",
200201
"# HELP salt_version Version of installed Salt package",
201202
"# TYPE salt_version gauge",
202-
'salt_version{{state="{}"}} {}'.format(state_name, salt.version.__version__),
203+
'salt_version{{state="{}"}} {}'.format(
204+
state_name, salt.version.__version__.split("rc", maxsplit=1)[0]
205+
),
203206
"# HELP salt_version_tagged Version of installed Salt package as a tag",
204207
"# TYPE salt_version_tagged gauge",
205208
'salt_version_tagged{{salt_version="{}",state="{}"}} 1.0'.format(
@@ -263,7 +266,7 @@ def test_prometheus_output_with_show_failed_state_option_and_abort_state_ids(
263266
"# TYPE salt_last_completed gauge",
264267
"# HELP salt_version Version of installed Salt package",
265268
"# TYPE salt_version gauge",
266-
"salt_version {}".format(salt.version.__version__),
269+
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
267270
"# HELP salt_version_tagged Version of installed Salt package as a tag",
268271
"# TYPE salt_version_tagged gauge",
269272
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
@@ -381,7 +384,7 @@ def test_fail_comments_lengths(patch_dunders, job_ret, cache_dir, minion):
381384
"# TYPE salt_last_completed gauge",
382385
"# HELP salt_version Version of installed Salt package",
383386
"# TYPE salt_version gauge",
384-
"salt_version {}".format(salt.version.__version__),
387+
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
385388
"# HELP salt_version_tagged Version of installed Salt package as a tag",
386389
"# TYPE salt_version_tagged gauge",
387390
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
@@ -450,7 +453,7 @@ def test_fail_comments_lengths(patch_dunders, job_ret, cache_dir, minion):
450453
"# TYPE salt_last_completed gauge",
451454
"# HELP salt_version Version of installed Salt package",
452455
"# TYPE salt_version gauge",
453-
"salt_version {}".format(salt.version.__version__),
456+
"salt_version {}".format(salt.version.__version__.split("rc", maxsplit=1)[0]),
454457
"# HELP salt_version_tagged Version of installed Salt package as a tag",
455458
"# TYPE salt_version_tagged gauge",
456459
'salt_version_tagged{{salt_version="{}"}} 1.0'.format(salt.version.__version__),
@@ -529,3 +532,42 @@ def test_prometheus_output_with_raw_version(patch_dunders, job_ret, cache_dir, m
529532

530533
assert salt_version == float_version
531534
assert salt_version_tagged == expected_version
535+
536+
537+
def test_requisite_handling(patch_dunders, cache_dir, minion):
538+
job_ret = {
539+
"fun": "state.apply",
540+
"fun_args": ["prom_ret"],
541+
"id": "d10-saltgit-01.example.local",
542+
"jid": "20230312161844491819",
543+
"out": "highstate",
544+
"retcode": 2,
545+
"return": {
546+
"test_|-failure_|-failure_|-fail_without_changes": {
547+
"__id__": "failure",
548+
"__run_num__": 0,
549+
"__sls__": "prom_ret",
550+
"changes": {},
551+
"comment": "Failure!",
552+
"duration": 1.074,
553+
"name": "failure",
554+
"result": False,
555+
"start_time": "16:18:44.771989",
556+
},
557+
"test_|-wont_run_|-wont_run_|-succeed_without_changes": {
558+
"__run_num__": 1,
559+
"__sls__": "prom_ret",
560+
"changes": {},
561+
"comment": "One or more requisite failed: prom_ret.failure",
562+
"duration": 0.005,
563+
"result": False,
564+
"start_time": "16:18:44.773443",
565+
},
566+
},
567+
"success": True,
568+
}
569+
570+
prometheus_textfile.__opts__.update({"abort_state_ids": ["echo includeme"]})
571+
prometheus_textfile.returner(job_ret)
572+
573+
assert Path(os.path.join(cache_dir, "prometheus_textfile", "salt.prom")).exists()

0 commit comments

Comments
 (0)