← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2037585] [NEW] VM fails to delete with trunk + subports

 

Public bug reported:

When using Neutron, it will prevent you to delete a port if the subports
are still attached:

https://review.opendev.org/c/openstack/neutron/+/885154

Because of this, if you delete a VM with subports attached, you will end
up with a VM in ERROR state:

```
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Traceback (most recent call last):
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 1768, in _delete_ports
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     neutron.delete_port(port)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 833, in delete_port
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.delete(self.port_path % (port))
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 352, in delete
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.retry_request("DELETE", action, body=body,
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 333, in retry_request
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.do_request(method, action, body=body,
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 297, in do_request
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     self._handle_fault_response(status_code, replybody, resp)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 272, in _handle_fault_response
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     exception_handler_v20(status_code, error_body)
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 90, in exception_handler_v20
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     raise client_exc(message=error_message,
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Neutron server returns request_ids: ['req-27e65a3d-79e7-40f8-9525-24bd43592167']
2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]
2023-09-27 18:31:01.057 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Failed to deallocate network for instance. Error: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
2023-09-27 18:31:01.095 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Setting instance vm_state to ERROR: neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
```

We need to handle this in a more graceful way, or perhaps re-order the
ports to try deleting the subports first and then any other ports.

As a workaround for the user, they can detach the ports first and then
they can delete it after.

** Affects: nova
     Importance: Undecided
         Status: New

** Description changed:

  When using Neutron, it will prevent you to delete a port if the subports
  are still attached:
  
  https://review.opendev.org/c/openstack/neutron/+/885154
  
  Because of this, if you delete a VM with subports attached, you will end
  up with a VM in ERROR state:
  
  ```
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Traceback (most recent call last):
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 1768, in _delete_ports
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     neutron.delete_port(port)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 833, in delete_port
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.delete(self.port_path % (port))
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 352, in delete
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.retry_request("DELETE", action, body=body,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 333, in retry_request
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.do_request(method, action, body=body,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 297, in do_request
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     self._handle_fault_response(status_code, replybody, resp)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 272, in _handle_fault_response
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     exception_handler_v20(status_code, error_body)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 90, in exception_handler_v20
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     raise client_exc(message=error_message,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Neutron server returns request_ids: ['req-27e65a3d-79e7-40f8-9525-24bd43592167']
- 2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] 
+ 2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]
  2023-09-27 18:31:01.057 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Failed to deallocate network for instance. Error: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  2023-09-27 18:31:01.095 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Setting instance vm_state to ERROR: neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  ```
  
  We need to handle this in a more graceful way, or perhaps re-order the
  ports to try deleting the subports first and then any other ports.
+ 
+ As a workaround for the user, they can detach the ports first and then
+ they can delete it after.

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/2037585

Title:
  VM fails to delete with trunk + subports

Status in OpenStack Compute (nova):
  New

Bug description:
  When using Neutron, it will prevent you to delete a port if the
  subports are still attached:

  https://review.opendev.org/c/openstack/neutron/+/885154

  Because of this, if you delete a VM with subports attached, you will
  end up with a VM in ERROR state:

  ```
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Traceback (most recent call last):
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 1768, in _delete_ports
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     neutron.delete_port(port)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 833, in delete_port
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.delete(self.port_path % (port))
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 352, in delete
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.retry_request("DELETE", action, body=body,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 333, in retry_request
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     return self.do_request(method, action, body=body,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 297, in do_request
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     self._handle_fault_response(status_code, replybody, resp)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/nova/network/neutron.py", line 196, in wrapper
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     ret = obj(*args, **kwargs)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 272, in _handle_fault_response
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     exception_handler_v20(status_code, error_body)
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]   File "/var/lib/openstack/lib/python3.10/site-packages/neutronclient/v2_0/client.py", line 90, in exception_handler_v20
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]     raise client_exc(message=error_message,
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Neutron server returns request_ids: ['req-27e65a3d-79e7-40f8-9525-24bd43592167']
  2023-09-27 18:31:01.056 328858 ERROR nova.network.neutron [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884]
  2023-09-27 18:31:01.057 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Failed to deallocate network for instance. Error: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  2023-09-27 18:31:01.095 328858 ERROR nova.compute.manager [None req-718be02e-89c0-44a3-9781-9079deab9990 959a3ebd6c2048ffa592d7c4bf59ae22 4b633c451ac74233be3721a3635275e5 - - default default] [instance: 08ca5cf4-c86a-4446-a031-a3b84ff47884] Setting instance vm_state to ERROR: neutronclient.common.exceptions.Conflict: Port c4381527-ff2e-48b0-b4da-3e08928f7c1b is currently a parent port for trunk e938d9b3-82e5-4bc7-8bb3-7e075d2f8d9e.
  ```

  We need to handle this in a more graceful way, or perhaps re-order the
  ports to try deleting the subports first and then any other ports.

  As a workaround for the user, they can detach the ports first and then
  they can delete it after.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/2037585/+subscriptions