Check sio_storage_pools in check_for_setup_error

The ScaleIO driver fails to load if sio_storage_pools is not
specified in cinder.conf. This patch checks it in check_for_setup_error
and also check it in __init__.

Change-Id: I0fed70848ad2ecf3899b07058fabfa68df07edbd
Closes-Bug: #1497413
(cherry picked from commit ce575378da)
This commit is contained in:
Xing Yang 2015-08-22 06:28:32 -04:00
parent ccbe534027
commit 4bbf59cd06
2 changed files with 19 additions and 2 deletions

View File

@ -84,6 +84,12 @@ class TestMisc(scaleio.TestScaleIODriver):
self.assertRaises(exception.InvalidInput,
self.driver.check_for_setup_error)
def test_no_storage_pools(self):
"""No storage pools."""
self.driver.storage_pools = None
self.assertRaises(exception.InvalidInput,
self.driver.check_for_setup_error)
def test_volume_size_round_true(self):
self.driver._check_volume_size(1)

View File

@ -122,8 +122,13 @@ class ScaleIODriver(driver.VolumeDriver):
'user': self.server_username,
'verify_cert': self.verify_server_certificate})
self.storage_pools = [e.strip() for e in
self.configuration.sio_storage_pools.split(',')]
self.storage_pools = None
if self.configuration.sio_storage_pools:
self.storage_pools = [
e.strip() for e in
self.configuration.sio_storage_pools.split(',')
]
self.storage_pool_name = self.configuration.sio_storage_pool_name
self.storage_pool_id = self.configuration.sio_storage_pool_id
if self.storage_pool_name is None and self.storage_pool_id is None:
@ -205,6 +210,12 @@ class ScaleIODriver(driver.VolumeDriver):
msg = _("Must specify storage pool name or id.")
raise exception.InvalidInput(reason=msg)
if not self.storage_pools:
msg = _(
"Must specify storage pools. Option: sio_storage_pools."
)
raise exception.InvalidInput(reason=msg)
def _find_storage_pool_id_from_storage_type(self, storage_type):
# Default to what was configured in configuration file if not defined.
return storage_type.get(STORAGE_POOL_ID,