[release-announce] horizon 14.0.0 (rocky)

no-reply at openstack.org no-reply at openstack.org
Thu Aug 30 14:18:29 UTC 2018


We are tickled pink to announce the release of:

horizon 14.0.0: OpenStack Dashboard

This release is part of the rocky release series.

Download the package from:

    https://tarballs.openstack.org/horizon/

For more details, please see below.

Changes in horizon 13.0.0.0rc1..14.0.0
--------------------------------------

c424b1a Imported Translations from Zanata
364b815 Revert "Network Topology graph "twitches""
e0133c2 Imported Translations from Zanata
e99e206 Imported Translations from Zanata
c9c9132 Restores deletion in flat network topology
aef9d0b Imported Translations from Zanata
f0c1fa1 Make generic group check work with admin table
ef21e65 Safer handling of return statement inside of OperationLogMiddleware
ad60941 Imported Translations from Zanata
cdd7235 Imported Translations from Zanata
d7b7bec Imported Translations from Zanata
a2bc5bc Imported Translations from Zanata
fd4b024 Update UPPER_CONSTRAINTS_FILE for stable/rocky
d6b2354 Update .gitreview for stable/rocky
4c9cf5f Hide default_cgsnapshot_type from cinder group types
633897a fix bug of fail to create volume type encryption from dashboard
446abc4 add dns_name and dns_domain into admin column
f7eefaa force plain text for header response
48c73d2 Fix typo on release note for bug/1226003
e1e5c79 Add Generic  Volume Groups release notes
74d75da Addressed TODO to change project_id to tenant_id
2e2ef6a Delete profiler object when request completes
73b4311 Add create domain action in angular domain panel
2fa872a Remove the redundant "required=True"
9e703ae Add DNS parameters to Floating IP panels
08e0f38 Fix image description field
aa7bbac Convert identity.users tests into mock
12af2d4 Adding identity ng-groups edit action
889f05f Drop horizon-openstack-tox-py35dj20 from .zuul.yaml
dadcea7 Imported Translations from Zanata
259648b Assign project role to the user when the user is created
fc810bc Adding identity ng-groups delete action
effc34f Adding identity ng-groups create action
e20882d Support can_edit_user and can_edit_role settings in Angularized panels
88fb018 Rework DEFAULT_SERVICE_REGIONS
4767fbd Fix log message formatting
a352308 Imported Translations from Zanata
bbfa562 [doc] Correct the wrong virtual environment folder name
6f1004b Add release notes link in README
946d15f Imported Translations from Zanata
7b48d51 Modify the 'tox.ini' file
b6d52b0 Support volume group when creating a volume
ef4d8d6 Show generic group info in volume and volume snapshot pages
47d14a4 integration test fixes
acaee4e Add delete action to network_qos panel
a9404d5 updated integration tests README.rst
6532be0 Imported Translations from Zanata
ce3c963 Imported Translations from Zanata
dc51fc5 Remove the "browser support" dead link in the doc
4e0ee57 Replace "derails" with "details" in the doc
fe4a1f4 Add Bandit non-voting job
9b6b559 Do not redirect to the /identity tab admin users on login.
a384dc5 Fix and reorganize tox env definitions
15574ca Integration test fixes
49479a6 Declare django lower bound
3a579e6 Don't remove last char from profiling cookie path
0a584d6 Fix tox py27integration environment
25f1e90 Imported Translations from Zanata
1ca8555 Fix styling issues in networktopologycommon.js
a2a720d Imported Translations from Zanata
d257ddb Imported Translations from Zanata
0796adb Change catch type for workflow unregister
a98d6d3 Imported Translations from Zanata
50efcb2 Imported Translations from Zanata
32d463a Generic volume group support
0258199 Fixed dropdown menu locator and active class for user & project
ee95bf1 Fix selenuim-headless tests
1f80d94 Use default Django test runner instead of nose
0bc2f1b Add python3 django 1.11 job instead of django 2.0 job
4a3ed7e Imported Translations from Zanata
a59b2e1 fix tox python3 overrides
b369012 Sync Django version with global requirements
8ce6b37 Remove Cinder API v1 compatibility
69f42ae doc: Update apache configuration for WSGI
edb1aab Allow keypairs to contain a underscore
61a79a9 Show WEBSSO disclaimer only when it is needed
e98d7e6 Image panel: check instance create policy for 'Launch' button
54cfaf0 Imported Translations from Zanata
cf06d27 Get flavor list sorted when launching instance
b84da5e Fix issue with uploading image to glance on Python3
6517caf Imported Translations from Zanata
71c4880 Sort image list by name when launch instance
af4811b Imported Translations from Zanata
b1d5758 Heat projects have been migrated to Storyboard
b9a1c44 Update attach_volume and detach_volume policy rules
8e39039 Fix mismatched attach_volume rule
a3cc062 [trivial] Fixes a typo
4776428 Add reserved status key word to horizon
2a1159b Imported Translations from Zanata
0ca736e Create new wsgi.py file and deprecate old file
3190a5e Convert admin.networks.ports tests into mock
5e012b4 Convert admin.networks tests into mock
8a26bed Convert admin.networks.agents tests into mock
22deb55 Convert admin.flavors tests into mock
f9f01d2 Convert admin.overview tests into mock
49470d1 Convert admin.networks.subnets tests into mock
518621f Add a link to the documentation into the README.rst
26fb8f2 Imported Translations from Zanata
8230f2c doc: Fix doc build failure due to dropped UpdateAction
d16ed45 Support "Get me a network" in launch instance
bff96f0 Imported Translations from Zanata
e0e81e2 Add server groups and server group members quota management in Horizon
2c0de43 Imported Translations from Zanata
2280043 Imported Translations from Zanata
0f95d4e Imported Translations from Zanata
df780f2 quota: Merge tenant_limit_usages into tenant_quota_usages
2e0a361 Imported Translations from Zanata
09f73b8 Trivial: Update pypi url to new url
5fafd47 Imported Translations from Zanata
fa20420 Bug Fix :  Local variable 'quota_display' referenced before assignment
96e7c33 Imported Translations from Zanata
850288b Imported Translations from Zanata
2d69444 Add support for application credentials
ad25568 Standardize the login form button text
dd5f173 Convert identity.projects tests into mock
93bb571 Replace all mentions of get_identity_providers with get_identity_provider
52550be Convert identity.roles tests into mock
a61bbec Convert identity.mappings tests into mock
794b101 Convert identity.identity_providers tests into mock
5d46738 Convert identity.domains tests into mock
0a149af Convert identity.groups tests into mock
1bb050a Imported Translations from Zanata
70b9d25 Drop Flavor Edit completely
d175d33 Watch field item changes
3adff90 Add "Edit Port Security Groups" action
ff5b622 Add instance interfaces tab for easy security group edit
eea7626 Imported Translations from Zanata
58019a7 Disable mox usage by default in test helper
06ca3c8 quota: Move targets argument to get_disabled_quotas
f897837 usage: Categorize Limit Summary by service
b5671a2 usage: Add network resources to Limit Summary
b0dc533 usage: move field-specific logic from template to code
7fabda7 usage: Use tenant_quota_usages() for Limit Summary
0a0fa4c Imported Translations from Zanata
656490f Add identity API version discovery
e362626 Allow OVA upload for images
e1ba5fd Imported Translations from Zanata
e5dae9b Network Topology graph "twitches"
7f3fc39 Imported Translations from Zanata
500acb4 Move common SG workflow classes into separate module
e50a69d Workflow: Make steps pluggable via horizon plugin config
196ce77 Cinder REST API test: Make list_extensions test work properly
377422b Delete the deprecated Edit Flavor feature
f6f39d8 Remove deprecated table.UpdateAction class
3c55bce Add links to trunk parent and subports
34732d2 Redirect back if deleting from image details
3af1d42 Fix navigation from admin/trunks
d2963fc Imported Translations from Zanata
0887722 Sort nova availability zones by name
986e902 Exclude nova-network quotas properly
f61b3fd Modularize workflow action in quota defaults
386a5b6 Make babel_extract_angular work with python 3
f0f028c Fix E402 warnings
11eb4e9 Fix W503 warnings
08e4cf5 Imported Translations from Zanata
1e2dfc4 Use microversion 2.60 when attaching a multiattach volume
f545272 Fix pep8 errors
6f37943 A description can now be added to a security rule
c58e5b8 Use items per page setting on Angular tables
061f4b0 Imported Translations from Zanata
f783b4e Imported Translations from Zanata
3051dee Ensure to show security groups only from current project
4b304f8 Remove remaining mox usage in tests converted to mock
7b7ace0 Simplify APIMockTestCase
dd0eba2 Support simple FIP disassociation (with FIP release)
886852f Rename pull_catalog args from version to branch
0c39d76 Make tests output more verbose
c1eab3d Imported Translations from Zanata
d0beeb7 Pass whole selected entity to deleteEntity callback
9ca9b5c Imported Translations from Zanata
f343212 Improve mocking in REST API tests (test_network)
dc9a6a3 Fix unauthorized exception when using member user to access angular users panel
c3d6036 Cleanup Plugin Registry
da9bfa5 Update lower-constraints to requirements.txt
6aa3c66 Imported Translations from Zanata
b0fccd3 The disk format is selected automatically when using file to create image
2ad84cb Support description for instance update/rebuild
fd67e0f Only display the bootable volume snapshots when creating instance
d00fd5b Imported Translations from Zanata
8275d67 Reproduce navigations on refreshing ngdetails view
8220df7 Update supported browsers list
68167ca Improve mocking in REST API tests (test_neutron)
c5cd0b2 Switch Neutron/Network API tests to mock
b34dcc8 Imported Translations from Zanata
65f43d2 Improve mocking in REST API tests (test_nova)
2ad9f81 Tabbity quota default update workflow
86709f8 Updated from global requirements
fdd3c8b add lower-constraints job
eac3eae Follow the new PTI for document build
71993e3 Drop deprecated settings
058c306 Imported Translations from Zanata
63ab360 Delete choice of image source when file is the only option
352f536 Imported Translations from Zanata
cc368d4 Convert admin.defaults tests into mock
482e725 Avoid popup blocker after key-pair creation
3e409d8 Improve mocking in REST API tests (test_swift)
f819633 Add asterisk to conditionally required fields
0659f9a Drop trove/sahara settings from horizon repo
dd7e281 Improve mocking in REST API tests (test_keystone)
474de20 Switch test_quotas to mock
fde0095 Imported Translations from Zanata
f588b4e Fix wrong setting name for SHOW_KEYSTONE_V2_RC
baa0d50 Imported Translations from Zanata
64b67ac Update the doc links to the newest ones
d7cab93 Sahara projects have been migrated to Storyboard
1f93e64 Add plugin xstatic modules support
d62d6e3 Convert project tests into mock: fip/sg/key_pairs/topology
55ef583 Convert admin.hypervisors.compute tests into mock
38c51a9 Imported Translations from Zanata
940ff11 Add angular server group details page
37647dd Add angular delete server groups action
a5f5962 Convert admin.instances tests into mock
68fc1c0 Convert admin.metadata_defs tests into mock
324dce5 Convert admin.info tests into mock
6e29fdd Imported Translations from Zanata
f494c6f Fix Angular errors in openstack_auth
df857f0 Add angular create server group action
89987c6 Load networks and security groups in parallel
e02a192 project: Tabbify project quota update
a257b52 project: Split quota update into a separate workflow
0efbb37 Show an asterisk mark for 'switched' conditional filed(required=Flase)
a180baf Update RHEL/CentOS horizon install instruction
5e3fc94 Update Django versions in horizon requirements
a70e1f4 Convert admin.snapshots tests into mock
b122641 Speed up quotas fetching using futurist library
d01a505 Updated from global requirements
56ae087 Refactor futurist calls
dfa6846 Improve mocking in REST API tests (test_glance)
002eb5f Switch project/admin routers tests to mock
c4ead86 Remove deprecated fix_auth_url_version function
58e0194 Imported Translations from Zanata
9fab803 Updated from global requirements
60a78e1 Add swift object copy function
f25b924 Convert admin.hypervisors tests into mock
535ecad Fix layout of dialogs for Angularized users panel
0cf4937 Make size of Angular modal form specifiable
2e3e68a Switch horizon UT from mox to mock
64d5ba8 Improve mocking in REST API tests (test_cinder)
a987c03 TabGroup: Make tabs pluggable via horizon plugin config
ec14dd9 Imported Translations from Zanata
d885d9e Update tox.ini
4034f92 Drop FWaaS related SCSS entries
a01dfc4 Updated from global requirements
ce283b4 Add angular server groups panel
e8f1f54 Switch project neworks.ports to mock
835a4bb Update upper-constraints consumption
a17a81a Imported Translations from Zanata
f4f4972 Tabs may not appear in angular instance wizard
5d81a96 Update bug trackers of octavia/lbaas-dashboard
dd560d9 Convert project tests into mock: api_access/backups/overview/snapshots
b60bf6d Imported Translations from Zanata
4c084ad Convert admin.floating_ips tests into mock
fb9ef26 Allow mox-free horizon plugins to consume horizon test helper
f8150ab Convert project tests into mock: cgroups/cg_snapshots
4928df7 Convert admin volume_types tests into mock
4a31e6e Switch project networks tests to mock
cc04dda Switch project.networks.subnets.tests to mock
2e66084 Updated from global requirements
a72963b Drop Django <= 1.10 support
4dd6037 Fix python 3 related test failures
d936ba4 Suppress unnecessary logging output in UTs
b017879 Django2: Use new custom template loader interface
3ecda5a django2: adopt New-style middleware
be197d1 django2: Drop SessionAuthenticationMiddleware
18684e1 django2: Fix 3-tuple ImproperlyConfigured error
4660b9d Imported Translations from Zanata
38ebec5 Convert admin.aggregates tests into mock
3233de8 Add same launch instance error handling as image to instance
61c7473 Update docstring of test.helpers.create_mocks
f4f072f Imported Translations from Zanata
b407b07 Start using create_mocks in dashboards/admin/volumes/tests.py
ce984d0 Imported Translations from Zanata
7cb2355 Add a warning to user: Unable to remove availability zone from host aggregate
90e8c16 Imported Translations from Zanata
e049609 Hide button "delete subnet" on the network topology for shared networks
28fd6b2 Switch project instances tests to mock
7aadd7e Use load-edit directive in import key pair
6667629 Provide a button to center the network topology
c32b5c1 Add Esperanto to the list of languages
6a56497 Add assert_mock_multiple_calls_with_same_arguments test helper
61ea0b6 Make create_mocks compatible with create_stubs
b70b4e3 Updated from global requirements
ebc8d8a Imported Translations from Zanata
21ffefa docs: Update help text for encryption provider
d3883a1 Mark other API related tests with mox free
5a82ff9 Switch Keystone API tests to mock
1a252cb django2: is_authenticated/is_anonymous is now property only
826720a django2: Replace assignment_tag with simple_tag
e477eaf django2: Replace django.core.urlresolves with django.urls
76fa01b Drop old django tests
5c5159b Switch swift API tests to mock
06a63b4 Add option --version to Zanata pull_catalog
a44e67f Imported Translations from Zanata
79ae866 Switch Nova API tests to mock
51378f7 Minor fix on mock migrated tests
1a2c957 Provide a way to disable mox completely
5a68a26 Updated from global requirements
c687127 Imported Translations from Zanata
a59ebd7 Replaces yaml.load() with yaml.safe_load()
974d05c Imported Translations from Zanata
f2bff13 Move test template to more proper directory
0cb96af Admin State is always UP whatever whether router Admin State is checked or not
18d3d5d Imported Translations from Zanata
0039183 Imported Translations from Zanata
b068d91 Cache neutron extension list across requests
10ebb64 Update reno for stable/queens
30aba39 Imported Translations from Zanata
5bf92e8 Fix typos in horizon
00ecfcd Filtering networks or routers by non-existing tenants return an empty list
a965f42 Tabbify quota default panel
dc0bce6 Fix collectstatic in case of theme customization
fc64ba9 Enable more hacking-extensions
541426e Fixed popover table colour change on hover
736312b Support specified security groups when creating a port
88d78a4 Refactor the create port form to workflow
7d9dd1c [doc] Add the missing 'API Access' for project tab
e97623e table: Show checkbox only when there is BatchAction
61039b0 operation_log: add QUERY_STRING to request_url
ab57c09 Fix batch delete key pairs button isn't disabled when the key pair has deleted


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

.gitignore                                         |    1 +
.gitreview                                         |    1 +
.zuul.yaml                                         |   56 +-
README.rst                                         |    6 +-
bindep.txt                                         |    5 +
.../figures/create_volume_type_encryption.png      |  Bin 87359 -> 161109 bytes
horizon/base.py                                    |   42 +-
horizon/browsers/views.py                          |    3 +
horizon/conf/default.py                            |    3 -
horizon/decorators.py                              |    4 +-
horizon/forms/fields.py                            |   10 +-
horizon/loaders.py                                 |   38 +-
horizon/locale/ca/LC_MESSAGES/django.po            |    9 +-
horizon/locale/cs/LC_MESSAGES/django.po            |   21 +-
horizon/locale/cs/LC_MESSAGES/djangojs.po          |    9 +-
horizon/locale/de/LC_MESSAGES/django.po            |   36 +-
horizon/locale/de/LC_MESSAGES/djangojs.po          |   14 +-
horizon/locale/en_AU/LC_MESSAGES/django.po         |   21 +-
horizon/locale/en_AU/LC_MESSAGES/djangojs.po       |   11 +-
horizon/locale/en_GB/LC_MESSAGES/django.po         |   29 +-
horizon/locale/en_GB/LC_MESSAGES/djangojs.po       |   14 +-
horizon/locale/eo/LC_MESSAGES/django.po            |   39 +-
horizon/locale/eo/LC_MESSAGES/djangojs.po          |   16 +-
horizon/locale/es/LC_MESSAGES/django.po            |   27 +-
horizon/locale/es/LC_MESSAGES/djangojs.po          |   12 +-
horizon/locale/es_MX/LC_MESSAGES/django.po         |   11 +-
horizon/locale/fi_FI/LC_MESSAGES/django.po         |    8 +-
horizon/locale/fr/LC_MESSAGES/django.po            |   40 +-
horizon/locale/fr/LC_MESSAGES/djangojs.po          |   17 +-
horizon/locale/id/LC_MESSAGES/django.po            |   32 +-
horizon/locale/id/LC_MESSAGES/djangojs.po          |   12 +-
horizon/locale/it/LC_MESSAGES/django.po            |   19 +-
horizon/locale/it/LC_MESSAGES/djangojs.po          |    9 +-
horizon/locale/ja/LC_MESSAGES/django.po            |   27 +-
horizon/locale/ja/LC_MESSAGES/djangojs.po          |   15 +-
horizon/locale/ko_KR/LC_MESSAGES/django.po         |   30 +-
horizon/locale/ko_KR/LC_MESSAGES/djangojs.po       |   17 +-
horizon/locale/nl_NL/LC_MESSAGES/django.po         |   11 +-
horizon/locale/nl_NL/LC_MESSAGES/djangojs.po       |   11 +-
horizon/locale/pa_IN/LC_MESSAGES/django.po         |   11 +-
horizon/locale/pa_IN/LC_MESSAGES/djangojs.po       |   15 +-
horizon/locale/pl_PL/LC_MESSAGES/django.po         |   23 +-
horizon/locale/pl_PL/LC_MESSAGES/djangojs.po       |   11 +-
horizon/locale/pt/LC_MESSAGES/django.po            |    9 +-
horizon/locale/pt_BR/LC_MESSAGES/django.po         |   32 +-
horizon/locale/pt_BR/LC_MESSAGES/djangojs.po       |   14 +-
horizon/locale/ru/LC_MESSAGES/django.po            |   36 +-
horizon/locale/ru/LC_MESSAGES/djangojs.po          |   36 +-
horizon/locale/sl_SI/LC_MESSAGES/django.po         |   11 +-
horizon/locale/tr_TR/LC_MESSAGES/django.po         |   21 +-
horizon/locale/tr_TR/LC_MESSAGES/djangojs.po       |   11 +-
horizon/locale/zh_CN/LC_MESSAGES/django.po         |   36 +-
horizon/locale/zh_CN/LC_MESSAGES/djangojs.po       |   18 +-
horizon/locale/zh_TW/LC_MESSAGES/django.po         |   19 +-
horizon/locale/zh_TW/LC_MESSAGES/djangojs.po       |   11 +-
horizon/management/commands/pull_catalog.py        |    8 +-
horizon/middleware/base.py                         |   15 +-
horizon/middleware/operation_log.py                |   21 +-
horizon/notifications.py                           |    4 +-
horizon/site_urls.py                               |    2 +-
horizon/static/framework/conf/conf.js              |    3 +
.../conf/resource-type-registry.service.js         |   33 +
.../framework/util/file/text-download.service.js   |    1 -
.../util/navigations/navigations.module.js         |   19 +
.../util/navigations/navigations.service.js        |  109 +
.../util/navigations/navigations.service.spec.js   |  163 +
horizon/static/framework/util/util.module.js       |    1 +
.../details/routed-details-view.controller.js      |   46 +-
.../details/routed-details-view.controller.spec.js |   33 +-
.../framework/widgets/form/modal-form.service.js   |    2 +-
.../widgets/modal/delete-modal.service.js          |    3 +-
.../widgets/modal/delete-modal.service.spec.js     |   10 +-
.../widgets/property/hz-field.directive.js         |    8 +-
.../table/hz-dynamic-table.directive.spec.js       |   11 +
.../widgets/table/hz-dynamic-table.spec.js         |   11 +
.../widgets/table/hz-table-footer.controller.js    |   33 +
.../widgets/table/hz-table-footer.directive.js     |    1 +
.../framework/widgets/table/hz-table-footer.html   |    7 +-
.../static/framework/widgets/table/pagination.html |   13 +
.../static/framework/widgets/table/table.module.js |    8 +-
.../static/framework/widgets/table/table.spec.js   |   35 +-
.../framework/widgets/wizard/wizard.controller.js  |    4 +-
.../static/framework/widgets/wizard/wizard.spec.js |   15 +-
horizon/static/horizon/js/horizon.forms.js         |    5 +
.../horizon/js/horizon.tables_inline_edit.js       |  277 --
horizon/static/horizon/js/horizon.tabs.js          |    2 -
horizon/tables/__init__.py                         |    2 -
horizon/tables/actions.py                          |   67 +-
horizon/tables/base.py                             |   27 +-
horizon/tables/views.py                            |    4 +-
horizon/tabs/base.py                               |   59 +-
horizon/templates/auth/_login_form.html            |    5 +-
.../templates/horizon/common/_limit_summary.html   |   63 +-
.../common/_workflow_step_update_members.html      |    2 +-
horizon/templatetags/branding.py                   |    4 +-
horizon/templatetags/horizon.py                    |    6 +-
horizon/templatetags/shellfilter.py                |    6 +-
horizon/test/firefox_binary.py                     |    4 +-
horizon/test/helpers.py                            |   89 +-
horizon/test/settings.py                           |   25 +-
horizon/test/templates/angular.html                |    0
horizon/test/templates/base.html                   |    1 -
horizon/test/unit/forms/test_fields.py             |    2 +-
horizon/test/unit/middleware/test_base.py          |   24 +-
horizon/test/unit/middleware/test_operation_log.py |   47 +-
horizon/test/unit/tables/test_tables.py            |  266 +-
horizon/test/unit/tabs/test_tabs.py                |   26 +-
horizon/test/unit/test_base.py                     |   18 +-
horizon/test/unit/test_messages.py                 |    6 +-
horizon/test/unit/workflows/test_workflows.py      |   57 +-
horizon/test/urls.py                               |    3 +-
horizon/themes.py                                  |   50 +-
horizon/utils/babel_extract_angular.py             |    3 +-
horizon/utils/file_discovery.py                    |    8 +-
horizon/utils/memoized.py                          |    5 +-
horizon/workflows/base.py                          |   45 +-
lower-constraints.txt                              |  160 +
openstack_auth/backend.py                          |    2 +-
openstack_auth/forms.py                            |    2 -
openstack_auth/locale/de/LC_MESSAGES/django.po     |   15 +-
openstack_auth/locale/en_GB/LC_MESSAGES/django.po  |    6 +-
openstack_auth/locale/eo/LC_MESSAGES/django.po     |   22 +-
openstack_auth/locale/fr/LC_MESSAGES/django.po     |   18 +-
openstack_auth/locale/id/LC_MESSAGES/django.po     |   11 +-
openstack_auth/locale/ko_KR/LC_MESSAGES/django.po  |    6 +-
openstack_auth/locale/pt_BR/LC_MESSAGES/django.po  |    6 +-
openstack_auth/locale/ru/LC_MESSAGES/django.po     |   80 +
openstack_auth/locale/zh_CN/LC_MESSAGES/django.po  |    6 +-
openstack_auth/plugin/base.py                      |    4 +-
openstack_auth/user.py                             |   79 +-
openstack_auth/utils.py                            |   70 +-
openstack_auth/views.py                            |   13 +-
openstack_dashboard/api/base.py                    |   10 +-
openstack_dashboard/api/cinder.py                  |  222 +-
openstack_dashboard/api/glance.py                  |   90 +-
openstack_dashboard/api/keystone.py                |   84 +-
openstack_dashboard/api/microversions.py           |    7 +-
openstack_dashboard/api/neutron.py                 |  137 +-
openstack_dashboard/api/nova.py                    |   85 +-
openstack_dashboard/api/rest/cinder.py             |    1 -
openstack_dashboard/api/rest/glance.py             |   81 +-
openstack_dashboard/api/rest/keystone.py           |    8 +-
openstack_dashboard/api/rest/network.py            |    8 +-
openstack_dashboard/api/rest/neutron.py            |   20 +-
openstack_dashboard/api/rest/nova.py               |   41 +
openstack_dashboard/api/rest/utils.py              |    2 +-
openstack_dashboard/api/swift.py                   |    5 +-
openstack_dashboard/context_processors.py          |    4 +-
.../contrib/developer/profiler/middleware.py       |   25 +-
.../dashboards/admin/aggregates/forms.py           |   11 +-
.../dashboards/admin/aggregates/views.py           |    2 +-
.../dashboards/admin/defaults/tables.py            |   91 +-
.../dashboards/admin/defaults/tabs.py              |   65 +-
.../dashboards/admin/defaults/views.py             |   12 +-
.../dashboards/admin/defaults/workflows.py         |  178 +-
.../dashboards/admin/flavors/tables.py             |   23 +-
.../dashboards/admin/flavors/views.py              |   18 +-
.../dashboards/admin/flavors/workflows.py          |  162 +-
.../dashboards/admin/floating_ips/forms.py         |    2 +-
.../dashboards/admin/floating_ips/tables.py        |    3 +-
.../dashboards/admin/floating_ips/views.py         |    4 +-
.../dashboards/admin/hypervisors/compute/forms.py  |    2 +-
.../dashboards/admin/hypervisors/compute/views.py  |    4 +-
.../dashboards/admin/hypervisors/urls.py           |    2 +-
.../dashboards/admin/images/views.py               |    8 +-
.../dashboards/admin/info/tables.py                |    6 +-
.../dashboards/admin/instances/forms.py            |    2 +-
.../dashboards/admin/instances/tables.py           |   16 +-
.../dashboards/admin/instances/views.py            |  132 +-
.../dashboards/admin/metadata_defs/forms.py        |    2 +-
.../dashboards/admin/metadata_defs/views.py        |    4 +-
.../dashboards/admin/networks/agents/forms.py      |    2 +-
.../dashboards/admin/networks/agents/tables.py     |    2 +-
.../dashboards/admin/networks/agents/views.py      |    2 +-
.../dashboards/admin/networks/forms.py             |    2 +-
.../dashboards/admin/networks/ports/forms.py       |   82 -
.../dashboards/admin/networks/ports/tables.py      |    2 +-
.../dashboards/admin/networks/ports/views.py       |   49 +-
.../dashboards/admin/networks/ports/workflows.py   |   37 +-
.../dashboards/admin/networks/subnets/tables.py    |    4 +-
.../dashboards/admin/networks/subnets/views.py     |    2 +-
.../dashboards/admin/networks/subnets/workflows.py |    2 +-
.../networks/templates/networks/ports/_create.html |    7 -
.../networks/templates/networks/ports/create.html  |    7 -
.../dashboards/admin/networks/urls.py              |    4 +-
.../dashboards/admin/networks/views.py             |    8 +-
.../dashboards/admin/networks/workflows.py         |    2 +-
.../dashboards/admin/routers/forms.py              |    2 +-
.../dashboards/admin/routers/views.py              |    8 +-
.../dashboards/admin/snapshots/forms.py            |    2 +-
.../dashboards/admin/snapshots/tabs.py             |    2 +-
.../dashboards/admin/snapshots/views.py            |    4 +-
.../dashboards/admin/trunks/panel.py               |    8 +-
.../dashboards/admin/volume_types/extras/forms.py  |    2 +-
.../dashboards/admin/volume_types/extras/tables.py |    2 +-
.../dashboards/admin/volume_types/extras/views.py  |    4 +-
.../dashboards/admin/volume_types/forms.py         |   16 +-
.../admin/volume_types/qos_specs/forms.py          |    2 +-
.../admin/volume_types/qos_specs/tables.py         |    2 +-
.../admin/volume_types/qos_specs/views.py          |    2 +-
.../dashboards/admin/volume_types/tables.py        |    2 +-
.../_create_volume_type_encryption.html            |    2 +-
.../_update_volume_type_encryption.html            |    2 +-
.../dashboards/admin/volume_types/urls.py          |    4 +-
.../dashboards/admin/volume_types/views.py         |    4 +-
.../dashboards/admin/volumes/forms.py              |    4 +-
.../dashboards/admin/volumes/views.py              |    4 +-
.../identity/application_credentials/__init__.py   |    0
.../identity/application_credentials/forms.py      |  125 +
.../identity/application_credentials/panel.py      |   34 +
.../identity/application_credentials/tables.py     |   84 +
.../templates/application_credentials/_create.html |   43 +
.../application_credentials/_detail_overview.html  |   39 +
.../application_credentials/_success.html          |   35 +
.../application_credentials/clouds.yaml.template   |   34 +
.../templates/application_credentials/create.html  |    7 +
.../templates/application_credentials/detail.html  |   17 +
.../templates/application_credentials/index.html   |   11 +
.../application_credentials/openrc.sh.template     |    9 +
.../templates/application_credentials/success.html |    7 +
.../identity/application_credentials/urls.py       |   33 +
.../identity/application_credentials/views.py      |  195 +
.../dashboards/identity/domains/tables.py          |    2 +-
.../dashboards/identity/domains/views.py           |    2 +-
.../dashboards/identity/domains/workflows.py       |    2 +-
.../dashboards/identity/groups/tables.py           |    6 +-
.../dashboards/identity/groups/views.py            |    4 +-
.../identity_providers/protocols/tables.py         |    2 +-
.../identity/identity_providers/protocols/views.py |    2 +-
.../dashboards/identity/identity_providers/urls.py |    2 +-
.../identity/identity_providers/views.py           |    4 +-
.../dashboards/identity/mappings/views.py          |    4 +-
.../dashboards/identity/projects/tables.py         |    4 +-
.../dashboards/identity/projects/urls.py           |    2 +
.../dashboards/identity/projects/views.py          |   39 +-
.../dashboards/identity/projects/workflows.py      |  284 +-
.../dashboards/identity/roles/views.py             |    4 +-
.../identity/domains/actions/actions.module.js     |   54 +
.../domains/actions/actions.module.spec.js         |   24 +
.../identity/domains/actions/create.service.js     |   76 +
.../domains/actions/create.service.spec.js         |   90 +
.../domains/actions/workflow/info.help.html        |    1 +
.../domains/actions/workflow/workflow.service.js   |  112 +
.../actions/workflow/workflow.service.spec.js      |   42 +
.../dashboard/identity/domains/domains.module.js   |    4 +-
.../identity/groups/actions/actions.module.js      |   88 +
.../groups/actions/create.action.service.js        |  113 +
.../groups/actions/create.action.service.spec.js   |  132 +
.../groups/actions/delete.action.service.js        |  120 +
.../groups/actions/delete.action.service.spec.js   |  157 +
.../identity/groups/actions/edit.action.service.js |  106 +
.../groups/actions/edit.action.service.spec.js     |  101 +
.../dashboard/identity/groups/groups.module.js     |   16 +-
.../static/dashboard/identity/groups/panel.html    |    3 +-
.../roles/actions/create.action.service.js         |   10 +-
.../roles/actions/create.action.service.spec.js    |   40 +-
.../roles/actions/delete.action.service.js         |    7 +-
.../roles/actions/delete.action.service.spec.js    |    8 +-
.../identity/roles/actions/edit.action.service.js  |   10 +-
.../roles/actions/edit.action.service.spec.js      |    2 +
.../users/actions/create.action.service.js         |   21 +-
.../users/actions/create.action.service.spec.js    |   41 +-
.../users/actions/delete.action.service.js         |    5 +-
.../users/actions/delete.action.service.spec.js    |    6 +-
.../users/actions/disable.action.service.js        |    1 +
.../users/actions/disable.action.service.spec.js   |    3 +
.../users/actions/enable.action.service.js         |    1 +
.../users/actions/enable.action.service.spec.js    |    3 +
.../users/actions/password.action.service.js       |    5 +-
.../users/actions/password.action.service.spec.js  |    3 +
.../users/actions/update.action.service.js         |    5 +-
.../users/actions/update.action.service.spec.js    |    3 +
.../users/actions/workflow/workflow.service.js     |   69 +-
.../users/actions/workflow/workflow.spec.js        |    8 +-
.../dashboard/identity/users/users.module.js       |    1 +
.../dashboard/identity/users/users.service.js      |   21 +-
.../dashboard/identity/users/users.service.spec.js |   18 +-
.../dashboards/identity/users/views.py             |    4 +-
.../dashboards/project/api_access/views.py         |    2 +-
.../dashboards/project/backups/forms.py            |    2 +-
.../dashboards/project/backups/tables.py           |    2 +-
.../dashboards/project/backups/tabs.py             |    2 +-
.../dashboards/project/backups/views.py            |    4 +-
.../dashboards/project/cg_snapshots/forms.py       |    2 +-
.../dashboards/project/cg_snapshots/panel.py       |   24 +
.../dashboards/project/cg_snapshots/tabs.py        |    2 +-
.../dashboards/project/cg_snapshots/views.py       |   14 +-
.../dashboards/project/cgroups/forms.py            |    2 +-
.../dashboards/project/cgroups/panel.py            |   24 +
.../dashboards/project/cgroups/tabs.py             |    2 +-
.../templates/cgroups/_snapshot_limits.html        |   12 +-
.../dashboards/project/cgroups/views.py            |   24 +-
.../dashboards/project/floating_ips/forms.py       |   21 +-
.../dashboards/project/floating_ips/tables.py      |   12 +-
.../dashboards/project/floating_ips/views.py       |    2 +-
.../dashboards/project/floating_ips/workflows.py   |    2 +-
.../dashboards/project/images/images/forms.py      |  100 +-
.../dashboards/project/images/images/tables.py     |    9 +-
.../dashboards/project/images/images/views.py      |   14 +-
.../dashboards/project/images/snapshots/forms.py   |    2 +-
.../dashboards/project/images/snapshots/views.py   |    4 +-
.../dashboards/project/images/urls.py              |    8 +-
.../dashboards/project/instances/forms.py          |   80 +-
.../project/instances/interfaces_tables.py         |   62 +
.../dashboards/project/instances/tables.py         |  158 +-
.../dashboards/project/instances/tabs.py           |   31 +-
.../templates/instances/_detail_overview.html      |    4 +-
.../templates/instances/_disassociate.html         |   28 +
.../instances/_edit_security_group_help.html       |   15 +
.../templates/instances/_flavors_and_quotas.html   |   40 +-
.../templates/instances/disassociate.html          |    7 +
.../dashboards/project/instances/urls.py           |    6 +-
.../dashboards/project/instances/utils.py          |   22 +-
.../dashboards/project/instances/views.py          |  306 +-
.../project/instances/workflows/__init__.py        |    3 +
.../project/instances/workflows/create_instance.py |   18 +-
.../project/instances/workflows/update_instance.py |   90 +-
.../project/instances/workflows/update_port.py     |   31 +
.../dashboards/project/key_pairs/tables.py         |    4 +-
.../dashboards/project/key_pairs/views.py          |    4 +-
.../dashboards/project/network_qos/panel.py        |    7 +-
.../templates/network_topology/_graph_view.html    |    3 +
.../network_topology/client_side/_balloon_net.html |    2 +
.../templates/network_topology/index.html          |   17 +
.../dashboards/project/network_topology/views.py   |   34 +-
.../dashboards/project/networks/forms.py           |    4 +-
.../extensions/allowed_address_pairs/forms.py      |    2 +-
.../extensions/allowed_address_pairs/tables.py     |    2 +-
.../extensions/allowed_address_pairs/views.py      |    2 +-
.../dashboards/project/networks/ports/forms.py     |  220 -
.../dashboards/project/networks/ports/sg_base.py   |   78 +
.../dashboards/project/networks/ports/tables.py    |    2 +-
.../dashboards/project/networks/ports/views.py     |   99 +-
.../dashboards/project/networks/ports/workflows.py |  271 +-
.../dashboards/project/networks/subnets/tables.py  |    4 +-
.../dashboards/project/networks/subnets/views.py   |    2 +-
.../project/networks/subnets/workflows.py          |    2 +-
.../dashboards/project/networks/tables.py          |   21 +-
.../networks/templates/networks/ports/_create.html |   11 -
.../networks/ports/_create_port_help.html          |    8 +
.../networks/templates/networks/ports/create.html  |    7 -
.../dashboards/project/networks/urls.py            |    4 +-
.../dashboards/project/networks/views.py           |    9 +-
.../dashboards/project/networks/workflows.py       |    4 +-
.../routers/extensions/extraroutes/forms.py        |    2 +-
.../routers/extensions/extraroutes/tables.py       |    6 +-
.../routers/extensions/extraroutes/views.py        |    2 +-
.../dashboards/project/routers/forms.py            |    9 +-
.../dashboards/project/routers/ports/forms.py      |    6 +-
.../dashboards/project/routers/ports/tables.py     |    2 +-
.../dashboards/project/routers/ports/tabs.py       |    2 +-
.../dashboards/project/routers/ports/views.py      |    2 +-
.../dashboards/project/routers/tables.py           |    2 +-
.../dashboards/project/routers/views.py            |    4 +-
.../dashboards/project/security_groups/forms.py    |   28 +-
.../dashboards/project/security_groups/tables.py   |   31 +-
.../dashboards/project/security_groups/views.py    |    4 +-
.../dashboards/project/server_groups/__init__.py   |    0
.../dashboards/project/server_groups/panel.py      |   41 +
.../dashboards/project/server_groups/urls.py       |   22 +
.../dashboards/project/snapshots/forms.py          |    2 +-
.../dashboards/project/snapshots/tables.py         |   29 +-
.../dashboards/project/snapshots/tabs.py           |    5 +-
.../templates/snapshots/_detail_overview.html      |    6 +
.../dashboards/project/snapshots/views.py          |   35 +-
.../containers/check-copy-destination.directive.js |  132 +
.../check-copy-destination.directive.spec.js       |  135 +
.../project/containers/copy-object-controller.js   |   36 +
.../containers/copy-object-controller.spec.js      |   43 +
.../project/containers/copy-object-modal.html      |  106 +
.../containers/objects-row-actions.service.js      |   96 +
.../containers/objects-row-actions.service.spec.js |  119 +-
.../launch-instance/keypair/create-keypair.html    |    2 +-
.../keypair/import-keypair.controller.js           |    1 +
.../launch-instance/keypair/import-keypair.html    |   16 +-
.../launch-instance-model.service.js               |   17 +-
.../launch-instance-model.service.spec.js          |    7 +-
.../launch-instance/source/source.controller.js    |    3 +-
.../dashboards/project/trunks/panel.py             |    8 +-
.../dashboards/project/vg_snapshots/__init__.py    |    0
.../dashboards/project/vg_snapshots/forms.py       |   75 +
.../dashboards/project/vg_snapshots/panel.py       |   49 +
.../dashboards/project/vg_snapshots/tables.py      |  141 +
.../dashboards/project/vg_snapshots/tabs.py        |   34 +
.../templates/vg_snapshots/_create.html            |    9 +
.../templates/vg_snapshots/_detail_overview.html   |   50 +
.../templates/vg_snapshots/create.html             |    7 +
.../dashboards/project/vg_snapshots/urls.py        |   25 +
.../dashboards/project/vg_snapshots/views.py       |  158 +
.../dashboards/project/volume_groups/__init__.py   |    0
.../dashboards/project/volume_groups/forms.py      |  198 +
.../dashboards/project/volume_groups/panel.py      |   48 +
.../dashboards/project/volume_groups/tables.py     |  190 +
.../dashboards/project/volume_groups/tabs.py       |   34 +
.../templates/volume_groups/_clone_group.html      |    9 +
.../templates/volume_groups/_create_snapshot.html  |   10 +
.../templates/volume_groups/_delete.html           |    9 +
.../templates/volume_groups/_detail_overview.html  |   42 +
.../templates/volume_groups/_remove_vols.html      |    7 +
.../templates/volume_groups/_snapshot_limits.html  |   42 +
.../templates/volume_groups/_update.html           |    7 +
.../templates/volume_groups/clone_group.html       |    7 +
.../templates/volume_groups/create.html            |    7 +
.../templates/volume_groups/create_snapshot.html   |    7 +
.../templates/volume_groups/delete.html            |    7 +
.../templates/volume_groups/remove_vols.html       |    7 +
.../templates/volume_groups/update.html            |    7 +
.../dashboards/project/volume_groups/urls.py       |   44 +
.../dashboards/project/volume_groups/views.py      |  312 ++
.../dashboards/project/volume_groups/workflows.py  |  381 ++
.../dashboards/project/volumes/forms.py            |   44 +-
.../dashboards/project/volumes/tables.py           |   49 +-
.../dashboards/project/volumes/tabs.py             |   31 +-
.../templates/volumes/_detail_overview.html        |    6 +
.../volumes/templates/volumes/_extend_limits.html  |    8 +-
.../project/volumes/templates/volumes/_limits.html |   22 +-
.../templates/volumes/_snapshot_limits.html        |   18 +-
.../volumes/templates/volumes/_volume_limits.html  |   26 +-
.../dashboards/project/volumes/views.py            |   39 +-
.../dashboards/settings/password/views.py          |    2 +-
.../dashboards/settings/user/views.py              |    2 +-
.../enabled/_1110_project_server_groups_panel.py   |   10 +
.../enabled/_1360_project_volume_groups.py         |    9 +
.../enabled/_1370_project_vg_snapshots.py          |    9 +
..._3090_identity_application_credentials_panel.py |   10 +
.../local/local_settings.py.example                |   46 +-
.../locale/as/LC_MESSAGES/django.po                |   72 +-
.../locale/bn_IN/LC_MESSAGES/django.po             |   72 +-
.../locale/brx/LC_MESSAGES/django.po               |   69 +-
.../locale/cs/LC_MESSAGES/django.po                |   94 +-
.../locale/de/LC_MESSAGES/django.po                |  686 ++-
.../locale/de/LC_MESSAGES/djangojs.po              |  416 +-
.../locale/en_AU/LC_MESSAGES/django.po             |  100 +-
.../locale/en_AU/LC_MESSAGES/djangojs.po           |    6 +-
.../locale/en_GB/LC_MESSAGES/django.po             |  627 ++-
.../locale/en_GB/LC_MESSAGES/djangojs.po           |  212 +-
.../locale/eo/LC_MESSAGES/django.po                |  691 ++-
.../locale/eo/LC_MESSAGES/djangojs.po              |  147 +-
.../locale/es/LC_MESSAGES/django.po                |  164 +-
.../locale/es/LC_MESSAGES/djangojs.po              |  317 +-
.../locale/fr/LC_MESSAGES/django.po                |  406 +-
.../locale/fr/LC_MESSAGES/djangojs.po              |  360 +-
.../locale/gu/LC_MESSAGES/django.po                |   70 +-
.../locale/hi/LC_MESSAGES/django.po                |   65 +-
.../locale/id/LC_MESSAGES/django.po                |  657 ++-
.../locale/id/LC_MESSAGES/djangojs.po              |  257 +-
.../locale/it/LC_MESSAGES/django.po                |   97 +-
.../locale/ja/LC_MESSAGES/django.po                |  644 ++-
.../locale/ja/LC_MESSAGES/djangojs.po              |  196 +-
.../locale/kn/LC_MESSAGES/django.po                |   72 +-
.../locale/ko_KR/LC_MESSAGES/django.po             |  628 ++-
.../locale/ko_KR/LC_MESSAGES/djangojs.po           |  348 +-
.../locale/kok/LC_MESSAGES/django.po               |   68 +-
.../locale/ks/LC_MESSAGES/django.po                |   70 +-
.../locale/mai/LC_MESSAGES/django.po               |   71 +-
.../locale/mni/LC_MESSAGES/django.po               |   74 +-
.../locale/mr/LC_MESSAGES/django.po                |   67 +-
.../locale/ne/LC_MESSAGES/django.po                |   68 +-
.../locale/nl_NL/LC_MESSAGES/django.po             |   61 +-
.../locale/pa_IN/LC_MESSAGES/django.po             |   75 +-
.../locale/pl_PL/LC_MESSAGES/django.po             |   92 +-
.../locale/pt_BR/LC_MESSAGES/django.po             |  214 +-
.../locale/pt_BR/LC_MESSAGES/djangojs.po           |  127 +-
.../locale/ru/LC_MESSAGES/django.po                |  105 +-
.../locale/ru/LC_MESSAGES/djangojs.po              |   37 +-
.../locale/sr/LC_MESSAGES/django.po                |   64 +-
.../locale/ta/LC_MESSAGES/django.po                |   72 +-
.../locale/tr_TR/LC_MESSAGES/django.po             |   98 +-
.../locale/tr_TR/LC_MESSAGES/djangojs.po           |    6 +-
.../locale/ur/LC_MESSAGES/django.po                |   73 +-
.../locale/zh_CN/LC_MESSAGES/django.po             |  598 ++-
.../locale/zh_CN/LC_MESSAGES/djangojs.po           |  192 +-
.../locale/zh_TW/LC_MESSAGES/django.po             |   93 +-
.../locale/zh_TW/LC_MESSAGES/djangojs.po           |    6 +-
.../management/commands/make_web_conf.py           |   16 +-
openstack_dashboard/settings.py                    |   58 +-
openstack_dashboard/static/app/core/core.module.js |    1 +
.../app/core/images/actions/edit.action.service.js |    3 +-
.../images/actions/edit.action.service.spec.js     |    2 +-
.../core/images/actions/launch-instance.service.js |    8 +-
.../images/actions/launch-instance.service.spec.js |   11 +
.../static/app/core/images/images.module.js        |    1 +
.../static/app/core/images/images.service.js       |    6 +-
.../images/steps/create-image/create-image.html    |    2 +-
.../app/core/keypairs/actions/delete.service.js    |    6 +-
.../static/app/core/keypairs/keypairs.module.js    |    1 +
.../app/core/network_qos/actions/actions.module.js |   66 +
.../network_qos/actions/actions.module.spec.js     |   46 +
.../network_qos/actions/delete.action.service.js   |  117 +
.../actions/delete.action.service.spec.js          |  233 +
.../static/app/core/network_qos/qos.module.js      |   10 +-
.../static/app/core/network_qos/qos.module.spec.js |   25 +
.../core/openstack-service-api/cinder.service.js   |    9 +-
.../core/openstack-service-api/keystone.service.js |   27 +-
.../openstack-service-api/keystone.service.spec.js |   36 +-
.../app/core/openstack-service-api/nova.service.js |   62 +
.../openstack-service-api/nova.service.spec.js     |   32 +
.../core/server_groups/actions/actions.module.js   |   78 +
.../server_groups/actions/actions.module.spec.js   |   51 +
.../server_groups/actions/create.action.service.js |   88 +
.../actions/create.action.service.spec.js          |   79 +
.../server_groups/actions/delete.action.service.js |  108 +
.../actions/delete.action.service.spec.js          |  135 +
.../actions/workflow/workflow.service.js           |   86 +
.../actions/workflow/workflow.service.spec.js      |   51 +
.../core/server_groups/details/details.module.js   |   54 +
.../server_groups/details/details.module.spec.js   |   35 +
.../server_groups/details/overview.controller.js   |  107 +
.../details/overview.controller.spec.js            |   80 +
.../app/core/server_groups/details/overview.html   |   17 +
.../static/app/core/server_groups/panel.html       |    3 +
.../app/core/server_groups/server-groups.module.js |  133 +
.../server_groups/server-groups.module.spec.js     |   48 +
.../core/server_groups/server-groups.service.js    |  139 +
.../server_groups/server-groups.service.spec.js    |  107 +
.../app/core/trunks/details/overview.controller.js |    5 +-
.../static/app/core/trunks/trunks.module.js        |    4 +-
.../static/app/core/trunks/trunks.service.js       |   35 +-
.../static/app/core/trunks/trunks.service.spec.js  |   45 +
.../static/app/core/workflow/decorator.service.js  |    8 +-
.../app/core/workflow/decorator.service.spec.js    |   15 +-
.../static/app/tech-debt/image-form.controller.js  |    3 +
.../static/dashboard/scss/_util.scss               |    4 +
.../static/dashboard/scss/_variables.scss          |    1 +
.../scss/components/_network_topology.scss         |    6 +
.../scss/components/_resource_topology.scss        |    8 +-
.../static/dashboard/scss/components/_tables.scss  |   16 +-
.../static/js/horizon.flatnetworktopology.js       |    6 +-
.../static/js/horizon.networktopology.js           |   33 +
openstack_dashboard/templates/angular.html         |    1 +
.../templates/horizon/_scripts.html                |    1 -
.../templatetags/context_selection.py              |    4 +-
openstack_dashboard/templatetags/themes.py         |    8 +-
openstack_dashboard/test/helpers.py                |  184 +-
.../pages/admin/compute/__init__.py                |    0
.../pages/admin/compute/flavorspage.py             |  157 +
.../pages/admin/compute/hostaggregatespage.py      |   79 +
.../pages/admin/compute/hypervisorspage.py         |   20 +
.../pages/admin/compute/imagespage.py              |   18 +
.../pages/admin/compute/instancespage.py           |   18 +
.../pages/admin/network/__init__.py                |    0
.../pages/admin/network/floatingipspage.py         |   18 +
.../pages/admin/network/networkspage.py            |   18 +
.../pages/admin/network/routerspage.py             |   41 +
.../pages/admin/system/defaultspage.py             |  132 +-
.../pages/admin/system/flavorspage.py              |  157 -
.../pages/admin/system/hostaggregatespage.py       |   79 -
.../pages/admin/system/instancespage.py            |   18 -
.../pages/admin/system/overviewpage.py             |   19 -
.../pages/admin/system/routerspage.py              |   41 -
.../pages/admin/system/volumes/__init__.py         |    0
.../admin/system/volumes/volumesnapshotspage.py    |   18 -
.../pages/admin/system/volumes/volumespage.py      |   18 -
.../pages/admin/system/volumes/volumetypespage.py  |  135 -
.../pages/admin/volume/__init__.py                 |    0
.../pages/admin/volume/snapshotspage.py            |   18 +
.../pages/admin/volume/volumespage.py              |   18 +
.../pages/admin/volume/volumetypespage.py          |  135 +
.../pages/identity/projectspage.py                 |    4 +-
.../pages/project/apiaccesspage.py                 |   81 +
.../compute/access_and_security/__init__.py        |    0
.../compute/access_and_security/apiaccesspage.py   |   73 -
.../compute/access_and_security/floatingipspage.py |  106 -
.../compute/access_and_security/keypairspage.py    |   82 -
.../compute/access_and_security/managerulespage.py |   74 -
.../access_and_security/securitygroupspage.py      |   76 -
.../pages/project/compute/imagespage.py            |   20 +-
.../pages/project/compute/instancespage.py         |   10 +-
.../pages/project/compute/keypairspage.py          |   82 +
.../pages/project/compute/servergroupspage.py      |   20 +
.../pages/project/compute/volumes/__init__.py      |    0
.../project/compute/volumes/volumesnapshotspage.py |  133 -
.../pages/project/compute/volumes/volumespage.py   |  269 --
.../pages/project/network/floatingipspage.py       |  107 +
.../pages/project/network/networkspage.py          |    8 +-
.../pages/project/network/networktopologypage.py   |   20 +
.../pages/project/network/routerinterfacespage.py  |    8 +-
.../pages/project/network/routerspage.py           |    9 +-
.../project/network/security_groups/__init__.py    |    0
.../network/security_groups/managerulespage.py     |   74 +
.../pages/project/network/securitygroupspage.py    |   76 +
.../pages/project/volumes/__init__.py              |    0
.../pages/project/volumes/snapshotspage.py         |  133 +
.../pages/project/volumes/volumespage.py           |  271 ++
openstack_dashboard/test/settings.py               |   86 +-
openstack_dashboard/test/test_data/cinder_data.py  |  179 +-
.../test/test_data/keystone_data.py                |   42 +
openstack_dashboard/test/test_data/neutron_data.py |   71 +-
openstack_dashboard/test/test_data/nova_data.py    |    2 +
.../panel_config/_10_admin_add_panel.py            |    6 +
.../test/test_plugins/test_panel.py                |   91 +
.../test/test_plugins/test_panel_group.py          |   87 +
.../test/unit/api/rest/test_cinder.py              |  484 +-
.../test/unit/api/rest/test_config.py              |    1 +
.../test/unit/api/rest/test_glance.py              |  207 +-
.../test/unit/api/rest/test_keystone.py            |  455 +-
.../test/unit/api/rest/test_network.py             |   89 +-
.../test/unit/api/rest/test_neutron.py             |  302 +-
.../test/unit/api/rest/test_nova.py                |  690 +--
.../test/unit/api/rest/test_swift.py               |  192 +-
.../test/unit/api/rest/test_utils.py               |   12 +-
openstack_dashboard/test/unit/api/test_base.py     |    4 +
openstack_dashboard/test/unit/api/test_cinder.py   |  163 +-
openstack_dashboard/test/unit/api/test_glance.py   |  108 +-
openstack_dashboard/test/unit/api/test_keystone.py |   77 +-
.../test/unit/api/test_microversions.py            |  108 +
openstack_dashboard/test/unit/api/test_network.py  |   43 +-
openstack_dashboard/test/unit/api/test_neutron.py  | 1046 +++--
openstack_dashboard/test/unit/api/test_nova.py     |  765 +--
openstack_dashboard/test/unit/api/test_swift.py    |  226 +-
openstack_dashboard/test/unit/test_views.py        |    6 +
openstack_dashboard/test/unit/usage/test_quotas.py |  478 +-
.../test/unit/utils/test_futurist_utils.py         |   60 +
openstack_dashboard/test/urls.py                   |    8 +-
openstack_dashboard/theme_settings.py              |   49 +-
openstack_dashboard/urls.py                        |   12 +-
openstack_dashboard/usage/base.py                  |   95 +-
openstack_dashboard/usage/quotas.py                |   90 +-
openstack_dashboard/usage/tables.py                |    4 +-
openstack_dashboard/usage/views.py                 |  127 +-
openstack_dashboard/utils/futurist_utils.py        |   50 +
openstack_dashboard/utils/settings.py              |   33 +-
openstack_dashboard/views.py                       |   28 +-
openstack_dashboard/wsgi.py                        |   29 +
openstack_dashboard/wsgi/django.wsgi               |    9 +-
playbooks/horizon-selenium-headless/pre.yaml       |    7 +
...r-groups-quota-management-0c1dc5763a3b893c.yaml |    7 +
.../admin-redirect-on-login-6a818fe886621a14.yaml  |    6 +
...p-application-credentials-26aa907271e467c2.yaml |    6 +
...al-default-service-region-0cafecaafa1af5be.yaml |   16 +
.../bp-ng-server-groups-c60849796a273138.yaml      |   10 +
.../notes/bp-ng-users-01212620d644289f.yaml        |   19 +
...simple-fip-disassociation-3c751297b467597e.yaml |   12 +
.../notes/bug-1746706-8d2f982c514f22b1.yaml        |    6 +
.../notes/bug-1755339-2dfa3ce2accb568f.yaml        |    9 +
.../notes/bug-1779268-44848e4d2c69fddc.yaml        |   15 +
...port-with-security-groups-68afba4d26f1eac1.yaml |    5 +
...ete-update-flavor-feature-6ed1e482b91f5e08.yaml |    7 +
...recation-of-old-wsgi-file-7ffdeae78698ff93.yaml |    9 +
.../notes/django-2.0-b37c6e91d20519fa.yaml         |    6 +
...deprecated-settings-rocky-dd8c853d979d6990.yaml |   15 +
...edit-port-security-groups-f650fc98f5e10eb8.yaml |    8 +
...loating-ip-dns-attributes-d227f98eb5c39396.yaml |    6 +
.../generic-volumes-support-407406de8233c912.yaml  |   12 +
.../notes/get-me-a-network-c979c244fa038258.yaml   |   15 +
.../notes/image-description-3fc00c02f46a80c7.yaml  |    5 +
...er-at-developer-dashboard-da1b1556e30aa858.yaml |    2 +-
.../notes/pluggable-tabs-7b7467e7c64d1e5b.yaml     |   10 +
.../pluggable-workflow-steps-c919cdd8b0cbea55.yaml |   21 +
...ove-cinder-v1-api-support-7cec9a556945a5c5.yaml |    7 +
...move-fix-auth-url-version-e63c52fbbd293838.yaml |    5 +
...emove-table-update-action-d3fc1c5e5e3598b0.yaml |    5 +
...-rule-description-support-37ea7580d3b7c7a9.yaml |    4 +
...wift-object-copy-function-d0fd75cf2bc0e0c7.yaml |    8 +
releasenotes/source/index.rst                      |    1 +
.../source/locale/de/LC_MESSAGES/releasenotes.po   | 4355 -----------------
.../locale/en_GB/LC_MESSAGES/releasenotes.po       | 4864 -------------------
.../source/locale/id/LC_MESSAGES/releasenotes.po   | 4950 --------------------
.../source/locale/ja/LC_MESSAGES/releasenotes.po   | 4888 -------------------
.../locale/ko_KR/LC_MESSAGES/releasenotes.po       | 1101 -----
.../locale/pt_BR/LC_MESSAGES/releasenotes.po       | 3829 ---------------
.../locale/zh_CN/LC_MESSAGES/releasenotes.po       |  508 --
releasenotes/source/queens.rst                     |    6 +
requirements.txt                                   |   21 +-
setup.cfg                                          |   10 -
test-requirements.txt                              |    9 +-
tox.ini                                            |  122 +-
784 files changed, 37274 insertions(+), 46429 deletions(-)


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

