From 397950e1e92b6a99102213b440820b01c84bdede Mon Sep 17 00:00:00 2001 From: Valeriy Ponomaryov Date: Thu, 18 Dec 2014 19:58:57 +0200 Subject: [PATCH] Fix driver mode opt definition Share driver mode opt should be StrOpt, but now it is ListOpt. We get driver mode validation error when option is redefined within external config file. It can not be caught by update of config opt within code. Change-Id: I77cab322beba7ec2258e106eebf631c081cfebe5 Closes-Bug: #1403952 --- manila/share/driver.py | 2 +- manila/tests/share/test_driver.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/manila/share/driver.py b/manila/share/driver.py index 5d37d3cfde..21155335f2 100644 --- a/manila/share/driver.py +++ b/manila/share/driver.py @@ -53,7 +53,7 @@ share_opts = [ "If not set, the share backend's config group will be used." "If an option is not found within provided group, then" "'DEFAULT' group will be used for search of option."), - cfg.ListOpt( + cfg.StrOpt( 'share_driver_mode', default=None, help="One specific mode for driver to use. Available values: " diff --git a/manila/tests/share/test_driver.py b/manila/tests/share/test_driver.py index 84e2db163c..a3a57087d5 100644 --- a/manila/tests/share/test_driver.py +++ b/manila/tests/share/test_driver.py @@ -15,6 +15,7 @@ # under the License. """Unit tests for the Share driver module.""" +import os import time import mock @@ -55,6 +56,21 @@ class ShareDriverTestCase(test.TestCase): self.assertRaises(exception.ProcessExecutionError, execute_mixin._try_execute) + def test_verify_share_driver_mode_option_type(self): + with utils.tempdir() as tmpdir: + tmpfilename = os.path.join(tmpdir, 'share_driver_mode.conf') + with open(tmpfilename, "w") as configfile: + configfile.write("""[DEFAULT]\nshare_driver_mode = fake""") + + # Add config file with updated opt + driver.CONF.default_config_files = [configfile.name] + + # Reload config instance to use redefined opt + driver.CONF.reload_config_files() + + share_driver = driver.ShareDriver() + self.assertEqual('fake', share_driver.mode) + def _instantiate_share_driver(self, network_config_group): self.stubs.Set(network, 'API', mock.Mock()) config = mock.Mock()