[ADMIN_API][MGM]: Be nicer to Nova networks for deletes

Instead of deleting a bad instance instantly add to the DB with a DELETED
status so that the next run of the delete scheduler will wipe it out.

Change-Id: Ib5518ef51176729baa703eeb410911cd8437fa9c
This commit is contained in:
Andrew Hutchings
2013-11-21 11:22:04 +00:00
parent 4932077dab
commit 9043c48bf5
2 changed files with 21 additions and 2 deletions

View File

@@ -314,6 +314,8 @@ class GearmanWork(object):
continue
if status.result['response'] == 'FAIL':
LOG.error('Pool manager failed to build a device')
if 'name' in status.result:
self._add_bad_node(status.result)
continue
built_count += 1
@@ -351,3 +353,21 @@ class GearmanWork(object):
with db_session() as session:
session.add(device)
session.commit()
def _add_bad_node(self, data):
LOG.info(
'Adding bad device {0} to DB to be deleted'.format(data['name'])
)
device = Device()
device.name = data['name']
device.publicIpAddr = data['addr']
# TODO: kill this field, make things use publicIpAddr instead
device.floatingIpAddr = data['addr']
device.az = data['az']
device.type = data['type']
device.pingCount = 0
device.status = 'DELETED'
device.created = None
with db_session() as session:
session.add(device)
session.commit()

View File

@@ -121,9 +121,8 @@ class BuildController(object):
return self.msg
sleep(60)
nova.delete(node_id)
LOG.error(
"Node {0} didn't come up after 10 minutes, deleted".format(node_id)
"Node {0} didn't come up after 10 minutes".format(node_id)
)
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
return self.msg