from sqlalchemy.orm import sessionmaker
from quantum.db import model_base
+from quantum.openstack.common import cfg
from quantum.openstack.common import log as logging
LOG = logging.getLogger(__name__)
+database_opts = [
+ cfg.StrOpt('sql_connection', default='sqlite://',
+ help=_('The SQLAlchemy connection string used to connect to '
+ 'the database')),
+ cfg.IntOpt('sql_max_retries', default=-1,
+ help=_('Database reconnection retry times')),
+ cfg.IntOpt('reconnect_interval', default=2,
+ help=_('Database reconnection interval in seconds')),
+ cfg.IntOpt('sql_min_pool_size',
+ default=1,
+ help=_("Minimum number of SQL connections to keep open in a "
+ "pool")),
+ cfg.IntOpt('sql_max_pool_size',
+ default=5,
+ help=_("Maximum number of SQL connections to keep open in a "
+ "pool")),
+ cfg.IntOpt('sql_idle_timeout',
+ default=3600,
+ help=_("Timeout in seconds before idle sql connections are "
+ "reaped")),
+ cfg.BoolOpt('sql_dbpool_enable',
+ default=False,
+ help=_("Enable the use of eventlet's db_pool for MySQL")),
+]
+
+cfg.CONF.register_opts(database_opts, "DATABASE")
+
_ENGINE = None
_MAKER = None
BASE = model_base.BASEV2
dbapi_con.execute('pragma foreign_keys=ON')
-def configure_db(options):
+def configure_db():
"""
Establish the database, create an engine if needed, and
register the models.
-
- :param options: Mapping of configuration options
"""
global _ENGINE
if not _ENGINE:
- connection_dict = sql.engine.url.make_url(options['sql_connection'])
+ sql_connection = cfg.CONF.DATABASE.sql_connection
+ connection_dict = sql.engine.url.make_url(sql_connection)
engine_args = {
'pool_recycle': 3600,
'echo': False,
if 'mysql' in connection_dict.drivername:
engine_args['listeners'] = [MySQLPingListener()]
if (MySQLdb is not None and
- options['sql_dbpool_enable']):
+ cfg.CONF.DATABASE.sql_dbpool_enable):
pool_args = {
'db': connection_dict.database,
'passwd': connection_dict.password or '',
'host': connection_dict.host,
'user': connection_dict.username,
- 'min_size': options['sql_min_pool_size'],
- 'max_size': options['sql_max_pool_size'],
- 'max_idle': options['sql_idle_timeout']
+ 'min_size': cfg.CONF.DATABASE.sql_min_pool_size,
+ 'max_size': cfg.CONF.DATABASE.sql_max_pool_size,
+ 'max_idle': cfg.CONF.DATABASE.sql_idle_timeout
}
creator = db_pool.ConnectionPool(MySQLdb, **pool_args)
engine_args['creator'] = creator.create
- if (MySQLdb is None and options['sql_dbpool_enable']):
+ if (MySQLdb is None and cfg.CONF.DATABASE.sql_dbpool_enable):
LOG.warn(_("Eventlet connection pooling will not work without "
"python-mysqldb!"))
if 'sqlite' in connection_dict.drivername:
engine_args['listeners'] = [SqliteForeignKeysListener()]
- if options['sql_connection'] == "sqlite://":
+ if sql_connection == "sqlite://":
engine_args["connect_args"] = {'check_same_thread': False}
- _ENGINE = create_engine(options['sql_connection'], **engine_args)
+ _ENGINE = create_engine(sql_connection, **engine_args)
sql.event.listen(_ENGINE, 'checkin', greenthread_yield)
- base = options.get('base', BASE)
- if not register_models(base):
+ if not register_models():
if 'reconnect_interval' in options:
- remaining = options.get('sql_max_retries', -1)
- reconnect_interval = options['reconnect_interval']
- retry_registration(remaining, reconnect_interval, base)
+ remaining = cfg.CONF.DATABASE.sql_max_retries
+ reconnect_interval = cfg.CONF.DATABASE.reconnect_interval
+ retry_registration(remaining, reconnect_interval)
def clear_db(base=BASE):
# must override __init__ and setup the database
# and not call into this class's __init__.
# This connection is setup as memory for the tests.
- db.configure_db({'sql_connection': "sqlite:///:memory:",
- 'base': models_v2.model_base.BASEV2})
+ db.configure_db()
def _get_tenant_id_for_create(self, context, resource):
if context.is_admin and 'tenant_id' in resource:
LOG = logging.getLogger(__name__)
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help="Minimum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help="Maximum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help="Timeout in seconds before idle sql connections are "
- "reaped"),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help="Enable the use of eventlet's db_pool for MySQL"),
-]
-
-
restproxy_opts = [
cfg.StrOpt('servers', default='localhost:8800'),
cfg.StrOpt('serverauth', default='username:password'),
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(restproxy_opts, "RESTPROXY")
version_string_with_vcs())
# init DB, proxy's persistent store defaults to in-memory sql-lite DB
- options = {"sql_connection": "%s" % cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable}
- db.configure_db(options)
+ db.configure_db()
# 'servers' is the list of network controller REST end-points
# (used in order specified till one suceeds, and it is sticky
"or <physical_network>"),
]
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help="Minimum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help="Maximum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help="Timeout in seconds before idle sql connections are "
- "reaped"),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help="Enable the use of eventlet's db_pool for MySQL"),
-]
-
bridge_opts = [
cfg.ListOpt('physical_interface_mappings',
default=DEFAULT_INTERFACE_MAPPINGS,
cfg.CONF.register_opts(vlan_opts, "VLANS")
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(bridge_opts, "LINUX_BRIDGE")
cfg.CONF.register_opts(agent_opts, "AGENT")
def initialize():
- options = {
- "sql_connection": cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable
- }
- db.configure_db(options)
+ db.configure_db()
def sync_network_states(network_vlan_ranges):
from quantum.openstack.common import cfg
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help="Minimum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help="Maximum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help="Timeout in seconds before idle sql connections are "
- "reaped"),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help="Enable the use of eventlet's db_pool for MySQL"),
-]
-
meta_plugin_opts = [
cfg.StrOpt('plugin_list', default=''),
cfg.StrOpt('l3_plugin_list', default=''),
cfg.StrOpt('auth_region'),
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(meta_plugin_opts, "META")
cfg.CONF.register_opts(proxy_plugin_opts, "PROXY")
def __init__(self, configfile=None):
LOG.debug(_("Start initializing metaplugin"))
- options = {
- "sql_connection": "%s" % cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable
- }
self.supported_extension_aliases = \
cfg.CONF.META.supported_extension_aliases.split(',')
self.supported_extension_aliases += ['flavor', 'router']
raise exc.Invalid(_('default_l3_flavor %s is not plugin list') %
self.default_l3_flavor)
- db.configure_db(options)
+ db.configure_db()
self.extension_map = {}
if not cfg.CONF.META.extension_map == '':
supported_extension_aliases = ["router"]
def __init__(self, configfile=None):
- options = {"sql_connection": cfg.CONF.DATABASE.sql_connection}
- options.update({'base': models_v2.model_base.BASEV2})
- sql_max_retries = cfg.CONF.DATABASE.sql_max_retries
- options.update({"sql_max_retries": sql_max_retries})
- reconnect_interval = cfg.CONF.DATABASE.reconnect_interval
- options.update({"reconnect_interval": reconnect_interval})
- db.configure_db(options)
+ db.configure_db()
self.quantum = client.Client(
username=cfg.CONF.PROXY.admin_user,
password=cfg.CONF.PROXY.admin_password,
from quantum.openstack.common import rpc
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help=_("Minimum number of SQL connections to keep open in a "
- "pool")),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help=_("Maximum number of SQL connections to keep open in a "
- "pool")),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help=_("Timeout in seconds before idle sql connections are "
- "reaped")),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help=_("Enable the use of eventlet's db_pool for MySQL")),
-]
-
ovs_opts = [
cfg.StrOpt('integration_bridge', default='br-int'),
]
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
cfg.CONF.register_opts(ofc_opts, "OFC")
def initialize():
- options = {"sql_connection": "%s" % config.DATABASE.sql_connection,
- "sql_max_retries": config.DATABASE.sql_max_retries,
- "reconnect_interval": config.DATABASE.reconnect_interval,
- "base": model_base.BASEV2,
- "sql_min_pool_size": config.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": config.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": config.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": config.CONF.DATABASE.sql_dbpool_enable}
- db.configure_db(options)
+ db.configure_db()
def clear_db(base=model_base.BASEV2):
NVPCluster objects, 'plugin_config' is a dictionary with plugin
parameters (currently only 'max_lp_per_bridged_ls').
"""
- db_options = {
- "sql_connection": "%s" % cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable
- }
nvp_options = cfg.CONF.NVP
nvp_conf = config.ClusterConfigOptions(cfg.CONF)
cluster_names = config.register_cluster_groups(nvp_conf)
'nvp_controller_connection':
nvp_conf[cluster_name].nvp_controller_connection, })
LOG.debug(_("Cluster options: %s"), clusters_options)
- return db_options, nvp_options, clusters_options
+ return nvp_options, clusters_options
class NVPRpcCallbacks(dhcp_rpc_base.DhcpRpcCallbackMixin):
nvplib.LOG.setLevel(loglevel)
NvpApiClient.LOG.setLevel(loglevel)
- self.db_opts, self.nvp_opts, self.clusters_opts = parse_config()
+ self.nvp_opts, self.clusters_opts = parse_config()
self.clusters = {}
for c_opts in self.clusters_opts:
# Password is guaranteed to be the same across all controllers
# otherwise set 1st cluster as default
self.default_cluster = self.clusters[first_cluster_name]
- db.configure_db(self.db_opts)
+ db.configure_db()
# Extend the fault map
self._extend_fault_map()
# Set up RPC interface for DHCP agent
from quantum.openstack.common import cfg
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help="Minimum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help="Maximum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help="Timeout in seconds before idle sql connections are "
- "reaped"),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help="Enable the use of eventlet's db_pool for MySQL"),
-]
-
nvp_opts = [
cfg.IntOpt('max_lp_per_bridged_ls', default=64),
cfg.IntOpt('max_lp_per_overlay_ls', default=256),
cfg.MultiStrOpt('nvp_controller_connection')
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(nvp_opts, "NVP")
DEFAULT_VLAN_RANGES = []
DEFAULT_TUNNEL_RANGES = []
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help="Minimum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help="Maximum number of SQL connections to keep open in a "
- "pool"),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help="Timeout in seconds before idle sql connections are "
- "reaped"),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help="Enable the use of eventlet's db_pool for MySQL"),
-]
-
ovs_opts = [
cfg.StrOpt('integration_bridge', default='br-int'),
cfg.BoolOpt('enable_tunneling', default=False),
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
def initialize():
- options = {
- "sql_connection": cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable
- }
- db.configure_db(options)
+ db.configure_db()
def get_network_binding(session, network_id):
from quantum.openstack.common import cfg
-database_opts = [
- cfg.StrOpt('sql_connection', default='sqlite://'),
- cfg.IntOpt('sql_max_retries', default=-1),
- cfg.IntOpt('reconnect_interval', default=2),
- cfg.IntOpt('sql_min_pool_size',
- default=1,
- help=_("Minimum number of SQL connections to keep open in a "
- "pool")),
- cfg.IntOpt('sql_max_pool_size',
- default=5,
- help=_("Maximum number of SQL connections to keep open in a "
- "pool")),
- cfg.IntOpt('sql_idle_timeout',
- default=3600,
- help=_("Timeout in seconds before idle sql connections are "
- "reaped")),
- cfg.BoolOpt('sql_dbpool_enable',
- default=False,
- help=_("Enable the use of eventlet's db_pool for MySQL")),
-]
-
ovs_opts = [
cfg.StrOpt('integration_bridge', default='br-int'),
cfg.StrOpt('openflow_controller', default='127.0.0.1:6633'),
]
-cfg.CONF.register_opts(database_opts, "DATABASE")
cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
supported_extension_aliases = ["router"]
def __init__(self, configfile=None):
- options = {
- "sql_connection": "%s" % cfg.CONF.DATABASE.sql_connection,
- "sql_max_retries": cfg.CONF.DATABASE.sql_max_retries,
- "reconnect_interval": cfg.CONF.DATABASE.reconnect_interval,
- "base": models_v2.model_base.BASEV2,
- "sql_min_pool_size": cfg.CONF.DATABASE.sql_min_pool_size,
- "sql_max_pool_size": cfg.CONF.DATABASE.sql_max_pool_size,
- "sql_idle_timeout": cfg.CONF.DATABASE.sql_idle_timeout,
- "sql_dbpool_enable": cfg.CONF.DATABASE.sql_dbpool_enable
- }
- db.configure_db(options)
+ db.configure_db()
self.tunnel_key = db_api_v2.TunnelKey(
cfg.CONF.OVS.tunnel_key_min, cfg.CONF.OVS.tunnel_key_max)
def setUp(self):
def new_init():
- db.configure_db({'sql_connection': 'sqlite:///:memory:',
- 'base': network_models_v2.model_base.BASEV2})
+ db.configure_db()
with mock.patch.object(network_db_v2,
'initialize', new=new_init):
self.second_vlan_id = 265
def new_cdb_init():
- db.configure_db({'sql_connection': 'sqlite://',
- 'base': network_models_v2.model_base.BASEV2})
+ db.configure_db()
def new_nexus_init(self):
self._client = importutils.import_object(NEXUS_DRIVER)
self.fake_tenant_id = uuidutils.generate_uuid()
self.context = context.get_admin_context()
- sql_connection = 'sqlite:///:memory:'
- options = {"sql_connection": sql_connection}
- options.update({'base': models_v2.model_base.BASEV2})
- db.configure_db(options)
+ db.configure_db()
setup_metaplugin_conf()