Merge "Fix snapshot image/backup residue in backend"

This commit is contained in:
Jenkins 2015-04-30 02:24:47 +00:00 committed by Gerrit Code Review
commit e28d83a3fd
4 changed files with 11 additions and 7 deletions

View File

@ -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()

View File

@ -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:

View File

@ -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()

View File

@ -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):