1# Copyright 2010 United States Government as represented by the 2# Administrator of the National Aeronautics and Space Administration. 3# All Rights Reserved. 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); you may 6# not use this file except in compliance with the License. You may obtain 7# a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14# License for the specific language governing permissions and limitations 15# under the License. 16 17"""Base class for classes that need modular database access.""" 18 19 20from oslo_config import cfg 21from oslo_utils import importutils 22import six 23 24 25db_driver_opt = cfg.StrOpt('db_driver', 26 default='cinder.db', 27 help='Driver to use for database access') 28 29CONF = cfg.CONF 30CONF.register_opt(db_driver_opt) 31 32 33class Base(object): 34 """DB driver is injected in the init method.""" 35 36 def __init__(self, db_driver=None): 37 # NOTE(mriedem): Without this call, multiple inheritance involving 38 # the db Base class does not work correctly. 39 super(Base, self).__init__() 40 if not db_driver: 41 db_driver = CONF.db_driver 42 43 # pylint: disable=C0103 44 if isinstance(db_driver, six.string_types): 45 self.db = importutils.import_module(db_driver) 46 else: 47 self.db = db_driver 48 self.db.dispose_engine() 49