|
8 | 8 | import logging |
9 | 9 | import os |
10 | 10 | import random |
11 | | -from typing import Literal, Union |
| 11 | +from typing import Union |
12 | 12 |
|
13 | 13 | import pydantic |
14 | 14 | import requests |
@@ -352,33 +352,39 @@ def get_problem_messages(self, id: str): |
352 | 352 | def change_severity( |
353 | 353 | self, |
354 | 354 | id: str, |
355 | | - new_severity: Union[ |
356 | | - int, |
357 | | - Literal[ |
358 | | - "Not classified", "Information", "Warning", "Average", "High", "Disaster" |
359 | | - ], |
360 | | - ], |
| 355 | + new_severity: str, |
361 | 356 | ): |
362 | 357 | """ |
363 | 358 | Change the severity of a problem. |
364 | 359 | Args: |
365 | 360 | 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" |
373 | 368 | """ |
374 | | - # Handle integer input |
| 369 | + # Validate and convert input |
375 | 370 | 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.") |
379 | 379 | else: |
380 | 380 | # 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 | + |
382 | 388 | self.__send_request( |
383 | 389 | "event.acknowledge", {"eventids": id, "severity": severity, "action": 8} |
384 | 390 | ) |
|
0 commit comments