Deprecate neutron_* configuration settings
Create a new section in the configuration file called 'neutron'. Move all of the neutron_* configuration settings to this section. DocImpact The table below has the changes: +---------------------------------+-------------------------+ | 'DEFAULT' Section | 'neutron' Section | |---------------------------------|-------------------------| | neutron_url | url | | neutron_url_timeout | url_timeout | | neutron_admin_username | admin_username | | neutron_admin_password | admin_password | | neutron_admin_tenant_id | admin_tenant_id | | neutron_admin_tenant_name | admin_tenant_name | | neutron_region_name | region_name | | neutron_admin_auth_url | admin_auth_url | | neutron_api_insecure | api_insecure | | neutron_auth_strategy | auth_strategy | | neutron_region_name | region_name | | neutron_ovs_bridge | ovs_bridge | | neutron_extension_sync_interval | extension_sync_interval | | neutron_ca_certificates_file | ca_certificates_file | +---------------------------------+-----------------------=-+ UpgradeImpact The changes are backward compatible. Change-Id: I3308be33f60c4add3e2e78b75f238059a9b3d876
This commit is contained in:
@@ -40,22 +40,22 @@ class AdminTokenStore(object):
|
||||
|
||||
def _get_client(token=None, admin=False):
|
||||
params = {
|
||||
'endpoint_url': CONF.neutron_url,
|
||||
'timeout': CONF.neutron_url_timeout,
|
||||
'insecure': CONF.neutron_api_insecure,
|
||||
'ca_cert': CONF.neutron_ca_certificates_file,
|
||||
'auth_strategy': CONF.neutron_auth_strategy,
|
||||
'endpoint_url': CONF.neutron.url,
|
||||
'timeout': CONF.neutron.url_timeout,
|
||||
'insecure': CONF.neutron.api_insecure,
|
||||
'ca_cert': CONF.neutron.ca_certificates_file,
|
||||
'auth_strategy': CONF.neutron.auth_strategy,
|
||||
'token': token,
|
||||
}
|
||||
|
||||
if admin:
|
||||
params['username'] = CONF.neutron_admin_username
|
||||
if CONF.neutron_admin_tenant_id:
|
||||
params['tenant_id'] = CONF.neutron_admin_tenant_id
|
||||
params['username'] = CONF.neutron.admin_username
|
||||
if CONF.neutron.admin_tenant_id:
|
||||
params['tenant_id'] = CONF.neutron.admin_tenant_id
|
||||
else:
|
||||
params['tenant_name'] = CONF.neutron_admin_tenant_name
|
||||
params['password'] = CONF.neutron_admin_password
|
||||
params['auth_url'] = CONF.neutron_admin_auth_url
|
||||
params['tenant_name'] = CONF.neutron.admin_tenant_name
|
||||
params['password'] = CONF.neutron.admin_password
|
||||
params['auth_url'] = CONF.neutron.admin_auth_url
|
||||
return clientv20.Client(**params)
|
||||
|
||||
|
||||
|
||||
@@ -35,53 +35,80 @@ from nova.openstack.common import log as logging
|
||||
from nova.openstack.common import uuidutils
|
||||
|
||||
neutron_opts = [
|
||||
cfg.StrOpt('neutron_url',
|
||||
cfg.StrOpt('url',
|
||||
default='http://127.0.0.1:9696',
|
||||
help='URL for connecting to neutron'),
|
||||
cfg.IntOpt('neutron_url_timeout',
|
||||
help='URL for connecting to neutron',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_url'),
|
||||
cfg.IntOpt('url_timeout',
|
||||
default=30,
|
||||
help='Timeout value for connecting to neutron in seconds'),
|
||||
cfg.StrOpt('neutron_admin_username',
|
||||
help='Username for connecting to neutron in admin context'),
|
||||
cfg.StrOpt('neutron_admin_password',
|
||||
help='Timeout value for connecting to neutron in seconds',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_url_timeout'),
|
||||
cfg.StrOpt('admin_username',
|
||||
help='Username for connecting to neutron in admin context',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_admin_username'),
|
||||
cfg.StrOpt('admin_password',
|
||||
help='Password for connecting to neutron in admin context',
|
||||
secret=True),
|
||||
cfg.StrOpt('neutron_admin_tenant_id',
|
||||
help='Tenant id for connecting to neutron in admin context'),
|
||||
cfg.StrOpt('neutron_admin_tenant_name',
|
||||
secret=True,
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_admin_password'),
|
||||
cfg.StrOpt('admin_tenant_id',
|
||||
help='Tenant id for connecting to neutron in admin context',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_admin_tenant_id'),
|
||||
cfg.StrOpt('admin_tenant_name',
|
||||
help='Tenant name for connecting to neutron in admin context. '
|
||||
'This option is mutually exclusive with '
|
||||
'neutron_admin_tenant_id. Note that with Keystone V3 '
|
||||
'tenant names are only unique within a domain.'),
|
||||
cfg.StrOpt('neutron_region_name',
|
||||
help='Region name for connecting to neutron in admin context'),
|
||||
cfg.StrOpt('neutron_admin_auth_url',
|
||||
'admin_tenant_id. Note that with Keystone V3 '
|
||||
'tenant names are only unique within a domain.',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_admin_tenant_name'),
|
||||
cfg.StrOpt('region_name',
|
||||
help='Region name for connecting to neutron in admin context',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_region_name'),
|
||||
cfg.StrOpt('admin_auth_url',
|
||||
default='http://localhost:5000/v2.0',
|
||||
help='Authorization URL for connecting to neutron in admin '
|
||||
'context'),
|
||||
cfg.BoolOpt('neutron_api_insecure',
|
||||
'context',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_admin_auth_url'),
|
||||
cfg.BoolOpt('api_insecure',
|
||||
default=False,
|
||||
help='If set, ignore any SSL validation issues'),
|
||||
cfg.StrOpt('neutron_auth_strategy',
|
||||
help='If set, ignore any SSL validation issues',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_api_insecure'),
|
||||
cfg.StrOpt('auth_strategy',
|
||||
default='keystone',
|
||||
help='Authorization strategy for connecting to '
|
||||
'neutron in admin context'),
|
||||
'neutron in admin context',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_auth_strategy'),
|
||||
# TODO(berrange) temporary hack until Neutron can pass over the
|
||||
# name of the OVS bridge it is configured with
|
||||
cfg.StrOpt('neutron_ovs_bridge',
|
||||
cfg.StrOpt('ovs_bridge',
|
||||
default='br-int',
|
||||
help='Name of Integration Bridge used by Open vSwitch'),
|
||||
cfg.IntOpt('neutron_extension_sync_interval',
|
||||
help='Name of Integration Bridge used by Open vSwitch',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_ovs_bridge'),
|
||||
cfg.IntOpt('extension_sync_interval',
|
||||
default=600,
|
||||
help='Number of seconds before querying neutron for'
|
||||
' extensions'),
|
||||
cfg.StrOpt('neutron_ca_certificates_file',
|
||||
' extensions',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_extension_sync_interval'),
|
||||
cfg.StrOpt('ca_certificates_file',
|
||||
help='Location of CA certificates file to use for '
|
||||
'neutron client requests.'),
|
||||
'neutron client requests.',
|
||||
deprecated_group='DEFAULT',
|
||||
deprecated_name='neutron_ca_certificates_file'),
|
||||
]
|
||||
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(neutron_opts)
|
||||
# neutron_opts options in the DEFAULT group were deprecated in Juno
|
||||
CONF.register_opts(neutron_opts, 'neutron')
|
||||
CONF.import_opt('default_floating_pool', 'nova.network.floating_ips')
|
||||
CONF.import_opt('flat_injected', 'nova.network.manager')
|
||||
LOG = logging.getLogger(__name__)
|
||||
@@ -369,7 +396,7 @@ class API(base_api.NetworkAPI):
|
||||
"""Refresh the neutron extensions cache when necessary."""
|
||||
if (not self.last_neutron_extension_sync or
|
||||
((time.time() - self.last_neutron_extension_sync)
|
||||
>= CONF.neutron_extension_sync_interval)):
|
||||
>= CONF.neutron.extension_sync_interval)):
|
||||
neutron = neutronv2.get_client(context)
|
||||
extensions_list = neutron.list_extensions()['extensions']
|
||||
self.last_neutron_extension_sync = time.time()
|
||||
@@ -1097,7 +1124,7 @@ class API(base_api.NetworkAPI):
|
||||
# TODO(berrange) Neutron should pass the bridge name
|
||||
# in another binding metadata field
|
||||
if vif_type == network_model.VIF_TYPE_OVS:
|
||||
bridge = CONF.neutron_ovs_bridge
|
||||
bridge = CONF.neutron.ovs_bridge
|
||||
ovs_interfaceid = port['id']
|
||||
elif vif_type == network_model.VIF_TYPE_BRIDGE:
|
||||
bridge = "brq" + port['network_id']
|
||||
|
||||
@@ -121,9 +121,9 @@ def fake_get_instance(self, *args, **kwargs):
|
||||
class InterfaceAttachTests(test.NoDBTestCase):
|
||||
def setUp(self):
|
||||
super(InterfaceAttachTests, self).setUp()
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
self.stubs.Set(network_api.API, 'show_port', fake_show_port)
|
||||
self.stubs.Set(network_api.API, 'list_ports', fake_list_ports)
|
||||
self.stubs.Set(compute_api.API, 'get', fake_get_instance)
|
||||
@@ -286,9 +286,9 @@ class InterfaceAttachTests(test.NoDBTestCase):
|
||||
class InterfaceAttachTestsWithMock(test.NoDBTestCase):
|
||||
def setUp(self):
|
||||
super(InterfaceAttachTestsWithMock, self).setUp()
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
self.context = context.get_admin_context()
|
||||
|
||||
@mock.patch.object(compute_api.API, 'get')
|
||||
|
||||
@@ -121,9 +121,9 @@ def fake_get_instance(self, *args, **kwargs):
|
||||
class InterfaceAttachTests(test.NoDBTestCase):
|
||||
def setUp(self):
|
||||
super(InterfaceAttachTests, self).setUp()
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
self.stubs.Set(network_api.API, 'show_port', fake_show_port)
|
||||
self.stubs.Set(network_api.API, 'list_ports', fake_list_ports)
|
||||
self.stubs.Set(compute_api.API, 'get', fake_get_instance)
|
||||
@@ -369,9 +369,9 @@ class InterfaceAttachTests(test.NoDBTestCase):
|
||||
class InterfaceAttachTestsWithMock(test.NoDBTestCase):
|
||||
def setUp(self):
|
||||
super(InterfaceAttachTestsWithMock, self).setUp()
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
self.context = context.get_admin_context()
|
||||
|
||||
@mock.patch.object(compute_api.API, 'get')
|
||||
|
||||
@@ -3682,9 +3682,9 @@ class AttachInterfacesSampleJsonTest(ServersSampleBase):
|
||||
fake_attach_interface)
|
||||
self.stubs.Set(compute_api.API, 'detach_interface',
|
||||
fake_detach_interface)
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
|
||||
def generalize_subs(self, subs, vanilla_regexes):
|
||||
subs['subnet_id'] = vanilla_regexes['uuid']
|
||||
|
||||
@@ -89,9 +89,9 @@ class AttachInterfacesSampleJsonTest(test_servers.ServersSampleBase):
|
||||
fake_attach_interface)
|
||||
self.stubs.Set(compute_api.API, 'detach_interface',
|
||||
fake_detach_interface)
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
|
||||
def generalize_subs(self, subs, vanilla_regexes):
|
||||
subs['subnet_id'] = vanilla_regexes['uuid']
|
||||
|
||||
@@ -94,17 +94,17 @@ class MyComparator(mox.Comparator):
|
||||
|
||||
class TestNeutronClient(test.TestCase):
|
||||
def test_withtoken(self):
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
my_context = context.RequestContext('userid',
|
||||
'my_tenantid',
|
||||
auth_token='token')
|
||||
self.mox.StubOutWithMock(client.Client, "__init__")
|
||||
client.Client.__init__(
|
||||
auth_strategy=CONF.neutron_auth_strategy,
|
||||
endpoint_url=CONF.neutron_url,
|
||||
auth_strategy=CONF.neutron.auth_strategy,
|
||||
endpoint_url=CONF.neutron.url,
|
||||
token=my_context.auth_token,
|
||||
timeout=CONF.neutron_url_timeout,
|
||||
timeout=CONF.neutron.url_timeout,
|
||||
insecure=False,
|
||||
ca_cert=None).AndReturn(None)
|
||||
self.mox.ReplayAll()
|
||||
@@ -117,18 +117,18 @@ class TestNeutronClient(test.TestCase):
|
||||
my_context)
|
||||
|
||||
def test_withtoken_context_is_admin(self):
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
my_context = context.RequestContext('userid',
|
||||
'my_tenantid',
|
||||
auth_token='token',
|
||||
is_admin=True)
|
||||
self.mox.StubOutWithMock(client.Client, "__init__")
|
||||
client.Client.__init__(
|
||||
auth_strategy=CONF.neutron_auth_strategy,
|
||||
endpoint_url=CONF.neutron_url,
|
||||
auth_strategy=CONF.neutron.auth_strategy,
|
||||
endpoint_url=CONF.neutron.url,
|
||||
token=my_context.auth_token,
|
||||
timeout=CONF.neutron_url_timeout,
|
||||
timeout=CONF.neutron.url_timeout,
|
||||
insecure=False,
|
||||
ca_cert=None).AndReturn(None)
|
||||
self.mox.ReplayAll()
|
||||
@@ -138,16 +138,16 @@ class TestNeutronClient(test.TestCase):
|
||||
neutronv2.get_client(my_context)
|
||||
|
||||
def test_withouttoken_keystone_connection_error(self):
|
||||
self.flags(neutron_auth_strategy='keystone')
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(auth_strategy='keystone', group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
my_context = context.RequestContext('userid', 'my_tenantid')
|
||||
self.assertRaises(NEUTRON_CLIENT_EXCEPTION,
|
||||
neutronv2.get_client,
|
||||
my_context)
|
||||
|
||||
def test_reuse_admin_token(self):
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
token_store = neutronv2.AdminTokenStore.get()
|
||||
token_store.admin_auth_token = 'new_token'
|
||||
my_context = context.RequestContext('userid', 'my_tenantid',
|
||||
@@ -166,8 +166,8 @@ class TestNeutronClient(test.TestCase):
|
||||
self.assertEqual('new_token1', token_store.admin_auth_token)
|
||||
|
||||
def test_admin_token_updated(self):
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
token_store = neutronv2.AdminTokenStore.get()
|
||||
token_store.admin_auth_token = 'new_token'
|
||||
tokens = [{'auth_token': 'new_token1'}, {'auth_token': 'new_token'}]
|
||||
@@ -2038,7 +2038,7 @@ class TestNeutronv2(TestNeutronv2Base):
|
||||
|
||||
def test_nw_info_build_network_ovs(self):
|
||||
net, iid = self._test_nw_info_build_network(model.VIF_TYPE_OVS)
|
||||
self.assertEqual(net['bridge'], CONF.neutron_ovs_bridge)
|
||||
self.assertEqual(net['bridge'], CONF.neutron.ovs_bridge)
|
||||
self.assertNotIn('should_create_bridge', net)
|
||||
self.assertEqual(iid, 'port-id')
|
||||
|
||||
@@ -2439,11 +2439,11 @@ class TestNeutronClientForAdminScenarios(test.TestCase):
|
||||
def client_mock(*args, **kwargs):
|
||||
client.Client.httpclient = mock.MagicMock()
|
||||
|
||||
self.flags(neutron_auth_strategy=None)
|
||||
self.flags(neutron_url='http://anyhost/')
|
||||
self.flags(neutron_url_timeout=30)
|
||||
self.flags(auth_strategy=None, group='neutron')
|
||||
self.flags(url='http://anyhost/', group='neutron')
|
||||
self.flags(url_timeout=30, group='neutron')
|
||||
if use_id:
|
||||
self.flags(neutron_admin_tenant_id='admin_tenant_id')
|
||||
self.flags(admin_tenant_id='admin_tenant_id', group='neutron')
|
||||
|
||||
if admin_context:
|
||||
my_context = context.get_admin_context()
|
||||
@@ -2452,19 +2452,19 @@ class TestNeutronClientForAdminScenarios(test.TestCase):
|
||||
auth_token='token')
|
||||
self.mox.StubOutWithMock(client.Client, "__init__")
|
||||
kwargs = {
|
||||
'auth_url': CONF.neutron_admin_auth_url,
|
||||
'password': CONF.neutron_admin_password,
|
||||
'username': CONF.neutron_admin_username,
|
||||
'endpoint_url': CONF.neutron_url,
|
||||
'auth_url': CONF.neutron.admin_auth_url,
|
||||
'password': CONF.neutron.admin_password,
|
||||
'username': CONF.neutron.admin_username,
|
||||
'endpoint_url': CONF.neutron.url,
|
||||
'auth_strategy': None,
|
||||
'timeout': CONF.neutron_url_timeout,
|
||||
'timeout': CONF.neutron.url_timeout,
|
||||
'insecure': False,
|
||||
'ca_cert': None,
|
||||
'token': None}
|
||||
if use_id:
|
||||
kwargs['tenant_id'] = CONF.neutron_admin_tenant_id
|
||||
kwargs['tenant_id'] = CONF.neutron.admin_tenant_id
|
||||
else:
|
||||
kwargs['tenant_name'] = CONF.neutron_admin_tenant_name
|
||||
kwargs['tenant_name'] = CONF.neutron.admin_tenant_name
|
||||
client.Client.__init__(**kwargs).WithSideEffects(client_mock)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user