Tried following fix seemed to work
diff --git a/nova/network/neutronv2/api.py b/nova/network/neutronv2/api.py
index 7192031..c526393 100644
--- a/nova/network/neutronv2/api.py
+++ b/nova/network/neutronv2/api.py
@@ -1170,7 +1170,11 @@ class API(base_api.NetworkAPI):
ports = set(ports) - ports_to_skip
# Reset device_id and device_owner for the ports that are skipped
- self._unbind_ports(context, ports_to_skip, neutron)
+ # Only unbind port if neutron sees this port as bound
+ if data.get('ports', []):
+ self._unbind_ports(context, ports_to_skip, neutron)
+ else:
+ LOG.debug("Skipping port unbind as neutron does not see any ports attached")
# Delete the rest of the ports self._delete_ports(neutron, instance, ports, raise_if_fail=True)
Tried following fix seemed to work network/ neutronv2/ api.py b/nova/ network/ neutronv2/ api.py network/ neutronv2/ api.py network/ neutronv2/ api.py api.NetworkAPI) :
diff --git a/nova/
index 7192031..c526393 100644
--- a/nova/
+++ b/nova/
@@ -1170,7 +1170,11 @@ class API(base_
ports = set(ports) - ports_to_skip
# Reset device_id and device_owner for the ports that are skipped ports(context, ports_to_skip, neutron) ports(context, ports_to_skip, neutron)
self. _delete_ ports(neutron, instance, ports, raise_if_fail=True)
- self._unbind_
+ # Only unbind port if neutron sees this port as bound
+ if data.get('ports', []):
+ self._unbind_
+ else:
+ LOG.debug("Skipping port unbind as neutron does not see any ports attached")
# Delete the rest of the ports