We are pleased to announce the release of: nova 26.0.0: Cloud computing fabric controller This release is part of the zed 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 25.0.0..26.0.0 ------------------------------ 2db7cbf7d0 requires os-traits >= 2.9.0 839502e454 [stable-only] Update TOX_CONSTRAINTS_FILE for stable/zed c38b1dbe03 [stable-only] Update .gitreview for stable/zed cfd3aa8dfc Prelude section for Zed release a1731927cc Update min supported service version for Zed 8f5fd2ae46 Bump min oslo.concurrencty to >= 5.0.1 e43bf900dc Gracefully ERROR in _init_instance if vnic_type changed f8c91eb75f Reproduce bug 1981813 in func env 966dd8b25a doc: mark the max microversion for zed a4bf453a3c Update compute rpc version alias for zed efb6fd834e Doc follow up for PCI in placement 11bcf2676c Follow up for the PCI in placement series dc05564435 Add traits for viommu model 14e3b352c2 libvirt: Add vIOMMU device to guest 1bc1b599df Skip UnshelveToHostMultiNodesTest in nova-multi-cell 45c5b80fd0 Add API support for rebuilding BFV instances a85d052a22 Add missing descriptions in HACKING.rst 6919db5612 Add conductor RPC interface for rebuild 30aab9c234 Add support for volume backed server rebuild 6903456820 Add documentation and releasenotes for RBAC change ccab6fed46 Generate request_id for Flavor based InstancePCIRequest 06389f8d84 Allow enabling PCI tracking in Placement 9268bc36a3 Handle PCI dev reconf with allocations ab439dadb1 Heal allocation for same host resize 98e9989cad Heal PCI allocation during resize d483a696a5 Heal missing simple PCI allocation in the resource tracker 48229b46b4 Retry /reshape at provider generation conflict bdec962fd6 Move provider_tree RP creation to PciResourceProvider 3e68e19d6e Stop if tracking is disable after it was enabled before 5860541bd7 Support [pci]device_spec reconfiguration 01d7a39e00 Reject devname based device_spec config 10ba714125 Ignore PCI devs with physical_network tag 07f2bf8035 Reject mixed VF rc and trait config 0d526d1f4b Reject PCI dependent device config 2722038946 Extend device_spec with resource_class and traits 953f1eef19 Basics for PCI Placement reporting 2b447b7236 Trigger reschedule if PCI consumption fail on compute 2aeb0a96b7 Reproduce bug 1986838 909b0b0247 Keep legacy admin behaviour in new RBAC 572c2b18e2 Add locked_memory extra spec and image property 066e1e69d1 Remove system scope from all APIs 0f82a6465a Revert "Test attached volume extend actions in the nova-next job" 0aad338b1c Add VDPA support for suspend and livemigrate 51a970af37 Fix suspend for non hostdev sriov ports 6f1c7ab2e7 Add source dev parsing for vdpa interfaces 49605f8829 Alphabetizes objects 18d9c85aa4 Fix a deprecation warning about threading.Thread 07022c7791 doc: Update a PTL guide 232684b440 Avoid n-cond startup abort for keystone failures c178d93606 Unify placement client singleton implementations c7b865c79b nova-live-migration tests not needed for Ironic 15769b883e Adapt websocketproxy tests for SimpleHTTPServer fix 95f96ed3aa enable blocked VDPA move operations 82cdfa23c7 Add reno for fixing bug 1941005 48a6a9cab2 libvirt: Consolidate create_cow_image and create_image e2cf3ae9ab imagebackend: Add disk_info_mapping as an optional attribute of Image 5c228e8d39 blockinfo: Add encryption details to the disk_info mappings when provided 6d9e8739d4 virt: Add block_device_info helper to find encrypted disks 0b0fa8ac31 Fix a deprecation warning about distutils 5710a8ac06 Add limitation to docs about bug 1983570 99dd3f75cd Rename whitelist in tests f55da0802b Rename exception.PciConfigInvalidWhitelist to PciConfigInvalidSpec 14e68ac6e9 Rename [pci]passthrough_whitelist to device_spec 57c253a609 Add compute restart capability for libvirt func tests ebae3c2081 Poison /sys access via various calls in test a93092e0d5 Update RequestSpec.pci_request for resize 6d602c6b73 Reproducer for bug 1983753 e76ec7af4d update default numa allocation strategy d57bb972a2 Imported Translations from Zanata bf654e3a4a Remove double mocking... again de830f87b0 Adds img_config_drive in nova users docs fe83c63b86 Remove workaround for SQLAlchemy < 1.4 db919aa15f For evacuation, ignore if task_state is not None d53d9eba22 block_device: Add encryption attributes to image and ephemeral disks 5df97016b4 block_device: Add DriverImageBlockDevice to block_device_info 794d2f98d9 scheduler: Add an ephemeral encryption pre filter a370d1b581 virt: Add ephemeral encryption flag 2f97ca2cdc compute: Update bdms with ephemeral encryption details when requested bf701eb4a0 BlockDeviceMapping: Add is_local property cdea73bd9c BlockDeviceMapping: Add encryption fields 065b324835 image_meta: Add ephemeral encryption properties 184f0074cc imagebackend: default by_name image_type to config correctly 535212eaad libvirt: Remove defunct comment d0bd8b8bee libvirt: Improve creating images INFO log 003f1d2b45 block_device_info: Add swap to inline 57ab45323c Update libvirt enlightenments for Windows 6069592bcf Fix mocking SafeConnectedTestCase deae814611 Remove the PowerVM driver c36782a96a hacking: force explicit import of python's mock f8cf050a13 Remove double mocking b351f0b848 [docs] Fix mention of custom scheduling after Wallaby 1495d802c6 Updated Suspend definition in server concepts doc 89ef050b8c Use unittest.mock instead of third party mock a755e5d9f2 api: Drop generating a keypair and add special chars to naming 00ed8a232b Add a workaround to skip hypervisor version check on LM 5904c7f993 add regression test case for bug 1978983 ff7d9d7b7e [trivial] Simplify dict get call by removing unused default 09239fc2ea Allow unshelve to a specific host (REST API part) a263fa46f8 Allow unshelve to a specific host (Compute API part) 2709e30956 Fix compatibility with jsonschema 4.x e1a925772b Remove unused requirement f08b71f3ab libvirt: Remove unnecessary TODO f708feee35 libvirt: Ignore LibvirtConfigObject kwargs 4fdc0807b4 Add a proper schema version to network_data.json f77a9fee5b libvirt: remove default cputune shares value 8133092907 Remove use of pkg_resources 786a09ad7a etc: Highlight absence of packages from config gen 9a7028f02c Test setting the nova job to centos-9-stream 467bbee758 Adds link in releasenotes for hw machine type bug 4fb2aa4682 zuul: Put Centos9 Stream job periodic-weekly and experimental cbf9b2b873 update nova-next and nova-ovs-hybrid-plug to disable linuxbridge a669f9150a Test attached volume extend actions in the nova-next job 7b9312ef8e Adds validation for hw machine type in host caps c4cd6ee461 Imported Translations from Zanata cd2c2f359b ignore deleted server groups in validation 84a84f7f2f add repoducer test for bug 1890244 7824471b79 Remove return from rpc cast 45c0a3884b zuul: Temporarly put Centos9 Stream job non-voting ecc90f2e55 Make test_wait_for_instance_event_* test time independent 099a6f63af Optimize numa_fit_instance_to_host 8f4b740ca5 Retry attachment delete API call for 504 Gateway Timeout 9af4c6115f Change TooOldComputeService upgrade check code to failure f551447804 Optimize _local_delete calls by compute unit tests 4d6cce1d10 docs: Correct path used for config on Hyper-V 2521810e55 Fix typos aa1e7a6933 Fix typos in help messages 3aa77a3999 Add missing condition a240cf8d09 Fix duplicates keys ab51a5dd25 Accept both 1 and Y as AMD SEV KVM kernel param value 267a40663c libvirt: Add a workaround to skip compareCPU() on destination 9e0dcb52ab neutron: Unbind remaining ports after PortNotFound 8534499b4a Fix race condition in _get_pci_passthrough_devices 512aab83c8 Revert "zuul: Skip block migration with attached volumes tests due to bug #1931702" 0c028aa9e6 trivial: fix deprecation warning in notification fixture 8fbaeba11f Fix extending non LUKSv1 encrypted volumes 7c87c2f5f7 Switch libvirt event timeout message to warning 9063e3a1fd Add Python 3.10 functional jobs e187e97253 Adapt bindep ubuntu-jammy b70cd298fc Add releasenote about dropping pythin 3.6|7 support a3a593ad55 Enable live_migration_events in nova-ovs-hybrid-plug 3af2ecc13f Allow claiming PCI PF if child VF is unavailable cd03bbc1c3 Record SRIOV PF MAC in the binding profile 1d4dbfd468 Log the exception returned from a cell during API.get() 4c339c10e3 Drop lower-constraints.txt and its testing 56055ede03 VMware: StableMoRefProxy for moref recovery 494e8d7db6 [CI] Install dependencies for docs target 9ee5d2c662 Simulate bug 1969496 284ea72e96 Remove unavailable but not reported PCI devices at startup c58376db75 Isolate PCI tracker unit tests aa1b0a7ccb Fix LM rollback w/o multi port bindings extension 5181bae923 Reproduce live migration rollback w/o multi port bindings error ee32934f34 Fix segment-aware scheduling permissions error 5f5551448d Move centos stream testing to centos-9-stream cf906cdcc2 Deprecate [api] use_forwarded_for 03fd208c56 VMware: Split out VMwareAPISession 78e3a6e610 db: Close connection on early return 8dafea25e3 enable locking test fixture 7c8b800867 Update python testing as per zed cycle teting runtime 08e8bdf271 VMware: Early fail spawn if memory is not multiple of 4. 2234b179b5 Store pf_mac_address and vf_num in extra_info 8142b9dc47 db: Resolve additional SAWarning warnings 612b83ee5d db: Don't rely on autocommit behavior b02166c91f db: Replace use of Column.copy() method 287ef8d689 db: Remove inplicit coercion of SELECTs 440fa6ab00 db: Replace use of Connection.connect() method 982e15980c db: Remove use of empty 'and_()' 0939b3c4d1 db: Replace use of strings in join, defer operations 523297bdfa db: Trivial rewrapping of warning filters f7a1be8ddd db: Narrow down deprecation warning filter abfd692285 Add nova-emulation to the experimental queue too 3fddfa9fc2 pre-commit: Sync hacking version, bump plugins b082d06cbc hacking: Prevent use of six ca8e4dad7f Sync rootwrap.conf from oslo.rootwrap 5e6b9a8698 Fix wrong attribute to find remote address 547ed98550 Imported Translations from Zanata 63ffba7496 Fix pre_live_migration rollback 01980cfb08 objects: Don't use generic 'Field' container 1c8122a25f Retry in CellDatabases fixture when global DB state changes 86ded7f65d objects: Remove 'NovaObjectDictCompat' from 'InstancePCIRequest' 028b3bca16 objects: Remove 'NovaObjectDictCompat' from 'Migration' 7beff288d6 doc: Remove useless contributor/api-2 doc 84c6d05ac3 Fix unit tests when they are run with OS_DEBUG=True 8d2776fb34 refactor: remove duplicated logic 2ddb8bf53f Adds regression test for bug LP#1944619 c3ad968c87 Fix the PCI device capability dict creation 16a463a68f Attempt to thin out nova-ceph-multistore 6ab6969550 Move FIPS jobs to experimental and periodic queue 0638d1eb44 Update contributor guide for Zed 3d20fd3fd1 Add Python3 zed unit tests d2cba990a6 Update master for stable/yoga 43f13acab5 Changes Emulation CI to weekly-periodic e3f36ff397 Add oslo.limit options to generated nova.conf 453c11e05d Follow up for nova-manage image property commands b2d28f8908 Fix eventlet.tpool import 9a31212a44 doc: Split up notifications document afb0f77484 Debug Nova APIs call failures 8d02119475 List auth plugin parameters for [keystone] section f831618b25 Catch an exception in power off procedure fbd62a5c16 Remove the code that never reach 4cf4af7ff4 tests: Add test for bug #1936278 2b3fe4771f manager: Reduce unnecessary calls 8107e5ced8 Update the file for IPv4-only or IPv6-only network Diffstat (except docs and test files) ------------------------------------- .gitreview | 1 + .pre-commit-config.yaml | 9 +- .zuul.yaml | 113 +- HACKING.rst | 5 + README.rst | 2 +- api-guide/source/server_concepts.rst | 12 +- api-ref/source/os-keypairs.inc | 22 +- api-ref/source/parameters.yaml | 53 +- api-ref/source/servers-action-shelve.inc | 94 +- api-ref/source/servers-actions.inc | 14 +- bindep.txt | 1 - devstack/nova-multi-cell-exclude-list.txt | 4 + .../images/images-details-get-resp.json | 198 ++- .../v2.92/keypairs-import-post-req.json | 8 + .../v2.92/keypairs-import-post-resp.json | 9 + .../{os-unshelve.json => os-unshelve-az.json} | 0 .../os-shelve/v2.91/os-unshelve-az-host.json | 6 + .../v2.91/os-unshelve-host-and-unpin-az.json | 6 + .../os-shelve/v2.91/os-unshelve-host.json | 5 + .../os-shelve/v2.91/os-unshelve-unpin-az.json | 5 + .../common_payloads/ImageMetaPropsPayload.json | 2 +- .../admin/configuration/hypervisor-hyper-v.rst | 4 +- .../admin/configuration/hypervisor-powervm.rst | 75 - etc/nova/api-paste.ini | 2 +- etc/nova/nova-config-generator.conf | 2 + etc/nova/rootwrap.conf | 6 + lower-constraints.txt | 166 -- mypy-files.txt | 1 + nova/api/openstack/api_version_request.py | 8 +- nova/api/openstack/auth.py | 2 +- nova/api/openstack/compute/keypairs.py | 10 +- .../openstack/compute/rest_api_version_history.rst | 27 + nova/api/openstack/compute/schemas/keypairs.py | 11 +- .../compute/schemas/server_external_events.py | 4 + nova/api/openstack/compute/schemas/shelve.py | 54 +- .../openstack/compute/server_external_events.py | 3 +- nova/api/openstack/compute/server_migrations.py | 2 +- nova/api/openstack/compute/servers.py | 3 + nova/api/openstack/compute/services.py | 7 +- nova/api/openstack/compute/shelve.py | 58 +- nova/api/openstack/wsgi.py | 6 + nova/api/validation/extra_specs/hw.py | 57 +- nova/api/validation/extra_specs/powervm.py | 271 ---- nova/api/validation/parameter_types.py | 14 +- nova/api/validation/validators.py | 23 + nova/block_device.py | 6 +- nova/cmd/manage.py | 16 +- nova/cmd/status.py | 75 +- nova/compute/api.py | 358 +++-- nova/compute/manager.py | 319 +++- nova/compute/pci_placement_translator.py | 597 ++++++++ nova/compute/resource_tracker.py | 79 +- nova/compute/rpcapi.py | 21 +- nova/conductor/api.py | 5 +- nova/conductor/manager.py | 47 +- nova/conductor/rpcapi.py | 17 +- nova/conductor/tasks/cross_cell_migrate.py | 2 +- nova/conductor/tasks/live_migrate.py | 5 +- nova/conductor/tasks/migrate.py | 4 +- nova/conf/__init__.py | 2 - nova/conf/api.py | 4 + nova/conf/compute.py | 31 +- nova/conf/hyperv.py | 2 +- nova/conf/keystone.py | 4 + nova/conf/libvirt.py | 4 +- nova/conf/neutron.py | 2 +- nova/conf/pci.py | 134 +- nova/conf/powervm.py | 66 - nova/conf/quota.py | 2 +- nova/conf/scheduler.py | 4 +- nova/conf/workarounds.py | 15 + nova/console/websocketproxy.py | 2 +- nova/context.py | 2 +- nova/db/main/api.py | 368 +++-- .../main/legacy_migrations/versions/402_train.py | 4 +- .../versions/8f2f1571d55b_initial_version.py | 4 +- .../ccb0fa1a2252_add_encryption_fields_to_.py | 59 + nova/db/main/models.py | 12 +- nova/exception.py | 85 +- nova/hacking/checks.py | 48 + nova/limit/placement.py | 6 +- nova/locale/cs/LC_MESSAGES/nova.po | 383 +---- nova/locale/de/LC_MESSAGES/nova.po | 457 +----- nova/locale/es/LC_MESSAGES/nova.po | 414 +---- nova/locale/fr/LC_MESSAGES/nova.po | 423 +---- nova/locale/it/LC_MESSAGES/nova.po | 415 +---- nova/locale/ja/LC_MESSAGES/nova.po | 415 +---- nova/locale/ko_KR/LC_MESSAGES/nova.po | 406 +---- nova/locale/pt_BR/LC_MESSAGES/nova.po | 409 +---- nova/locale/ru/LC_MESSAGES/nova.po | 405 +---- nova/locale/tr_TR/LC_MESSAGES/nova.po | 387 +---- nova/locale/zh_CN/LC_MESSAGES/nova.po | 476 +----- nova/locale/zh_TW/LC_MESSAGES/nova.po | 385 +---- nova/network/model.py | 16 +- nova/network/neutron.py | 150 +- nova/notifications/objects/image.py | 6 +- nova/objects/aggregate.py | 43 +- nova/objects/block_device.py | 52 +- nova/objects/cell_mapping.py | 12 +- nova/objects/external_event.py | 6 +- nova/objects/fields.py | 34 + nova/objects/flavor.py | 14 +- nova/objects/host_mapping.py | 19 +- nova/objects/image_meta.py | 26 +- nova/objects/instance.py | 41 + nova/objects/instance_group.py | 26 +- nova/objects/instance_info_cache.py | 4 +- nova/objects/instance_mapping.py | 24 +- nova/objects/instance_pci_requests.py | 14 +- nova/objects/migrate_data.py | 41 +- nova/objects/migration.py | 23 +- nova/objects/pci_device.py | 86 +- nova/objects/request_spec.py | 7 +- nova/objects/service.py | 16 +- nova/pci/devspec.py | 33 +- nova/pci/manager.py | 49 +- nova/pci/request.py | 5 +- nova/pci/stats.py | 31 +- nova/pci/whitelist.py | 8 +- nova/policies/admin_actions.py | 4 +- nova/policies/admin_password.py | 2 +- nova/policies/aggregates.py | 18 +- nova/policies/assisted_volume_snapshots.py | 4 +- nova/policies/attach_interfaces.py | 8 +- nova/policies/availability_zone.py | 4 +- nova/policies/baremetal_nodes.py | 4 +- nova/policies/base.py | 44 +- nova/policies/console_auth_tokens.py | 2 +- nova/policies/console_output.py | 2 +- nova/policies/create_backup.py | 2 +- nova/policies/deferred_delete.py | 4 +- nova/policies/evacuate.py | 2 +- nova/policies/extended_server_attributes.py | 2 +- nova/policies/extensions.py | 2 +- nova/policies/flavor_access.py | 6 +- nova/policies/flavor_extra_specs.py | 10 +- nova/policies/flavor_manage.py | 6 +- nova/policies/floating_ip_pools.py | 2 +- nova/policies/floating_ips.py | 12 +- nova/policies/hosts.py | 12 +- nova/policies/hypervisors.py | 14 +- nova/policies/instance_actions.py | 8 +- nova/policies/instance_usage_audit_log.py | 4 +- nova/policies/ips.py | 4 +- nova/policies/keypairs.py | 8 +- nova/policies/limits.py | 2 +- nova/policies/lock_server.py | 6 +- nova/policies/migrate_server.py | 4 +- nova/policies/migrations.py | 2 +- nova/policies/multinic.py | 4 +- nova/policies/networks.py | 4 +- nova/policies/pause_server.py | 4 +- nova/policies/quota_class_sets.py | 4 +- nova/policies/quota_sets.py | 16 +- nova/policies/remote_consoles.py | 2 +- nova/policies/rescue.py | 4 +- nova/policies/security_groups.py | 20 +- nova/policies/server_diagnostics.py | 2 +- nova/policies/server_external_events.py | 2 +- nova/policies/server_groups.py | 10 +- nova/policies/server_metadata.py | 12 +- nova/policies/server_password.py | 4 +- nova/policies/server_tags.py | 12 +- nova/policies/server_topology.py | 4 +- nova/policies/servers.py | 60 +- nova/policies/servers_migrations.py | 8 +- nova/policies/services.py | 6 +- nova/policies/shelve.py | 18 +- nova/policies/simple_tenant_usage.py | 4 +- nova/policies/suspend_server.py | 4 +- nova/policies/volumes.py | 20 +- nova/policies/volumes_attachments.py | 12 +- nova/quota.py | 7 +- nova/scheduler/client/report.py | 70 +- nova/scheduler/manager.py | 2 +- nova/scheduler/request_filter.py | 41 +- nova/scheduler/rpcapi.py | 12 +- nova/test.py | 22 +- .../images/images-details-get-resp.json.tpl | 118 ++ .../images/images-list-get-resp.json.tpl | 76 + .../v2.92/keypairs-import-post-req.json.tpl | 8 + .../v2.92/keypairs-import-post-resp.json.tpl | 9 + .../os-keypairs/v2.92/keypairs-post-req.json.tpl | 7 + .../os-shelve/v2.77/os-unshelve-az.json.tpl | 5 + .../os-shelve/v2.77/os-unshelve.json.tpl | 4 +- .../os-shelve.json.tpl} | 0 .../os-shelve/v2.91/os-unshelve-az-host.json.tpl | 6 + .../os-shelve/v2.91/os-unshelve-az.json.tpl | 5 + .../v2.91/os-unshelve-host-and-unpin-az.json.tpl | 6 + .../os-shelve/v2.91/os-unshelve-host.json.tpl | 5 + .../os-shelve/v2.91/os-unshelve-unpin-az.json.tpl | 5 + .../os-shelve/v2.91/os-unshelve.json.tpl | 2 +- .../functional/compute/test_live_migration.py | 3 +- .../functional/compute/test_migration_list.py | 6 +- .../functional/compute/test_resource_tracker.py | 12 +- .../libvirt/test_device_bus_migration.py | 8 +- .../functional/libvirt/test_numa_live_migration.py | 12 +- .../functional/libvirt/test_pci_in_placement.py | 1620 ++++++++++++++++++++ .../functional/libvirt/test_pci_sriov_servers.py | 1088 +++++++++++-- .../functional/libvirt/test_report_cpu_traits.py | 8 +- .../notification_sample_base.py | 2 +- .../functional/regressions/test_bug_1554631.py | 3 +- .../functional/regressions/test_bug_1595962.py | 2 +- .../functional/regressions/test_bug_1732947.py | 4 +- .../functional/regressions/test_bug_1781286.py | 33 +- .../functional/regressions/test_bug_1830747.py | 2 +- .../functional/regressions/test_bug_1831771.py | 2 +- .../functional/regressions/test_bug_1843090.py | 2 +- .../functional/regressions/test_bug_1843708.py | 6 + .../functional/regressions/test_bug_1845291.py | 2 +- .../functional/regressions/test_bug_1849165.py | 2 +- .../functional/regressions/test_bug_1853009.py | 2 +- .../functional/regressions/test_bug_1862633.py | 2 +- .../functional/regressions/test_bug_1879878.py | 3 +- .../functional/regressions/test_bug_1888395.py | 40 +- .../functional/regressions/test_bug_1889108.py | 2 +- .../functional/regressions/test_bug_1890244.py | 96 ++ .../functional/regressions/test_bug_1893284.py | 2 +- .../functional/regressions/test_bug_1896463.py | 8 - .../functional/regressions/test_bug_1899835.py | 2 +- .../functional/regressions/test_bug_1902925.py | 5 + .../functional/regressions/test_bug_1914777.py | 2 +- .../functional/regressions/test_bug_1928063.py | 6 +- .../functional/regressions/test_bug_1937084.py | 2 +- .../functional/regressions/test_bug_1937375.py | 2 +- .../functional/regressions/test_bug_1944619.py | 76 + .../functional/regressions/test_bug_1978983.py | 71 + .../functional/regressions/test_bug_1983753.py | 177 +++ .../functional/test_servers_resource_request.py | 6 +- .../openstack/compute/admin_only_action_common.py | 3 +- .../api/openstack/compute/test_admin_password.py | 4 +- .../unit/api/openstack/compute/test_aggregates.py | 3 +- .../openstack/compute/test_attach_interfaces.py | 3 +- .../openstack/compute/test_availability_zone.py | 2 +- .../api/openstack/compute/test_baremetal_nodes.py | 5 +- .../openstack/compute/test_console_auth_tokens.py | 2 +- .../api/openstack/compute/test_console_output.py | 2 +- .../api/openstack/compute/test_create_backup.py | 7 +- .../api/openstack/compute/test_deferred_delete.py | 3 +- .../unit/api/openstack/compute/test_disk_config.py | 2 +- .../unit/api/openstack/compute/test_evacuate.py | 3 +- .../api/openstack/compute/test_flavor_access.py | 2 +- .../api/openstack/compute/test_flavor_manage.py | 2 +- .../unit/api/openstack/compute/test_flavors.py | 2 +- .../openstack/compute/test_flavors_extra_specs.py | 3 +- .../openstack/compute/test_floating_ip_pools.py | 2 +- .../api/openstack/compute/test_floating_ips.py | 3 +- .../unit/api/openstack/compute/test_hypervisors.py | 396 +++-- .../api/openstack/compute/test_image_metadata.py | 2 +- .../unit/api/openstack/compute/test_images.py | 2 +- .../api/openstack/compute/test_instance_actions.py | 2 +- .../unit/api/openstack/compute/test_keypairs.py | 128 +- .../unit/api/openstack/compute/test_limits.py | 172 +-- .../unit/api/openstack/compute/test_lock_server.py | 4 +- .../api/openstack/compute/test_microversions.py | 3 +- .../api/openstack/compute/test_migrate_server.py | 6 +- .../unit/api/openstack/compute/test_migrations.py | 2 +- .../unit/api/openstack/compute/test_multinic.py | 3 +- .../unit/api/openstack/compute/test_networks.py | 2 +- .../api/openstack/compute/test_quota_classes.py | 4 +- .../unit/api/openstack/compute/test_quotas.py | 8 +- .../api/openstack/compute/test_remote_consoles.py | 5 +- .../unit/api/openstack/compute/test_rescue.py | 2 +- .../api/openstack/compute/test_security_groups.py | 3 +- .../api/openstack/compute/test_server_actions.py | 41 +- .../openstack/compute/test_server_diagnostics.py | 3 +- .../compute/test_server_external_events.py | 5 +- .../openstack/compute/test_server_group_quotas.py | 10 +- .../api/openstack/compute/test_server_groups.py | 3 +- .../api/openstack/compute/test_server_metadata.py | 3 +- .../openstack/compute/test_server_migrations.py | 2 +- .../api/openstack/compute/test_server_password.py | 2 +- .../openstack/compute/test_server_reset_state.py | 3 +- .../openstack/compute/test_server_start_stop.py | 3 +- .../unit/api/openstack/compute/test_server_tags.py | 3 +- .../api/openstack/compute/test_server_topology.py | 3 +- .../unit/api/openstack/compute/test_servers.py | 41 +- .../unit/api/openstack/compute/test_services.py | 2 +- .../unit/api/openstack/compute/test_shelve.py | 258 +++- .../openstack/compute/test_simple_tenant_usage.py | 2 +- .../unit/api/openstack/compute/test_snapshots.py | 3 +- .../api/openstack/compute/test_suspend_server.py | 3 +- .../api/openstack/compute/test_tenant_networks.py | 2 +- .../unit/api/openstack/compute/test_volumes.py | 12 +- .../api/validation/extra_specs/test_validators.py | 11 +- .../unit/compute/monitors/cpu/test_virt_driver.py | 2 +- .../v1/validation_error_test_data.yaml | 4 +- .../unit/compute/test_pci_placement_translator.py | 222 +++ .../conductor/tasks/test_cross_cell_migrate.py | 2 +- .../unit/conductor/tasks/test_live_migrate.py | 33 +- .../unit/notifications/objects/test_flavor.py | 2 +- .../unit/notifications/objects/test_instance.py | 3 +- .../notifications/objects/test_notification.py | 4 +- .../unit/notifications/objects/test_service.py | 2 +- .../unit/objects/test_instance_device_metadata.py | 3 +- .../unit/objects/test_instance_pci_requests.py | 20 +- .../policies/test_assisted_volume_snapshots.py | 3 +- .../unit/policies/test_console_auth_tokens.py | 2 +- .../unit/policies/test_instance_usage_audit_log.py | 5 +- .../unit/policies/test_server_external_events.py | 3 +- .../unit/policies/test_simple_tenant_usage.py | 21 +- .../scheduler/filters/test_affinity_filters.py | 3 +- ...aggregate_image_properties_isolation_filters.py | 2 +- .../test_aggregate_instance_extra_specs_filters.py | 2 +- ...est_aggregate_multitenancy_isolation_filters.py | 2 +- .../filters/test_availability_zone_filters.py | 2 +- .../filters/test_compute_capabilities_filters.py | 2 +- .../unit/scheduler/filters/test_compute_filters.py | 2 +- .../unit/scheduler/filters/test_io_ops_filters.py | 2 +- .../filters/test_num_instances_filters.py | 2 +- .../filters/test_pci_passthrough_filters.py | 2 +- .../unit/scheduler/filters/test_type_filters.py | 2 +- .../scheduler/weights/test_weights_affinity.py | 2 +- .../unit/scheduler/weights/test_weights_metrics.py | 2 +- .../unit/scheduler/weights/test_weights_pci.py | 2 +- .../unit/servicegroup/test_db_servicegroup.py | 3 +- .../unit/servicegroup/test_mc_servicegroup.py | 2 +- .../unit/virt/hyperv/test_block_device_manager.py | 2 +- .../unit/virt/hyperv/test_livemigrationops.py | 3 +- .../unit/virt/hyperv/test_serialconsolehandler.py | 2 +- .../unit/virt/hyperv/test_serialconsoleops.py | 2 +- .../unit/virt/libvirt/storage/test_dmcrypt.py | 3 +- .../unit/virt/libvirt/test_machine_type_utils.py | 3 +- .../unit/virt/libvirt/volume/test_fibrechannel.py | 2 +- .../unit/virt/libvirt/volume/test_remotefs.py | 3 +- .../unit/virt/libvirt/volume/test_storpool.py | 2 +- .../unit/virt/libvirt/volume/test_vzstorage.py | 2 +- nova/utils.py | 3 +- nova/virt/block_device.py | 89 +- nova/virt/driver.py | 54 +- nova/virt/fake.py | 59 +- nova/virt/hardware.py | 146 ++ nova/virt/hyperv/serialproxy.py | 4 +- nova/virt/interfaces.template | 6 +- nova/virt/ironic/driver.py | 27 +- nova/virt/libvirt/blockinfo.py | 85 +- nova/virt/libvirt/config.py | 176 ++- nova/virt/libvirt/driver.py | 516 +++++-- nova/virt/libvirt/guest.py | 21 +- nova/virt/libvirt/host.py | 141 +- nova/virt/libvirt/imagebackend.py | 96 +- nova/virt/libvirt/migration.py | 13 + nova/virt/libvirt/utils.py | 70 +- nova/virt/libvirt/vif.py | 2 +- nova/virt/powervm/__init__.py | 17 - nova/virt/powervm/disk/__init__.py | 0 nova/virt/powervm/disk/driver.py | 268 ---- nova/virt/powervm/disk/localdisk.py | 211 --- nova/virt/powervm/disk/ssp.py | 258 ---- nova/virt/powervm/driver.py | 709 --------- nova/virt/powervm/host.py | 66 - nova/virt/powervm/image.py | 62 - nova/virt/powervm/media.py | 237 --- nova/virt/powervm/mgmt.py | 175 --- nova/virt/powervm/tasks/__init__.py | 0 nova/virt/powervm/tasks/base.py | 38 - nova/virt/powervm/tasks/image.py | 81 - nova/virt/powervm/tasks/network.py | 259 ---- nova/virt/powervm/tasks/storage.py | 429 ------ nova/virt/powervm/tasks/vm.py | 154 -- nova/virt/powervm/vif.py | 373 ----- nova/virt/powervm/vm.py | 543 ------- nova/virt/powervm/volume/__init__.py | 28 - nova/virt/powervm/volume/fcvscsi.py | 468 ------ nova/virt/vmwareapi/driver.py | 56 +- nova/virt/vmwareapi/session.py | 157 ++ nova/virt/vmwareapi/vm_util.py | 47 +- nova/virt/vmwareapi/vmops.py | 6 + nova/virt/vmwareapi/volumeops.py | 31 +- nova/virt/zvm/hypervisor.py | 2 +- nova/volume/cinder.py | 18 +- .../notes/add-volume-rebuild-b973562ea8f49347.yaml | 10 + ...eypair-generation-removal-3004a8643dcd1fd9.yaml | 10 + ...ice-tracking-in-placement-75ee1d20a57662f2.yaml | 9 + .../bp-unshelve_to_host-c9047d518eb67747.yaml | 10 + .../notes/bug-1942329-22b08fa4b322881d.yaml | 9 + .../bug-1944619-fix-live-migration-rollback.yaml | 10 + .../notes/bug-1967157-extend-encrypted.yaml | 9 + ...nt-scheduling-permissions-92ba907b10a9eb1c.yaml | 7 + ...ed-numa-fitting-algorithm-5d5b922b0bdbf818.yaml | 9 + .../notes/bug-1978444-db46df5f3d5ea19e.yaml | 7 + ...-1981813-vnic-type-change-9f3e16fae885b57f.yaml | 9 + ...ec-pci_request-for-resize-a3c6b0a979db723f.yaml | 6 + ...986838-pci-double-booking-1da71ea4399db65a.yaml | 8 + ...t-numa-strategy-to-spread-18668c6d80154042.yaml | 12 + ...ugh_whitelist-config-name-0530d502c960d753.yaml | 6 + ...precate-use_forwarded_for-f7b24eaf130782b9.yaml | 12 + .../drop-python-3-6-and-3-7-cd3bf1e945f05fd3.yaml | 5 + ...ation-with-deleted-groups-4f685fd1d6b84192.yaml | 13 + .../notes/guest-iommu-device-4795c3a060aca424.yaml | 21 + ...task-state-for-evacuation-e000f141d0153638.yaml | 11 + .../new_locked_memory_option-b68a031779366828.yaml | 13 + .../project-reader-rbac-8a1d11b3b2e776fd.yaml | 36 + ...ult-cputune-shares-values-85d5ddf4b8e24eaa.yaml | 15 + .../notes/remove-powervm-6132cc10255ca205.yaml | 6 + .../skip-compare-cpu-on-dest-6ae419ddd61fd0f8.yaml | 24 + ...visor-version-check-on-lm-a87f2dcb4f8bf0f2.yaml | 13 + ...oo-old-compute-check-code-7dbcde45cfd23394.yaml | 6 + ...nlightenments-for-windows-23abea98cc1db667.yaml | 21 + .../validate-machine-type-0d5f3dbd1e2ace31.yaml | 10 + .../notes/vdpa-move-ops-a7b3799807807a92.yaml | 11 + ...d-detach-and-live-migrate-e591e6a03a0c834d.yaml | 25 + ...-multiple-of-4-validation-9740bf60d59ce5e2.yaml | 7 + .../notes/zed-prelude-a3cddb8b2ac8e293.yaml | 46 + releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 398 ----- .../source/locale/fr/LC_MESSAGES/releasenotes.po | 126 -- releasenotes/source/yoga.rst | 6 + requirements.txt | 13 +- setup.cfg | 7 +- test-requirements.txt | 1 - tools/test-setup.sh | 8 +- tox.ini | 129 +- 786 files changed, 19528 insertions(+), 20923 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 1a83a0813a..c38ade020d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -0,0 +1,4 @@ +# Requirements lower bounds listed here are our best effort to keep them up to +# date but we do not test them so no guarantee of having them all correct. If +# you find any incorrect lower bounds, let us know or propose a fix. + @@ -30 +34 @@ oslo.cache>=1.26.0 # Apache-2.0 -oslo.concurrency>=4.5.0 # Apache-2.0 +oslo.concurrency>=5.0.1 # Apache-2.0 @@ -40 +44 @@ oslo.db>=10.0.0 # Apache-2.0 -oslo.rootwrap>=5.8.0 # Apache-2.0 +oslo.rootwrap>=5.15.0 # Apache-2.0 @@ -52 +56 @@ os-resource-classes>=1.1.0 # Apache-2.0 -os-traits>=2.7.0 # Apache-2.0 +os-traits>=2.9.0 # Apache-2.0 @@ -60 +63,0 @@ os-service-types>=1.7.0 # Apache-2.0 -taskflow>=3.8.0 # Apache-2.0 @@ -64 +66,0 @@ openstacksdk>=0.35.0 # Apache-2.0 -dataclasses>=0.7;python_version=='3.6' # Apache 2.0 License @@ -65,0 +68 @@ PyYAML>=5.1 # MIT +packaging>=21.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 3194e9dd66..bbf04f5a1a 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -11 +10,0 @@ fixtures>=3.0.0 # Apache-2.0/BSD -mock>=3.0.0 # BSD