diff --git a/keep/providers/site24x7_provider/site24x7_provider.py b/keep/providers/site24x7_provider/site24x7_provider.py index d6c52d4fa3..c53b6f0485 100644 --- a/keep/providers/site24x7_provider/site24x7_provider.py +++ b/keep/providers/site24x7_provider/site24x7_provider.py @@ -92,7 +92,6 @@ class Site24X7Provider(BaseProvider): "CRITICAL": AlertStatus.FIRING, "UP": AlertStatus.RESOLVED, } - def __init__( self, context_manager: ContextManager, provider_id: str, config: ProviderConfig ): @@ -219,6 +218,29 @@ def setup_webhook( else: self.logger.info("Webhook created successfully") + @staticmethod + def _parse_labels(event: dict) -> dict: + labels_raw = event.get("LABELS") + if labels_raw is None: + return { + k: ", ".join(str(i) for i in v) if isinstance(v, list) else str(v) + for k, v in event.items() + if v is not None + } + if isinstance(labels_raw, dict): + return labels_raw + if isinstance(labels_raw, str) and labels_raw: + labels = {} + for part in labels_raw.split(","): + part = part.strip() + if ":" in part: + k, _, v = part.partition(":") + labels[k.strip()] = v.strip() + elif part: + labels[part] = "" + return labels + return {} + @staticmethod def _format_alert( event: dict, provider_instance: "BaseProvider" = None @@ -234,20 +256,7 @@ def _format_alert( elif not isinstance(tags, list): tags = [] - labels_raw = event.get("LABELS", "") - if isinstance(labels_raw, dict): - labels = labels_raw - elif isinstance(labels_raw, str) and labels_raw: - labels = {} - for part in labels_raw.split(","): - part = part.strip() - if ":" in part: - k, _, v = part.partition(":") - labels[k.strip()] = v.strip() - elif part: - labels[part] = "" - else: - labels = {} + labels = Site24X7Provider._parse_labels(event) return AlertDto( url=event.get("MONITORURL", ""),