It's failing here because the port already has a device_id set (an instance id):
https://github.com/openstack/nova/blob/stable/pike/nova/network/neutronv2/api.py#L572
But we should unset that when cleaning up and unbinding the port on the first host before rescheduling:
https://github.com/openstack/nova/blob/stable/pike/nova/network/neutronv2/api.py#L511
Do you see this error in the logs on the first host?
LOG.exception(_LE("Unable to clear device ID " "for port '%s'"), port_id)
It's failing here because the port already has a device_id set (an instance id):
https:/ /github. com/openstack/ nova/blob/ stable/ pike/nova/ network/ neutronv2/ api.py# L572
But we should unset that when cleaning up and unbinding the port on the first host before rescheduling:
https:/ /github. com/openstack/ nova/blob/ stable/ pike/nova/ network/ neutronv2/ api.py# L511
Do you see this error in the logs on the first host?
LOG.exception( _LE("Unable to clear device ID "
"for port '%s'"), port_id)