Fix the delete of a volume attach when the create partially succeeded

Fixes #70

Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
This commit is contained in:
Angus Salkeld 2012-04-18 15:47:21 +10:00
parent 24ad425a7a
commit 777d2f3a56
1 changed files with 12 additions and 11 deletions

View File

@ -151,6 +151,7 @@ class Resource(object):
self.state = new_state
def delete(self):
self.reload()
print 'deleting %s name:%s inst:%s db_id:%s' % (self.t['Type'],
self.name,
self.instance_id,
@ -165,7 +166,7 @@ class Resource(object):
might need to override this, but still call it.
This is currently used by stack.get_outputs()
'''
print 'reloading %s name:%s' % (self.t['Type'], self.name)
print 'reloading %s name:%s instance_id:%s' % (self.t['Type'], self.name, self.instance_id)
self.stack.resolve_attributes(self.t)
def FnGetRefId(self):
@ -456,23 +457,24 @@ class VolumeAttachment(Resource):
self.state_set(self.DELETE_IN_PROGRESS)
Resource.delete(self)
server_id = self.t['Properties']['InstanceId']
volume_id = self.t['Properties']['VolumeId']
print 'VolumeAttachment un-attaching %s %s' % \
(self.t['Properties']['InstanceId'],
self.instance_id)
(server_id, volume_id)
volapi = self.nova().volumes
volapi.delete_server_volume(self.t['Properties']['InstanceId'],
self.instance_id)
volapi.delete_server_volume(server_id,
volume_id)
vol = self.nova('volume').volumes.get(self.t['Properties']['VolumeId'])
print 'un-attaching %s, status %s' % (self.instance_id, vol.status)
vol = self.nova('volume').volumes.get(volume_id)
print 'un-attaching %s, status %s' % (volume_id, vol.status)
while vol.status == 'in-use':
print 'trying to un-attach %s, but still %s' % (self.instance_id,
print 'trying to un-attach %s, but still %s' % (volume_id,
vol.status)
eventlet.sleep(1)
try:
volapi.delete_server_volume(self.t['Properties']['InstanceId'],
self.instance_id)
volapi.delete_server_volume(server_id,
volume_id)
except Exception:
pass
vol.get()
@ -619,7 +621,6 @@ class Instance(Resource):
'''
re-read the server's ipaddress so FnGetAtt works.
'''
print 'reloading Instance %s' % self.instance_id
try:
server = self.nova().servers.get(self.instance_id)
for n in server.networks: