summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-11-26 22:14:18 +0000
committerGerrit Code Review <review@openstack.org>2018-11-26 22:14:18 +0000
commit73baefac2f42a59f66bedcdddbb9debb3f324dff (patch)
treee9c376d179813d1411c5957c92d93920b5de59b4
parent827eeca2dc82f1a13e6efbfeb2694650d382bd32 (diff)
parentb90a13d07dcf230a509cc93a4c864a20494cf5e7 (diff)
downloadcinder-13.0.2.tar.gz
Merge "Change the matching method of the backup driver" into stable/rocky13.0.2
-rw-r--r--cinder/backup/manager.py12
-rw-r--r--cinder/tests/unit/backup/test_backup.py23
2 files changed, 30 insertions, 5 deletions
diff --git a/cinder/backup/manager.py b/cinder/backup/manager.py
index 1110cebdb..55b4d998a 100644
--- a/cinder/backup/manager.py
+++ b/cinder/backup/manager.py
@@ -521,11 +521,13 @@ class BackupManager(manager.ThreadPoolManager):
if not backup:
return True
- # TODO(tommylikehu): We upgraded the 'driver_name' from module
- # to class name, so we use 'in' here to match two namings,
- # this can be replaced with equal sign during next
- # release (Rocky).
- if self.driver_name.startswith(backup):
+ # TODO(tommylikehu): We upgraded the 'driver_name' from module to
+ # class name, so we use 'startswith' here to match two namings,
+ # this can be replaced with equal sign during next release (Rocky).
+ # The 'driver_name' varies depending on the user settings, so a
+ # two-way judgment is required.
+ if self.driver_name.startswith(backup) or backup.startswith(
+ self.driver_name):
return True
# We support renaming of drivers, so check old names as well
diff --git a/cinder/tests/unit/backup/test_backup.py b/cinder/tests/unit/backup/test_backup.py
index b5df7fd90..8628e2c63 100644
--- a/cinder/tests/unit/backup/test_backup.py
+++ b/cinder/tests/unit/backup/test_backup.py
@@ -1778,6 +1778,29 @@ class BackupTestCase(BaseBackupTest):
self.assertEqual(100, tpool._nthreads)
self.assertListEqual([], tpool._threads)
+ def test_driver_name_startswith_backup_service_name(self):
+ service_name = 'cinder.tests.unit.backup.fake_service'
+ driver_name = 'cinder.tests.unit.backup.fake_service.FakeBackupService'
+ self.override_config('backup_driver', driver_name)
+ vol_id = self._create_volume_db_entry(status='available', size=1)
+ backup = self._create_backup_db_entry(status=fields.BackupStatus.ERROR,
+ volume_id=vol_id,
+ service=service_name)
+ result = self.backup_mgr._is_our_backup(backup)
+ self.assertTrue(result)
+
+ def test_backup_service_name_startswith_driver_name(self):
+ driver_name = 'cinder.tests.unit.backup.fake_service'
+ service_name = ('cinder.tests.unit.backup.fake_service.'
+ 'FakeBackupService')
+ self.override_config('backup_driver', driver_name)
+ vol_id = self._create_volume_db_entry(status='available', size=1)
+ backup = self._create_backup_db_entry(status=fields.BackupStatus.ERROR,
+ volume_id=vol_id,
+ service=service_name)
+ result = self.backup_mgr._is_our_backup(backup)
+ self.assertTrue(result)
+
class BackupTestCaseWithVerify(BaseBackupTest):
"""Test Case for backups."""