It's not the [database]/connection that matters, build requests are in API DB which isn't configured in the cell conductor in default devstack.
If you have a recreate, can you log the filter_properties when this fails? Because the logic is based on the num_attempts count from the retries:
except Exception as exc: num_attempts = filter_properties.get( 'retry', {}).get('num_attempts', 1)
updates = {'vm_state': vm_states.ERROR, 'task_state': None}
for instance in instances: self._set_vm_state_and_notify( context, instance.uuid, 'build_instances', updates, exc, request_spec)
# If num_attempts > 1, we're in a reschedule and probably
# either hit NoValidHost or MaxRetriesExceeded. Either way,
# the build request should already be gone and we probably
# can't reach the API DB from the cell conductor.
if num_attempts <= 1: try: # If the BuildRequest stays around then instance # show/lists will pull from it rather than the errored # instance. self._destroy_build_request(context, instance)
It's not the [database] /connection that matters, build requests are in API DB which isn't configured in the cell conductor in default devstack.
If you have a recreate, can you log the filter_properties when this fails? Because the logic is based on the num_attempts count from the retries:
except Exception as exc:
num_ attempts = filter_ properties. get(
'retry' , {}).get( 'num_attempts' , 1)
self. _set_vm_ state_and_ notify(
context, instance.uuid, 'build_instances', updates,
exc, request_spec)
try:
# If the BuildRequest stays around then instance
# show/lists will pull from it rather than the errored
# instance.
self. _destroy_ build_request( context, instance)
updates = {'vm_state': vm_states.ERROR, 'task_state': None}
for instance in instances:
# If num_attempts > 1, we're in a reschedule and probably
# either hit NoValidHost or MaxRetriesExceeded. Either way,
# the build request should already be gone and we probably
# can't reach the API DB from the cell conductor.
if num_attempts <= 1: