[release-announce] horizon 22.0.0 (yoga)

no-reply at openstack.org no-reply at openstack.org
Wed Mar 23 14:22:26 UTC 2022


We are chuffed to announce the release of:

horizon 22.0.0: OpenStack Dashboard

This release is part of the yoga 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.

22.0.0
^^^^^^


New Features
************

* [:blueprint:`handle-multiple-login-sessions-from-same-user-in-
  horizon`] This blueprint allows operators to control if multiple
  simultaneous dashboard sessions are allowed or not for a user. A new
  setting "SIMULTANEOUS_SESSIONS" controls the behavior. The default
  behavior allows multiple dashboard sessions for a user. The new
  setting allows operators to configure horizon to disallow multiple
  sessions per user. When multiple simultaneous sessions are disabled,
  the most recent authenticated session will be considered as the
  valid one and the previous session will be invalidated.

* Add Rules CRUD operations to the Network QoS Policy.

  Added create, edit, and delete rules operation to the network qos
  policy. Rules supported - Bandwidth-Limit, Minimum-Bandwidth, DSCP-
  Marking, and Minimum-Packet-Rate.


Upgrade Notes
*************

* The default value of OPENSTACK_KEYSTONE_DEFAULT_ROLE is changed
  from _member_ to member to conform with what keystone-bootstrap
  creates.


Bug Fixes
*********

* Fixed lack of pagination for the networks page under Project and
  Admin Dashboard.

* Previously, ToggleSuspend class checked os-rescue policy for
  resume operation. By this fix, the class checks 'os_compute_api:os-
  suspend- server:resume' policy to align to resume operation.

Changes in horizon 21.0.0..22.0.0
---------------------------------

05473b765 Sync default policy rules
f2832f3b0 instance UT: Recover mock_server_get.return_value
a7956cd00 Avoid extra flavor_get in resize server form
29da80152 Change to a proper policy for Resume operation
5d6eefa49 Create Horizon session control logic
9f5d659d1 Get ports directly instead of via loop
94e4e2df0 Imported Translations from Zanata
aa83752f2 Add Rules operation to Network QoS Policy
196de449b Implement pagination in admin/proj network tab
3c4accf94 Follow-up: Drop Django launch instance (part 2)
115326769 Integration tests: Allow to run a specific test from tox
d269b1640 Fix for "Resize instance" button
dbaca46d0 Add a unit test for the password change form
569caf0b7 Add Python 3 only classifier
fa29ed8e6 doc: Update setup file examples in the plugin tutorial
5d0b2b74d Replace deprecated imp module
88dd887ad Fix getting defaults from cookie for region field in password form
7052b7f06 Address RemovedInDjango40Warning (7)
00def145d Address RemovedInDjango40Warning (6)
94216e027 Address RemovedInDjango40Warning (5)
e4444e697 Address RemovedInDjango40Warning (4)
d9266fd82 Address RemovedInDjango40Warning (3)
cd7c1b511 Address RemovedInDjango40Warning (2)
b84701208 Mark "Source" tab in the launch instance form as required
e2bb7d833 Fix Project Limits for resize instance dialog
b430d5aa4 Follow-up: Drop Django based implementation of launch instance
e34e0ea73 fix ValueError: invalid content length with swift over UWSGI
a9d5273f3 Address RemovedInDjango40Warning (1)
0bba95f19 Make stack template page handle session expiration
029de21c1 Add a Note Under Install and configure Section in documentation
a375c5418 Update default value of OPENSTACK_KEYSTONE_DEFAULT_ROLE
e9ca00162 Modified the image page to use CSS class


Diffstat (except docs and test files)
-------------------------------------

