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):
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_uuid: str):
- return ScalingAlarm.select().where(ScalingAlarm.alarm_uuid == alarm_uuid).get()
+ with db.atomic():
+ return ScalingAlarm.select().where(ScalingAlarm.alarm_uuid == alarm_uuid).get()