We are chuffed to announce the release of: nova 30.0.0 This release is part of the dalmatian 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 29.0.1..30.0.0 ------------------------------ 035b8404fc Fix regression with live migration on shared storage 2a870323c3 allow upgrade of pre-victoria InstanceNUMACells 1eb45e768a Add Dalmatian prelude section 521db4a435 repoduce post liberty pre vicoria instance numa db issue 8de15e9a27 only safety check bootable files created from glance e310049eab Add functional repoducer for ephemeral disks f8b2988f67 docs: update libvirt support matrix for C and D 2a1fad4145 nova-manage: modify image properties in request_spec 0d542f464b Add service version for Dalmatian 6535386dfa Update compute rpc alias for dalmatian 31accd37c8 doc: mark the maximum microversion for 2024.2 Dalmatian 0809f75d79 Skip snapshot test when missing qemu-img 329ff5e1a8 [ironic] Followup fixes around flavor ids 305a71e5f9 Ignore support-matrix.css 93b90d2b6a [ironic] Factor out metadata and send to ironic aca63b66e5 Test live migration between hosts with differnet cpu_shared_sets 804bc98759 update nova-next to use ubuntu 24.04 5fa069c29a Delete ./doc/source/_static/support-matrix.css file 8464abe56c add pyproject.toml to support pip 23.1 d854e7cc16 Use format_inspector from oslo e06890d101 libvirt: Add config option to require secure SPICE. cd05be9738 Reproducer test for image property hw_architecture 3169e7cebd libvirt: Launch instances with stateless firmware 065bf99fc7 Fix deepcopy usage for BlockDeviceMapping in get_root_info 5890c257be Add hw_firmware_stateless image property b475f0f99b Report availability of stateless firmware support 87ee88f10a [libvirt]log XML if nova fails to parse it 79d1f06094 libvirt: call get_capabilities() with all CPUs online f8b98390dc Fix PCI passthrough cleanup on reschedule c69a9eb87f Skip new image format tests 4678bcbb06 hardware: Correct log 068dbe0779 Deprecate AMI image formats a2d77845ab Functional test test_boot_reschedule_with_proper_pci_device_count c8674a88b6 libvirt: Report available TPM models 751c2e8b8b Fix s/addtional/additional/ typo f63029b461 libvirt: Remove node device XML validate flags c79a73bd42 Remove default override for RBAC config options 510cc2404e libvirt: Detect vtpm support by libvirt 9a11bb2523 libvirt: Ensure swtpm_ioctl is available for vTPM support d5a631ba77 Remove AMI snapshot format special case 8b4c522f66 Change force_format strategy to catch mismatches a3202f7bf9 Fix test_vmdk_bad_descriptor_mem_limit and test_vmdk_bad_descriptor_mem_limit_stream_optimized 2db06b58b1 api: Fix typo f57176dd29 Correct info about volume-backed server rebuild 9a04ed79a3 conf: Clarify '[api] response_validation help' text 757c333c0e cpu: Only check governor type on online cores e2697de8e4 [tools] Backport validator: handle unmaintained b8f3975d36 [tools] Ignore bot generated patches c6d8c6972d Stabilize iso format unit tests ee3ec9b8f2 [ironic] Ensure we test iterators when needed cc2514d02e fix qemu-img version dependent tests b1cc39848e Add iso file format inspector b5a1d3b4b2 Reproduce iso regression with deep format inspection 8558f59630 Fix port group network metadata generation 838daa3cad port format inspector tests from glance f254729a56 scheduler: fix _get_sharing_providers to support unlimited aggr 08be7b2a0d Fix vmdk_allowed_types checking b1b88bf001 Additional qemu safety checking on base images 9cdce71594 Check images with format_inspector for safety ec9c55cbbc Reject qcow files with data-file attributes c0ff2386ed Fix disk_formats in ceph job tempest config 64ac67fd19 api: Correct bug in flavors schema 438c405394 pre-commit: Bump autopep8 version and update repo be029783dd api: Add response body validation helper 1a93703623 conf: Add '[api] response_validation' option 0021b840a2 tests: Ensure all APIs have a request query schema 41b436bff7 api: Add remaining missing query parameter schema ff040ada4f api: Don't do version check if nothing required b1824c5c97 api: Add 'removed' decorator 9b77bae8a3 [CI] Replace deprecated regex 7491417323 api: Migrate to JSON Schema Draft 2020-12 c382f036c3 tests: Ensure API schemas are valid 7e78623ac5 api: Fix bugs in schemas 917c4f0721 tests: Ensure all APIs have a request body schema f86cd38dfe api: Add remaining missing request body schemas 847608e75a api: Add request body schemas for SG APIs 88b661b078 Handle neutron-client conflict 44c1b48b31 retry write_sys call on device busy 3811c7f648 tweak emulation job to avoid OOM errors c7e49dfa16 docs: Follow up for persistent mdevs ac8729ac87 [doc] Improve description for nova-manage db purge ee581a5c9d add functional repoducer for bug 2065927 7ff24958ee fix py312 tox definitions eed3e2b47f Stop using split UEC image (mostly) 84b0a481fe Enable OCaaS for several nova jobs d45379c6b4 docs: Add more information about unified limits bfd3525863 Fix formatting issues in extra-specs docs 50b180023f Make python 3.12 unit and functional voting 3f0879ccc3 Fix hacking test with syntax error 6ee938fd22 Fix notification object hashes for python 3.12 acbe3e28e5 do not use str(url) to stringify a URL for subsequent use a4e72f71fc Upload glance image with --file in ceph job 3c0eadae0b Reject AZ changes during aggregate add / remove host 32546d9c1b Enable virtio-scsi in nova-next 2f0c340d39 Fix device_type=lun with boot_index 575ff86a4f Avoid setting serial on raw LUN devices 0e766885f6 [ironic] Fix rebooting instance b4ff81c329 Remove old excludes fa678870b2 reno: Update master for unmaintained/zed 25c13220c6 Note the deleyad address view 3cd26b0a08 scheduler: AggregateMultitenancyIsolation to support unlimited tenant 198805c7c5 Do not close returned image-chunk iterator & get_verifier early 43dadaeb90 Fix: migration configuration with cpu_shared_set (libvirt part) 2c3f4f2da5 Fix: migration configuration with cpu_shared_set (object part) f3eb76e57b Validate flavor image min ram when resize volume-backed instance b434b42761 Regression test for bug 2007968 dcc32981dd ignore sphinx-lint series in git blame 33a56781f4 fix sphinx-lint errors in docs and add ci 8b70e29487 Remove SQLAlchemy tips jobs 233fe1865f api: Keep track of action controllers e504b76508 api: Remove FlavorManageController cabb6999a3 api: Add missing Controller inheritance 33ba0f2935 Update contributor guide for 2024.2 Dalmatian 74befb68a7 libvirt: Create persistent mdevs 2a83043bcb Update min support for Dalmatian f14c16af82 Make overcommit check for pinned instance pagesize aware 8f219fce3f Update master for stable/2024.1 1c02c0da17 Fix nova-manage image_property show unexpected keyword 37b5ed6450 reno: Update master for unmaintained/xena e0107e286c reno: Update master for unmaintained/wallaby fda1715744 reno: Update master for unmaintained/victoria 0246a5d66a Add a functest for verifying multiple VGPU allocations a1a07e0d2d Refactor vf profile for PCI device 714894a7ff Server Rescue leads to Server ERROR state if original image is deleted 5b505dede9 libvirt: Ensure both swtpm and swtpm_setup exist for vTPM support aa3e8fef7b Correctly reset instance task state in rebooting hard 131c6e0d20 tox: Drop envdir 5da11e4231 Fix tipo e6f8bf5ff5 hardware: Fix image_meta.id within get_mem_encryption_constraint 406d590a36 Always delete NVRAM files when deleting instances 1c20647a14 doc: Fix markup syntax and typo 1a520f8e5d Fix wrong nova-manage command in upgrade check a4a2b11fd1 Cleanup setup.py 18163761d0 Fix guard for NVMeOF volumes 489297d742 Add new nova.wsgi module 4e182a664e Remove nova.wsgi module 22631727b9 Update [scheduler] limit_tenants_to_placement_aggregate config help Diffstat (except docs and test files) ------------------------------------- .git-blame-ignore-revs | 6 +- .gitignore | 1 + .pre-commit-config.yaml | 11 +- .zuul.yaml | 289 ++++-------- api-ref/source/os-aggregates.inc | 6 + api-ref/source/parameters.yaml | 2 + bindep.txt | 2 + devstack/lib/mdev_samples | 6 +- .../common_payloads/ImageMetaPropsPayload.json | 2 +- .../instance-create-error.json | 4 +- .../admin/configuration/hypervisor-vmware.rst | 2 +- .../reference/libvirt-distro-support-matrix.rst | 12 + nova/api/openstack/api_version_request.py | 4 +- nova/api/openstack/common.py | 2 +- nova/api/openstack/compute/admin_actions.py | 13 +- nova/api/openstack/compute/agents.py | 15 + nova/api/openstack/compute/aggregates.py | 6 +- nova/api/openstack/compute/attach_interfaces.py | 2 + nova/api/openstack/compute/availability_zone.py | 4 + nova/api/openstack/compute/baremetal_nodes.py | 9 +- nova/api/openstack/compute/cells.py | 26 ++ nova/api/openstack/compute/certificates.py | 13 + nova/api/openstack/compute/cloudpipe.py | 19 +- nova/api/openstack/compute/console_auth_tokens.py | 4 + nova/api/openstack/compute/consoles.py | 15 + nova/api/openstack/compute/deferred_delete.py | 4 + nova/api/openstack/compute/extension_info.py | 6 +- nova/api/openstack/compute/fixed_ips.py | 15 + nova/api/openstack/compute/flavor_access.py | 8 +- nova/api/openstack/compute/flavor_manage.py | 127 ----- nova/api/openstack/compute/flavors.py | 97 ++++ nova/api/openstack/compute/flavors_extraspecs.py | 8 +- nova/api/openstack/compute/floating_ip_dns.py | 23 +- nova/api/openstack/compute/floating_ip_pools.py | 3 + nova/api/openstack/compute/floating_ips.py | 9 +- nova/api/openstack/compute/floating_ips_bulk.py | 17 + nova/api/openstack/compute/fping.py | 13 + nova/api/openstack/compute/hosts.py | 4 + nova/api/openstack/compute/hypervisors.py | 23 +- nova/api/openstack/compute/image_metadata.py | 2 + nova/api/openstack/compute/images.py | 5 + nova/api/openstack/compute/instance_actions.py | 6 +- .../openstack/compute/instance_usage_audit_log.py | 5 +- nova/api/openstack/compute/ips.py | 4 + nova/api/openstack/compute/keypairs.py | 2 +- nova/api/openstack/compute/lock_server.py | 6 +- nova/api/openstack/compute/networks.py | 20 + nova/api/openstack/compute/networks_associate.py | 16 + nova/api/openstack/compute/pause_server.py | 4 + nova/api/openstack/compute/quota_classes.py | 3 + nova/api/openstack/compute/quota_sets.py | 37 +- nova/api/openstack/compute/remote_consoles.py | 7 + nova/api/openstack/compute/rescue.py | 1 + .../openstack/compute/rest_api_version_history.rst | 4 +- nova/api/openstack/compute/routes.py | 9 +- nova/api/openstack/compute/schemas/addresses.py | 25 + .../{reset_server_state.py => admin_actions.py} | 14 + nova/api/openstack/compute/schemas/agents.py | 19 + nova/api/openstack/compute/schemas/aggregates.py | 19 +- .../openstack/compute/schemas/attach_interfaces.py | 14 + .../openstack/compute/schemas/availability_zone.py | 22 + .../openstack/compute/schemas/baremetal_nodes.py | 21 + nova/api/openstack/compute/schemas/cells.py | 24 + nova/api/openstack/compute/schemas/certificates.py | 18 + nova/api/openstack/compute/schemas/cloudpipe.py | 19 + .../compute/schemas/console_auth_tokens.py | 18 + nova/api/openstack/compute/schemas/consoles.py | 19 + .../openstack/compute/schemas/deferred_delete.py | 31 ++ .../openstack/compute/schemas/extension_info.py | 25 + nova/api/openstack/compute/schemas/fixed_ips.py | 19 + .../api/openstack/compute/schemas/flavor_access.py | 7 + .../api/openstack/compute/schemas/flavor_manage.py | 102 ---- nova/api/openstack/compute/schemas/flavors.py | 96 ++++ .../compute/schemas/flavors_extraspecs.py | 14 + .../openstack/compute/schemas/floating_ip_dns.py | 19 + .../openstack/compute/schemas/floating_ip_pools.py | 18 + nova/api/openstack/compute/schemas/floating_ips.py | 13 + .../openstack/compute/schemas/floating_ips_bulk.py | 20 + nova/api/openstack/compute/schemas/fping.py | 17 + nova/api/openstack/compute/schemas/hosts.py | 17 +- nova/api/openstack/compute/schemas/hypervisors.py | 25 +- .../openstack/compute/schemas/image_metadata.py | 6 + nova/api/openstack/compute/schemas/images.py | 52 +++ .../openstack/compute/schemas/instance_actions.py | 18 +- .../compute/schemas/instance_usage_audit_log.py | 23 + nova/api/openstack/compute/schemas/ips.py | 17 + nova/api/openstack/compute/schemas/lock_server.py | 21 +- nova/api/openstack/compute/schemas/networks.py | 21 + .../compute/schemas/networks_associate.py | 18 + nova/api/openstack/compute/schemas/pause_server.py | 31 ++ .../api/openstack/compute/schemas/quota_classes.py | 9 +- nova/api/openstack/compute/schemas/quota_sets.py | 15 +- .../openstack/compute/schemas/remote_consoles.py | 4 + nova/api/openstack/compute/schemas/rescue.py | 10 + .../schemas/security_group_default_rules.py | 19 + .../openstack/compute/schemas/security_groups.py | 101 ++++ .../compute/schemas/server_diagnostics.py | 18 + .../api/openstack/compute/schemas/server_groups.py | 18 +- .../openstack/compute/schemas/server_metadata.py | 14 + .../openstack/compute/schemas/server_migrations.py | 15 +- .../openstack/compute/schemas/server_password.py | 18 + nova/api/openstack/compute/schemas/server_tags.py | 16 +- .../openstack/compute/schemas/server_topology.py | 18 + nova/api/openstack/compute/schemas/servers.py | 59 ++- nova/api/openstack/compute/schemas/shelve.py | 29 ++ .../openstack/compute/schemas/suspend_server.py | 31 ++ .../openstack/compute/schemas/tenant_networks.py | 19 + nova/api/openstack/compute/schemas/versions.py | 25 + .../compute/schemas/virtual_interfaces.py | 16 + .../openstack/compute/schemas/volume_attachment.py | 18 + nova/api/openstack/compute/schemas/volumes.py | 14 + .../compute/security_group_default_rules.py | 16 + nova/api/openstack/compute/security_groups.py | 53 +-- nova/api/openstack/compute/server_diagnostics.py | 3 + nova/api/openstack/compute/server_groups.py | 5 +- nova/api/openstack/compute/server_metadata.py | 2 + nova/api/openstack/compute/server_migrations.py | 2 + nova/api/openstack/compute/server_password.py | 3 + nova/api/openstack/compute/server_tags.py | 2 + nova/api/openstack/compute/server_topology.py | 3 + nova/api/openstack/compute/servers.py | 15 +- nova/api/openstack/compute/shelve.py | 13 +- nova/api/openstack/compute/suspend_server.py | 4 + nova/api/openstack/compute/tenant_networks.py | 16 +- nova/api/openstack/compute/versions.py | 5 + nova/api/openstack/compute/versionsV21.py | 4 + nova/api/openstack/compute/virtual_interfaces.py | 11 + nova/api/openstack/compute/volumes.py | 12 +- nova/api/openstack/wsgi.py | 22 +- nova/api/validation/__init__.py | 111 ++++- nova/api/validation/extra_specs/hw.py | 8 +- nova/api/validation/extra_specs/quota.py | 4 +- nova/api/validation/validators.py | 4 +- nova/cmd/manage.py | 18 +- nova/cmd/status.py | 4 +- nova/compute/api.py | 104 +++++ nova/compute/claims.py | 3 +- nova/compute/manager.py | 15 +- nova/compute/rpcapi.py | 1 + nova/conf/api.py | 35 +- nova/conf/compute.py | 14 + nova/conf/scheduler.py | 12 +- nova/conf/spice.py | 17 + nova/conf/workarounds.py | 10 + nova/db/migration.py | 2 +- nova/exception.py | 10 + nova/filesystem.py | 55 ++- nova/image/glance.py | 81 ++-- nova/network/neutron.py | 13 +- nova/network/security_group_api.py | 15 +- nova/notifications/objects/image.py | 3 +- nova/objects/image_meta.py | 8 +- nova/objects/instance_numa.py | 21 +- nova/objects/migrate_data.py | 6 +- nova/objects/service.py | 3 +- nova/pci/manager.py | 4 +- nova/policy.py | 8 +- nova/scheduler/client/report.py | 52 ++- .../filters/aggregate_multitenancy_isolation.py | 18 +- nova/scheduler/utils.py | 27 +- nova/service.py | 213 ++++++++- .../functional/libvirt/test_live_migration.py | 17 +- .../functional/libvirt/test_pci_sriov_servers.py | 62 +++ .../functional/libvirt/test_rescue_deleted_base.py | 182 ++++++++ .../functional/libvirt/test_stateless_firmware.py | 298 ++++++++++++ .../functional/regressions/test_bug_1951656.py | 26 +- .../functional/regressions/test_bug_2007968.py | 67 +++ .../functional/regressions/test_bug_2062425.py | 52 +++ .../functional/regressions/test_bug_2079850.py | 95 ++++ .../openstack/compute/admin_only_action_common.py | 3 +- .../api/openstack/compute/test_admin_actions.py | 11 +- .../api/openstack/compute/test_baremetal_nodes.py | 6 +- .../api/openstack/compute/test_certificates.py | 4 +- .../api/openstack/compute/test_deferred_delete.py | 121 ++--- .../api/openstack/compute/test_flavor_access.py | 27 +- .../api/openstack/compute/test_flavor_manage.py | 40 +- .../unit/api/openstack/compute/test_lock_server.py | 4 +- .../api/openstack/compute/test_pause_server.py | 31 +- .../unit/api/openstack/compute/test_schemas.py | 146 ++++++ .../api/openstack/compute/test_security_groups.py | 299 ++++++------ .../api/openstack/compute/test_server_actions.py | 4 +- .../openstack/compute/test_server_start_stop.py | 40 +- .../unit/api/openstack/compute/test_servers.py | 40 +- .../unit/api/openstack/compute/test_shelve.py | 8 +- .../api/openstack/compute/test_suspend_server.py | 31 +- .../notifications/objects/test_notification.py | 80 ++-- ...est_aggregate_multitenancy_isolation_filters.py | 27 ++ nova/virt/block_device.py | 15 +- nova/virt/driver.py | 105 ++++- nova/virt/fake.py | 1 + nova/virt/hardware.py | 92 +++- nova/virt/images.py | 88 +++- nova/virt/ironic/driver.py | 31 +- nova/virt/ironic/patcher.py | 18 +- nova/virt/libvirt/blockinfo.py | 11 +- nova/virt/libvirt/config.py | 87 +++- nova/virt/libvirt/cpu/api.py | 18 +- nova/virt/libvirt/cpu/core.py | 12 +- nova/virt/libvirt/driver.py | 401 +++++++++++----- nova/virt/libvirt/guest.py | 5 +- nova/virt/libvirt/host.py | 106 ++++- nova/virt/libvirt/imagebackend.py | 52 ++- nova/virt/libvirt/migration.py | 47 ++ nova/virt/libvirt/utils.py | 40 +- nova/virt/vmwareapi/driver.py | 1 + nova/virt/zvm/driver.py | 1 + nova/wsgi.py | 225 --------- nova/wsgi/__init__.py | 0 nova/wsgi/metadata.py | 24 + nova/wsgi/osapi_compute.py | 24 + playbooks/ceph/glance-setup.yaml | 2 +- playbooks/nova-next/pre.yaml | 18 + pyproject.toml | 3 + .../add-nova-wsgi-module-3cc250a78fef7365.yaml | 22 + .../notes/api-validation-8ad561407b52175f.yaml | 6 + .../notes/bug-2052761-02a1f203c67f7124.yaml | 6 + .../notes/bug-2080436-568b03b5b5ba5760.yaml | 8 + .../notes/dalmatian-prelude-35a774ecc9e56004.yaml | 42 ++ .../deprecate-ami-images-feb10b7d0503fed5.yaml | 8 + ...tance-numa-object-upgrade-afa5bb96149ca2f5.yaml | 16 + ...ibvirt-stateless-firmware-1f1758c4df7c2d12.yaml | 8 + ...mage-property-bug-2078999-c493fc259d316c24.yaml | 8 + .../notes/nvmeof-guard-0f99effdd03983b6.yaml | 6 + .../notes/persistent-mdevs-2a69e44baae9d5ca.yaml | 12 + ...e-during-aggregate-update-64d319d0717ed704.yaml | 12 + ...lter-tenant-id-limitation-7aae698b02ec3bc2.yaml | 12 + ...e-with-deleted-base-image-5143f1c1c914b8fe.yaml | 10 + ...ers-max-uuids-per-request-f05da20c697e0922.yaml | 7 + .../spice-direct-consoles-4bee40633633c971.yaml | 8 + releasenotes/source/2024.1.rst | 6 + releasenotes/source/index.rst | 1 + releasenotes/source/victoria.rst | 2 +- releasenotes/source/wallaby.rst | 2 +- releasenotes/source/xena.rst | 2 +- releasenotes/source/zed.rst | 2 +- requirements.txt | 10 +- setup.py | 9 - test-requirements.txt | 2 +- tools/check-cherry-picks.sh | 11 +- tox.ini | 25 +- 338 files changed, 8593 insertions(+), 2709 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 93c845533c..ba5c4dca53 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25 +25 @@ jsonschema>=4.0.0 # MIT -python-cinderclient!=4.0.0,>=3.3.0 # Apache-2.0 +python-cinderclient>=4.0.1 # Apache-2.0 @@ -41 +41 @@ oslo.upgradecheck>=1.3.0 -oslo.utils>=4.12.1 # Apache-2.0 +oslo.utils>=7.3.0 # Apache-2.0 @@ -45 +45 @@ oslo.messaging>=14.1.0 # Apache-2.0 -oslo.policy>=3.11.0 # Apache-2.0 +oslo.policy>=4.4.0 # Apache-2.0 @@ -55 +55 @@ os-resource-classes>=1.1.0 # Apache-2.0 -os-traits>=3.0.0 # Apache-2.0 +os-traits>=3.1.0 # Apache-2.0 @@ -61 +61 @@ cursive>=0.2.1 # Apache-2.0 -retrying>=1.3.3,!=1.3.0 # Apache-2.0 +retrying>=1.3.3 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 04dcc056ee..ae5d8c8a45 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2 +2 @@ hacking==6.1.0 # Apache-2.0 -coverage!=4.4,>=4.0 # Apache-2.0 +coverage>=4.4.1 # Apache-2.0