diff --git a/cinder/backup/manager.py b/cinder/backup/manager.py index 1110cebdb76..55b4d998a0d 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 b5df7fd908c..8628e2c6386 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."""