INF-303 Add Infrastructure Monitoring Fault Service; INF-305 update inventory api...
[pti/o2.git] / o2ims / adapter / orm.py
index cb3a694..4775f29 100644 (file)
@@ -37,7 +37,9 @@ from sqlalchemy.orm import mapper, relationship
 from o2ims.domain import ocloud as ocloudModel
 from o2ims.domain import subscription_obj as subModel
 from o2ims.domain import configuration_obj as confModel
+from o2ims.domain import alarm_obj as alarmModel
 from o2ims.domain.resource_type import ResourceTypeEnum
+# from o2ims.domain.alarm_obj import AlarmLastChangeEnum, PerceivedSeverityEnum
 
 from o2common.helper import o2logging
 logger = o2logging.get_logger(__name__)
@@ -163,6 +165,66 @@ configuration = Table(
     Column("comments", String(255)),
 )
 
+alarm_definition = Table(
+    "alarmDefinition",
+    metadata,
+    Column("updatetime", DateTime),
+    Column("createtime", DateTime),
+
+    Column("alarmDefinitionId", String(255), primary_key=True),
+    Column("alarmName", String(255), unique=True),
+    Column("alarmLastChange", String(255)),
+    Column("alarmDescription", String(255)),
+    Column("proposeRepairActions", String(255)),
+    Column("clearingType", String(255)),
+    Column("managementInterfaceId", String(255)),
+    Column("pkNotificationField", String(255))
+)
+
+alarm_event_record = Table(
+    "alarmEventRecord",
+    metadata,
+    Column("updatetime", DateTime),
+    Column("createtime", DateTime),
+    Column("hash", String(255)),
+
+    Column("alarmEventRecordId", String(255), primary_key=True),
+    Column("resourceTypeId", ForeignKey("resourcetype.resourceTypeId")),
+    Column("resourceId", ForeignKey("resource.resourceId")),
+    Column("alarmDefinitionId", ForeignKey(
+        "alarmDefinition.alarmDefinitionId")),
+    Column("probableCauseId", String(255)),
+    Column("perceivedSeverity", Integer),
+    Column("alarmRaisedTime", String(255)),
+    Column("alarmChangedTime", String(255)),
+    Column("alarmAcknowledgeTime", String(255)),
+    Column("alarmAcknowledged", String(255)),
+)
+
+alarm_probable_cause = Table(
+    "probableCause",
+    metadata,
+    Column("updatetime", DateTime),
+    Column("createtime", DateTime),
+    Column("hash", String(255)),
+
+    Column("probableCauseId", String(255), primary_key=True),
+    Column("name", String(255)),
+    Column("description", String(255)),
+)
+
+alarm_subscription = Table(
+    "alarmSubscription",
+    metadata,
+    Column("updatetime", DateTime),
+    Column("createtime", DateTime),
+
+    Column("alarmSubscriptionId", String(255), primary_key=True),
+    Column("callback", String(255)),
+    Column("consumerSubscriptionId", String(255)),
+    Column("filter", String(255)),
+)
+
 
 @retry((exc.IntegrityError), tries=3, delay=2)
 def wait_for_metadata_ready(engine):
@@ -174,6 +236,7 @@ def wait_for_metadata_ready(engine):
 def start_o2ims_mappers(engine=None):
     logger.info("Starting O2 IMS mappers")
 
+    # IMS Infrastructure Inventory Mappering
     dm_mapper = mapper(ocloudModel.DeploymentManager, deploymentmanager)
     resourcepool_mapper = mapper(ocloudModel.ResourcePool, resourcepool)
     resourcetype_mapper = mapper(ocloudModel.ResourceType, resourcetype)
@@ -196,5 +259,11 @@ def start_o2ims_mappers(engine=None):
     mapper(subModel.Subscription, subscription)
     mapper(confModel.Configuration, configuration)
 
+    # IMS Infrastruture Monitoring Mappering
+    mapper(alarmModel.AlarmEventRecord, alarm_event_record)
+    mapper(alarmModel.AlarmDefinition, alarm_definition)
+    mapper(alarmModel.ProbableCause, alarm_probable_cause)
+    mapper(alarmModel.AlarmSubscription, alarm_subscription)
+
     if engine is not None:
         wait_for_metadata_ready(engine)