X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Fcore%2Fdatabase.py;h=6423b5e51242e69104fecbe5142f9b0f03f5b7b9;hb=refs%2Fchanges%2F88%2F12688%2F2;hp=3a896529831d8db116665b59b8b3c700b19d8458;hpb=3736ad8763cea8da9eedcb45392f97b470a9ad8c;p=osm%2FPOL.git diff --git a/osm_policy_module/core/database.py b/osm_policy_module/core/database.py index 3a89652..6423b5e 100644 --- a/osm_policy_module/core/database.py +++ b/osm_policy_module/core/database.py @@ -26,8 +26,17 @@ import logging import os from typing import Iterable, List -from peewee import CharField, IntegerField, ForeignKeyField, Model, TextField, AutoField, DateTimeField, Proxy, \ - BooleanField +from peewee import ( + CharField, + IntegerField, + ForeignKeyField, + Model, + TextField, + AutoField, + DateTimeField, + Proxy, + BooleanField, +) from peewee_migrate import Router from playhouse.db_url import connect @@ -56,16 +65,20 @@ class ScalingGroup(BaseModel): class ScalingPolicy(BaseModel): name = CharField() cooldown_time = IntegerField() - scale_in_operation = CharField(default='AND') - scale_out_operation = CharField(default='OR') + scale_in_operation = CharField(default="AND") + scale_out_operation = CharField(default="OR") enabled = BooleanField(default=True) last_scale = DateTimeField(default=datetime.datetime.now) - scaling_group = ForeignKeyField(ScalingGroup, related_name='scaling_policies', on_delete='CASCADE') + scaling_group = ForeignKeyField( + ScalingGroup, related_name="scaling_policies", on_delete="CASCADE" + ) class ScalingCriteria(BaseModel): name = CharField() - scaling_policy = ForeignKeyField(ScalingPolicy, related_name='scaling_criterias', on_delete='CASCADE') + scaling_policy = ForeignKeyField( + ScalingPolicy, related_name="scaling_criterias", on_delete="CASCADE" + ) class ScalingAlarm(BaseModel): @@ -73,8 +86,10 @@ class ScalingAlarm(BaseModel): action = CharField() vnf_member_index = CharField() vdu_name = CharField() - scaling_criteria = ForeignKeyField(ScalingCriteria, related_name='scaling_alarms', on_delete='CASCADE') - last_status = CharField(default='insufficient-data') + scaling_criteria = ForeignKeyField( + ScalingCriteria, related_name="scaling_alarms", on_delete="CASCADE" + ) + last_status = CharField(default="insufficient-data") class VnfAlarm(BaseModel): @@ -83,17 +98,37 @@ class VnfAlarm(BaseModel): nsr_id = CharField() vnf_member_index = CharField() vdu_name = CharField() + last_action = CharField(default="insufficient-data") + id_suffix = IntegerField() + ok_ack = BooleanField(default=False) + alarm_ack = BooleanField(default=False) class AlarmAction(BaseModel): type = CharField() url = TextField() - alarm = ForeignKeyField(VnfAlarm, related_name='actions', on_delete='CASCADE') + alarm = ForeignKeyField(VnfAlarm, related_name="actions", on_delete="CASCADE") + + +class HealingAction(BaseModel): + alarm_id = CharField() + recovery_action = CharField() + alarm_uuid = CharField(unique=True) + nsr_id = CharField() + vnfinstance_id = CharField() + vnf_member_index = CharField() + vdur_name = CharField() + vdu_id = CharField() + cooldown_time = IntegerField() + count_index = IntegerField() + last_heal = DateTimeField(default=datetime.datetime.now) + last_status = CharField(default="insufficient-data") + day1 = BooleanField(default=False) class DatabaseManager: def __init__(self, config: Config): - db.initialize(connect(config.get('sql', 'database_uri'))) + db.initialize(connect(config.get("sql", "database_uri"))) def create_tables(self) -> None: db.connect() @@ -104,10 +139,9 @@ class DatabaseManager: class ScalingAlarmRepository: - @staticmethod def list(*expressions) -> Iterable[ScalingAlarm]: - return ScalingAlarm.select().where(*expressions) + return ScalingAlarm.select().where(*expressions).__iter__() @staticmethod def get(*expressions, join_classes: List = None) -> ScalingAlarm: @@ -123,10 +157,9 @@ class ScalingAlarmRepository: class ScalingGroupRepository: - @staticmethod def list(*expressions) -> Iterable[ScalingGroup]: - return ScalingGroup.select().where(*expressions) + return ScalingGroup.select().where(*expressions).__iter__() @staticmethod def get(*expressions) -> ScalingGroup: @@ -138,14 +171,13 @@ class ScalingGroupRepository: class ScalingPolicyRepository: - @staticmethod def list(*expressions, join_classes: List = None) -> Iterable[ScalingPolicy]: query = ScalingPolicy.select() if join_classes: for join_class in join_classes: query = query.join(join_class) - return query.where(*expressions) + return query.where(*expressions).__iter__() @staticmethod def get(*expressions, join_classes: List = None) -> ScalingPolicy: @@ -161,14 +193,13 @@ class ScalingPolicyRepository: class ScalingCriteriaRepository: - @staticmethod def list(*expressions, join_classes: List = None) -> Iterable[ScalingCriteria]: query = ScalingCriteria.select() if join_classes: for join_class in join_classes: query = query.join(join_class) - return query.where(*expressions) + return query.where(*expressions).__iter__() @staticmethod def get(*expressions, join_classes: List = None) -> ScalingCriteria: @@ -184,10 +215,9 @@ class ScalingCriteriaRepository: class VnfAlarmRepository: - @staticmethod def list(*expressions) -> Iterable[VnfAlarm]: - return VnfAlarm.select().where(*expressions) + return VnfAlarm.select().where(*expressions).__iter__() @staticmethod def get(*expressions) -> VnfAlarm: @@ -199,10 +229,9 @@ class VnfAlarmRepository: class AlarmActionRepository: - @staticmethod def list(*expressions) -> Iterable[AlarmAction]: - return AlarmAction.select().where(*expressions) + return AlarmAction.select().where(*expressions).__iter__() @staticmethod def get(*expressions) -> AlarmAction: @@ -211,3 +240,22 @@ class AlarmActionRepository: @staticmethod def create(**query) -> AlarmAction: return AlarmAction.create(**query) + + +class HealingActionRepository: + @staticmethod + def list(*expressions) -> Iterable[HealingAction]: + log.info( + "### Printing healing action db alarm {}".format( + HealingAction.select().where(*expressions) + ) + ) + return HealingAction.select().where(*expressions).__iter__() + + @staticmethod + def get(*expressions) -> HealingAction: + return HealingAction.select().where(*expressions).get() + + @staticmethod + def create(**query) -> HealingAction: + return HealingAction.create(**query)