It is possible that _update_port_binding_for_instance() is called
without a migration object, such as when a user unshelves an instance.
If the instance has a port(s) with a PCI device binding, the current
logic extracts a pci mapping from old to new devices from the migration
object and migration context. If a 'new' device is not found in the
PCI mapping, an exception is thrown.
In the case of an unshelve, there is no migration object (or migration
context), and as such we have an empty pci mapping.
This fix will only check for a new device if we have a migration object.
Conflicts:
nova/tests/unit/network/test_neutronv2.py
NOTE(mriedem): The conflict is due to not having change
I818d2232f3398489be6303414585840c151e4db7 in Newton.
Closes-Bug: 1677621
Change-Id: I578153ca862753ef5b8041ee3853d3c7b2e2be30
(cherry picked from commit c2ff276c84)
(cherry picked from commit f281c18ba9)