Merge proposals opened for sponsorship & test PPA at [1]. The test packages resolve the issue as described in the test plan.
Please note that the Plucky test package has an extra line in the patch headers that I removed from the MP. [1] https://launchpad.net/~whershberger/+archive/ubuntu/nova-lp2095364 ** Description changed: + [ Impact ] + + The user who reported this in Caracal is experiencing intermittent VM build + failures in their environment; depending on when the build fails, Nova may not + have created the VM's record in the nova_api:request_specs table yet, leading + to the failure when the user requests details about the VM. + + We do not have a consistent organic reproducer that produces the missing record + during machine build. However, it's possible to remove the record from the + database for an existing server to reproduce the failure. + + As noted in the upstream commit and original bug description, Nova should be + able to handle the missing record [1]. + + I've included the related unit tests in the patch and verified that the patch + fixes the issue in Noble & Plucky using regress-stack. + + [1] + https://opendev.org/openstack/nova/commit/509820f156e339e825f799d84b06cb11ac6b6096 + + [ Test Plan ] + + Run the test plan in a VM with sufficient disk (25GiB+) and RAM (4GiB+). + + For plucky, apply the following commit to regress-stack: + https://github.com/MggMuggins/regress- + stack/commit/748cb81fae39796fc90ca6a6d4427eb6eae4a0c0 + + Deploy regress-stack and set up a playground environment: + ``` + sudo snap install openstackclients --channel=2024.1/stable + sudo snap install astral-uv --classic + sudo apt-get install --yes dpkg-dev python3-dev python-apt-dev + git clone https://github.com/canonical/regress-stack.git + cd regress-stack + uv sync + sudo apt-get install --yes $(uv run regress-stack packages nova) + sudo uv run regress-stack setup + + # Grab the openrc since regress-stack was set up as root + sudo cp /root/auth.rc ~/ + sudo chown $(id -u):$(id -g) ~/auth.rc + + uv run regress-stack playground + ``` + + ``` + . ~/auth.rc + openstack server create --image ubuntu-{noble,plucky} --flavor m1.small --network private-network demo-test1 + ``` + + ``` + sudo mysql -u root + use nova_api; + delete from request_specs where instance_uuid = "<UUID>"; + exit + ``` + + Actual behavior: + ``` + $ openstack --os-compute-api-version 2.96 server list --long + HttpException: 500: Server Error for url: http://10.148.1.2:8774/v2.1/servers/detail?deleted=False, Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. + <class 'KeyError'> + ``` + + Expected behavior: + ``` + $ openstack --os-compute-api-version 2.96 server list --long + +-------------------+------------+--------+------------+-------------+-------------------+---------------+-------------------+----------+-------------------+--------+------------+-------------+ + | ID | Name | Status | Task State | Power State | Networks | Image Name | Image ID | Flavor | Availability Zone | Host | Properties | Host Status | + +-------------------+------------+--------+------------+-------------+-------------------+---------------+-------------------+----------+-------------------+--------+------------+-------------+ + | 24ef1693-2375- | demo-test1 | ACTIVE | None | Running | private-network=1 | ubuntu-plucky | 1348517e-a509- | m1.small | nova | p0.lxd | | UP | + | 4061-98ec- | | | | | 92.168.133.201 | | 47f2-91e2- | | | | | | + | 106cb4f7d877 | | | | | | | e26d3064f549 | | | | | | + +-------------------+------------+--------+------------+-------------+-------------------+---------------+-------------------+----------+-------------------+--------+------------+-------------+ + ``` + + [ Where problems could occur ] + + The fix for this issue touches code that is only run when handling requests to + the /servers/detail endpoint. Failures in this code would show up when directly + querying that endpoint or using the `--long` option of the openstack CLI. + + [ Original Description ] + The List Server API and List Server detail API with v2.96 microversion hits 500 error if one or more instance's request spec object don't exist by any reason. The error reason is v2.96 and later version requires the request_spec information for the requested_az information, but the latest list view builder code assumes all request_spec objects for all instances exist correctly. - ## Stacktrace 2025-01-16T06:39:41.756 10 ERROR nova.api.openstack.wsgi [F] [None req-0605cf7e-09db-4ba1-9914-68d34d935587 9d5b1aa120675648abcb2cb156f8020b 792bb91fb3a254b4b5cbf61bed57854e - - default default] Unexpected exception in API method: KeyError: '5d9070aa-33da-46bc-94bc-604746ecfbd2' 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] Traceback (most recent call last): 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/wsgi.py", line 665, in wrapped 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] return f(*args, **kwargs) 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/validation/__init__.py", line 195, in wrapper 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] return func(*args, **kwargs) 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/validation/__init__.py", line 195, in wrapper 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] return func(*args, **kwargs) 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/validation/__init__.py", line 195, in wrapper 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] return func(*args, **kwargs) 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] [Previous line repeated 2 more times] 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/compute/servers.py", line 146, in detail 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] servers = self._get_servers(req, is_detail=True) 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/compute/servers.py", line 360, in _get_servers 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] response = self._view_builder.detail( 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/compute/views/servers.py", line 475, in detail 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] servers_dict = self._list_view(self.show, request, instances, 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/compute/views/servers.py", line 529, in _list_view 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] server_list = [func(request, server, 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] File "/opt/nova/lib64/python3.9/site-packages/nova/api/openstack/compute/views/servers.py", line 535, in <listcomp> 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] provided_az=req_specs_dict[server.uuid])["server"] 2025-01-16T06:39:41.756 10 EXCEPTION nova.api.openstack.wsgi [P] [-] KeyError: '5d9070aa-33da-46bc-94bc-604746ecfbd2' -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2095364 Title: List server API v2.96 returns 500 if there is missing request spec object To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-archive/+bug/2095364/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
