Douglas Henrique Koerich 84b5114027 Images of ptp-notification containers for Debian
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
2022-07-19 15:01:27 -03:00

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()