Check min config requirements for rbd driver

The RBD driver should check that required configs are set on startup
and fail to start if they are not.

Co-Authored-By: Ivan Kolodyazhny <e0ne@e0ne.info>
Change-Id: I73c9b65f6351b46210de2da29fe73df00d839b52
Closes-Bug: 1276626
This commit is contained in:
Yuriy Nesenenko 2015-12-17 11:51:24 +02:00
parent e8efa5b364
commit 1a9d98bef3
2 changed files with 18 additions and 1 deletions

View File

@ -15,7 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import ddt
import math
import os
import tempfile
@ -121,6 +121,7 @@ CEPH_MON_DUMP = """dumped monmap epoch 1
"""
@ddt.ddt
class RBDTestCase(test.TestCase):
def setUp(self):
@ -153,6 +154,17 @@ class RBDTestCase(test.TestCase):
self.snapshot = dict(volume_name=self.volume_name,
name=self.snapshot_name)
@ddt.data({'cluster_name': None, 'pool_name': 'rbd'},
{'cluster_name': 'volumes', 'pool_name': None})
@ddt.unpack
def test_min_config(self, cluster_name, pool_name):
self.cfg.rbd_cluster_name = cluster_name
self.cfg.rbd_pool = pool_name
with mock.patch('cinder.volume.drivers.rbd.rados'):
self.assertRaises(exception.InvalidConfigurationValue,
self.driver.check_for_setup_error)
@common_mocks
def test_create_volume(self):
client = self.mock_client.return_value

View File

@ -290,6 +290,11 @@ class RBDDriver(driver.TransferVD, driver.ExtendVD,
msg = _('rados and rbd python libraries not found')
raise exception.VolumeBackendAPIException(data=msg)
for attr in ['rbd_cluster_name', 'rbd_pool']:
val = getattr(self.configuration, attr)
if not val:
raise exception.InvalidConfigurationValue(option=attr,
value=val)
# NOTE: Checking connection to ceph
# RADOSClient __init__ method invokes _connect_to_rados
# so no need to check for self.rados.Error here.