X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_policy_module%2Fcore%2Fdatabase.py;h=330d8c5be8df290f8d41331515e73f651aedbc13;hb=a14cf16181c8b39f12c872c486e0b292c0068944;hp=9bd8ac82e679675d0c61c21d15e56bdbb8976d69;hpb=023473295ef70215b9603e1fa0de8d71c0f6d0a2;p=osm%2FPOL.git diff --git a/osm_policy_module/core/database.py b/osm_policy_module/core/database.py index 9bd8ac8..330d8c5 100644 --- a/osm_policy_module/core/database.py +++ b/osm_policy_module/core/database.py @@ -24,15 +24,14 @@ import datetime import logging -from peewee import CharField, IntegerField, ForeignKeyField, Model, TextField, AutoField, DateTimeField +from peewee import CharField, IntegerField, ForeignKeyField, Model, TextField, AutoField, DateTimeField, Proxy from playhouse.db_url import connect from osm_policy_module.core.config import Config log = logging.getLogger(__name__) -cfg = Config.instance() -db = connect(cfg.OSMPOL_SQL_DATABASE_URI) +db = Proxy() class BaseModel(Model): @@ -53,30 +52,31 @@ class ScalingPolicy(BaseModel): name = CharField() cooldown_time = IntegerField() last_scale = DateTimeField(default=datetime.datetime.now) - scaling_group = ForeignKeyField(ScalingGroup, related_name='scaling_policies') + scaling_group = ForeignKeyField(ScalingGroup, related_name='scaling_policies', on_delete='CASCADE') class ScalingCriteria(BaseModel): name = CharField() - scaling_policy = ForeignKeyField(ScalingPolicy, related_name='scaling_criterias') + scaling_policy = ForeignKeyField(ScalingPolicy, related_name='scaling_criterias', on_delete='CASCADE') class ScalingAlarm(BaseModel): - alarm_id = CharField() + alarm_uuid = CharField(unique=True) action = CharField() vnf_member_index = IntegerField() vdu_name = CharField() - scaling_criteria = ForeignKeyField(ScalingCriteria, related_name='scaling_alarms') + scaling_criteria = ForeignKeyField(ScalingCriteria, related_name='scaling_alarms', on_delete='CASCADE') class DatabaseManager: + def init_db(self, config: Config): + db.initialize(connect(config.get('sql', 'database_uri'))) + self.create_tables() + def create_tables(self): - try: - db.connect() + with db.atomic(): db.create_tables([ScalingGroup, ScalingPolicy, ScalingCriteria, ScalingAlarm]) - db.close() - except Exception: - log.exception("Error creating tables: ") - def get_alarm(self, alarm_id: str): - return ScalingAlarm.select().where(ScalingAlarm.alarm_id == alarm_id).get() + def get_alarm(self, alarm_uuid: str): + with db.atomic(): + return ScalingAlarm.select().where(ScalingAlarm.alarm_uuid == alarm_uuid).get()