.../contributor/topics/ini-based-configuration.rst |    2 +-
.../locale/en_GB/LC_MESSAGES/doc-configuration.po  |  101 +-
.../locale/en_GB/LC_MESSAGES/doc-contributor.po    |   97 +-
.../locale/id/LC_MESSAGES/doc-configuration.po     |   96 +-
.../locale/id/LC_MESSAGES/doc-contributor.po       |   98 +-
horizon/base.py                                    |   16 +-
horizon/browsers/base.py                           |    2 +-
horizon/browsers/views.py                          |    2 +-
horizon/conf/default.py                            |    2 +-
horizon/conf/panel_template/urls.py.tmpl           |    4 +-
horizon/decorators.py                              |    2 +-
horizon/defaults.py                                |    5 +-
horizon/exceptions.py                              |   12 +-
horizon/forms/fields.py                            |   23 +-
horizon/forms/views.py                             |    7 +-
horizon/messages.py                                |   12 +-
horizon/middleware/__init__.py                     |    2 +
horizon/middleware/base.py                         |    7 +-
horizon/middleware/simultaneous_sessions.py        |   50 +
horizon/notifications.py                           |    2 +-
horizon/site_urls.py                               |   30 +-
horizon/static/horizon/js/horizon.heattop.js       |    5 +
horizon/tables/actions.py                          |    2 +-
horizon/tables/base.py                             |   15 +-
horizon/tabs/views.py                              |    3 +-
.../horizon/common/_data_table_table_actions.html  |    2 +-
horizon/templatetags/horizon.py                    |   12 +-
horizon/templatetags/sizeformat.py                 |   12 +-
horizon/test/helpers.py                            |    4 +-
horizon/test/test_dashboards/cats/kittens/urls.py  |    4 +-
horizon/test/test_dashboards/cats/tigers/urls.py   |    4 +-
.../test/test_dashboards/dogs/puppies/tables.py    |    6 +-
horizon/test/test_dashboards/dogs/puppies/urls.py  |    6 +-
.../unit/middleware/test_simultaneous_sessions.py  |   61 +
horizon/test/unit/tables/test_tables.py            |   14 +-
horizon/test/unit/test_base.py                     |    2 +-
horizon/test/unit/test_exceptions.py               |    8 +-
horizon/test/unit/test_messages.py                 |    6 +-
horizon/test/unit/test_views.py                    |    2 +-
horizon/test/urls.py                               |   22 +-
horizon/utils/filters.py                           |    2 +-
horizon/utils/functions.py                         |    7 +-
horizon/utils/http.py                              |   28 +
horizon/utils/lazy_encoder.py                      |    4 +-
horizon/utils/validators.py                        |    2 +-
horizon/views.py                                   |    4 +-
horizon/workflows/base.py                          |   15 +-
horizon/workflows/views.py                         |   12 +-
lower-constraints.txt                              |   24 +-
openstack_auth/backend.py                          |    2 +-
openstack_auth/forms.py                            |    5 +-
openstack_auth/locale/ru/LC_MESSAGES/django.po     |   12 +-
openstack_auth/plugin/base.py                      |    2 +-
openstack_auth/plugin/k2k.py                       |    2 +-
openstack_auth/urls.py                             |   39 +-
openstack_auth/views.py                            |   33 +-
openstack_dashboard/api/cinder.py                  |    2 +-
openstack_dashboard/api/glance.py                  |    2 +-
openstack_dashboard/api/keystone.py                |    2 +-
openstack_dashboard/api/neutron.py                 |  595 +++++++-
openstack_dashboard/api/nova.py                    |    2 +-
openstack_dashboard/api/rest/cinder.py             |    2 +-
openstack_dashboard/api/rest/json_encoder.py       |    2 +-
openstack_dashboard/api/rest/neutron.py            |  156 ++-
openstack_dashboard/api/rest/nova.py               |    9 +-
openstack_dashboard/api/rest/swift.py              |    7 +-
openstack_dashboard/api/rest/urls.py               |    5 +-
openstack_dashboard/api/rest/utils.py              |    3 +-
openstack_dashboard/api/swift.py                   |    2 +-
openstack_dashboard/conf/cinder_policy.yaml        | 1229 ++++++++++++++--
.../conf/default_policies/cinder.yaml              |  914 ++++++++++--
.../conf/default_policies/glance.yaml              |  573 +++++---
.../conf/default_policies/keystone.yaml            |  793 +++++------
.../conf/default_policies/neutron.yaml             |  900 ++++++------
.../conf/default_policies/nova.yaml                | 1439 +++++--------------
openstack_dashboard/conf/glance_policy.yaml        |  212 ++-
openstack_dashboard/conf/keystone_policy.yaml      |   33 +-
openstack_dashboard/conf/neutron_policy.yaml       | 1478 +++++++++++---------
openstack_dashboard/conf/nova_policy.yaml          |  841 +++++------
openstack_dashboard/contrib/developer/dashboard.py |    2 +-
.../contrib/developer/form_builder/panel.py        |    2 +-
.../contrib/developer/form_builder/urls.py         |    4 +-
.../contrib/developer/profiler/middleware.py       |    2 +-
.../contrib/developer/profiler/panel.py            |    2 +-
.../contrib/developer/profiler/urls.py             |    4 +-
.../contrib/developer/profiler/views.py            |    2 +-
.../contrib/developer/resource_browser/panel.py    |    2 +-
.../contrib/developer/resource_browser/urls.py     |    4 +-
.../contrib/developer/theme_preview/panel.py       |    2 +-
.../contrib/developer/theme_preview/urls.py        |    4 +-
.../contrib/developer/theme_preview/views.py       |    2 +-
.../dashboards/admin/aggregates/forms.py           |    2 +-
.../dashboards/admin/aggregates/panel.py           |    2 +-
.../dashboards/admin/aggregates/tables.py          |    8 +-
.../dashboards/admin/aggregates/urls.py            |   18 +-
.../dashboards/admin/aggregates/views.py           |    2 +-
.../dashboards/admin/aggregates/workflows.py       |    2 +-
.../dashboards/admin/backups/forms.py              |    2 +-
.../dashboards/admin/backups/tables.py             |    8 +-
.../dashboards/admin/backups/urls.py               |   22 +-
.../dashboards/admin/backups/views.py              |    2 +-
openstack_dashboard/dashboards/admin/dashboard.py  |    2 +-
.../dashboards/admin/defaults/panel.py             |    2 +-
.../dashboards/admin/defaults/tables.py            |    2 +-
.../dashboards/admin/defaults/tabs.py              |    2 +-
.../dashboards/admin/defaults/urls.py              |    8 +-
.../dashboards/admin/defaults/views.py             |    2 +-
.../dashboards/admin/defaults/workflows.py         |    2 +-
.../dashboards/admin/flavors/panel.py              |    2 +-
.../dashboards/admin/flavors/tables.py             |    8 +-
.../dashboards/admin/flavors/urls.py               |   23 +-
.../dashboards/admin/flavors/views.py              |    2 +-
.../dashboards/admin/flavors/workflows.py          |    2 +-
.../dashboards/admin/floating_ips/forms.py         |    2 +-
.../dashboards/admin/floating_ips/panel.py         |    2 +-
.../dashboards/admin/floating_ips/tables.py        |    2 +-
.../dashboards/admin/floating_ips/urls.py          |   10 +-
.../dashboards/admin/floating_ips/views.py         |    2 +-
.../dashboards/admin/group_types/forms.py          |    2 +-
.../dashboards/admin/group_types/panel.py          |    2 +-
.../dashboards/admin/group_types/specs/forms.py    |    2 +-
.../dashboards/admin/group_types/specs/tables.py   |    8 +-
.../dashboards/admin/group_types/specs/urls.py     |   10 +-
.../dashboards/admin/group_types/specs/views.py    |    2 +-
.../dashboards/admin/group_types/tables.py         |    8 +-
.../dashboards/admin/group_types/urls.py           |   18 +-
.../dashboards/admin/group_types/views.py          |    2 +-
.../dashboards/admin/hypervisors/compute/forms.py  |    2 +-
.../dashboards/admin/hypervisors/compute/tables.py |    8 +-
.../dashboards/admin/hypervisors/compute/tabs.py   |    2 +-
.../dashboards/admin/hypervisors/compute/urls.py   |   20 +-
.../dashboards/admin/hypervisors/compute/views.py  |    2 +-
.../dashboards/admin/hypervisors/panel.py          |    2 +-
.../dashboards/admin/hypervisors/tables.py         |    2 +-
.../dashboards/admin/hypervisors/tabs.py           |    2 +-
.../dashboards/admin/hypervisors/urls.py           |   12 +-
.../dashboards/admin/hypervisors/views.py          |    2 +-
.../dashboards/admin/images/panel.py               |    2 +-
.../dashboards/admin/images/tables.py              |    2 +-
.../dashboards/admin/images/urls.py                |   22 +-
.../dashboards/admin/images/views.py               |    2 +-
openstack_dashboard/dashboards/admin/info/panel.py |    2 +-
.../dashboards/admin/info/tables.py                |    2 +-
openstack_dashboard/dashboards/admin/info/tabs.py  |    2 +-
openstack_dashboard/dashboards/admin/info/urls.py  |    4 +-
openstack_dashboard/dashboards/admin/info/views.py |    2 +-
.../dashboards/admin/instances/forms.py            |    2 +-
.../dashboards/admin/instances/panel.py            |    2 +-
.../dashboards/admin/instances/tables.py           |    8 +-
.../dashboards/admin/instances/urls.py             |   25 +-
.../dashboards/admin/instances/views.py            |    2 +-
.../dashboards/admin/metadata_defs/forms.py        |    2 +-
.../dashboards/admin/metadata_defs/panel.py        |    2 +-
.../dashboards/admin/metadata_defs/tables.py       |    8 +-
.../dashboards/admin/metadata_defs/tabs.py         |    2 +-
.../dashboards/admin/metadata_defs/urls.py         |   14 +-
.../dashboards/admin/metadata_defs/views.py        |    2 +-
.../dashboards/admin/networks/agents/forms.py      |    2 +-
.../dashboards/admin/networks/agents/tables.py     |    8 +-
.../dashboards/admin/networks/agents/tabs.py       |    2 +-
.../dashboards/admin/networks/agents/views.py      |    2 +-
.../dashboards/admin/networks/forms.py             |    2 +-
.../dashboards/admin/networks/panel.py             |    2 +-
.../dashboards/admin/networks/ports/tables.py      |    2 +-
.../dashboards/admin/networks/ports/urls.py        |   10 +-
.../dashboards/admin/networks/ports/views.py       |    2 +-
.../dashboards/admin/networks/ports/workflows.py   |    2 +-
.../dashboards/admin/networks/subnets/tables.py    |    2 +-
.../dashboards/admin/networks/subnets/urls.py      |    4 +-
.../dashboards/admin/networks/subnets/workflows.py |    2 +-
.../dashboards/admin/networks/tables.py            |    2 +-
.../dashboards/admin/networks/urls.py              |   46 +-
.../dashboards/admin/networks/views.py             |   19 +-
.../dashboards/admin/ngflavors/panel.py            |    2 +-
.../dashboards/admin/ngflavors/urls.py             |    4 +-
.../dashboards/admin/overview/panel.py             |    2 +-
.../dashboards/admin/overview/urls.py              |    4 +-
.../dashboards/admin/overview/views.py             |    2 +-
.../dashboards/admin/rbac_policies/forms.py        |    2 +-
.../dashboards/admin/rbac_policies/panel.py        |    2 +-
.../dashboards/admin/rbac_policies/tables.py       |    8 +-
.../dashboards/admin/rbac_policies/tabs.py         |    2 +-
.../dashboards/admin/rbac_policies/urls.py         |   18 +-
.../dashboards/admin/rbac_policies/views.py        |    2 +-
.../admin/routers/extensions/extraroutes/tables.py |    2 +-
.../dashboards/admin/routers/forms.py              |    2 +-
.../dashboards/admin/routers/panel.py              |    2 +-
.../dashboards/admin/routers/ports/tables.py       |    2 +-
.../dashboards/admin/routers/ports/urls.py         |    4 +-
.../dashboards/admin/routers/tables.py             |    2 +-
.../dashboards/admin/routers/urls.py               |   24 +-
.../dashboards/admin/routers/views.py              |    2 +-
.../dashboards/admin/snapshots/forms.py            |    2 +-
.../dashboards/admin/snapshots/panel.py            |    2 +-
.../dashboards/admin/snapshots/tables.py           |    2 +-
.../dashboards/admin/snapshots/tabs.py             |    2 +-
.../dashboards/admin/snapshots/urls.py             |   16 +-
.../dashboards/admin/snapshots/views.py            |    2 +-
.../dashboards/admin/trunks/panel.py               |    2 +-
.../dashboards/admin/trunks/urls.py                |   10 +-
.../dashboards/admin/vg_snapshots/tables.py        |    2 +-
.../dashboards/admin/vg_snapshots/urls.py          |   10 +-
.../dashboards/admin/vg_snapshots/views.py         |    2 +-
.../dashboards/admin/volume_groups/tables.py       |    2 +-
.../dashboards/admin/volume_groups/urls.py         |   28 +-
.../dashboards/admin/volume_groups/views.py        |    2 +-
.../dashboards/admin/volume_types/extras/forms.py  |    2 +-
.../dashboards/admin/volume_types/extras/tables.py |    8 +-
.../dashboards/admin/volume_types/extras/urls.py   |    8 +-
.../dashboards/admin/volume_types/extras/views.py  |    2 +-
.../dashboards/admin/volume_types/forms.py         |    2 +-
.../dashboards/admin/volume_types/panel.py         |    2 +-
.../admin/volume_types/qos_specs/forms.py          |    2 +-
.../admin/volume_types/qos_specs/tables.py         |    8 +-
.../admin/volume_types/qos_specs/urls.py           |   13 +-
.../admin/volume_types/qos_specs/views.py          |    2 +-
.../dashboards/admin/volume_types/tables.py        |   16 +-
.../dashboards/admin/volume_types/urls.py          |   60 +-
.../dashboards/admin/volume_types/views.py         |    2 +-
.../dashboards/admin/volumes/forms.py              |    2 +-
.../dashboards/admin/volumes/panel.py              |    2 +-
.../dashboards/admin/volumes/tables.py             |    2 +-
.../dashboards/admin/volumes/urls.py               |   38 +-
.../dashboards/admin/volumes/views.py              |    2 +-
.../identity/application_credentials/forms.py      |    2 +-
.../identity/application_credentials/panel.py      |    2 +-
.../identity/application_credentials/tables.py     |    8 +-
.../identity/application_credentials/urls.py       |   26 +-
.../identity/application_credentials/views.py      |    2 +-
.../dashboards/identity/dashboard.py               |    2 +-
.../dashboards/identity/domains/panel.py           |    2 +-
.../dashboards/identity/domains/tables.py          |   16 +-
.../dashboards/identity/domains/urls.py            |   15 +-
.../dashboards/identity/domains/views.py           |    2 +-
.../dashboards/identity/domains/workflows.py       |    2 +-
.../dashboards/identity/groups/forms.py            |    2 +-
.../dashboards/identity/groups/panel.py            |    2 +-
.../dashboards/identity/groups/tables.py           |   16 +-
.../dashboards/identity/groups/urls.py             |   20 +-
.../dashboards/identity/groups/views.py            |    2 +-
.../identity/identity_providers/forms.py           |    2 +-
.../identity/identity_providers/panel.py           |    2 +-
.../identity/identity_providers/protocols/forms.py |    2 +-
.../identity_providers/protocols/tables.py         |    8 +-
.../identity/identity_providers/protocols/urls.py  |    4 +-
.../identity/identity_providers/protocols/views.py |    2 +-
.../identity/identity_providers/tables.py          |    8 +-
.../dashboards/identity/identity_providers/tabs.py |    2 +-
.../dashboards/identity/identity_providers/urls.py |   26 +-
.../identity/identity_providers/views.py           |    2 +-
.../dashboards/identity/mappings/forms.py          |    2 +-
.../dashboards/identity/mappings/panel.py          |    2 +-
.../dashboards/identity/mappings/tables.py         |    8 +-
.../dashboards/identity/mappings/urls.py           |   10 +-
.../dashboards/identity/mappings/views.py          |    2 +-
.../dashboards/identity/projects/groups/tables.py  |    2 +-
.../dashboards/identity/projects/panel.py          |    2 +-
.../dashboards/identity/projects/tables.py         |    8 +-
.../dashboards/identity/projects/tabs.py           |    2 +-
.../dashboards/identity/projects/urls.py           |   22 +-
.../dashboards/identity/projects/users/tables.py   |    2 +-
.../dashboards/identity/projects/views.py          |    2 +-
.../dashboards/identity/projects/workflows.py      |    2 +-
.../dashboards/identity/roles/forms.py             |    2 +-
.../dashboards/identity/roles/panel.py             |    2 +-
.../dashboards/identity/roles/tables.py            |    8 +-
.../dashboards/identity/roles/urls.py              |   14 +-
.../dashboards/identity/roles/views.py             |    2 +-
.../dashboards/identity/users/forms.py             |    2 +-
.../dashboards/identity/users/groups/tables.py     |    2 +-
.../dashboards/identity/users/panel.py             |    2 +-
.../identity/users/role_assignments/tables.py      |    2 +-
.../dashboards/identity/users/tables.py            |   16 +-
.../dashboards/identity/users/tabs.py              |    2 +-
.../dashboards/identity/users/urls.py              |   22 +-
.../dashboards/identity/users/views.py             |    2 +-
.../dashboards/project/api_access/forms.py         |    2 +-
.../dashboards/project/api_access/panel.py         |    2 +-
.../dashboards/project/api_access/tables.py        |    2 +-
.../dashboards/project/api_access/urls.py          |   21 +-
.../dashboards/project/api_access/views.py         |    2 +-
.../dashboards/project/backups/forms.py            |    2 +-
.../dashboards/project/backups/panel.py            |    2 +-
.../dashboards/project/backups/tables.py           |    8 +-
.../dashboards/project/backups/tabs.py             |    2 +-
.../dashboards/project/backups/urls.py             |   16 +-
.../dashboards/project/backups/views.py            |    2 +-
.../dashboards/project/containers/panel.py         |    2 +-
.../dashboards/project/containers/urls.py          |   12 +-
.../dashboards/project/containers/utils.py         |    2 +-
.../dashboards/project/dashboard.py                |    2 +-
.../dashboards/project/floating_ips/forms.py       |    2 +-
.../dashboards/project/floating_ips/panel.py       |    2 +-
.../dashboards/project/floating_ips/tables.py      |    8 +-
.../dashboards/project/floating_ips/urls.py        |    8 +-
.../dashboards/project/floating_ips/views.py       |    2 +-
.../dashboards/project/floating_ips/workflows.py   |    2 +-
.../dashboards/project/images/images/forms.py      |    2 +-
.../dashboards/project/images/images/tables.py     |    8 +-
.../dashboards/project/images/images/tabs.py       |    2 +-
.../dashboards/project/images/images/urls.py       |   19 +-
.../dashboards/project/images/images/views.py      |    2 +-
.../dashboards/project/images/panel.py             |    2 +-
.../dashboards/project/images/snapshots/forms.py   |    2 +-
.../dashboards/project/images/snapshots/urls.py    |    8 +-
.../dashboards/project/images/snapshots/views.py   |    2 +-
.../dashboards/project/images/urls.py              |   16 +-
.../dashboards/project/images/utils.py             |    2 +-
.../dashboards/project/images/views.py             |    2 +-
.../dashboards/project/instances/audit_tables.py   |    2 +-
.../dashboards/project/instances/console.py        |    2 +-
.../dashboards/project/instances/forms.py          |    2 +-
.../project/instances/interfaces_tables.py         |    2 +-
.../dashboards/project/instances/panel.py          |    2 +-
.../dashboards/project/instances/tables.py         |   66 +-
.../dashboards/project/instances/tabs.py           |    2 +-
.../templates/instances/_flavors_and_quotas.html   |   40 +-
.../templates/instances/_launch_advanced_help.html |    2 -
.../templates/instances/_launch_details_help.html  |    7 -
.../templates/instances/_launch_network_help.html  |    3 -
.../instances/_launch_network_ports_help.html      |    7 -
.../templates/instances/_launch_volumes_help.html  |    3 -
.../templates/instances/_update_networks.html      |   36 -
.../dashboards/project/instances/urls.py           |   65 +-
.../dashboards/project/instances/utils.py          |   66 +-
.../dashboards/project/instances/views.py          |   19 +-
.../project/instances/workflows/resize_instance.py |   46 +-
.../project/instances/workflows/update_instance.py |    2 +-
.../dashboards/project/key_pairs/forms.py          |    2 +-
.../dashboards/project/key_pairs/panel.py          |    2 +-
.../dashboards/project/key_pairs/tables.py         |    8 +-
.../dashboards/project/key_pairs/urls.py           |   21 +-
.../dashboards/project/key_pairs/views.py          |    2 +-
.../dashboards/project/network_qos/panel.py        |    2 +-
.../dashboards/project/network_qos/urls.py         |    6 +-
.../project/network_topology/instances/tables.py   |    2 +-
.../project/network_topology/networks/tables.py    |    2 +-
.../dashboards/project/network_topology/panel.py   |    2 +-
.../project/network_topology/ports/tables.py       |    2 +-
.../project/network_topology/routers/tables.py     |    2 +-
.../project/network_topology/subnets/tables.py     |    2 +-
.../dashboards/project/network_topology/tabs.py    |    2 +-
.../dashboards/project/network_topology/urls.py    |   38 +-
.../dashboards/project/network_topology/views.py   |    2 +-
.../dashboards/project/networks/forms.py           |    2 +-
.../dashboards/project/networks/panel.py           |    2 +-
.../extensions/allowed_address_pairs/forms.py      |    2 +-
.../extensions/allowed_address_pairs/tables.py     |    8 +-
.../ports/extensions/allowed_address_pairs/tabs.py |    2 +-
.../extensions/allowed_address_pairs/views.py      |    2 +-
.../dashboards/project/networks/ports/sg_base.py   |    2 +-
.../dashboards/project/networks/ports/tables.py    |    8 +-
.../dashboards/project/networks/ports/tabs.py      |    2 +-
.../dashboards/project/networks/ports/urls.py      |   10 +-
.../dashboards/project/networks/ports/views.py     |    2 +-
.../dashboards/project/networks/ports/workflows.py |    2 +-
.../dashboards/project/networks/subnets/tables.py  |    8 +-
.../dashboards/project/networks/subnets/tabs.py    |    2 +-
.../dashboards/project/networks/subnets/urls.py    |    4 +-
.../dashboards/project/networks/subnets/utils.py   |    2 +-
.../dashboards/project/networks/subnets/views.py   |    2 +-
.../project/networks/subnets/workflows.py          |    2 +-
.../dashboards/project/networks/tables.py          |    8 +-
.../dashboards/project/networks/tabs.py            |    2 +-
.../dashboards/project/networks/urls.py            |   42 +-
.../dashboards/project/networks/views.py           |   25 +-
.../dashboards/project/networks/workflows.py       |    2 +-
.../dashboards/project/overview/panel.py           |    2 +-
.../dashboards/project/overview/urls.py            |    6 +-
.../dashboards/project/overview/views.py           |    2 +-
.../routers/extensions/extraroutes/forms.py        |    2 +-
.../routers/extensions/extraroutes/tables.py       |    8 +-
.../project/routers/extensions/extraroutes/tabs.py |    2 +-
.../routers/extensions/extraroutes/views.py        |    2 +-
.../dashboards/project/routers/forms.py            |    2 +-
.../dashboards/project/routers/panel.py            |    2 +-
.../dashboards/project/routers/ports/forms.py      |    2 +-
.../dashboards/project/routers/ports/tables.py     |    8 +-
.../dashboards/project/routers/ports/tabs.py       |    2 +-
.../dashboards/project/routers/ports/urls.py       |    4 +-
.../dashboards/project/routers/ports/views.py      |    2 +-
.../dashboards/project/routers/tables.py           |   12 +-
.../dashboards/project/routers/tabs.py             |    2 +-
.../dashboards/project/routers/urls.py             |   36 +-
.../dashboards/project/routers/views.py            |    2 +-
.../dashboards/project/security_groups/forms.py    |    2 +-
.../dashboards/project/security_groups/panel.py    |    2 +-
.../dashboards/project/security_groups/tables.py   |   12 +-
.../dashboards/project/security_groups/urls.py     |   24 +-
.../dashboards/project/security_groups/views.py    |    2 +-
.../dashboards/project/server_groups/panel.py      |    2 +-
.../dashboards/project/server_groups/urls.py       |    6 +-
.../dashboards/project/snapshots/forms.py          |    2 +-
.../dashboards/project/snapshots/panel.py          |    2 +-
.../dashboards/project/snapshots/tables.py         |    8 +-
.../dashboards/project/snapshots/tabs.py           |    2 +-
.../dashboards/project/snapshots/urls.py           |   16 +-
.../dashboards/project/snapshots/views.py          |    2 +-
.../workflow/launch-instance/source/source.html    |    1 +
.../dashboards/project/trunks/panel.py             |    2 +-
.../dashboards/project/trunks/urls.py              |   10 +-
.../dashboards/project/vg_snapshots/forms.py       |    2 +-
.../dashboards/project/vg_snapshots/panel.py       |    2 +-
.../dashboards/project/vg_snapshots/tables.py      |    8 +-
.../dashboards/project/vg_snapshots/tabs.py        |    2 +-
.../dashboards/project/vg_snapshots/urls.py        |   16 +-
.../dashboards/project/vg_snapshots/views.py       |    2 +-
.../dashboards/project/volume_groups/forms.py      |    2 +-
.../dashboards/project/volume_groups/panel.py      |    2 +-
.../dashboards/project/volume_groups/tables.py     |    2 +-
.../dashboards/project/volume_groups/tabs.py       |    2 +-
.../dashboards/project/volume_groups/urls.py       |   52 +-
.../dashboards/project/volume_groups/views.py      |    2 +-
.../dashboards/project/volume_groups/workflows.py  |    2 +-
.../dashboards/project/volumes/forms.py            |    2 +-
.../dashboards/project/volumes/panel.py            |    2 +-
.../dashboards/project/volumes/tables.py           |    8 +-
.../dashboards/project/volumes/tabs.py             |    2 +-
.../dashboards/project/volumes/urls.py             |   96 +-
.../dashboards/project/volumes/views.py            |    7 +-
.../dashboards/settings/dashboard.py               |    2 +-
.../dashboards/settings/password/forms.py          |    2 +-
.../dashboards/settings/password/panel.py          |    2 +-
.../dashboards/settings/password/urls.py           |    4 +-
.../dashboards/settings/password/views.py          |    2 +-
.../dashboards/settings/user/forms.py              |    4 +-
.../dashboards/settings/user/panel.py              |    2 +-
.../dashboards/settings/user/urls.py               |    4 +-
.../dashboards/settings/user/views.py              |    2 +-
openstack_dashboard/defaults.py                    |    4 +-
.../enabled/_1010_compute_panel_group.py           |    2 +-
.../enabled/_1310_volumes_panel_group.py           |    2 +-
.../enabled/_1410_network_panel_group.py           |    2 +-
.../enabled/_1910_object_store_panel_group.py      |    2 +-
.../enabled/_2110_admin_compute_panel_group.py     |    2 +-
.../enabled/_2210_admin_volume_panel_group.py      |    2 +-
.../enabled/_2300_admin_network_panel_group.py     |    2 +-
.../enabled/_2810_admin_system_panel_group.py      |    2 +-
.../enabled/_3060_federation_panel_group.py        |    2 +-
.../local/local_settings.py.example                |    2 +-
.../locale/as/LC_MESSAGES/django.po                |  261 +---
.../locale/bn_IN/LC_MESSAGES/django.po             |  257 +---
.../locale/brx/LC_MESSAGES/django.po               |  255 +---
.../locale/cs/LC_MESSAGES/django.po                |  315 +----
.../locale/de/LC_MESSAGES/django.po                |  326 +----
.../locale/en_AU/LC_MESSAGES/django.po             |  321 +----
.../locale/en_GB/LC_MESSAGES/django.po             |  335 +----
.../locale/eo/LC_MESSAGES/django.po                |  318 +----
.../locale/es/LC_MESSAGES/django.po                |  338 +----
.../locale/fr/LC_MESSAGES/django.po                |  329 +----
.../locale/gu/LC_MESSAGES/django.po                |  257 +---
.../locale/hi/LC_MESSAGES/django.po                |  190 +--
.../locale/id/LC_MESSAGES/django.po                |  326 +----
.../locale/it/LC_MESSAGES/django.po                |  307 +---
.../locale/ja/LC_MESSAGES/django.po                |  337 +----
.../locale/kn/LC_MESSAGES/django.po                |  263 +---
.../locale/ko_KR/LC_MESSAGES/django.po             |  318 +----
.../locale/kok/LC_MESSAGES/django.po               |  253 +---
.../locale/ks/LC_MESSAGES/django.po                |  253 +---
.../locale/mai/LC_MESSAGES/django.po               |  255 +---
.../locale/mni/LC_MESSAGES/django.po               |  263 +---
.../locale/mr/LC_MESSAGES/django.po                |  252 +---
.../locale/ne/LC_MESSAGES/django.po                |  256 +---
.../locale/pa_IN/LC_MESSAGES/django.po             |  264 +---
.../locale/pl_PL/LC_MESSAGES/django.po             |  270 +---
.../locale/pt_BR/LC_MESSAGES/django.po             |  325 +----
.../locale/ru/LC_MESSAGES/django.po                |  351 +----
.../locale/ta/LC_MESSAGES/django.po                |  261 +---
.../locale/tr_TR/LC_MESSAGES/django.po             |  322 +----
.../locale/ur/LC_MESSAGES/django.po                |  264 +---
.../locale/zh_Hans/LC_MESSAGES/django.po           |  296 +---
.../locale/zh_Hant/LC_MESSAGES/django.po           |  300 +---
.../management/commands/migrate_settings.py        |   13 +-
.../management/commands/upgrade_check.py           |    2 +-
openstack_dashboard/settings.py                    |    3 +-
.../app/core/network_qos/actions/actions.module.js |   34 +
.../network_qos/actions/actions.module.spec.js     |   15 +
.../network_qos/actions/add-rule.action.service.js |  182 +++
.../actions/add-rule.action.service.spec.js        |  154 ++
.../network_qos/actions/add-rule.controller.js     |   74 +
.../actions/add-rule.controller.spec.js            |  130 ++
.../app/core/network_qos/actions/add-rule.html     |   98 ++
.../actions/delete-rule.action.service.js          |  117 ++
.../actions/delete-rule.action.service.spec.js     |  224 +++
.../actions/edit-rule.action.service.js            |  173 +++
.../actions/edit-rule.action.service.spec.js       |  244 ++++
.../network_qos/actions/edit-rule.controller.js    |  104 ++
.../actions/edit-rule.controller.spec.js           |  161 +++
.../app/core/network_qos/actions/edit-rule.html    |  106 ++
.../core/network_qos/actions/rule.description.html |   18 +
.../workflow/delete-rule.workflow.service.js       |  118 ++
.../workflow/delete-rule.workflow.service.spec.js  |   97 ++
.../network_qos/details/overview.controller.js     |   58 +-
.../app/core/network_qos/details/overview.html     |   37 +-
.../core/openstack-service-api/neutron.service.js  |  366 ++++-
.../openstack-service-api/neutron.service.spec.js  |  108 ++
.../static/dashboard/scss/_util.scss               |    3 +-
openstack_dashboard/test/error_pages_urls.py       |    4 +-
openstack_dashboard/test/extensible_header_urls.py |    4 +-
openstack_dashboard/test/helpers.py                |   13 +-
.../pages/admin/network/networkspage.py            |   22 +-
.../pages/project/network/networkspage.py          |   14 +-
openstack_dashboard/test/test_data/neutron_data.py |  298 +++-
openstack_dashboard/test/test_data/swift_data.py   |    8 +-
.../test/test_panels/another_panel/urls.py         |    4 +-
.../test/test_panels/another_panel/views.py        |    2 +-
.../test/test_panels/nonloading_panel/urls.py      |    4 +-
.../test/test_panels/plugin_panel/urls.py          |    4 +-
.../test/test_panels/second_panel/urls.py          |    4 +-
.../test/unit/api/rest/test_cinder.py              |    2 +-
.../test/unit/api/rest/test_config.py              |    2 +-
.../test/unit/api/rest/test_glance.py              |    2 +-
.../test/unit/api/rest/test_keystone.py            |    2 +-
.../test/unit/api/rest/test_network.py             |    4 +-
.../test/unit/api/rest/test_neutron.py             |   16 +-
.../test/unit/api/rest/test_nova.py                |    2 +-
.../test/unit/api/rest/test_policy.py              |   11 +-
.../test/unit/api/rest/test_swift.py               |    2 +-
.../test/unit/api/rest/test_utils.py               |    4 +-
openstack_dashboard/test/unit/api/test_neutron.py  | 1054 +++++++++++++-
openstack_dashboard/test/unit/usage/test_quotas.py |    4 +-
openstack_dashboard/test/urls.py                   |   20 +-
openstack_dashboard/urls.py                        |   20 +-
openstack_dashboard/usage/base.py                  |    2 +-
openstack_dashboard/usage/quotas.py                |    2 +-
openstack_dashboard/usage/tables.py                |    2 +-
openstack_dashboard/usage/views.py                 |    2 +-
openstack_dashboard/utils/config_types.py          |    4 +-
openstack_dashboard/views.py                       |    4 +-
.../add-networks-pagination-4c05d784998fafb2.yaml  |    5 +
...from-same-user-in-horizon-448baa6534a8a451.yaml |   11 +
...652_fix_policy_for_resume-a719efb23054c708.yaml |    6 +
...nge-keystone-default-role-3f95b6af11aed63b.yaml |    5 +
...ango-launch-instance-form-c6543e1d52786b79.yaml |    4 +-
.../notes/network_qos_rules-cd103f9383b6cdf9.yaml  |    8 +
.../source/locale/fr/LC_MESSAGES/releasenotes.po   |  280 ----
requirements.txt                                   |   18 +-
setup.cfg                                          |    1 +
tox.ini                                            |    2 +-
575 files changed, 11737 insertions(+), 15355 deletions(-)


