diff --git a/kuryr/lib/config.py b/kuryr/lib/config.py index d3cf7806..10eba751 100644 --- a/kuryr/lib/config.py +++ b/kuryr/lib/config.py @@ -84,8 +84,12 @@ binding_group = cfg.OptGroup( help=_('Configuration options for container interface binding.')) +def register_keystoneauth_opts(conf, conf_group): + ks_loading.register_session_conf_options(conf, conf_group) + ks_loading.register_auth_conf_options(conf, conf_group) + + def register_neutron_opts(conf): conf.register_group(neutron_group) conf.register_opts(neutron_opts, group=neutron_group) - ks_loading.register_session_conf_options(conf, neutron_group.name) - ks_loading.register_auth_conf_options(conf, neutron_group.name) + register_keystoneauth_opts(conf, neutron_group.name) diff --git a/kuryr/lib/opts.py b/kuryr/lib/opts.py index 27995c0a..45bf8e90 100644 --- a/kuryr/lib/opts.py +++ b/kuryr/lib/opts.py @@ -37,8 +37,8 @@ _kuryr_opts = [ ] -def list_neutron_opts(): - opt_list = copy.deepcopy(config.neutron_opts) +def get_keystoneauth_conf_options(): + opt_list = [] opt_list.insert(0, ks_loading.get_auth_common_conf_options()[0]) opt_list += ks_loading.get_session_conf_options() # NOTE(apuimedo): There are a lot of auth plugins, we just generate the @@ -47,6 +47,12 @@ def list_neutron_opts(): for plugin_option in ks_loading.get_auth_plugin_conf_options(name): if all(option.name != plugin_option.name for option in opt_list): opt_list.append(plugin_option) + return opt_list + + +def list_neutron_opts(): + opt_list = copy.deepcopy(config.neutron_opts) + opt_list += get_keystoneauth_conf_options() opt_list.sort(key=operator.attrgetter('name')) return [(config.neutron_group, opt_list)] diff --git a/kuryr/lib/utils.py b/kuryr/lib/utils.py index 8bd0c01e..ea5f7bc7 100644 --- a/kuryr/lib/utils.py +++ b/kuryr/lib/utils.py @@ -24,11 +24,21 @@ DOCKER_NETNS_BASE = '/var/run/docker/netns' PORT_POSTFIX = 'port' +def get_auth_plugin(conf_group): + return ks_loading.load_auth_from_conf_options( + cfg.CONF, conf_group) + + +def get_keystone_session(conf_group, auth_plugin): + return ks_loading.load_session_from_conf_options(cfg.CONF, + conf_group, + auth=auth_plugin) + + def get_neutron_client(*args, **kwargs): conf_group = kuryr_config.neutron_group.name - auth_plugin = ks_loading.load_auth_from_conf_options(cfg.CONF, conf_group) - session = ks_loading.load_session_from_conf_options(cfg.CONF, conf_group, - auth=auth_plugin) + auth_plugin = get_auth_plugin(conf_group) + session = get_keystone_session(conf_group, auth_plugin) endpoint_type = getattr(getattr(cfg.CONF, conf_group), 'endpoint_type') return client.Client(session=session, diff --git a/kuryr/tests/unit/test_utils.py b/kuryr/tests/unit/test_utils.py index cd1141f3..e4506cdf 100644 --- a/kuryr/tests/unit/test_utils.py +++ b/kuryr/tests/unit/test_utils.py @@ -37,16 +37,38 @@ class TestKuryrUtils(base.TestCase): self.assertIn(name_prefix, generated_neutron_subnetpool_name) self.assertIn(fake_subnet_cidr, generated_neutron_subnetpool_name) - @mock.patch('neutronclient.v2_0.client.Client') @mock.patch('keystoneauth1.loading.load_auth_from_conf_options') + def test_get_auth_plugin(self, mock_auth_loader): + conf_group = 'neutron' + fake_auth = 'Fake_auth_plugin' + mock_auth_loader.return_value = fake_auth + utils.get_auth_plugin(conf_group) + mock_auth_loader.assert_called_once_with(cfg.CONF, conf_group) + @mock.patch('keystoneauth1.loading.load_session_from_conf_options') - def test_get_neutron_client(self, mock_session_loader, mock_auth_loader, - mock_client): + def test_get_keystone_session(self, mock_session_loader): + conf_group = 'neutron' fake_auth = 'Fake_auth_plugin' fake_session = 'Fake_session_plugin' - mock_auth_loader.return_value = fake_auth mock_session_loader.return_value = fake_session + utils.get_keystone_session(conf_group, fake_auth) + mock_session_loader.assert_called_once_with(cfg.CONF, conf_group, + auth=fake_auth) + + @mock.patch('neutronclient.v2_0.client.Client') + @mock.patch('kuryr.lib.utils.get_auth_plugin') + @mock.patch('kuryr.lib.utils.get_keystone_session') + def test_get_neutron_client(self, mock_get_keystone_session, + mock_get_auth_plugin, mock_client): + fake_auth = 'Fake_auth_plugin' + fake_session = 'Fake_session_plugin' + default_conf_group = 'neutron' + mock_get_auth_plugin.return_value = fake_auth + mock_get_keystone_session.return_value = fake_session utils.get_neutron_client() + mock_get_keystone_session.assert_called_once_with(default_conf_group, + fake_auth) + mock_get_auth_plugin.assert_called_once_with(default_conf_group) neutron_group = getattr(cfg.CONF, kuryr_config.neutron_group.name) mock_client.assert_called_once_with( auth=fake_auth,