Refactors autoscaling module to separate concerns and allow better control of db...
[osm/POL.git] / osm_policy_module / core / database.py
index 330d8c5..ecaa315 100644 (file)
 ##
 import datetime
 import logging
+import os
 
 from peewee import CharField, IntegerField, ForeignKeyField, Model, TextField, AutoField, DateTimeField, Proxy
+from peewee_migrate import Router
 from playhouse.db_url import connect
 
+from osm_policy_module import migrations
 from osm_policy_module.core.config import Config
 
 log = logging.getLogger(__name__)
@@ -69,14 +72,12 @@ class ScalingAlarm(BaseModel):
 
 
 class DatabaseManager:
-    def init_db(self, config: Config):
+    def __init__(self, config: Config):
         db.initialize(connect(config.get('sql', 'database_uri')))
-        self.create_tables()
 
-    def create_tables(self):
+    def create_tables(self) -> None:
+        db.connect()
         with db.atomic():
-            db.create_tables([ScalingGroup, ScalingPolicy, ScalingCriteria, ScalingAlarm])
-
-    def get_alarm(self, alarm_uuid: str):
-        with db.atomic():
-            return ScalingAlarm.select().where(ScalingAlarm.alarm_uuid == alarm_uuid).get()
+            router = Router(db, os.path.dirname(migrations.__file__))
+            router.run()
+        db.close()