#ssl_ca_file = /path/to/cafile
# ======== end of WSGI parameters related to the API server ==========
-[quotas]
+[QUOTAS]
# resource name(s) that are supported in quota features
# quota_items = network,subnet,port
# default driver to use for quota checks
# quota_driver = quantum.quota.ConfDriver
-[default_servicetype]
+[DEFAULT_SERVICETYPE]
# Description of the default service type (optional)
# description = "default service type"
# Enter a service definition line for each advanced service provided
# Timeout in seconds before idle sql connections are reaped
# sql_idle_timeout = 3600
-[ovs]
+[OVS]
# Do not change this parameter unless you have a good reason to.
# This is the name of the OVS integration bridge. There is one per hypervisor.
# The integration bridge acts as a virtual "patch port". All VM VIFs are
# sql_idle_timeout = 3600
-[quotas]
+[QUOTAS]
# number of network gateways allowed per tenant, -1 means unlimited
# quota_network_gateway = 5
# Timeout in seconds before idle sql connections are reaped
# sql_idle_timeout = 3600
-[ovs]
+[OVS]
# (StrOpt) Type of network to allocate for tenant networks. The
# default value 'local' is useful only for single-box testing and
# provides no connectivity between hosts. You MUST either change this
# 1. With VLANs on eth1.
# [DATABASE]
# sql_connection = mysql://root:nova@127.0.0.1:3306/ovs_quantum
-# [ovs]
+# [OVS]
# network_vlan_ranges = default:2000:3999
# tunnel_id_ranges =
# integration_bridge = br-int
# 2. With tunneling.
# [DATABASE]
# sql_connection = mysql://root:nova@127.0.0.1:3306/ovs_quantum
-# [ovs]
+# [OVS]
# network_vlan_ranges =
# tunnel_id_ranges = 1:1000
# integration_bridge = br-int
# Timeout in seconds before idle sql connections are reaped
# sql_idle_timeout = 3600
-[ovs]
+[OVS]
integration_bridge = br-int
# openflow_rest_api = <host IP address of ofp rest api service>:<port: 8080>
def is_db_quota_enabled():
- return quantum_config.quotas.quota_driver == DATABASE_QUOTA_DRIVER
+ return quantum_config.QUOTAS.quota_driver == DATABASE_QUOTA_DRIVER
if context.is_offline_mode():
CONF = cfg.ConfigOpts()
CONF.register_opts(_core_opts)
CONF.register_opts(_db_opts, 'DATABASE')
-CONF.register_opts(_quota_opts, 'quotas')
+CONF.register_opts(_quota_opts, 'QUOTAS')
def do_alembic_command(config, cmd, *args, **kwargs):
'using the format: <service>:<plugin>[:<driver>]'))
]
-cfg.CONF.register_opts(default_servicetype_opts, 'default_servicetype')
+cfg.CONF.register_opts(default_servicetype_opts, 'DEFAULT_SERVICETYPE')
def parse_service_definition_opt():
"""Parse service definition opts and returns result."""
results = []
- svc_def_opt = cfg.CONF.default_servicetype.service_definition
+ svc_def_opt = cfg.CONF.DEFAULT_SERVICETYPE.service_definition
try:
for svc_def_str in svc_def_opt:
split = svc_def_str.split(':')
class NoDefaultServiceDefinition(q_exc.QuantumException):
message = _("No default service definition in configuration file. "
"Please add service definitions using the service_definition "
- "variable in the [default_servicetype] section")
+ "variable in the [DEFAULT_SERVICETYPE] section")
class ServiceTypeNotFound(q_exc.NotFound):
self._initialize_db()
ctx = context.get_admin_context()
# Init default service type from configuration file
- svc_defs = cfg.CONF.default_servicetype.service_definition
+ svc_defs = cfg.CONF.DEFAULT_SERVICETYPE.service_definition
if not svc_defs:
raise NoDefaultServiceDefinition()
def_service_type = {'name': DEFAULT_SVCTYPE_NAME,
'description':
- cfg.CONF.default_servicetype.description,
+ cfg.CONF.DEFAULT_SERVICETYPE.description,
'service_definitions':
parse_service_definition_opt(),
'default': True}
help=_('Number of floating IPs allowed per tenant, '
'-1 for unlimited')),
]
-cfg.CONF.register_opts(l3_quota_opts, 'quotas')
+cfg.CONF.register_opts(l3_quota_opts, 'QUOTAS')
class L3(extensions.ExtensionDescriptor):
def __init__(self, plugin):
self._resource_name = RESOURCE_NAME
self._plugin = plugin
- self._driver = importutils.import_class(cfg.CONF.quotas.quota_driver)
+ self._driver = importutils.import_class(cfg.CONF.QUOTAS.quota_driver)
self._update_extended_attributes = True
def _update_attributes(self):
@classmethod
def get_description(cls):
description = 'Expose functions for quotas management'
- if cfg.CONF.quotas.quota_driver == DB_QUOTA_DRIVER:
+ if cfg.CONF.QUOTAS.quota_driver == DB_QUOTA_DRIVER:
description += ' per tenant'
return description
help=_('Number of security rules allowed per tenant, '
'-1 for unlimited')),
]
-cfg.CONF.register_opts(security_group_quota_opts, 'quotas')
+cfg.CONF.register_opts(security_group_quota_opts, 'QUOTAS')
class Securitygroup(extensions.ExtensionDescriptor):
# The messaging module to use, defaults to kombu.
rpc_backend = quantum.openstack.common.rpc.impl_fake
-[quotas]
+[QUOTAS]
# resource name(s) that are supported in quota features
quota_items = network,subnet,port
logging_config.setup_logging(config.CONF)
# Determine which agent type to use.
- integ_br = config.ovs.integration_bridge
+ integ_br = config.OVS.integration_bridge
root_helper = config.AGENT.root_helper
polling_interval = config.AGENT.polling_interval
]
-cfg.CONF.register_opts(ovs_opts, "ovs")
+cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
cfg.CONF.register_opts(ofc_opts, "OFC")
config.register_agent_state_opts_helper(cfg.CONF)
# shortcuts
CONF = cfg.CONF
-OVS = cfg.CONF.ovs
+OVS = cfg.CONF.OVS
AGENT = cfg.CONF.AGENT
OFC = cfg.CONF.OFC
"-1 for unlimited"))
]
# Register the configuration options
-cfg.CONF.register_opts(quota_packet_filter_opts, 'quotas')
+cfg.CONF.register_opts(quota_packet_filter_opts, 'QUOTAS')
PACKET_FILTER_ACTION_REGEX = "(?i)^(allow|accept|drop|deny)$"
'-1 for unlimited'))
]
-cfg.CONF.register_opts(nw_gw_quota_opts, 'quotas')
+cfg.CONF.register_opts(nw_gw_quota_opts, 'QUOTAS')
attributes.validators['type:device_list'] = _validate_device_list
:returns: the integration bridge
'''
int_br = ovs_lib.OVSBridge(bridge_name, self.root_helper)
- int_br.delete_port(cfg.CONF.ovs.int_peer_patch_port)
+ int_br.delete_port(cfg.CONF.OVS.int_peer_patch_port)
int_br.remove_all_flows()
# switch all traffic using L2 learning
int_br.add_flow(priority=1, actions="normal")
self.tun_br = ovs_lib.OVSBridge(tun_br, self.root_helper)
self.tun_br.reset_bridge()
self.patch_tun_ofport = self.int_br.add_patch_port(
- cfg.CONF.ovs.int_peer_patch_port, cfg.CONF.ovs.tun_peer_patch_port)
+ cfg.CONF.OVS.int_peer_patch_port, cfg.CONF.OVS.tun_peer_patch_port)
self.patch_int_ofport = self.tun_br.add_patch_port(
- cfg.CONF.ovs.tun_peer_patch_port, cfg.CONF.ovs.int_peer_patch_port)
+ cfg.CONF.OVS.tun_peer_patch_port, cfg.CONF.OVS.int_peer_patch_port)
if int(self.patch_tun_ofport) < 0 or int(self.patch_int_ofport) < 0:
LOG.error(_("Failed to create OVS patch port. Cannot have "
"tunneling enabled on this agent, since this version "
:returns: a map of agent configuration parameters
"""
try:
- bridge_mappings = q_utils.parse_mappings(config.ovs.bridge_mappings)
+ bridge_mappings = q_utils.parse_mappings(config.OVS.bridge_mappings)
except ValueError as e:
raise ValueError(_("Parsing bridge_mappings failed: %s.") % e)
kwargs = dict(
- integ_br=config.ovs.integration_bridge,
- tun_br=config.ovs.tunnel_bridge,
- local_ip=config.ovs.local_ip,
+ integ_br=config.OVS.integration_bridge,
+ tun_br=config.OVS.tunnel_bridge,
+ local_ip=config.OVS.local_ip,
bridge_mappings=bridge_mappings,
root_helper=config.AGENT.root_helper,
polling_interval=config.AGENT.polling_interval,
- enable_tunneling=config.ovs.enable_tunneling,
+ enable_tunneling=config.OVS.enable_tunneling,
)
if kwargs['enable_tunneling'] and not kwargs['local_ip']:
]
-cfg.CONF.register_opts(ovs_opts, "ovs")
+cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
config.register_agent_state_opts_helper(cfg.CONF)
config.register_root_helper(cfg.CONF)
ovs_db_v2.initialize()
self._parse_network_vlan_ranges()
ovs_db_v2.sync_vlan_allocations(self.network_vlan_ranges)
- self.tenant_network_type = cfg.CONF.ovs.tenant_network_type
+ self.tenant_network_type = cfg.CONF.OVS.tenant_network_type
if self.tenant_network_type not in [constants.TYPE_LOCAL,
constants.TYPE_VLAN,
constants.TYPE_GRE,
"Agent terminated!"),
self.tenant_network_type)
sys.exit(1)
- self.enable_tunneling = cfg.CONF.ovs.enable_tunneling
+ self.enable_tunneling = cfg.CONF.OVS.enable_tunneling
self.tunnel_id_ranges = []
if self.enable_tunneling:
self._parse_tunnel_id_ranges()
def _parse_network_vlan_ranges(self):
try:
self.network_vlan_ranges = plugin_utils.parse_network_vlan_ranges(
- cfg.CONF.ovs.network_vlan_ranges)
+ cfg.CONF.OVS.network_vlan_ranges)
except Exception as ex:
LOG.error(_("%s. Agent terminated!"), ex)
sys.exit(1)
LOG.info(_("Network VLAN ranges: %s"), self.network_vlan_ranges)
def _parse_tunnel_id_ranges(self):
- for entry in cfg.CONF.ovs.tunnel_id_ranges:
+ for entry in cfg.CONF.OVS.tunnel_id_ranges:
entry = entry.strip()
try:
tun_min, tun_max = entry.split(':')
def _get_ip(cfg_ip_str, cfg_interface_str):
ip = None
try:
- ip = getattr(cfg.CONF.ovs, cfg_ip_str)
+ ip = getattr(cfg.CONF.OVS, cfg_ip_str)
except (cfg.NoSuchOptError, cfg.NoSuchGroupError):
pass
if ip:
iface = None
try:
- iface = getattr(cfg.CONF.ovs, cfg_interface_str)
+ iface = getattr(cfg.CONF.OVS, cfg_interface_str)
except (cfg.NoSuchOptError, cfg.NoSuchGroupError):
pass
if iface:
logging_config.setup_logging(cfg.CONF)
- integ_br = cfg.CONF.ovs.integration_bridge
+ integ_br = cfg.CONF.OVS.integration_bridge
polling_interval = cfg.CONF.AGENT.polling_interval
root_helper = cfg.CONF.AGENT.root_helper
tunnel_ip = _get_tunnel_ip()
LOG.debug(_('tunnel_ip %s'), tunnel_ip)
- ovsdb_port = cfg.CONF.ovs.ovsdb_port
+ ovsdb_port = cfg.CONF.OVS.ovsdb_port
LOG.debug(_('ovsdb_port %s'), ovsdb_port)
ovsdb_ip = _get_ovsdb_ip()
LOG.debug(_('ovsdb_ip %s'), ovsdb_ip)
]
-cfg.CONF.register_opts(ovs_opts, "ovs")
+cfg.CONF.register_opts(ovs_opts, "OVS")
cfg.CONF.register_opts(agent_opts, "AGENT")
config.register_root_helper(cfg.CONF)
def __init__(self, configfile=None):
db.configure_db()
self.tunnel_key = db_api_v2.TunnelKey(
- cfg.CONF.ovs.tunnel_key_min, cfg.CONF.ovs.tunnel_key_max)
- self.ofp_api_host = cfg.CONF.ovs.openflow_rest_api
+ cfg.CONF.OVS.tunnel_key_min, cfg.CONF.OVS.tunnel_key_max)
+ self.ofp_api_host = cfg.CONF.OVS.openflow_rest_api
if not self.ofp_api_host:
raise q_exc.Invalid(_('Invalid configuration. check ryu.ini'))
help=_('Default driver to use for quota checks')),
]
# Register the configuration options
-cfg.CONF.register_opts(quota_opts, 'quotas')
+cfg.CONF.register_opts(quota_opts, 'QUOTAS')
class ConfDriver(object):
@property
def default(self):
"""Return the default value of the quota."""
- return getattr(cfg.CONF.quotas,
+ return getattr(cfg.CONF.QUOTAS,
self.flag,
- cfg.CONF.quotas.default_quota)
+ cfg.CONF.QUOTAS.default_quota)
class CountableResource(BaseResource):
"""Initialize a Quota object."""
if not quota_driver_class:
- quota_driver_class = cfg.CONF.quotas.quota_driver
+ quota_driver_class = cfg.CONF.QUOTAS.quota_driver
if isinstance(quota_driver_class, basestring):
quota_driver_class = importutils.import_object(quota_driver_class)
def register_resources_from_config():
resources = []
- for resource_item in cfg.CONF.quotas.quota_items:
+ for resource_item in cfg.CONF.QUOTAS.quota_items:
resources.append(CountableResource(resource_item, _count_resource,
'quota_' + resource_item))
QUOTAS.register_resources(resources)
[DATABASE]
sql_connection = 'sqlite:///:memory:'
-[default_servicetype]
+[DEFAULT_SERVICETYPE]
description = "default service type"
service_definition=dummy:quantum.tests.unit.dummy_plugin.QuantumDummyPlugin
config = {
ovs_config: {
- 'ovs': {'bridge_mappings': 'physnet1:br-eth1',
+ 'OVS': {'bridge_mappings': 'physnet1:br-eth1',
'network_vlan_ranges': [range_str],
'tenant_network_type': 'vlan'}
},
class ConfigurationTest(base.BaseTestCase):
def test_defaults(self):
- self.assertEqual('br-int', config.CONF.ovs.integration_bridge)
-
+ self.assertEqual('br-int', config.CONF.OVS.integration_bridge)
self.assertEqual(2, config.CONF.AGENT.polling_interval)
self.assertEqual('sudo', config.CONF.AGENT.root_helper)
self.assertIsNone(config.CONF.OFC.cert_file)
def test_shortcuts(self):
- self.assertEqual(config.CONF.ovs.integration_bridge,
+ self.assertEqual(config.CONF.OVS.integration_bridge,
config.OVS.integration_bridge)
self.assertEqual(config.CONF.AGENT.polling_interval,
config.AGENT.polling_interval)
[DATABASE]
sql_connection = 'sqlite:///:memory:'
-[default_servicetype]
+[DEFAULT_SERVICETYPE]
description = "default service type"
service_definition=dummy:quantum.tests.unit.dummy_plugin.QuantumDummyPlugin
class ConfigurationTest(base.BaseTestCase):
def test_defaults(self):
- self.assertEqual('br-int', cfg.CONF.ovs.integration_bridge)
- self.assertFalse(cfg.CONF.ovs.enable_tunneling)
- self.assertEqual('br-tun', cfg.CONF.ovs.tunnel_bridge)
+ self.assertEqual('br-int', cfg.CONF.OVS.integration_bridge)
+ self.assertFalse(cfg.CONF.OVS.enable_tunneling)
+ self.assertEqual('br-tun', cfg.CONF.OVS.tunnel_bridge)
self.assertEqual(2, cfg.CONF.AGENT.polling_interval)
self.assertEqual('sudo', cfg.CONF.AGENT.root_helper)
- self.assertEqual('local', cfg.CONF.ovs.tenant_network_type)
- self.assertEqual(0, len(cfg.CONF.ovs.bridge_mappings))
- self.assertEqual(0, len(cfg.CONF.ovs.network_vlan_ranges))
- self.assertEqual(0, len(cfg.CONF.ovs.tunnel_id_ranges))
+ self.assertEqual('local', cfg.CONF.OVS.tenant_network_type)
+ self.assertEqual(0, len(cfg.CONF.OVS.bridge_mappings))
+ self.assertEqual(0, len(cfg.CONF.OVS.network_vlan_ranges))
+ self.assertEqual(0, len(cfg.CONF.OVS.tunnel_id_ranges))
def test_create_agent_config_map_fails_for_invalid_tunnel_config(self):
self.addCleanup(cfg.CONF.reset)
# An ip address is required for tunneling but there is no default
- cfg.CONF.set_override('enable_tunneling', True, group='ovs')
+ cfg.CONF.set_override('enable_tunneling', True, group='OVS')
with testtools.ExpectedException(ValueError):
ovs_quantum_agent.create_agent_config_map(cfg.CONF)
class ConfigurationTest(base.BaseTestCase):
"""Configuration file Tests."""
def test_defaults(self):
- self.assertEqual('br-int', cfg.CONF.ovs.integration_bridge)
+ self.assertEqual('br-int', cfg.CONF.OVS.integration_bridge)
self.assertEqual(2, cfg.CONF.AGENT.polling_interval)
self.assertEqual('sudo', cfg.CONF.AGENT.root_helper)
- self.assertEqual('127.0.0.1:8080', cfg.CONF.ovs.openflow_rest_api)
- self.assertEqual(1, cfg.CONF.ovs.tunnel_key_min)
- self.assertEqual(0xffffff, cfg.CONF.ovs.tunnel_key_max)
- self.assertEqual(6634, cfg.CONF.ovs.ovsdb_port)
+ self.assertEqual('127.0.0.1:8080', cfg.CONF.OVS.openflow_rest_api)
+ self.assertEqual(1, cfg.CONF.OVS.tunnel_key_min)
+ self.assertEqual(0xffffff, cfg.CONF.OVS.tunnel_key_max)
+ self.assertEqual(6634, cfg.CONF.OVS.ovsdb_port)
netifs_attrs = {'AF_INET': 0,
'ifaddresses.return_value': [[{'addr': '10.0.0.1'}]]}
with nested(
- mock.patch('oslo.config.cfg.CONF.ovs', **cfg_attrs),
+ mock.patch('oslo.config.cfg.CONF.OVS', **cfg_attrs),
mock.patch(self._AGENT_NAME + '.netifaces', **netifs_attrs),
mock.patch(self._AGENT_NAME + '._get_my_ip',
return_value='172.16.0.1')
netifs_attrs = {'AF_INET': 0,
'ifaddresses.return_value': [[{'addr': '10.0.0.1'}]]}
with nested(
- mock.patch('oslo.config.cfg.CONF.ovs', **cfg_attrs),
+ mock.patch('oslo.config.cfg.CONF.OVS', **cfg_attrs),
mock.patch(self._AGENT_NAME + '.netifaces', **netifs_attrs),
mock.patch(self._AGENT_NAME + '._get_my_ip',
return_value='172.16.0.1')
netifs_attrs = {'AF_INET': 0,
'ifaddresses.return_value': [[{'addr': '10.0.0.1'}]]}
with nested(
- mock.patch('oslo.config.cfg.CONF.ovs', **cfg_attrs),
+ mock.patch('oslo.config.cfg.CONF.OVS', **cfg_attrs),
mock.patch(self._AGENT_NAME + '.netifaces', **netifs_attrs),
mock.patch(self._AGENT_NAME + '._get_my_ip',
return_value='172.16.0.1')
self.assertEqual(ip, '1.2.3.4')
def mock_main(self):
- cfg_attrs = {'ovs.integration_bridge': 'integ_br',
- 'ovs.ovsdb_port': 16634,
+ cfg_attrs = {'OVS.integration_bridge': 'integ_br',
+ 'OVS.ovsdb_port': 16634,
'AGENT.root_helper': 'helper'}
with nested(
mock.patch('oslo.config.cfg.CONF', **cfg_attrs),
class QuotaTest(APIv2TestBase):
def test_create_network_quota(self):
- cfg.CONF.set_override('quota_network', 1, group='quotas')
+ cfg.CONF.set_override('quota_network', 1, group='QUOTAS')
initial_input = {'network': {'name': 'net1', 'tenant_id': _uuid()}}
full_input = {'network': {'admin_state_up': True, 'subnets': []}}
full_input['network'].update(initial_input['network'])
res.json['QuantumError'])
def test_create_network_quota_no_counts(self):
- cfg.CONF.set_override('quota_network', 1, group='quotas')
+ cfg.CONF.set_override('quota_network', 1, group='QUOTAS')
initial_input = {'network': {'name': 'net1', 'tenant_id': _uuid()}}
full_input = {'network': {'admin_state_up': True, 'subnets': []}}
full_input['network'].update(initial_input['network'])
res.json['QuantumError'])
def test_create_network_quota_without_limit(self):
- cfg.CONF.set_override('quota_network', -1, group='quotas')
+ cfg.CONF.set_override('quota_network', -1, group='QUOTAS')
initial_input = {'network': {'name': 'net1', 'tenant_id': _uuid()}}
instance = self.plugin.return_value
instance.get_networks_count.return_value = 3
if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk network create")
quota = 4
- cfg.CONF.set_override('quota_network', quota, group='quotas')
+ cfg.CONF.set_override('quota_network', quota, group='QUOTAS')
res = self._create_network_bulk(self.fmt, quota + 1, 'test', True)
self._validate_behavior_on_bulk_failure(res, 'networks', errcode=409)
if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk network create")
quota = 2
- cfg.CONF.set_override('quota_network', quota, group='quotas')
+ cfg.CONF.set_override('quota_network', quota, group='QUOTAS')
networks = [{'network': {'name': 'n1',
'tenant_id': self._tenant_id}},
{'network': {'name': 'n2',
if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk network create")
quota = 2
- cfg.CONF.set_override('quota_network', quota, group='quotas')
+ cfg.CONF.set_override('quota_network', quota, group='QUOTAS')
networks = [{'network': {'name': 'n1',
'tenant_id': self._tenant_id}},
{'network': {'name': 'n2',
cfg.CONF.set_override(
'quota_items',
['network', 'subnet', 'port', 'extra1'],
- group='quotas')
+ group='QUOTAS')
quota.QUOTAS = quota.QuotaEngine()
quota.register_resources_from_config()
self._plugin_patcher = mock.patch(TARGET_PLUGIN, autospec=True)
cfg.CONF.set_override(
'quota_driver',
'quantum.db.quota_db.DbQuotaDriver',
- group='quotas')
+ group='QUOTAS')
super(QuotaExtensionDbTestCase, self).setUp()
def test_quotas_loaded_right(self):
#just stubbing core plugin with LoadBalancer plugin
cfg.CONF.set_override('core_plugin', plugin)
cfg.CONF.set_override('service_plugins', [])
- cfg.CONF.set_override('quota_router', -1, group='quotas')
+ cfg.CONF.set_override('quota_router', -1, group='QUOTAS')
self.addCleanup(cfg.CONF.reset)
# Ensure 'stale' patched copies of the plugin are never returned
servicetype_db.ServiceTypeManager._instance = None
plugin_name = "%s.%s" % (dp.__name__, dp.DummyServicePlugin.__name__)
cfg.CONF.set_override('service_definition', ['dummy:%s' % plugin_name],
- group='default_servicetype')
+ group='DEFAULT_SERVICETYPE')
self.addCleanup(db_api.clear_db)
super(ServiceTypeManagerTestCase, self).setUp()
WebOb>=1.2
python-keystoneclient>=0.2.0
alembic>=0.4.1
-http://tarballs.openstack.org/oslo.config/oslo.config-1.2.0a2.tar.gz#egg=oslo.config
+oslo.config>=1.1.0
six
# Cisco plugin dependencies