diff --git a/requirements.txt b/requirements.txt
index 15df13b..a889154 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -13,3 +13,3 @@ Babel!=2.4.0,>=2.3.4 # BSD
-Django<2.0,>=1.8 # BSD
-Pint>=0.5 # BSD
-django-babel>=0.5.1 # BSD
+Django<2,>=1.11;python_version<'3.0'  # BSD
+Django<2.1,>=1.11;python_version>='3.0'  # BSD
+django-babel>=0.6.2 # BSD
@@ -20 +20 @@ iso8601>=0.1.11 # MIT
-keystoneauth1>=3.3.0 # Apache-2.0
+keystoneauth1>=3.4.0 # Apache-2.0
@@ -22,2 +22,2 @@ netaddr>=0.7.18 # BSD
-oslo.concurrency>=3.25.0 # Apache-2.0
-oslo.config>=5.1.0 # Apache-2.0
+oslo.concurrency>=3.26.0 # Apache-2.0
+oslo.config>=5.2.0 # Apache-2.0
@@ -28 +28,2 @@ oslo.utils>=3.33.0 # Apache-2.0
-osprofiler>=1.4.0 # Apache-2.0
+osprofiler>=2.3.0 # Apache-2.0
+Pint>=0.5 # BSD
@@ -33,2 +34,2 @@ python-glanceclient>=2.8.0 # Apache-2.0
-python-keystoneclient>=3.8.0 # Apache-2.0
-python-neutronclient>=6.3.0 # Apache-2.0
+python-keystoneclient>=3.15.0 # Apache-2.0
+python-neutronclient>=6.7.0 # Apache-2.0
@@ -38 +39 @@ pytz>=2013.6 # MIT
-PyYAML>=3.10 # MIT
+PyYAML>=3.12 # MIT
diff --git a/test-requirements.txt b/test-requirements.txt
index 79ecc3d..e94e6e1 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -11,0 +12 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0
+bandit>=1.4.0 # Apache-2.0
@@ -13 +13,0 @@ coverage!=4.4,>=4.0 # Apache-2.0
-django-nose>=1.4.4 # BSD
@@ -19,6 +18,0 @@ nodeenv>=0.9.4 # BSD
-nose>=1.3.7 # LGPL
-nose-exclude>=0.3.0 # LGPL
-nosexcover>=1.0.10 # BSD
-openstack.nose-plugin>=0.7 # Apache-2.0
-openstackdocstheme>=1.18.1 # Apache-2.0
-reno>=2.5.0 # Apache-2.0
@@ -27 +20,0 @@ selenium>=2.50.1 # Apache-2.0
-sphinx!=1.6.6,>=1.6.2 # BSD






More information about the Release-announce mailing list