Merge "Fix snapshot image/backup residue in backend"
This commit is contained in:
commit
e28d83a3fd
|
@ -305,6 +305,7 @@ class CinderVolume(aws_vol.Volume):
|
|||
|
||||
def handle_snapshot(self):
|
||||
backup = self.client().backups.create(self.resource_id)
|
||||
self.data_set('backup_id', backup.id)
|
||||
return backup.id
|
||||
|
||||
def check_snapshot_complete(self, backup_id):
|
||||
|
@ -312,12 +313,11 @@ class CinderVolume(aws_vol.Volume):
|
|||
if backup.status == 'creating':
|
||||
return False
|
||||
if backup.status == 'available':
|
||||
self.data_set('backup_id', backup_id)
|
||||
return True
|
||||
raise exception.Error(backup.fail_reason)
|
||||
|
||||
def handle_delete_snapshot(self, snapshot):
|
||||
backup_id = snapshot['resource_data']['backup_id']
|
||||
backup_id = snapshot['resource_data'].get('backup_id')
|
||||
|
||||
def delete():
|
||||
cinder = self.client()
|
||||
|
|
|
@ -1419,12 +1419,12 @@ class Server(stack_user.StackUser):
|
|||
def handle_snapshot(self):
|
||||
image_id = self.nova().servers.create_image(
|
||||
self.resource_id, self.physical_resource_name())
|
||||
self.data_set('snapshot_image_id', image_id)
|
||||
return image_id
|
||||
|
||||
def check_snapshot_complete(self, image_id):
|
||||
image = self.nova().images.get(image_id)
|
||||
if image.status == 'ACTIVE':
|
||||
self.data_set('snapshot_image_id', image.id)
|
||||
return True
|
||||
elif image.status == 'ERROR' or image.status == 'DELETED':
|
||||
raise exception.Error(image.status)
|
||||
|
@ -1432,7 +1432,7 @@ class Server(stack_user.StackUser):
|
|||
return False
|
||||
|
||||
def handle_delete_snapshot(self, snapshot):
|
||||
image_id = snapshot['resource_data']['snapshot_image_id']
|
||||
image_id = snapshot['resource_data'].get('snapshot_image_id')
|
||||
try:
|
||||
self.nova().images.delete(image_id)
|
||||
except Exception as e:
|
||||
|
|
|
@ -648,7 +648,8 @@ class CinderVolumeTest(vt_base.BaseVolumeTest):
|
|||
self.assertEqual((rsrc.SNAPSHOT, rsrc.FAILED), rsrc.state)
|
||||
self.assertIn(fail_reason, rsrc.status_reason)
|
||||
|
||||
self.assertEqual({}, resource_data_object.ResourceData.get_all(rsrc))
|
||||
self.assertEqual({u'backup_id': u'backup-123'},
|
||||
resource_data_object.ResourceData.get_all(rsrc))
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
|
|
@ -3106,7 +3106,7 @@ class ServersTest(common.HeatTestCase):
|
|||
|
||||
self.assertEqual((server.SNAPSHOT, server.COMPLETE), server.state)
|
||||
|
||||
self.assertEqual({'snapshot_image_id': '1'},
|
||||
self.assertEqual({'snapshot_image_id': '456'},
|
||||
resource_data_object.ResourceData.get_all(server))
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -3126,8 +3126,11 @@ class ServersTest(common.HeatTestCase):
|
|||
self.fc.images.get = mock.Mock(return_value=image_in_error)
|
||||
self.assertRaises(exception.ResourceFailure,
|
||||
scheduler.TaskRunner(server.snapshot))
|
||||
self.assertEqual((server.SNAPSHOT, server.FAILED), server.state)
|
||||
|
||||
self.assertEqual((server.SNAPSHOT, server.FAILED), server.state)
|
||||
# test snapshot_image_id already set to resource data
|
||||
self.assertEqual({'snapshot_image_id': '456'},
|
||||
resource_data_object.ResourceData.get_all(server))
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_server_dont_validate_personality_if_personality_isnt_set(self):
|
||||
|
|
Loading…
Reference in New Issue