Got hit by this as well, when you force live migration schedule to a compute and it doesn't have resources it doesn't cleanup the port binding when it fails.
By doing as suggested above in neutron database (and having resources available on compute again)
delete from ml2_port_bindings where port_id='f83f20ad-feff-4369-a752-a81964bcfd52' and host='new-host-that-failed';
delete from ml2_port_binding_levels where port_id='f83f20ad-feff-4369-a752-a81964bcfd52' and host='new-host-that-failed';
Got hit by this as well, when you force live migration schedule to a compute and it doesn't have resources it doesn't cleanup the port binding when it fails.
By doing as suggested above in neutron database (and having resources available on compute again)
delete from ml2_port_bindings where port_id= 'f83f20ad- feff-4369- a752-a81964bcfd 52' and host='new- host-that- failed' ; binding_ levels where port_id= 'f83f20ad- feff-4369- a752-a81964bcfd 52' and host='new- host-that- failed' ;
delete from ml2_port_