Skip to content

Commit a920f1b

Browse files
authored
fix: Update the severity param type for zabbix provider's change_severity method (#5267)
1 parent 4d23bed commit a920f1b

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

docs/snippets/providers/zabbix-snippet-autogenerated.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,13 @@ The provider exposes the following [Provider Methods](/providers/provider-method
3939
- **change_severity** No description. (action, scopes: event.acknowledge)
4040

4141
- `id`: The problem id.
42-
- `new_severity`: The new severity. Can be an integer (0-5) or string:
43-
- 0 or "Not classified"
44-
- 1 or "Information"
45-
- 2 or "Warning"
46-
- 3 or "Average"
47-
- 4 or "High"
48-
- 5 or "Disaster"
42+
- `new_severity`: The new severity. Can be an integer string (0-5) or severity name:
43+
- "0" or "Not classified"
44+
- "1" or "Information"
45+
- "2" or "Warning"
46+
- "3" or "Average"
47+
- "4" or "High"
48+
- "5" or "Disaster"
4949
- **surrpress_problem** No description. (action, scopes: event.acknowledge)
5050

5151
- `id`: The problem id.

keep/providers/zabbix_provider/zabbix_provider.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import logging
99
import os
1010
import random
11-
from typing import Literal, Union
11+
from typing import Union
1212

1313
import pydantic
1414
import requests
@@ -352,33 +352,39 @@ def get_problem_messages(self, id: str):
352352
def change_severity(
353353
self,
354354
id: str,
355-
new_severity: Union[
356-
int,
357-
Literal[
358-
"Not classified", "Information", "Warning", "Average", "High", "Disaster"
359-
],
360-
],
355+
new_severity: str,
361356
):
362357
"""
363358
Change the severity of a problem.
364359
Args:
365360
id (str): The problem id.
366-
new_severity (int | str): The new severity. Can be an integer (0-5) or string:
367-
- 0 or "Not classified"
368-
- 1 or "Information"
369-
- 2 or "Warning"
370-
- 3 or "Average"
371-
- 4 or "High"
372-
- 5 or "Disaster"
361+
new_severity (str): The new severity. Can be an integer string (0-5) or severity name:
362+
- "0" or "Not classified"
363+
- "1" or "Information"
364+
- "2" or "Warning"
365+
- "3" or "Average"
366+
- "4" or "High"
367+
- "5" or "Disaster"
373368
"""
374-
# Handle integer input
369+
# Validate and convert input
375370
severity = 0
376-
if isinstance(new_severity, int):
377-
if 0 <= new_severity <= 5:
378-
severity = new_severity
371+
372+
# Handle numeric string input
373+
if new_severity.isdigit():
374+
severity_int = int(new_severity)
375+
if 0 <= severity_int <= 5:
376+
severity = severity_int
377+
else:
378+
raise ValueError(f"Invalid severity number: {new_severity}. Must be between 0-5.")
379379
else:
380380
# Handle string input
381-
severity = ZabbixProvider.SEVERITY_NAME_TO_ID_MAP.get(new_severity.lower(), 0)
381+
severity_lower = new_severity.lower().strip()
382+
if severity_lower in ZabbixProvider.SEVERITY_NAME_TO_ID_MAP:
383+
severity = ZabbixProvider.SEVERITY_NAME_TO_ID_MAP[severity_lower]
384+
else:
385+
valid_severities = list(ZabbixProvider.SEVERITY_NAME_TO_ID_MAP.keys()) + ["0", "1", "2", "3", "4", "5"]
386+
raise ValueError(f"Invalid severity: {new_severity}. Valid values are: {valid_severities}")
387+
382388
self.__send_request(
383389
"event.acknowledge", {"eventids": id, "severity": severity, "action": 8}
384390
)

0 commit comments

Comments
 (0)