Coverage for osm_mon/core/models.py: 100%

31 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-05-06 19:04 +0000

1# -*- coding: utf-8 -*- 

2 

3# Copyright 2018 Whitestack, LLC 

4# ************************************************************* 

5 

6# This file is part of OSM Monitoring module 

7# All Rights Reserved to Whitestack, LLC 

8 

9# Licensed under the Apache License, Version 2.0 (the "License"); you may 

10# not use this file except in compliance with the License. You may obtain 

11# a copy of the License at 

12 

13# http://www.apache.org/licenses/LICENSE-2.0 

14 

15# Unless required by applicable law or agreed to in writing, software 

16# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 

17# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 

18# License for the specific language governing permissions and limitations 

19# under the License. 

20# For those usages not covered by the Apache License, Version 2.0 please 

21# contact: bdiaz@whitestack.com or glavado@whitestack.com 

22## 

23import uuid 

24 

25 

26class Alarm: 

27 def __init__( 

28 self, 

29 name: str = None, 

30 severity: str = None, 

31 threshold: float = None, 

32 operation: str = None, 

33 statistic: str = None, 

34 metric: str = None, 

35 action: str = None, 

36 tags: dict = {}, 

37 alarm_status: str = "ok", 

38 extra_labels: dict = {}, 

39 ): 

40 self.uuid = str(uuid.uuid4()) 

41 self.name = name 

42 self.severity = severity 

43 self.threshold = threshold 

44 self.operation = operation 

45 self.statistic = statistic 

46 self.metric = metric 

47 self.action = action 

48 self.tags = tags 

49 self.alarm_status = alarm_status 

50 self.extra_labels = extra_labels 

51 

52 def to_dict(self) -> dict: 

53 alarm = { 

54 "uuid": self.uuid, 

55 "name": self.name, 

56 "severity": self.severity, 

57 "threshold": self.threshold, 

58 "statistic": self.statistic, 

59 "metric": self.metric, 

60 "tags": self.tags, 

61 "operation": self.operation, 

62 "alarm_status": self.alarm_status, 

63 "extra_labels": self.extra_labels, 

64 } 

65 return alarm 

66 

67 @staticmethod 

68 def from_dict(data: dict): 

69 alarm = Alarm() 

70 alarm.uuid = data.get("uuid", str(uuid.uuid4())) 

71 alarm.name = data.get("name") 

72 alarm.severity = data.get("severity") 

73 alarm.threshold = float(data.get("threshold")) 

74 alarm.statistic = data.get("statistic") 

75 alarm.metric = data.get("metric") 

76 alarm.tags = data.get("tags") 

77 alarm.operation = data.get("operation") 

78 alarm.alarm_status = data.get("alarm_status") 

79 alarm.extra_labels = data.get("extra_labels") 

80 return alarm