diff --git a/cinder/tests/unit/volume/drivers/test_quobyte.py b/cinder/tests/unit/volume/drivers/test_quobyte.py index 9ab535f4dc2..ccd61524af8 100644 --- a/cinder/tests/unit/volume/drivers/test_quobyte.py +++ b/cinder/tests/unit/volume/drivers/test_quobyte.py @@ -46,9 +46,6 @@ class FakeDb(object): """Mock this if you want results from it.""" return [] - def volume_get_all(self, *a, **kw): - return [] - class QuobyteDriverTestCase(test.TestCase): """Test case for Quobyte driver.""" diff --git a/cinder/tests/unit/windows/test_smbfs.py b/cinder/tests/unit/windows/test_smbfs.py index 9cfee2576e8..311a0b88cb5 100644 --- a/cinder/tests/unit/windows/test_smbfs.py +++ b/cinder/tests/unit/windows/test_smbfs.py @@ -53,15 +53,12 @@ class WindowsSmbFsTestCase(test.TestCase): _FAKE_VOLUME_NAME) _FAKE_SHARE_OPTS = '-o username=Administrator,password=12345' - @mock.patch.object(remotefs.RemoteFSDriver, - '_check_if_volume_db_is_empty') @mock.patch.object(smbfs, 'utilsfactory') @mock.patch.object(smbfs, 'remotefs_brick') - def setUp(self, mock_remotefs, mock_utilsfactory, mock_is_empty): + def setUp(self, mock_remotefs, mock_utilsfactory): super(WindowsSmbFsTestCase, self).setUp() self.context = context.get_admin_context() - mock_is_empty.return_value = None self._FAKE_SMBFS_CONFIG = mock.MagicMock( smbfs_oversub_ratio = 2, diff --git a/cinder/volume/drivers/remotefs.py b/cinder/volume/drivers/remotefs.py index 554b2785380..efab40851e2 100644 --- a/cinder/volume/drivers/remotefs.py +++ b/cinder/volume/drivers/remotefs.py @@ -30,7 +30,6 @@ from oslo_utils import units import six from cinder import compute -from cinder import context from cinder import coordination from cinder import db from cinder import exception @@ -155,39 +154,13 @@ class RemoteFSDriver(driver.BaseVD): self.shares = {} self._mounted_shares = [] self._execute_as_root = True - self._is_voldb_empty_at_startup = self._check_if_volume_db_is_empty() + self._is_voldb_empty_at_startup = kwargs.pop('is_vol_db_empty', None) self._supports_encryption = False if self.configuration: self.configuration.append_config_values(nas_opts) self.configuration.append_config_values(volume_opts) - def _set_voldb_empty_at_startup_indicator(self, ctxt): - """Determine if the Cinder volume DB is empty. - - A check of the volume DB is done to determine whether it is empty or - not at this point. - - :param ctxt: our working context - """ - if not self.db: - return False - vol_entries = self.db.volume_get_all(ctxt, None, 1, filters=None) - - if len(vol_entries) == 0: - LOG.info("Determined volume DB was empty at startup.") - return True - else: - LOG.info("Determined volume DB was not empty at startup.") - return False - - def _check_if_volume_db_is_empty(self): - vol_db_empty = self._set_voldb_empty_at_startup_indicator( - context.get_admin_context()) - LOG.debug("Cinder Volume DB check: vol_db_empty=%s", vol_db_empty) - - return vol_db_empty - def check_for_setup_error(self): """Just to override parent behavior.""" pass diff --git a/cinder/volume/manager.py b/cinder/volume/manager.py index 4441634fb1f..cf59023f137 100644 --- a/cinder/volume/manager.py +++ b/cinder/volume/manager.py @@ -215,6 +215,10 @@ class VolumeManager(manager.CleanableManager, "configuration to the new path.", volume_driver) volume_driver = MAPPING[volume_driver] + vol_db_empty = self._set_voldb_empty_at_startup_indicator( + context.get_admin_context()) + LOG.debug("Cinder Volume DB check: vol_db_empty=%s", vol_db_empty) + # We pass the current setting for service.active_backend_id to # the driver on init, in case there was a restart or something curr_active_backend_id = None @@ -246,6 +250,7 @@ class VolumeManager(manager.CleanableManager, db=self.db, host=self.host, cluster_name=self.cluster, + is_vol_db_empty=vol_db_empty, active_backend_id=curr_active_backend_id) if self.cluster and not self.driver.SUPPORTS_ACTIVE_ACTIVE: @@ -335,6 +340,23 @@ class VolumeManager(manager.CleanableManager, self.stats['pools'][pool]['allocated_capacity_gb'] = pool_sum self.stats['allocated_capacity_gb'] += volume['size'] + def _set_voldb_empty_at_startup_indicator(self, ctxt): + """Determine if the Cinder volume DB is empty. + + A check of the volume DB is done to determine whether it is empty or + not at this point. + + :param ctxt: our working context + """ + vol_entries = self.db.volume_get_all(ctxt, None, 1, filters=None) + + if len(vol_entries) == 0: + LOG.info("Determined volume DB was empty at startup.") + return True + else: + LOG.info("Determined volume DB was not empty at startup.") + return False + def _sync_provider_info(self, ctxt, volumes, snapshots): # NOTE(jdg): For now this just updates provider_id, we can add more # items to the update if they're relevant but we need to be safe in