Support driver's setup method
As part of the effort to simplify and properly define the driver interface, Cinder consolidated methods do_setup and check_for_setup_error in a single method called setup. This patch provides support for both mechanisms in cinderlib. Change-Id: Id037c1b8a570eea704c136f35ac0b262ca5b0dfa
This commit is contained in:
parent
94bd3fffc0
commit
5c4349cffe
|
@ -106,8 +106,14 @@ class Backend(object):
|
|||
host='%s@%s' % (cfg.CONF.host, volume_backend_name),
|
||||
cluster_name=None, # We don't use cfg.CONF.cluster for now
|
||||
active_backend_id=None) # No failover for now
|
||||
self.driver.do_setup(objects.CONTEXT)
|
||||
self.driver.check_for_setup_error()
|
||||
|
||||
# do_setup and check_for_setup errors were merged into setup in Yoga.
|
||||
# First try the old interface, and if it fails, try the new one.
|
||||
try:
|
||||
self.driver.do_setup(objects.CONTEXT)
|
||||
self.driver.check_for_setup_error()
|
||||
except AttributeError:
|
||||
self.driver.setup(objects.CONTEXT)
|
||||
|
||||
self.driver.init_capabilities()
|
||||
self.driver.set_throttle()
|
||||
|
|
|
@ -104,6 +104,47 @@ class TestCinderlib(base.BaseTest):
|
|||
self.assertEqual(('default',), backend.pool_names)
|
||||
mock_workarounds.assert_called_once_with(mock_config.return_value)
|
||||
|
||||
@mock.patch('cinderlib.Backend._apply_backend_workarounds')
|
||||
@mock.patch('oslo_utils.importutils.import_object')
|
||||
@mock.patch('cinderlib.Backend._get_backend_config')
|
||||
@mock.patch('cinderlib.Backend.global_setup')
|
||||
def test_init_setup(self, mock_global_setup, mock_config, mock_import,
|
||||
mock_workarounds):
|
||||
"""Test initialization with the new 'setup' driver method."""
|
||||
cfg.CONF.set_override('host', 'host')
|
||||
driver_cfg = {'k': 'v', 'k2': 'v2', 'volume_backend_name': 'Test'}
|
||||
cinderlib.Backend.global_initialization = False
|
||||
driver = mock_import.return_value
|
||||
driver.do_setup.side_effect = AttributeError
|
||||
driver.capabilities = {'pools': [{'pool_name': 'default'}]}
|
||||
|
||||
backend = objects.Backend(**driver_cfg)
|
||||
|
||||
mock_global_setup.assert_called_once_with()
|
||||
self.assertIn('Test', objects.Backend.backends)
|
||||
self.assertEqual(backend, objects.Backend.backends['Test'])
|
||||
mock_config.assert_called_once_with(driver_cfg)
|
||||
|
||||
conf = mock_config.return_value
|
||||
mock_import.assert_called_once_with(conf.volume_driver,
|
||||
configuration=conf,
|
||||
db=self.persistence.db,
|
||||
host='host@Test',
|
||||
cluster_name=None,
|
||||
active_backend_id=None)
|
||||
self.assertEqual(backend.driver, driver)
|
||||
driver.do_setup.assert_called_once_with(objects.CONTEXT)
|
||||
driver.check_for_setup_error.assert_not_called()
|
||||
driver.setup.assert_called_once_with(objects.CONTEXT)
|
||||
driver.init_capabilities.assert_called_once_with()
|
||||
driver.set_throttle.assert_called_once_with()
|
||||
driver.set_initialized.assert_called_once_with()
|
||||
self.assertEqual(driver_cfg, backend._driver_cfg)
|
||||
self.assertIsNone(backend._volumes)
|
||||
driver.get_volume_stats.assert_not_called()
|
||||
self.assertEqual(('default',), backend.pool_names)
|
||||
mock_workarounds.assert_called_once_with(mock_config.return_value)
|
||||
|
||||
@mock.patch.object(objects.Backend, 'global_initialization', True)
|
||||
@mock.patch.object(objects.Backend, '_apply_backend_workarounds')
|
||||
@mock.patch('oslo_utils.importutils.import_object')
|
||||
|
|
Loading…
Reference in New Issue