Refactors alarms to decouple them from vnf specific data
Alarms now handle the concept of tags, instead of having vnf specific
parameters in the model. This allows for wider usecases of alarms (e.g. fault management).
Change-Id: I2b395c4bb7f72d4fb7c53b75feccd7de00508013
Signed-off-by: Benjamin Diaz <bdiaz@whitestack.com>
diff --git a/osm_mon/server/server.py b/osm_mon/server/server.py
index 44b2340..94c7479 100755
--- a/osm_mon/server/server.py
+++ b/osm_mon/server/server.py
@@ -71,9 +71,7 @@
alarm_details['severity'].lower(),
alarm_details['statistic'].lower(),
alarm_details['metric_name'],
- alarm_details['vdu_name'],
- alarm_details['vnf_member_index'],
- alarm_details['ns_id']
+ alarm_details['tags']
)
response = response_builder.generate_response('create_alarm_response',
cor_id=cor_id,
diff --git a/osm_mon/server/service.py b/osm_mon/server/service.py
index a14ba5f..1d546e3 100755
--- a/osm_mon/server/service.py
+++ b/osm_mon/server/service.py
@@ -26,7 +26,7 @@
from osm_mon.core import database
from osm_mon.core.common_db import CommonDbClient
from osm_mon.core.config import Config
-from osm_mon.core.database import AlarmRepository, Alarm
+from osm_mon.core.database import AlarmRepository, Alarm, AlarmTagRepository
log = logging.getLogger(__name__)
@@ -43,24 +43,26 @@
severity: str,
statistic: str,
metric_name: str,
- vdur_name: str,
- vnf_member_index: str,
- nsr_id: str) -> Alarm:
+ tags: dict) -> Alarm:
database.db.connect()
try:
with database.db.atomic():
- return AlarmRepository.create(
+ alarm = AlarmRepository.create(
uuid=str(uuid.uuid4()),
name=name,
threshold=threshold,
operation=operation.lower(),
severity=severity.lower(),
statistic=statistic.lower(),
- monitoring_param=metric_name,
- vdur_name=vdur_name,
- vnf_member_index=vnf_member_index,
- nsr_id=nsr_id
+ metric=metric_name
)
+ for k, v in tags.items():
+ AlarmTagRepository.create(
+ name=k,
+ value=v,
+ alarm=alarm
+ )
+ return alarm
finally:
database.db.close()