From acbf057d25390cf4adf48488908c9d5d35a55f10 Mon Sep 17 00:00:00 2001 From: Roman Podoliaka Date: Wed, 13 Apr 2016 16:33:29 +0300 Subject: [PATCH] Fix generation of Guru Meditation Report Generation of a guru medidation report fails with TypeError when trying to serialize config group options. This is due to the fact, that I018c3a408a8903be8d006760994de6947fb91168 registers `barbican` options group incorrectly: an OptGroup instance is passed where a string name is expected (keystoneauth1 wraps the passed value into OptGroup unconditionally). A follow up change to oslo.config will make sure we fail early in case an incorrect value has been been passed to register_group(). Change-Id: I4c57127c7bc0098000ad18ba7bab12fbc66d8ac0 Closes-Bug: #1568208 --- nova/conf/barbican.py | 2 +- nova/keymgr/barbican.py | 2 +- .../regressions/test_bug_1568208.py | 34 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 nova/tests/functional/regressions/test_bug_1568208.py diff --git a/nova/conf/barbican.py b/nova/conf/barbican.py index 23de3f7c3b80..e5ee1666b005 100644 --- a/nova/conf/barbican.py +++ b/nova/conf/barbican.py @@ -37,7 +37,7 @@ barbican_opts = [ def register_opts(conf): conf.register_group(barbican_group) conf.register_opts(barbican_opts, group=barbican_group) - ks_loading.register_session_conf_options(conf, barbican_group) + ks_loading.register_session_conf_options(conf, barbican_group.name) def list_opts(): diff --git a/nova/keymgr/barbican.py b/nova/keymgr/barbican.py index 50faf8ea29af..972d81f0a5ba 100644 --- a/nova/keymgr/barbican.py +++ b/nova/keymgr/barbican.py @@ -75,7 +75,7 @@ class BarbicanKeyManager(key_mgr.KeyManager): try: _SESSION = ks_loading.load_session_from_conf_options( CONF, - nova.conf.barbican.barbican_group) + nova.conf.barbican.barbican_group.name) auth = ctxt.get_auth_plugin() service_type, service_name, interface = (CONF. diff --git a/nova/tests/functional/regressions/test_bug_1568208.py b/nova/tests/functional/regressions/test_bug_1568208.py new file mode 100644 index 000000000000..91d748dc195d --- /dev/null +++ b/nova/tests/functional/regressions/test_bug_1568208.py @@ -0,0 +1,34 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +from oslo_reports import guru_meditation_report as gmr + +from nova import test +from nova import version + + +class TestServerGet(test.TestCase): + + def test_guru_meditation_report_generation(self): + """Regression test for bug #1568208. + + This test ensures a text guru meditation report can be generated + successfully and generation does not fail e.g. due to incorrectly + registered config options. + + """ + + # NOTE(rpodolyaka): we are only interested in success of run() call + # here, it's up to oslo_reports tests to check the generated report + generator = gmr.TextGuruMeditation(version) + generator.run()