Merge "Save the backup.service just before _run_backup"
This commit is contained in:
commit
7eb4e1d0a8
@ -369,7 +369,6 @@ class BackupManager(manager.ThreadPoolManager):
|
|||||||
self._notify_about_backup_usage(context, backup, "create.start")
|
self._notify_about_backup_usage(context, backup, "create.start")
|
||||||
|
|
||||||
backup.host = self.host
|
backup.host = self.host
|
||||||
backup.service = self.driver_name
|
|
||||||
backup.availability_zone = self.az
|
backup.availability_zone = self.az
|
||||||
backup.save()
|
backup.save()
|
||||||
|
|
||||||
@ -408,9 +407,12 @@ class BackupManager(manager.ThreadPoolManager):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if not self.is_working():
|
if not self.is_working():
|
||||||
err = _('Create backup aborted due to backup service is down')
|
err = _('Create backup aborted due to backup service is down.')
|
||||||
self._update_backup_error(backup, err)
|
self._update_backup_error(backup, err)
|
||||||
raise exception.InvalidBackup(reason=err)
|
raise exception.InvalidBackup(reason=err)
|
||||||
|
|
||||||
|
backup.service = self.driver_name
|
||||||
|
backup.save()
|
||||||
updates = self._run_backup(context, backup, volume)
|
updates = self._run_backup(context, backup, volume)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
with excutils.save_and_reraise_exception():
|
with excutils.save_and_reraise_exception():
|
||||||
@ -736,8 +738,8 @@ class BackupManager(manager.ThreadPoolManager):
|
|||||||
self._update_backup_error(backup, err)
|
self._update_backup_error(backup, err)
|
||||||
raise exception.InvalidBackup(reason=err)
|
raise exception.InvalidBackup(reason=err)
|
||||||
|
|
||||||
if not self.is_working():
|
if backup.service and not self.is_working():
|
||||||
err = _('Delete backup is aborted due to backup service is down')
|
err = _('Delete backup is aborted due to backup service is down.')
|
||||||
status = fields.BackupStatus.ERROR_DELETING
|
status = fields.BackupStatus.ERROR_DELETING
|
||||||
self._update_backup_error(backup, err, status)
|
self._update_backup_error(backup, err, status)
|
||||||
raise exception.InvalidBackup(reason=err)
|
raise exception.InvalidBackup(reason=err)
|
||||||
|
@ -1441,6 +1441,27 @@ class BackupsAPITestCase(test.TestCase):
|
|||||||
|
|
||||||
backup.destroy()
|
backup.destroy()
|
||||||
|
|
||||||
|
@mock.patch('cinder.backup.manager.BackupManager.is_working')
|
||||||
|
@mock.patch('cinder.db.service_get_all')
|
||||||
|
def test_delete_backup_service_is_none_and_is_not_working(
|
||||||
|
self, _mock_service_get_all, _mock_backup_is_working):
|
||||||
|
_mock_service_get_all.return_value = [
|
||||||
|
{'availability_zone': 'az1', 'host': 'testhost',
|
||||||
|
'disabled': 0, 'updated_at': timeutils.utcnow(),
|
||||||
|
'uuid': 'a3a593da-7f8d-4bb7-8b4c-f2bc1e0b4824'}]
|
||||||
|
_mock_backup_is_working.return_value = False
|
||||||
|
backup = utils.create_backup(self.context,
|
||||||
|
status=fields.BackupStatus.AVAILABLE,
|
||||||
|
availability_zone='az1', host='testhost',
|
||||||
|
service=None)
|
||||||
|
req = webob.Request.blank('/v2/%s/backups/%s' % (
|
||||||
|
fake.PROJECT_ID, backup.id))
|
||||||
|
req.method = 'DELETE'
|
||||||
|
req.headers['Content-Type'] = 'application/json'
|
||||||
|
res = req.get_response(fakes.wsgi_app(
|
||||||
|
fake_auth_context=self.user_context))
|
||||||
|
self.assertEqual(http_client.ACCEPTED, res.status_int)
|
||||||
|
|
||||||
@mock.patch('cinder.backup.api.API._get_available_backup_service_host')
|
@mock.patch('cinder.backup.api.API._get_available_backup_service_host')
|
||||||
def test_restore_backup_volume_id_specified_json(
|
def test_restore_backup_volume_id_specified_json(
|
||||||
self, _mock_get_backup_host):
|
self, _mock_get_backup_host):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user