
This change reorganizes the source directories of the ptp-notification's containers: locationservice; notificationservice; notificationclient, to be reused by both CentOS and Debian Dockerfiles to build the images having the corresponding OS-specific base, together with the new files used to build images for Debian. Tests: PASS: Build images of the 3 containers for Debian PASS: Upload and apply changed ptp-notification application to pull Debian images from private repository (since final tag is not possible yet) in a Debian AIO-SX environment Regression: PASS: Build images of the 3 containers for CentOS Story: 2009831 Task: 45658 Signed-off-by: Douglas Henrique Koerich <douglashenrique.koerich@windriver.com> Change-Id: I4aa9650dbebe5ba68cd4d104ee0995e79681cfa4
82 lines
2.2 KiB
Python
82 lines
2.2 KiB
Python
#
|
|
# Copyright (c) 2021 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
import logging
|
|
|
|
from sqlalchemy import create_engine, MetaData
|
|
from sqlalchemy.orm import scoped_session, sessionmaker
|
|
|
|
from notificationclientsdk.model.orm import base
|
|
from notificationclientsdk.model.orm import subscription
|
|
from notificationclientsdk.model.orm import node
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
from notificationclientsdk.common.helpers import log_helper
|
|
log_helper.config_logger(LOG)
|
|
|
|
|
|
class DbContext(object):
|
|
# static properties
|
|
DBSession = None
|
|
metadata = None
|
|
engine = None
|
|
|
|
@staticmethod
|
|
def _engine_from_config(configuration):
|
|
configuration = dict(configuration)
|
|
url = configuration.pop('url')
|
|
return create_engine(url, **configuration)
|
|
|
|
@staticmethod
|
|
def init_dbcontext(sqlalchemy_conf):
|
|
"""
|
|
This is a stub method which is called at application startup time.
|
|
|
|
If you need to bind to a parsed database configuration, set up tables or
|
|
ORM classes, or perform any database initialization, this is the
|
|
recommended place to do it.
|
|
|
|
For more information working with databases, and some common recipes,
|
|
see https://pecan.readthedocs.io/en/latest/databases.html
|
|
"""
|
|
|
|
DbContext.engine = DbContext._engine_from_config(sqlalchemy_conf)
|
|
DbContext.DbSession = sessionmaker(bind=DbContext.engine)
|
|
|
|
DbContext.metadata = base.create_tables(DbContext.engine)
|
|
DbContext.metadata.bind = DbContext.engine
|
|
|
|
def __init__(self, session=None):
|
|
LOG.debug("initing DbContext ...")
|
|
if not session:
|
|
if not DbContext.engine:
|
|
raise Exception("DbContext must be inited with DbContext.init_dbcontext() first")
|
|
session = scoped_session(DbContext.DbSession)
|
|
self.session = session
|
|
|
|
def __del__(self):
|
|
LOG.debug("deleting DbContext ...")
|
|
pass
|
|
|
|
def get_session(self):
|
|
return self.session
|
|
|
|
def start(self):
|
|
pass
|
|
|
|
def start_read_only(self):
|
|
self.start()
|
|
|
|
def commit(self):
|
|
self.session.commit()
|
|
|
|
def rollback(self):
|
|
self.session.rollback()
|
|
|
|
def clear(self):
|
|
self.session.remove()
|