We exuberantly announce the release of: nova 32.0.0 This release is part of the flamingo release series. The source is available from: https://opendev.org/openstack/nova Download the package from: https://tarballs.openstack.org/nova/ Please report issues through: https://bugs.launchpad.net/nova/+bugs For more details, please see below. Changes in nova 31.0.0..32.0.0 ------------------------------ 187ffa120f Update Debian qemu/libvirt/libguestfs versions 45ddbc2569 Add Flamingo prelude section 51aceec3ab docs: Update libvirt version support matrix for Flamingo 2bf2814add Fix fast8 tox target 567dbe1867 hypervisors: Optimize uptime retrieval for better performance 4495f1f019 [pci]Keep used dev in Placement regardless of dev_spec f37cdf0c41 [PCI tracker]Remove non configured devs when freed d86aa2d15a Reproduce bug/2115905 1593dddfaf Fix bug 2114951 aa59133626 Reproducer for bug 2114951 60ba6afc49 Add service version for Falmingo 2c87ab7573 Update compute rpc alias for epoxy 73724fef9a doc: mark the maximum microversion for 2025.2 Flamingo 68fbace8af Fix duplicate words 19f206f58c Fix 'nova-manage image_property set' command 583d88308f Replace remaining usage of Ubuntu Jammy 79846eb0d0 libvirt: Disable VMCoreInfo device for SEV-encrypted instances 87385d2411 Follow-up of AMD SEV-ES support a8386bdab3 Purge nested SEV RPs when SEV is disabled af287b71c4 Add functional test scenario for mixed SEV RPs 4f5a3f3c00 libvirt: Launch instances with SEV-ES memory encryption dc6641baad Add hw_mem_encryption_model image property 6c0a689d80 Detect AMD SEV-ES support f914cb185c Add service role in Nova policy ea50365cce Do not yield in threading mode 350cdd1b5e [CI]Make nova-tox-py312-threading voting 1318cd48a1 [test]RPC using threading or eventlet selectively 83eed99a9f Run unit test with threading mode b278240370 Allow to start unit test without eventlet 2a9cbdabce Ask for pre-prod testing for native threading b7c7d45093 Migrate MEM_ENCRYPTION_CONTEXT from root provider d6032973ca Update min support for Flamingo 1d32b50b4a api: Only apply "soft" additionalProperties validation to requests 2a546a8645 tests: Use valid UUIDs for cinder resources a8651eaff3 api: Separate volume, snapshot and volume attachments 2e666e768a api: Address issues with images APIs 4119634bf1 api: Fix validators for hw:cpu_max_* extra specs 93c0f9bc74 restrict swap volume to cinder d6a3f86329 Run nova-api and -metadata in threaded mode e2adef487e [tests] Add printing of sample and template paths c7eac94fc5 only show standard image properties in server show. 3e33b58092 Run nova-next with n-sch in threading mode 5cbe39aca9 Allow services to start with threading bda78b5cf2 Remove logic for unsupported old libvirt/qemu df630cd1b2 api: Deprecate v2 API d238306aa6 api: Remove '[api] auth_strategy', NoAuthMiddlware 4baa108c04 api: Remove deprecated pipeline_factory b2451a74fc conf: Rename '[api] neutron_default_tenant_id' c921e5b3bc tests: Use v2.1 API in OSAPIFixture 0996acc941 tests: Remove unnecessary API version overrides 3a2169cb59 tests: Update to use '/v2.1' prefix, avoid project ID 660bacebc4 Fix libvirt metadata upgrade release note 6a19bf9778 Drop unused method c8e36b57d9 db: Fix api_db_opts reading main_db_opts 7ce26377af Add image meta to libvirt XML metadata 619cd0a9c7 Add more flavor metadata to libvirt guest XML 4c64f84058 Fix image ID in libvirt metadata when unshelving ebfda4bb37 Enable E711 consistently 668d9d37f8 libvirt: Get info with abs path, rebase with rel path acc469b3de mypy: fix type annotations for PciDevicePoolList and NUMATopologyLimits 8701a93743 Document native threading mode and tuneables f8d0b2ee98 Fix doc comment on manager role change 593ac130b6 Don't reset port dns_name when shelving instances 6c03f9d1da Update contributor guide for 2025.2 Flamingo d8e1248b7e api: Add response body schemas for images APIs 48ddc7c4d1 Replace eventlet.event.Event with threading.Event 3eea2d58a9 Implement USB controller extra spec for libvirt. 56e038900c [test]Speed up qemu announce test by mocking sleep 218ce9448b [test]Speed up RBD test by decreasing retry interval f175f68e90 [test]Speed up ironic console test by decreasing timeout 8bf3bcccc4 [test]Speed up fs retry tests by mocking sleep ae3ae0700d Print ThreadPool statistics 06699f26a5 Add project manager role in Nova API policy rule 920344c276 Drop unused parameter type validation method bd2b62a2e4 Migrate ExceptionHelper to test utilities 02fcae2d45 Remove unused utilities c5feba11ff Make the default executor configurable cc0c57b73a Rename DEFAULT_GREEN_POOL to DEFAULT_EXECUTOR f9eb35a384 Make nova.utils.pass_context private bf04b66b4a Move ConductorManager to use spawn_on 3b99b8a6e9 FUP: Translate scatter-gather to futurist 547a002cc5 Imported Translations from Zanata 4adde2c0ae sqlalchemy: Use built-in declarative ce8faa8d74 api: Add response body schemas for networks API 8f9cbe0015 api: Add response body schemas for removed APIs e249f5762d api: Address issues with server group APIs 04589a4530 api: Add response body schemas for server group APIs 558a870e13 api: Add response body schemas for server password APIs 8ed52a058a api: Add response body schemas for server external events API 697c05dd55 libvirt: Add objects and notifications for USB controller model. dab248718d Implement sound model extra spec for libvirt. 183896a79b libvirt: Add objects and notifications for sound model. 0208be629c Fix pci_tracker.save to delete all removed devs d3cb76c858 Reproduce that only half of the PCI devs are removed 5c180e1761 Move ComputeManager to use spawn_on b215c6fee9 Add spawn_on 81a03ab824 Replace utils.spawn_n with spawn d90e7726c0 Use futurist for _get_default_green_pool() 95e60fd58a api: Correct expected errors c4f81a54d5 api: Address issues with remote consoles APIs 1cd1c472bd Note on RPC error decorators around build_and_run_instance 7d946c4535 Fix neutron client dict grabbing 38f978d39a Add Project Manager role context in unit tests 4e6070085f Revert^2 "Support glance's new location API" 1efbbc8d5f Remove Unicode characters 2275b8545e Translate scatter-gather to futurist 0065bb6cd4 Cache [pci]alias parsing ae064caf16 Validate [pci]alias at service startup acc6221660 Validated that PCI alias has proper ids c3f392dd8e Multiple spec per PCI alias limitation 0bfac5c7fe Return HTTP400 for multi spec pci alias if PCI in Placement a0af4648b5 api: Address issues with hypervisors APIs cd401c5c1b libvirt: Enable autodeflate and freePageReporting for memballoon 3b08d60dc4 api: Address issues with server diagnostics APIs 33cf8fef38 api: Address issues with keypairs APIs 72a66cbb9e db: Resolve alembic deprecation warning f09904f62d api: Address issues with instance actions API c4c5134369 Fix small documentation issue b3aefbcb58 Remove unused config options 6ba5168da8 doc: Fix Caracal release number 93af6dce29 Remove contrib/clean-on-delete.py a1c47fc242 [doc]Clarify where to set pci_in_placement 6621832635 doc: Adding link for RabbitMQ installation during nova deployment on controller node. cfb99acd6a Fix live migration error logging ebf5aca101 Add functional reproducer for bug 2102038 221a3e89e8 Revert "Support glance's new location API" 82856f95c6 libvirt: Use common naming convention for ephemeral disk labels e3c494cbd9 [doc] Adding vGPUs max_instances caveat fix for virtual-gpu bfbea63f3f Mention IRC topic update in PTL post-PTG checklist 28331fee3c Example NVMe cleaning script for one-time-use e383b46545 [tool] Fix backport validator for non-SLURP dec761b680 Disable NOVA_COMPILE_MDEV_SAMPLES to unblock CI 0552350a3b api: Add response body schemas for server diagnostics API 485ee768d6 api: Add response body schemas for remote consoles 22c372cbe0 api: Add response body schemas for server topology API 5f70e0ef57 api: Add response body schemas for image metadata APIs 64f70797d6 api: Add response body schemas for keypairs APIs 2b3eb6b015 api: Add response body schemas for server IPs APIs c918fcc587 api: Add response body schemas for hypervisors APIs (3/3) f5d9e5cb2f api: Add response body schemas for hypervisors APIs (2/3) 531ede50a3 api: Add response body schemas for hypervisors APIs (1/3) 2ca03367ad api: Add response body schemas for instance actions f7a03e5834 api: Add response body schemas for hosts APIs 4520a058c8 doc: Add missing API samples 02a6c48b38 tests: Ensure all APIs have a response body schema baf310ac28 api: Simplify parameter types 678bc4ae6e api: Only run format checks on strings 08dd30d3fc api: Add new, simpler api_version decorator a722640b2f api: Only check minimum API version d73a0861f8 api: Stop using wsgi.Controller.api_version to switch between API versions 89977c3661 api: Adjust validation helpers for a single-method future 9fd207ff90 reorder and extend pre-commit hooks ebd75760e1 Allow autopep8 to fix more things 87c0c201a3 update pre-commit version pins 023be4f561 wsgi: Don't create, use lock in same line 2d4887491c Replace eventlet semaphores with threading one 7f4c47c642 [quota]Refactor group counting to scatter-gather a5bcaf69b1 Remove python 3.9 support 5a55a78d51 live migration: Avoid volume rollback mismatches ac765008c9 Remove superfluous monkey patching form func test 659710a626 split monkey_patching form import 02d72b9d56 Remove nova debugger functionality a0dc4e8516 [hacking] N373 do not use eventlet primitives 3946a94538 Replace eventlet sleep with time.sleep eab0de2900 Support glance's new location API c12eebd4c6 Remove WSGIServer related config options 05bab98aba [doc]Describe file based GMR triggering e25418c857 [doc]Remove eventlet based API endpoints 51eb60063f Remove WSGIService and WSGIServer classes 05b219746f Remove eventlet based WSGI server entry points 691d47e936 Remove workaround for ovn live migration 8cafefb2bd Amend functional reproducer for bug 1899835 509820f156 Use dict object for request_specs_dict in the _list_view ee67362728 Functional tests for one-time-use devices 3dc42b8422 Add one-time-use devices docs and reno 28a266461a Support "one-time-use" PCI devices c5efabbd07 Invalidate PCI-in-placement cached RPs during claim ba00d60b95 Extend invalidate_rp to only invalidate cache 9947dac7ae FUP improve and add integration tests for PCI SR-IOV servers 2180c205b4 Fix disable memballoon device 98226b60f3 FUP: Improve libvirt fixture for hostdevs c6a96a17db FUP Update pci-passthrough and virtual-gpu documentation 28f82ba912 FUP Add a warning to make non-explicit live migration request debugging easier 5ac94abfdb FUP improve comment accuracy and variable naming for tag removal 4e4262cd3d FUP Remove unnecessary PCI check 8dcbbe43e7 wrap wsgi_app.init_application with latch_error_on_raise 229fb3513a Ignore metadata tags in pci/stats _find_pool logic 9b7809b289 Fix missing backtick in configuration option help 65409f9483 Remove tags from README 5ef6eae174 Imported Translations from Zanata 932d2334c2 Update master for stable/2025.1 37888e875f ironic: fix logging of validation errors 32afd0c644 Reproduce bug/2098496 b193325eec Fix description of [pci] alias 5c50b8d5a9 doc: Remove non-existent [service_user] auth_strategy 50ca86d329 doc: Drop deprecated [api] auth_strategy eb3a803cd7 unified limits: discover service ID and region ID 8c2df0035d Fix case sensitive comparison ca85ee4ad6 Fix case-sensitivity for metadata keys 2102c7735b Drop CentOS 8 Stream Diffstat (except docs and test files) ------------------------------------- .pre-commit-config.yaml | 45 +- .zuul.yaml | 58 +- HACKING.rst | 2 + README.rst | 6 - api-guide/source/microversions.rst | 4 +- api-guide/source/port_with_resource_request.rst | 2 +- api-guide/source/versions.rst | 2 +- api-ref/source/index.rst | 13 + api-ref/source/os-volume-attachments-swap.inc | 60 + api-ref/source/os-volume-attachments.inc | 55 +- api-ref/source/os-volumes.inc | 10 +- api-ref/source/parameters.yaml | 51 +- api-ref/source/servers-actions.inc | 30 +- .../images/images-details-get-resp.json | 24 +- .../v2.31/create-serial-console-req.json | 6 + .../os-keypairs/v2.92/keypairs-post-req.json | 7 + .../v2.6/create-rdp-console-req.json | 6 + .../v2.97/server-shares-create-tag-req.json | 6 + .../v2.97/server-shares-delete-req.json | 5 + .../os-shelve/v2.91/os-unshelve-az.json | 5 + .../snapshot-create-req.json | 0 .../snapshot-create-resp.json | 4 +- .../snapshots-detail-resp.json | 18 +- .../snapshots-list-resp.json | 18 +- .../snapshots-show-resp.json | 6 +- .../attach-volume-to-server-req.json | 0 .../attach-volume-to-server-resp.json | 0 .../list-volume-attachments-resp.json | 0 .../update-volume-req.json | 0 .../v2.49/attach-volume-to-server-req.json | 0 .../v2.49/attach-volume-to-server-resp.json | 0 .../v2.49/list-volume-attachments-resp.json | 0 .../v2.49/update-volume-req.json | 0 .../v2.49/volume-attachment-detail-resp.json | 0 .../v2.70/attach-volume-to-server-req.json | 0 .../v2.70/attach-volume-to-server-resp.json | 0 .../v2.70/list-volume-attachments-resp.json | 0 .../v2.70/update-volume-req.json | 0 .../v2.70/volume-attachment-detail-resp.json | 0 .../v2.79/attach-volume-to-server-req.json | 0 .../v2.79/attach-volume-to-server-resp.json | 0 .../v2.79/list-volume-attachments-resp.json | 0 .../v2.79/update-volume-req.json | 0 .../v2.79/volume-attachment-detail-resp.json | 0 .../v2.85/attach-volume-to-server-req.json | 0 .../v2.85/attach-volume-to-server-resp.json | 0 .../v2.85/list-volume-attachments-resp.json | 0 .../update-volume-attachment-delete-flag-req.json | 0 .../v2.85/update-volume-req.json | 0 .../v2.85/volume-attachment-detail-resp.json | 0 .../v2.89/attach-volume-to-server-req.json | 0 .../v2.89/attach-volume-to-server-resp.json | 0 .../v2.89/list-volume-attachments-resp.json | 0 .../update-volume-attachment-delete-flag-req.json | 0 .../v2.89/volume-attachment-detail-resp.json | 0 .../volume-attachment-detail-resp.json | 0 .../os-volumes/os-volumes-detail-resp.json | 4 +- .../os-volumes/os-volumes-get-resp.json | 6 +- .../os-volumes/os-volumes-index-resp.json | 6 +- .../os-volumes/os-volumes-post-req.json | 2 +- .../os-volumes/os-volumes-post-resp.json | 6 +- .../servers/v2.100/server-action-rebuild-resp.json | 9 +- .../servers/v2.100/server-action-rebuild.json | 15 + .../servers/v2.100/server-create-req.json | 25 + .../servers/v2.100/server-get-resp.json | 9 +- .../servers/v2.100/server-update-resp.json | 9 +- .../servers/v2.100/servers-details-resp.json | 9 +- .../servers/v2.98/server-action-rebuild-resp.json | 9 +- .../servers/v2.98/server-update-resp.json | 9 +- .../servers/v2.98/servers-details-resp.json | 9 +- .../common_payloads/ImageMetaPropsPayload.json | 2 +- .../admin/configuration/service-user-token.rst | 1 - .../reference/libvirt-distro-support-matrix.rst | 32 +- etc/nova/api-paste.ini | 11 - nova/accelerator/cyborg.py | 22 +- nova/api/auth.py | 22 +- nova/api/openstack/__init__.py | 4 +- nova/api/openstack/api_version_request.py | 22 +- nova/api/openstack/auth.py | 85 - nova/api/openstack/compute/admin_actions.py | 2 + nova/api/openstack/compute/admin_password.py | 1 + nova/api/openstack/compute/agents.py | 5 + nova/api/openstack/compute/aggregates.py | 8 +- .../openstack/compute/assisted_volume_snapshots.py | 11 +- nova/api/openstack/compute/attach_interfaces.py | 1 + nova/api/openstack/compute/availability_zone.py | 1 + nova/api/openstack/compute/baremetal_nodes.py | 13 +- nova/api/openstack/compute/cells.py | 10 + nova/api/openstack/compute/certificates.py | 3 + nova/api/openstack/compute/cloudpipe.py | 4 + nova/api/openstack/compute/console_auth_tokens.py | 63 +- nova/api/openstack/compute/console_output.py | 1 + nova/api/openstack/compute/consoles.py | 5 + nova/api/openstack/compute/create_backup.py | 5 +- nova/api/openstack/compute/deferred_delete.py | 1 + nova/api/openstack/compute/evacuate.py | 22 +- nova/api/openstack/compute/extension_info.py | 1 + nova/api/openstack/compute/fixed_ips.py | 4 + nova/api/openstack/compute/flavor_access.py | 4 +- nova/api/openstack/compute/flavors.py | 25 +- nova/api/openstack/compute/flavors_extraspecs.py | 5 +- nova/api/openstack/compute/floating_ip_dns.py | 8 + nova/api/openstack/compute/floating_ip_pools.py | 3 +- nova/api/openstack/compute/floating_ips.py | 13 +- nova/api/openstack/compute/floating_ips_bulk.py | 5 + nova/api/openstack/compute/fping.py | 3 + nova/api/openstack/compute/hosts.py | 33 +- nova/api/openstack/compute/hypervisors.py | 189 +- nova/api/openstack/compute/image_metadata.py | 43 +- nova/api/openstack/compute/images.py | 19 +- nova/api/openstack/compute/instance_actions.py | 111 +- nova/api/openstack/compute/ips.py | 9 +- nova/api/openstack/compute/keypairs.py | 199 +- nova/api/openstack/compute/limits.py | 47 +- nova/api/openstack/compute/lock_server.py | 7 +- nova/api/openstack/compute/migrate_server.py | 23 +- nova/api/openstack/compute/migrations.py | 118 +- nova/api/openstack/compute/multinic.py | 5 +- nova/api/openstack/compute/networks.py | 16 +- nova/api/openstack/compute/networks_associate.py | 6 +- nova/api/openstack/compute/pause_server.py | 1 + nova/api/openstack/compute/quota_classes.py | 53 +- nova/api/openstack/compute/quota_sets.py | 91 +- nova/api/openstack/compute/remote_consoles.py | 29 +- nova/api/openstack/compute/rescue.py | 1 + .../openstack/compute/rest_api_version_history.rst | 2 +- nova/api/openstack/compute/routes.py | 6 +- nova/api/openstack/compute/schemas/addresses.py | 25 - .../api/openstack/compute/schemas/admin_actions.py | 4 + nova/api/openstack/compute/schemas/agents.py | 5 + nova/api/openstack/compute/schemas/aggregates.py | 20 +- .../openstack/compute/schemas/availability_zone.py | 5 +- nova/api/openstack/compute/schemas/cells.py | 10 + nova/api/openstack/compute/schemas/certificates.py | 3 + nova/api/openstack/compute/schemas/cloudpipe.py | 4 + .../compute/schemas/console_auth_tokens.py | 10 +- nova/api/openstack/compute/schemas/consoles.py | 5 + nova/api/openstack/compute/schemas/fixed_ips.py | 4 + .../openstack/compute/schemas/floating_ip_dns.py | 5 + .../openstack/compute/schemas/floating_ips_bulk.py | 5 + nova/api/openstack/compute/schemas/fping.py | 3 + nova/api/openstack/compute/schemas/hosts.py | 83 + nova/api/openstack/compute/schemas/hypervisors.py | 295 +++ .../openstack/compute/schemas/image_metadata.py | 27 + nova/api/openstack/compute/schemas/images.py | 179 ++ .../openstack/compute/schemas/instance_actions.py | 164 +- nova/api/openstack/compute/schemas/ips.py | 67 +- nova/api/openstack/compute/schemas/keypairs.py | 147 +- nova/api/openstack/compute/schemas/networks.py | 82 + .../compute/schemas/networks_associate.py | 6 +- .../openstack/compute/schemas/remote_consoles.py | 131 +- .../schemas/security_group_default_rules.py | 5 + .../openstack/compute/schemas/security_groups.py | 12 +- .../compute/schemas/server_diagnostics.py | 136 ++ .../compute/schemas/server_external_events.py | 91 +- .../api/openstack/compute/schemas/server_groups.py | 137 +- .../openstack/compute/schemas/server_password.py | 11 + .../openstack/compute/schemas/server_topology.py | 39 + nova/api/openstack/compute/schemas/servers.py | 50 +- nova/api/openstack/compute/schemas/services.py | 2 +- nova/api/openstack/compute/schemas/shelve.py | 27 +- .../compute/schemas/simple_tenant_usage.py | 8 +- nova/api/openstack/compute/schemas/snapshots.py | 53 + .../openstack/compute/schemas/tenant_networks.py | 3 + .../compute/schemas/virtual_interfaces.py | 2 + .../openstack/compute/schemas/volume_attachment.py | 18 - .../compute/schemas/volume_attachments.py | 102 + nova/api/openstack/compute/schemas/volumes.py | 99 - .../compute/security_group_default_rules.py | 5 + nova/api/openstack/compute/security_groups.py | 15 +- nova/api/openstack/compute/server_diagnostics.py | 5 +- .../openstack/compute/server_external_events.py | 23 +- nova/api/openstack/compute/server_groups.py | 19 +- nova/api/openstack/compute/server_migrations.py | 50 +- nova/api/openstack/compute/server_password.py | 3 + nova/api/openstack/compute/server_shares.py | 13 +- nova/api/openstack/compute/server_tags.py | 12 +- nova/api/openstack/compute/server_topology.py | 4 +- nova/api/openstack/compute/servers.py | 67 +- nova/api/openstack/compute/services.py | 42 +- nova/api/openstack/compute/shelve.py | 1 + nova/api/openstack/compute/simple_tenant_usage.py | 45 +- nova/api/openstack/compute/snapshots.py | 151 ++ nova/api/openstack/compute/suspend_server.py | 1 + nova/api/openstack/compute/tenant_networks.py | 11 +- nova/api/openstack/compute/versions.py | 6 +- nova/api/openstack/compute/versionsV21.py | 1 + nova/api/openstack/compute/views/flavors.py | 9 +- .../compute/views/{addresses.py => ips.py} | 0 nova/api/openstack/compute/views/keypairs.py | 2 - nova/api/openstack/compute/views/servers.py | 86 +- nova/api/openstack/compute/virtual_interfaces.py | 2 + nova/api/openstack/compute/volume_attachments.py | 397 ++++ nova/api/openstack/compute/volumes.py | 531 +---- nova/api/openstack/versioned_method.py | 35 - nova/api/openstack/wsgi.py | 217 +- nova/api/openstack/wsgi_app.py | 8 + nova/api/validation/__init__.py | 155 +- nova/api/validation/extra_specs/hw.py | 66 +- nova/api/validation/parameter_types.py | 165 +- nova/api/validation/response_types.py | 70 + nova/api/validation/validators.py | 74 +- nova/cmd/__init__.py | 4 +- nova/cmd/api.py | 71 - nova/cmd/api_metadata.py | 52 - nova/cmd/api_os_compute.py | 51 - nova/cmd/baseproxy.py | 5 +- nova/cmd/compute.py | 2 - nova/cmd/conductor.py | 2 - nova/cmd/manage.py | 4 +- nova/cmd/novncproxy.py | 2 - nova/cmd/scheduler.py | 14 +- nova/cmd/serialproxy.py | 2 - nova/cmd/spicehtml5proxy.py | 2 - nova/compute/api.py | 10 +- nova/compute/claims.py | 26 - nova/compute/manager.py | 243 +- nova/compute/pci_placement_translator.py | 299 ++- nova/compute/resource_tracker.py | 39 +- nova/compute/rpcapi.py | 1 + nova/compute/stats.py | 6 + nova/conductor/manager.py | 11 +- nova/conductor/tasks/live_migrate.py | 4 + nova/conf/api.py | 59 +- nova/conf/base.py | 41 +- nova/conf/compute.py | 2 +- nova/conf/database.py | 2 +- nova/conf/libvirt.py | 9 +- nova/conf/pci.py | 8 +- nova/conf/remote_debug.py | 71 - nova/conf/scheduler.py | 8 +- nova/conf/service.py | 79 - nova/conf/wsgi.py | 147 -- nova/context.py | 58 +- nova/db/api/alembic.ini | 4 + nova/db/api/models.py | 3 +- nova/db/main/alembic.ini | 4 + nova/db/main/api.py | 51 +- nova/db/main/models.py | 3 +- nova/debugger.py | 60 - nova/exception.py | 11 + nova/hacking/checks.py | 21 +- nova/image/glance.py | 32 +- nova/limit/utils.py | 75 +- nova/locale/cs/LC_MESSAGES/nova.po | 32 +- nova/locale/de/LC_MESSAGES/nova.po | 37 +- nova/locale/es/LC_MESSAGES/nova.po | 44 +- nova/locale/fr/LC_MESSAGES/nova.po | 49 +- nova/locale/it/LC_MESSAGES/nova.po | 45 +- nova/locale/ja/LC_MESSAGES/nova.po | 37 +- nova/locale/ko_KR/LC_MESSAGES/nova.po | 37 +- nova/locale/pt_BR/LC_MESSAGES/nova.po | 35 +- nova/locale/ru/LC_MESSAGES/nova.po | 43 +- nova/locale/tr_TR/LC_MESSAGES/nova.po | 28 +- nova/locale/zh_CN/LC_MESSAGES/nova.po | 35 +- nova/locale/zh_TW/LC_MESSAGES/nova.po | 34 +- nova/monkey_patch.py | 83 +- nova/network/model.py | 23 +- nova/network/neutron.py | 23 +- nova/notifications/objects/image.py | 5 +- nova/objects/aggregate.py | 11 +- nova/objects/fields.py | 48 + nova/objects/image_meta.py | 28 +- nova/objects/instance.py | 5 +- nova/objects/pci_device.py | 12 +- nova/objects/service.py | 15 +- nova/pci/devspec.py | 11 + nova/pci/manager.py | 22 +- nova/pci/request.py | 60 +- nova/pci/stats.py | 59 +- nova/policies/assisted_volume_snapshots.py | 18 +- nova/policies/base.py | 53 +- nova/policies/migrate_server.py | 49 +- nova/policies/migrations.py | 62 +- nova/policies/server_external_events.py | 10 +- nova/policies/servers_migrations.py | 50 +- nova/policies/volumes_attachments.py | 9 +- nova/privsep/libvirt.py | 13 - nova/quota.py | 46 +- nova/rpc.py | 4 +- nova/scheduler/client/report.py | 13 +- nova/scheduler/host_manager.py | 2 +- nova/scheduler/manager.py | 2 +- nova/scheduler/request_filter.py | 22 + nova/scheduler/utils.py | 19 +- nova/service.py | 347 --- nova/test.py | 23 +- .../snapshot-create-req.json.tpl | 0 .../snapshot-create-resp.json.tpl | 2 +- .../snapshots-detail-resp.json.tpl | 12 +- .../snapshots-list-resp.json.tpl | 12 +- .../snapshots-show-resp.json.tpl | 4 +- .../attach-volume-to-server-req.json.tpl | 0 .../attach-volume-to-server-resp.json.tpl | 0 .../list-volume-attachments-resp.json.tpl | 0 .../update-volume-req.json.tpl | 0 .../v2.49/attach-volume-to-server-req.json.tpl | 0 .../v2.49/attach-volume-to-server-resp.json.tpl | 0 .../v2.49/list-volume-attachments-resp.json.tpl | 0 .../v2.49/update-volume-req.json.tpl | 0 .../v2.49/volume-attachment-detail-resp.json.tpl | 0 .../v2.70/attach-volume-to-server-req.json.tpl | 0 .../v2.70/attach-volume-to-server-resp.json.tpl | 0 .../v2.70/list-volume-attachments-resp.json.tpl | 0 .../v2.70/update-volume-req.json.tpl | 0 .../v2.70/volume-attachment-detail-resp.json.tpl | 0 .../v2.79/attach-volume-to-server-req.json.tpl | 0 .../v2.79/attach-volume-to-server-resp.json.tpl | 0 .../v2.79/list-volume-attachments-resp.json.tpl | 0 .../v2.79/update-volume-req.json.tpl | 0 .../v2.79/volume-attachment-detail-resp.json.tpl | 0 .../v2.85/attach-volume-to-server-req.json.tpl | 0 .../v2.85/attach-volume-to-server-resp.json.tpl | 0 .../v2.85/list-volume-attachments-resp.json.tpl | 0 ...date-volume-attachment-delete-flag-req.json.tpl | 0 .../v2.85/update-volume-req.json.tpl | 0 .../v2.85/volume-attachment-detail-resp.json.tpl | 0 .../v2.89/attach-volume-to-server-req.json.tpl | 0 .../v2.89/attach-volume-to-server-resp.json.tpl | 0 .../v2.89/list-volume-attachments-resp.json.tpl | 0 ...date-volume-attachment-delete-flag-req.json.tpl | 0 .../v2.89/update-volume-req.json.tpl | 0 .../v2.89/volume-attachment-detail-resp.json.tpl | 0 .../volume-attachment-detail-resp.json.tpl | 0 .../os-volumes/os-volumes-detail-resp.json.tpl | 4 +- .../os-volumes/os-volumes-get-resp.json.tpl | 4 +- .../os-volumes/os-volumes-index-resp.json.tpl | 4 +- .../os-volumes/os-volumes-post-req.json.tpl | 2 +- .../os-volumes/os-volumes-post-resp.json.tpl | 4 +- .../v2.100/server-action-rebuild-resp.json.tpl | 9 +- .../servers/v2.100/server-get-resp.json.tpl | 9 +- .../servers/v2.100/server-update-resp.json.tpl | 9 +- .../servers/v2.100/servers-details-resp.json.tpl | 9 +- .../v2.98/server-action-rebuild-resp.json.tpl | 9 +- .../servers/v2.98/server-details-resp.json.tpl | 9 +- .../servers/v2.98/server-get-resp.json.tpl | 9 +- .../servers/v2.98/server-update-resp.json.tpl | 9 +- .../servers/v2.98/servers-details-resp.json.tpl | 9 +- .../versions/v2-version-get-resp.json.tpl | 6 +- .../versions/versions-get-resp.json.tpl | 4 +- .../functional/compute/test_live_migration.py | 1 - .../libvirt/test_device_bus_migration.py | 18 +- .../functional/libvirt/test_live_migration.py | 4 - .../functional/libvirt/test_numa_live_migration.py | 4 - .../functional/libvirt/test_pci_in_placement.py | 524 ++++- .../functional/libvirt/test_pci_sriov_servers.py | 2410 ++++++++++++++++---- .../functional/libvirt/test_report_cpu_traits.py | 461 +++- .../functional/libvirt/test_rescue_deleted_base.py | 14 +- .../functional/regressions/test_bug_1404867.py | 1 - .../functional/regressions/test_bug_1558866.py | 2 +- .../functional/regressions/test_bug_1669054.py | 1 - .../functional/regressions/test_bug_1732947.py | 1 - .../functional/regressions/test_bug_1823370.py | 1 - .../functional/regressions/test_bug_1843708.py | 1 - .../functional/regressions/test_bug_1886418.py | 1 - .../functional/regressions/test_bug_1895696.py | 6 +- .../functional/regressions/test_bug_1899835.py | 125 +- .../functional/regressions/test_bug_1902925.py | 2 - .../functional/regressions/test_bug_1928063.py | 16 +- .../functional/regressions/test_bug_1939545.py | 2 - .../functional/regressions/test_bug_1943431.py | 49 +- .../functional/regressions/test_bug_1944619.py | 2 - .../functional/regressions/test_bug_1980720.py | 4 +- .../functional/regressions/test_bug_2007968.py | 2 - .../functional/regressions/test_bug_2040264.py | 2 - .../functional/regressions/test_bug_2098496.py | 135 ++ .../functional/regressions/test_bug_2102038.py | 59 + .../functional/regressions/test_bug_2111440.py | 48 + .../functional/regressions/test_bug_2112187.py | 67 + .../functional/test_servers_resource_request.py | 6 + .../unit/api/openstack/compute/microversions.py | 64 +- .../unit/api/openstack/compute/test_aggregates.py | 35 +- .../openstack/compute/test_assisted_snapshots.py | 255 +++ .../openstack/compute/test_availability_zone.py | 2 +- .../api/openstack/compute/test_certificates.py | 8 +- .../unit/api/openstack/compute/test_cloudpipe.py | 2 +- .../api/openstack/compute/test_deferred_delete.py | 6 +- .../unit/api/openstack/compute/test_disk_config.py | 2 +- .../api/openstack/compute/test_extended_ips.py | 4 +- .../api/openstack/compute/test_extended_ips_mac.py | 4 +- .../api/openstack/compute/test_flavor_access.py | 2 +- .../api/openstack/compute/test_flavor_disabled.py | 2 +- .../api/openstack/compute/test_flavor_manage.py | 4 +- .../api/openstack/compute/test_flavorextradata.py | 2 +- .../unit/api/openstack/compute/test_flavors.py | 128 +- .../openstack/compute/test_flavors_extraspecs.py | 2 +- .../unit/api/openstack/compute/test_hypervisors.py | 85 +- .../api/openstack/compute/test_image_metadata.py | 2 +- .../unit/api/openstack/compute/test_images.py | 384 ++-- .../unit/api/openstack/compute/test_keypairs.py | 173 +- .../api/openstack/compute/test_microversions.py | 79 +- .../unit/api/openstack/compute/test_quotas.py | 29 +- .../api/openstack/compute/test_remote_consoles.py | 7 +- .../unit/api/openstack/compute/test_rescue.py | 2 +- .../unit/api/openstack/compute/test_schemas.py | 96 +- .../api/openstack/compute/test_security_groups.py | 80 +- .../api/openstack/compute/test_server_actions.py | 8 +- .../openstack/compute/test_server_diagnostics.py | 2 +- .../unit/api/openstack/compute/test_server_tags.py | 83 +- .../api/openstack/compute/test_server_topology.py | 4 +- .../unit/api/openstack/compute/test_servers.py | 477 ++-- .../unit/api/openstack/compute/test_snapshots.py | 93 +- .../api/openstack/compute/test_tenant_networks.py | 4 +- .../unit/api/openstack/compute/test_urlmap.py | 5 +- .../unit/api/openstack/compute/test_versions.py | 16 +- .../openstack/compute/test_volume_attachments.py | 1394 +++++++++++ .../unit/api/openstack/compute/test_volumes.py | 1901 ++------------- .../unit/api/openstack/test_api_version_request.py | 39 +- .../unit/compute/test_pci_placement_translator.py | 373 ++- .../unit/conductor/tasks/test_live_migrate.py | 7 +- .../notifications/objects/test_notification.py | 2 +- .../policies/test_assisted_volume_snapshots.py | 8 +- .../unit/policies/test_server_external_events.py | 9 +- .../unit/policies/test_simple_tenant_usage.py | 5 +- .../scheduler/weights/test_weights_image_props.py | 2 +- nova/utils.py | 339 +-- nova/virt/disk/mount/nbd.py | 2 +- nova/virt/driver.py | 50 +- nova/virt/hardware.py | 191 +- nova/virt/ironic/driver.py | 12 +- nova/virt/libvirt/config.py | 128 +- nova/virt/libvirt/driver.py | 587 +++-- nova/virt/libvirt/host.py | 47 +- nova/virt/zvm/driver.py | 4 +- nova/wsgi/metadata.py | 3 +- nova/wsgi/osapi_compute.py | 3 +- pyproject.toml | 6 + .../add-policy-manager-role-e245ba669eb88b26.yaml | 113 + .../add-policy-service-role-eaa391e30431a9d6.yaml | 43 + ...md-sev-es-libvirt-support-089ec0e394156d0a.yaml | 12 + .../notes/bp-xml-image-meta-037f4eba59f0121e.yaml | 23 + ...1-ephemeral-disk-fs-label-504484c4522e6d6a.yaml | 6 + .../notes/bug-2095364-ffbf67c0ae3f53b5.yaml | 15 + ...i-hostdevs-than-requested-0139018213f1be96.yaml | 12 + ...age-id-xml-after-unshelve-e5f6116043ba1c41.yaml | 12 + .../notes/bug-2112187-e1c1d40f090e421b.yaml | 36 + ...ory-encryption-is-enabled-142e64f6b9ef3135.yaml | 7 + ...-performance-optimization-6f3a2c8e5d9b1a4e.yaml | 23 + .../notes/deprecate-v2-api-22b1ca9c35c321bc.yaml | 9 + .../notes/flamingo-prelude-22a2782315ce0808.yaml | 52 + ...nic-validate-node-message-6a8b1eedbddd06fd.yaml | 7 + .../latch-error-on-raise-cf2da71a12b5f55f.yaml | 9 + ...m_memory_encrypted_guests-61dc3dcd2ce9d8ea.yaml | 9 + ...eflate-freepage-reporting-13c25d410cca9d23.yaml | 11 + ...onfig-files-with-mod_wsgi-f114ea5fdd8b9a51.yaml | 2 +- .../one-time-use-devices-b62247dd2a4c7a15.yaml | 7 + ...e-live-migration-rollback-7de399d9b3979f79.yaml | 9 + .../remote-debugger-removal-07e26d43c561d495.yaml | 9 + .../remove-api-eventlet-5a932ef45b9af79f.yaml | 5 + ...ron_default_tenant_id-opt-7ca3647dc27f8fcc.yaml | 26 + .../sound-model-extra-specs-2bcbe644b889005c.yaml | 12 + .../notes/threaded-nova-api-d8ec6704dcf66fb3.yaml | 11 + .../threaded-nova-scheduler-dd4649b987f33025.yaml | 11 + ...sb-controller-extra-specs-a2209e3563d18a26.yaml | 13 + releasenotes/source/2025.1.rst | 6 + releasenotes/source/index.rst | 1 + .../source/locale/ja/LC_MESSAGES/releasenotes.po | 56 +- requirements.txt | 6 +- setup.cfg | 6 +- threading_unit_test_excludes.txt | 94 + tools/check-cherry-picks.sh | 7 +- tools/flake8wrap.sh | 9 +- tools/generate-exclude.sh | 1 + tox.ini | 26 +- 666 files changed, 20396 insertions(+), 11901 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 1670ecc5bb..89873efe09 100644 --- a/requirements.txt +++ b/requirements.txt @@ -27 +27 @@ python-neutronclient>=7.1.0 # Apache-2.0 -python-glanceclient>=2.8.0 # Apache-2.0 +python-glanceclient>=4.7.0 # Apache-2.0 @@ -47 +47 @@ oslo.i18n>=5.1.0 # Apache-2.0 -oslo.service>=2.8.0 # Apache-2.0 +oslo.service[threading]>=4.2.0 # Apache-2.0 @@ -54 +54 @@ os-resource-classes>=1.1.0 # Apache-2.0 -os-traits>=3.3.0 # Apache-2.0 +os-traits>=3.5.0 # Apache-2.0