We are happy to announce the release of: horizon 25.6.0 This release is part of the gazpacho release series. The source is available from: https://opendev.org/openstack/horizon Download the package from: https://tarballs.openstack.org/horizon/ Please report issues through: https://bugs.launchpad.net/horizon/+bugs For more details, please see below. 25.6.0 ^^^^^^ New Features ************ * Don't send enable_port_security when disallowed by policy. When a user creates a network port, if they don't have the rights to change port security, they will be unable to submit the form. The solution is to not send any value for port security when the user doesn't have the rights to change it. * Horizon now supports Nova live migration with microversion 2.30. The "server_live_migrate" API call will request the appropriate microversion when available. * Added new configuration option "SWIFT_PANEL_FULL_LISTING" that defaults to "True". This configuration option can be set to "False" to prevent Horizon from doing full listing of containers and objects in the Swift panel that can cause high resource consumption in Horizon. Upgrade Notes ************* * Now the "WEBSSO_CHOICES" option includes the entry to use credentials mechanism by default. Bug Fixes ********* * [bug 2134391] Slowness of all operations involving listing Neutron ports and the floating IP addresses for the admin token. * [:bug:`2115353`] Added option to opt out of Keystone token scope swap. Horizon may prefer a domain-scoped token for some users (e.g. domain + project admins). This can conflict with certain custom Keystone policies. New setting "OPENSTACK_KEYSTONE_PREFER_DOMAIN_TOKEN" (default: "True") allows operators to disable this behavior. Changes in horizon 25.5.1..25.6.0 --------------------------------- 87da6c34b Link to SCSS styles instead of inlining them in every page 97310ed65 Remove local upper-constraints and go back to global one ce69d6ab6 Remove the Font Awesome hacks b5d591812 Remove old Horizon integration tests 637be2ce4 zuul: Remove PhantomJS deps and update parent job 246c2686c Remove references to PhantomJS 29ea0122b Upgrade selenium to 4.41.0 02e882d4e Create and use local upper-constraints to avoid Selenium failing aca54d862 Remove retired project from plugin registry e48d6a55e Fix spelling for utils method 568b59931 A hack to make Horizon work with Font Awesome 6.2 77d12b29d Unpin the version of flake8-import-order 75028ad45 Enable CSRF token handling for swift dashboard c2d951d7d fix(api): Avoid RecursionError when deepcopy Port apidict 40960c785 CI: move horizon-selenium-headless to Debian 13 a780380b9 Typo in port_security_enabled breaks port update for members e52e88891 Add multi-realm federation tests c8dd18051 Separate Identity Project Usage from Project Overview Usage 82e4bc950 Drop reference to removed policy.v3cloudsample.json cc9d8367b Use py313 jobs for django check and gate queue 1538329f5 Imported Translations from Zanata 7d3ee81ae Fix filters for admin snapshots table 5ad5e8d76 Fix "Displaying n items" count for tables with chevrons 5a62b3f48 Better handle missing project usage info 148ebe0d4 docs: add offline compression step 31eb8fa8b Imported Translations from Zanata 94d77edd8 Fix DHCP checkbox in subnet edit view 1223fac44 Do proper project_id filtering for port list 5902d4525 Send error messages to translation system. 675b217db Imported Translations from Zanata 29e5ad799 Imported Translations from Zanata 8ad75d3b1 Imported Translations from Zanata c425d6b24 Fix inconsistent borders for rows with chevrons 4dabc6c64 Imported Translations from Zanata 4c62b609f Imported Translations from Zanata a877edc6b Imported Translations from Zanata 94212eea5 de-angularize the Key Pairs table 5acdc8886 Use server filter mode for flavors tables 77412a02e Use a custom session serializer 39c6b4a5a reno: Update master for unmaintained/2024.1 4b933df52 Don't send enable_port_security when disallowed by policy ec95f2972 pytest-based selenium test fix floatingip test instability 1230aec62 Change negated in to not in e39fe103d Disable rule F405 check for ruff 48b7c713c Add missing import for gettext b7512f989 Remove duplicate key 83117a218 Revert "Remove all dependencies/connections of old integration test code" a28ab4fe3 Remove invalid "encoding" parameter f8249a891 Add integration tests for region selection and switching 1f7dff1a3 Imported Translations from Zanata 49e5fe185 Remove all dependencies/connections of old integration test code a4069d591 Force scope in all appcreds API calls 15d7212c9 Use server filter mode for volumes and snapshots tables ceb677d48 Add SWIFT_PANEL_FULL_LISTING config option 4b81bd78f Imported Translations from Zanata 64d34854b Replace DOMNodeInserted events with a mutation observer fc2de23a1 Imported Translations from Zanata d4d5dbfcf Imported Translations from Zanata dec23d6e8 Remove option for apache < 2.4 4a4530641 Imported Translations from Zanata 201205d40 Update master for stable/2025.2 035b6b1e7 Imported Translations from Zanata a52759326 Add credentials mechanism to default WEBSSO_CHOISES ef1e1fd22 Fix wrong documented default of WEBSSO_CHOICES 60455e5ff feat(dashboard): add microversion support for Nova live migration d142e8593 Opt out of token scope changes 131ac8ce5 Add non-voting job to test Django 5.2 c72e1b00f Catch callback in network service doesn't throw 27adc166b Add neutron-fwaas-dashboard in plugin registry 391777f8d docs: remove information about Xen dd9b03dd2 docs: drop outdated reference to TryStack e16596372 fix small mistake in code comment a6f710ba1 Updating function about the number of free IP addresses in the subnet 3e2ff4e06 Horizon save URL after okta login b418ce3ac Replace remaining reference to JSON format policy files e3e5a281c Fix small mistakes in documentation with Horizon naming and update URL for documentation to python 3 d96fc7a5a Fix small mistakes in phrases and prevent problems with translation to another languages 5c06ecd4b Skip tests for plugin-registry.csv update 1a4abf205 Update bug tracker for ironic UI ab64b6645 docs: using uppercase for encryption type 6a23ad89c docs: fix mistakes in documentation 7fcbcf3f4 Remove retired projects from plugin registry 8bf595775 remove unicode from files and update configuration for documentation f2d06de50 Make call to metadef namespaces API parallel 097a8a5f8 Add description for floating IP Diffstat (except docs and test files) ------------------------------------- .zuul.d/base.yaml | 6 +- .zuul.d/cross-jobs.yaml | 3 +- .zuul.d/django-jobs.yaml | 20 +- .zuul.d/tempest-and-integrated.yaml | 3 + .../contributor/topics/javascript_testing.rst | 7 +- .../locale/en_GB/LC_MESSAGES/doc-contributor.po | 36 +- horizon/forms/__init__.py | 1 + horizon/locale/en_GB/LC_MESSAGES/django.po | 8 +- horizon/middleware/operation_log.py | 2 +- horizon/static/horizon/js/horizon.forms.js | 34 +- horizon/static/horizon/js/horizon.tables.js | 2 +- horizon/test/firefox_binary.py | 112 ------ horizon/test/helpers.py | 9 +- horizon/test/webdriver.py | 8 +- horizon/themes.py | 1 + horizon/utils/scss_filter.py | 18 +- openstack_auth/defaults.py | 6 +- openstack_auth/forms.py | 2 +- openstack_auth/locale/en_GB/LC_MESSAGES/django.po | 20 +- openstack_auth/locale/ru/LC_MESSAGES/django.po | 23 +- openstack_auth/serializers.py | 85 +++++ openstack_auth/urls.py | 2 +- openstack_auth/user.py | 6 +- openstack_auth/utils.py | 2 +- openstack_auth/views.py | 25 +- openstack_dashboard/api/glance.py | 11 +- openstack_dashboard/api/keystone.py | 28 +- openstack_dashboard/api/microversions.py | 1 + openstack_dashboard/api/neutron.py | 38 +- openstack_dashboard/api/nova.py | 20 +- openstack_dashboard/api/swift.py | 10 +- .../dashboards/admin/flavors/tables.py | 15 +- .../dashboards/admin/flavors/views.py | 12 +- .../templates/floating_ips/_allocate.html | 2 + .../dashboards/admin/networks/subnets/tables.py | 6 +- .../dashboards/admin/networks/utils.py | 2 + .../dashboards/admin/snapshots/views.py | 4 +- .../dashboards/identity/projects/views.py | 2 +- .../containers/templates/containers/ngindex.html | 5 + .../dashboards/project/containers/views.py | 7 + .../templates/floating_ips/_allocate.html | 2 + .../dashboards/project/key_pairs/tables.py | 49 +++ .../dashboards/project/networks/ports/workflows.py | 20 + .../dashboards/project/networks/subnets/views.py | 3 +- .../networks/subnets/_detail_overview.html | 8 +- .../dashboards/project/networks/workflows.py | 4 +- .../dashboards/project/snapshots/tables.py | 13 +- .../dashboards/project/snapshots/views.py | 3 +- .../dashboard/project/containers/_containers.scss | 2 + .../templates/key_pairs/_chevron_column.html | 10 + .../templates/key_pairs/_keypairs_table.html | 65 ++++ .../templates/key_pairs/expandable_row.html | 26 ++ .../dashboards/project/volumes/tables.py | 17 +- .../dashboards/project/volumes/views.py | 6 +- openstack_dashboard/defaults.py | 23 +- .../local/local_settings.py.example | 2 - .../locale/cs/LC_MESSAGES/django.po | 6 +- .../locale/de/LC_MESSAGES/django.po | 6 +- .../locale/en_AU/LC_MESSAGES/django.po | 6 +- .../locale/en_GB/LC_MESSAGES/django.po | 356 +++++++++++++++++- .../locale/en_GB/LC_MESSAGES/djangojs.po | 201 ++++++++++- .../locale/eo/LC_MESSAGES/django.po | 5 +- .../locale/es/LC_MESSAGES/django.po | 6 +- .../locale/fr/LC_MESSAGES/django.po | 6 +- .../locale/id/LC_MESSAGES/django.po | 6 +- .../locale/ja/LC_MESSAGES/django.po | 6 +- .../locale/ka_GE/LC_MESSAGES/django.po | 5 +- .../locale/ko_KR/LC_MESSAGES/django.po | 6 +- .../locale/pt_BR/LC_MESSAGES/django.po | 6 +- .../locale/ru/LC_MESSAGES/django.po | 171 +++++---- .../locale/ru/LC_MESSAGES/djangojs.po | 12 +- .../locale/tr_TR/LC_MESSAGES/django.po | 6 +- .../locale/zh_Hans/LC_MESSAGES/django.po | 6 +- .../locale/zh_Hant/LC_MESSAGES/django.po | 6 +- .../management/commands/migrate_settings.py | 3 +- .../management/commands/update_catalog.py | 2 - openstack_dashboard/settings.py | 5 +- openstack_dashboard/static/app/app.module.js | 4 +- .../core/openstack-service-api/network.service.js | 15 +- .../openstack-service-api/network.service.spec.js | 15 +- .../static/dashboard/scss/_variables.scss | 2 +- .../dashboard/scss/components/_checkboxes.scss | 6 +- .../dashboard/scss/components/_radiobuttons.scss | 6 +- .../static/dashboard/scss/horizon.scss | 5 +- .../themes => static/dashboard/scss}/themes.scss | 6 +- openstack_dashboard/templates/_stylesheets.html | 22 +- .../pages/project/apiaccesspage.py | 6 +- openstack_dashboard/test/selenium/conftest.py | 89 +++-- .../test/selenium/integration/conftest.py | 11 +- .../test/selenium/integration/test_credentials.py | 12 +- .../test/selenium/integration/test_defaults.py | 31 +- .../selenium/integration/test_federation_login.py | 241 +++++++++++-- .../test/selenium/integration/test_flavors.py | 23 +- .../test/selenium/integration/test_floatingips.py | 47 ++- .../test/selenium/integration/test_groups.py | 33 +- .../test/selenium/integration/test_grouptypes.py | 14 +- .../selenium/integration/test_host_aggregates.py | 18 +- .../test/selenium/integration/test_images.py | 194 +++++----- .../test/selenium/integration/test_instances.py | 186 +++++----- .../test/selenium/integration/test_keypairs.py | 25 +- .../integration/test_metadata_definitions.py | 17 +- .../test/selenium/integration/test_networks.py | 89 ++--- .../test/selenium/integration/test_projects.py | 79 ++-- .../test/selenium/integration/test_regions.py | 117 ++++++ .../test/selenium/integration/test_routers.py | 93 +++-- .../selenium/integration/test_security_groups.py | 27 +- .../test/selenium/integration/test_settings.py | 2 +- .../selenium/integration/test_user_credentials.py | 57 +-- .../test/selenium/integration/test_users.py | 37 +- .../selenium/integration/test_volume_snapshots.py | 118 +++--- .../test/selenium/integration/test_volumes.py | 178 ++++----- .../test/selenium/integration/test_volumetypes.py | 96 ++--- .../test/selenium/ui/test_actions.py | 18 +- .../test/selenium/ui/test_browse.py | 19 +- .../test/selenium/ui/test_hypervisors.py | 33 +- .../test/selenium/ui/test_settings.py | 45 +-- openstack_dashboard/test/selenium/widgets.py | 55 ++- openstack_dashboard/test/settings.py | 3 +- openstack_dashboard/test/test_data/cinder_data.py | 1 - openstack_dashboard/test/unit/api/test_keystone.py | 6 +- openstack_dashboard/test/unit/api/test_network.py | 4 +- openstack_dashboard/test/unit/api/test_neutron.py | 11 +- openstack_dashboard/test/unit/api/test_nova.py | 18 +- openstack_dashboard/test/unit/api/test_swift.py | 25 +- openstack_dashboard/usage/__init__.py | 2 + openstack_dashboard/usage/tables.py | 16 +- playbooks/cross-jobs/phantomjs-deps.yaml | 6 - plugin-registry.csv | 10 +- ...to-default-websso-choices-fb25b7ce50d81e04.yaml | 5 + .../notes/bug-2134391-d9818a67c75a456b.yaml | 6 + ...when-disallowed-by-policy-aa3afc4ec7258fd4.yaml | 8 + ...live-migrate-microversion-c3ccf731126b6e28.yaml | 6 + ...swift-full-listing-config-3c1e03ba0b741916.yaml | 8 + releasenotes/notes/token-scope-change.yaml | 10 + releasenotes/source/2024.1.rst | 2 +- releasenotes/source/2025.2.rst | 6 + releasenotes/source/conf.py | 31 +- releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 251 ++++++++++++- .../source/locale/id/LC_MESSAGES/releasenotes.po | 5 +- requirements.txt | 2 +- tox.ini | 31 +- 214 files changed, 3409 insertions(+), 5276 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 21dc565b1..9c60b9a9c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -48 +48 @@ XStatic-Hogan>=2.0.0.2 # Apache 2.0 License -XStatic-Font-Awesome>=4.7.0.0 # SIL OFL 1.1 License, MIT License +XStatic-Font-Awesome>=6.2.1.2 # SIL OFL 1.1 License, MIT License
participants (1)
-
no-reply@openstack.org