Requirements updates
--------------------

diff --git a/requirements.txt b/requirements.txt
index 151359316..f1f245993 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -23,8 +23,8 @@ netaddr>=0.7.18 # BSD
-oslo.concurrency>=3.26.0 # Apache-2.0
-oslo.config>=5.2.0 # Apache-2.0
-oslo.i18n>=5.0.1 # Apache-2.0
-oslo.policy>=3.2.0 # Apache-2.0
-oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
-oslo.upgradecheck>=0.1.1 # Apache-2.0
-oslo.utils>=4.8.0 # Apache-2.0
-osprofiler>=2.3.0 # Apache-2.0
+oslo.concurrency>=4.5.0 # Apache-2.0
+oslo.config>=8.8.0 # Apache-2.0
+oslo.i18n>=5.1.0 # Apache-2.0
+oslo.policy>=3.11.0 # Apache-2.0
+oslo.serialization>=4.3.0 # Apache-2.0
+oslo.upgradecheck>=1.5.0 # Apache-2.0
+oslo.utils>=4.12.0 # Apache-2.0
+osprofiler>=3.4.2 # Apache-2.0
@@ -40 +40 @@ pytz>=2013.6 # MIT
-PyYAML>=3.12 # MIT
+PyYAML>=6.0 # MIT






More information about the Release-announce mailing list