From 9095b364bd8fb1e4f282d7aca44825eca1243b53 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 18 Aug 2015 22:26:36 -0400 Subject: [PATCH] Expose keystoneclient's session and auth plugin loading parameters In change id (I7b3b825737dde333c8d88019d814304cbefdbfc7) support was added to be able to specify and use the standard session and auth plugin helpers from keystoneclient to standardize the options available for talking to neutron. However, these config options do not show up when we generate the sample configuration file. Jamie Lennox has details in his blog as well: http://www.jamielennox.net/blog/2015/02/17/loading-authentication-plugins/ Since there are many auth plugins, we generate config params for a few common ones. DocImpact Closes-Bug: #1486590 Change-Id: Id6b3ff845c2388fa01b1d3b28093f5bdf27136ff --- etc/nova/nova-config-generator.conf | 1 + nova/network/neutronv2/api.py | 24 ++++++++++++++++++++++-- setup.cfg | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/etc/nova/nova-config-generator.conf b/etc/nova/nova-config-generator.conf index 8c49bad80709..7c820ad483ee 100644 --- a/etc/nova/nova-config-generator.conf +++ b/etc/nova/nova-config-generator.conf @@ -6,6 +6,7 @@ namespace = nova.api namespace = nova.cells namespace = nova.compute namespace = nova.network +namespace = nova.network.neutronv2 namespace = nova.scheduler namespace = nova.virt namespace = nova.openstack.common.memorycache diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py index 42b43d1d924f..ec1174bcaad2 100644 --- a/nova/network/neutronv2/api.py +++ b/nova/network/neutronv2/api.py @@ -15,6 +15,7 @@ # under the License. # +import copy import time import uuid @@ -135,8 +136,8 @@ deprecations = {'cafile': [cfg.DeprecatedOpt('ca_certificates_file', 'timeout': [cfg.DeprecatedOpt('url_timeout', group=NEUTRON_GROUP)]} -session.Session.register_conf_options(CONF, NEUTRON_GROUP, - deprecated_opts=deprecations) +_neutron_options = session.Session.register_conf_options( + CONF, NEUTRON_GROUP, deprecated_opts=deprecations) auth.register_conf_options(CONF, NEUTRON_GROUP) @@ -151,6 +152,25 @@ _SESSION = None _ADMIN_AUTH = None +def list_opts(): + list = copy.deepcopy(_neutron_options) + list.insert(0, auth.get_common_conf_options()[0]) + # NOTE(dims): There are a lot of auth plugins, we just generate + # the config options for a few common ones + plugins = ['password', 'v2password', 'v3password'] + for name in plugins: + for plugin_option in auth.get_plugin_class(name).get_options(): + found = False + for option in list: + if option.name == plugin_option.name: + found = True + break + if not found: + list.append(plugin_option) + list.sort(key=lambda x: x.name) + return [(NEUTRON_GROUP, list)] + + def reset_state(): global _ADMIN_AUTH global _SESSION diff --git a/setup.cfg b/setup.cfg index a344bef8db34..458ad29eac84 100644 --- a/setup.cfg +++ b/setup.cfg @@ -32,6 +32,7 @@ oslo.config.opts = nova.cells = nova.cells.opts:list_opts nova.compute = nova.compute.opts:list_opts nova.network = nova.network.opts:list_opts + nova.network.neutronv2 = nova.network.neutronv2.api:list_opts nova.scheduler = nova.scheduler.opts:list_opts nova.virt = nova.virt.opts:list_opts nova.openstack.common.memorycache = nova.openstack.common.memorycache:list_opts