Move DB init code into bs.sqlalchemy

This commit is contained in:
Endre Karlson 2013-03-08 14:00:10 +00:00
parent ff5766e398
commit cf5989406a
2 changed files with 22 additions and 12 deletions

View File

@ -2,10 +2,26 @@ from sqlalchemy import or_
from sqlalchemy.orm import exc from sqlalchemy.orm import exc
from billingstack import exceptions from billingstack import exceptions
from billingstack.sqlalchemy.model_base import ModelBase from billingstack.openstack.common import log
from billingstack.sqlalchemy import model_base, session
LOG = log.getLogger(__name__)
class HelpersMixin(object): class HelpersMixin(object):
def setup(self, config_group):
self.session = session.get_session(config_group)
self.engine = session.get_engine(config_group)
def setup_schema(self):
""" Semi-Private Method to create the database schema """
self.base.metadata.create_all(self.session.bind)
def teardown_schema(self):
""" Semi-Private Method to reset the database schema """
self.base.metadata.drop_all(self.session.bind)
def _save(self, obj, save=True): def _save(self, obj, save=True):
if not save: if not save:
return obj return obj
@ -100,7 +116,7 @@ class HelpersMixin(object):
:param obj: ID or instance / ref of the object :param obj: ID or instance / ref of the object
:param cls: The class to run self._get on if obj is not a ref :param cls: The class to run self._get on if obj is not a ref
""" """
if isinstance(obj, ModelBase): if isinstance(obj, model_base.ModelBase):
return obj return obj
elif isinstance(obj, basestring) and cls: elif isinstance(obj, basestring) and cls:
return self._get(cls, obj) return self._get(cls, obj)

View File

@ -17,9 +17,9 @@ from billingstack.openstack.common import log as logging
from billingstack import exceptions from billingstack import exceptions
from billingstack import utils as common_utils from billingstack import utils as common_utils
from billingstack.sqlalchemy import utils as db_utils, api from billingstack.sqlalchemy import utils as db_utils, api
from billingstack.sqlalchemy.session import SQLOPTS
from billingstack.storage import base from billingstack.storage import base
from billingstack.storage.impl_sqlalchemy import models from billingstack.storage.impl_sqlalchemy import models
from billingstack.storage.impl_sqlalchemy.session import get_session, SQLOPTS
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -42,16 +42,10 @@ class Connection(base.Connection, api.HelpersMixin):
""" """
SQLAlchemy connection SQLAlchemy connection
""" """
base = models.BASE
def __init__(self, config_group): def __init__(self, config_group):
self.session = get_session(config_group) self.setup(config_group)
def setup_schema(self):
""" Semi-Private Method to create the database schema """
models.BASE.metadata.create_all(self.session.bind)
def teardown_schema(self):
""" Semi-Private Method to reset the database schema """
models.BASE.metadata.drop_all(self.session.bind)
def set_properties(self, obj, properties, cls=None, rel_attr='properties', purge=False): def set_properties(self, obj, properties, cls=None, rel_attr='properties', purge=False):
""" """