[horizon] horizon 13.0.0 (queens)
We are glad to announce the release of: horizon 13.0.0: OpenStack Dashboard This release is part of the queens release series. Download the package from: https://tarballs.openstack.org/horizon/ For more details, please see below. Changes in horizon 12.0.0.0rc1..13.0.0 -------------------------------------- a6cdd29 Imported Translations from Zanata 771914a Imported Translations from Zanata cdb0023 Imported Translations from Zanata e1402b1 Move test template to more proper directory 85d014b Imported Translations from Zanata f911da5 Imported Translations from Zanata 16572c9 Fix collectstatic in case of theme customization 1becb39 Update UPPER_CONSTRAINTS_FILE for stable/queens d3b403a Update .gitreview for stable/queens 4a3f0dc Network topology "Graph" tab always shows nothing 4e4429b Imported Translations from Zanata 7c261e8 Imported Translations from Zanata afbd9cb Remove empty test file edbe5ea Change http link to https link a0e207a Imported Translations from Zanata 6741019 Sync nova policy 9d102cb Imported Translations from Zanata 3f585d3 Views accessible via url even if user doesn't match policy rules 17b2c25 Missing VNIC type parameter when using it to create a port 02119d8 Imported Translations from Zanata 4544282 Use nova os-services to retrieve host list 077163a Enable to refresh ngdetails view 556ccbe relnote: clearly mention django-openstack-auth needs uninstall 7f032e9 Imported Translations from Zanata af63c00 fix english grammatical error 1941d34 operation_log: Mask more password fields by default 6294494 i18n: Fix untranslated messages 4b1131a i18n: Do not include html directives in translation strings 388ec03 Imported Translations from Zanata 7b45b7a Fix back button on Firefox and Safari 9e5eb9e Imported Translations from Zanata 4b70f1d Correct odd exception message 7dd4d7a Remove 'tools/install_venv.py' reference paragraph aa669f0 Trunks panel: admin panel 2e67f24 Ensure to mark exception message as tranlation strings c9a143f Horizon UI message when browser cookies disabled 49fd528 i18n: Allow translator to control the word order (trunk) 82d9ea6 Imported Translations from Zanata c4a380f Zuul: Remove project name c7bc924 Tabs in launch server wizard not depending on OPENSTACK_NOVA_EXTENSIONS_BLACKLIST b28b8e2 Change django.utils.log.NullHandler to logging.NullHandler aec0163 Imported Translations from Zanata f257482 Handle novaclient ec2 cert support removal 117ec5d Sync keystone policy 4f0047b Imported Translations from Zanata ef52e8e comment was wrongly declared 705c52b Trunks panel: eliminate spinner at create/edit e598695 Ignore node_modules from test target d2187b4 Imported Translations from Zanata ca74561 Updated from global requirements 3e8088b Improve exception message in network related Batch/DeleteAction a96e632 Avoid duplicated message in Batch/DeleteAction faaa4ae Avoid sending error message twice in BatchAction c6d1e16 Add note for Django 1.8-1.10 support in relnote and doc 5179f33 Imported Translations from Zanata 9e9a17c Imported Translations from Zanata db2aecd Imported Translations from Zanata 869127e doc: Move the note to an appropriate place 7d1b89e Imported Translations from Zanata 42fe004 elif replace if bb76a85 Imported Translations from Zanata 75e4e75 Make serial console resizable 9242390 Add setting for user menu links 7d0d8be Text clippin in window security groups Fixed text overflow from form by removing limiting max-height media in scss. f35eaa2 Correctly show no data message in Network Topology 3929a8b Security group quota error handling 735e458 font for transfer table heading enlarged c5901fe Updated from global requirements 54365d7 Fix api.keystone.is_cloud_admin/is_domain_admin handling with new policies 4391567 Imported Translations from Zanata 3220cbf Better designed 404 error page e129ba9 Updated from global requirements b52f8d9 Add Enable/Disable User action for Angular users panel c174036 Add Change Password Action for Angular users panel 5a8e218 Imported Translations from Zanata dda139b [doc] Correct the wrong 'System' tab 8b363fb Imported Translations from Zanata b7f24dd Make neutron quota names translatable 659f86d Imported Translations from Zanata ea06895 doc: update policy related topics 5a11dd6 doc: cleanup unnecessary vertical lines 38f6fbd doc: Update project port create dc7d258 quota: Use neutron default quota (read-only) API 788388c usage: split out the limit related logic into ProjectUsageView f514aa0 Imported Translations from Zanata a05c2cc Rename tox_venvlist (2/2) 11e36d4 Rename tox_venvlist (1/2) 8840fdb Orders the projects and roles in user creation combos 4556a3d Imported Translations from Zanata e7505cf Trunks panel: simplify code for easier testing 86e4e92 Add Edit action for Angular users panel 3a7466c Add Angular keystone user deletion action a65ece7 Handle unicode when downloading transfer credentials 2d7a343 Imported Translations from Zanata e0fb453 quota: Move neutron quota logic in identity.projects.views 091121b Imported Translations from Zanata 66e868a Switch settings password tests to mock dc73248 Implement create_mocks decorator to make mocks easier 27b1690 [doc] Correct the wrong 'System' tab 6c32678 [doc] Correct the wrong volumes tab b5fdf50 Upload the latest screenshots 3278e0c [doc] Reorganize the content of horizon Admin tab a1c8f6c Use 'trimmed' for blocktrans in multi-line strings 6572af2 Remove the redundant codes 262f099 tox: run doc8 in pep8 26bc131 [doc] Modify the content of the configure access and security for instances 8bedc98 [doc] Add the missing editable properties for image 77ed0e3 doc: drop horizon-plugins' content from user/admin guide 2488cef Skip horizon-dsvm-tempest-plugin when touching test code only d6790e5 Imported Translations from Zanata 6baf8c9 Handle float('inf') in tenant_quota_usages properly 4d7f5e2 Reorganize the content of horizon project tab 0d1d22c Switch Glance-related tests (dashboards.project.images) to mock 758ba27 Imported Translations from Zanata 8f1d426 Imported Translations from Zanata 8373701 Avoid Unhashable warning in api.rest.nova 3aee4cb Fix incorrect volume type value in ng images create volume form 687d224 Fix displayed type for instance snapshots a18c49c Imported Translations from Zanata 7396d47 Imported Translations from Zanata 6c45c47 Drop unnecessary executable flags 3c872e5 Switch Glance-related tests (dashboards.admin.images) to mock ec0b29f Switch Glance API tests to mock 09efe2d Allow regular users to specify VNIC type for port 8ae967a Make enabled filenames consistent 5d40431 Handle binding__host_id conditionally e4a8dcd Imported Translations from Zanata fb9699f Imported Translations from Zanata f870114 Updated from global requirements 589c6de Remove unnecessary module injection 7d7de3b Add more actions to admin. 337ef4d Disable flavor ModifyAccess action while the flavor is public cd49510 Updating default keystone API verson to 3 154ddab Drop flavor name validation in horizon side. 8520b4d Sync cinder policy 69aff8b Tools to check policy differences 0f59818 Imported Translations from Zanata bdba740 Updated from global requirements a774fa3 Use Cinder API v3 by default 3d47108 Imported Translations from Zanata 8c25bb7 Update Ubuntu horizon installation instruction d1225c6 Floating IP: Expose description field in form and tables 6164fe0 Imported Translations from Zanata f929d39 Do not make duplicate requests to Glance for image names in admin panel 6c4d254 Refactor swap_filter in instance views fae118d Imported Translations from Zanata 5424c63 Add create and import key pair actions ebaf633 Sync glance policy 1340904 quota: Use network quota field names consistently cd3f3e5 quota: Use neutron quota_details API to retrieve usage df0a18e quota: retrieve quota (limit) and usage at once 34fb3e5 quota: Disable nova-network quotas completely c999239 Prevent non-admin users from detaching interfaces 7dac18b Add text download service 4c8f4a0 Add Angular keystone user creation action 413e772 API tests: Avoid UnhashableKeyWarning 365df57 python3: long does not exist in python 3 6662771 Imported Translations from Zanata b0e696c Optional removal of V2 openrc file 84216cb Always display server description a57d8b0 doc: use "python manage.py" directly rather "tox -e manage" 38690f1 Define default POLICY_DIRS value a42f58d Allow to skip API calls to Neutron in instance tables 17b7e91 Show volume snapshots in admin volume detail page ed5adbe Fix wrong link to VM in admin volume detail 8c5f719 Remove app-catalog from plugin list 47ccc06 Updated from global requirements f3af02f openstack_dashboard: Move test files to match module structure 58faa56 openstack_auth: Move test files to match module structure 493a943 horizon: Move test files to match corresponding module structure f63183b Imported Translations from Zanata 23a6a82 Add Heat Dasbhoard to Plugin Registry 09e1ab2 Updated from global requirements 93d4542 Trunks panel: display the MAC of ports ffd0114 Imported Translations from Zanata eac3e70 Drop Heat related code from horizon 43494b9 Imported Translations from Zanata 4c8a294 API micro-version support for multiple features 8aca02a Render 'Volume Transfer' as modal instead of page 82d5499 Imported Translations from Zanata 3d9b639 Imported Translations from Zanata 9854147 Fix broken nova console support 974f041 Redirect VM console dynamically 2d0c4e9 Update job skip condition 876f80c Commonize load-edit directive 1f41f29 Add MKS console support 0c54f56 Prepare test env for Django 2.0 with python 3.5 db4c47d Fix "Open Console" issue on network topology 62365ba Move legacy horizon-dsvm-tempest-plugin to in-repo jobs d16f750 Raise detailed exception b541deb Add release note on policy dirs support bcf8691 Updated from global requirements 6a6cb7b Imported Translations from Zanata 7caead6 Trunks panel: enable project trunk panel by default 7b207fb Remove initScope from trunk delete.action.service ec299ff Trunks panel: edit button 1ab4b49 Trunks panel: create button 9b0c511 Use oslo.config for Horizon configuration d7f29a5 Imported Translations from Zanata 46f8a4d Imported Translations from Zanata 44251a7 Fix admin/project instance UT b41402e Add user_domain_name to logs regarding authentication 34ac026 Define test logging setting in openstack_auth 846d269 Imported Translations from Zanata 72a4f46 tox: allow to specify module when running pep8 env 39e5ffd Import django_openstack_auth settings missing in horizon doc 5cac0c4 pull_catalog: avoid internet access during module loading e069823 Imported Translations from Zanata 8aff865 Fixes the deletion on click action assignment c6a7103 Imported Translations from Zanata de9f03c Unable to create router when the external network is specified 4693a18 Fix wrong link to VM in admin volume table 39dd7c9 release note for blueprint merge-openstack-auth 0b79538 Reduce code duplication 07e2e0a Make list_targets_by_instance look up IPv4 address as target cd9a14d Drop unused floating_ip_target_get_by_instance d14fbc8 FIP associate: Show only ports from a target server 7961c6a Refactor FIP code to use FloatingIpTarget properly 6a6bb07 Imported Translations from Zanata ff08536 Add django.wsgi to target of pep8 a92d165 Fix the network subnets check in create instance form c2405bb Remove setting of version/release from releasenotes 1b0bd0d Move openstack_auth API refernece into a separate place 68a62bd Updated from global requirements 25375c3 Imported Translations from Zanata 235c60c Remove testr support f7eec15 Use ThemableChoiceField edbf88f Use specified phrases in lieu of 'Used' for limit summary 48c6599 Imported Translations from Zanata 63d7146 Don't add required attribute to html form fields 59b18f3 Disable metadata switch if only one item is available 3ee03ac Drop Makefile a15e2e3 Updated from global requirements 7e5ddf2 Updated from global requirements e2e8a2c Imported Translations from Zanata ee3e612 Move django variants UT and selenium-headless to in-repo jobs ed7e51a Show a better error message for network delete failure 83add59 Imported Translations from Zanata 104d2b5 Imported Translations from Zanata cb37926 Imported Translations from Zanata 340d4ff Doc: Delete pyc in a structure of dashboard.rst file 415a4f8 Imported Translations from Zanata c1a45f5 Imported Translations from Zanata e98eb20 Support include_names argument for keystone role assignement list 8099132 Cleaned up formats for qos panel 25a6f31 Imported Translations from Zanata e7f2217 Add delete action for key pair 9a75863 Remove deprecated scope handling d1267da Prevent "enter" from triggering submit action on modal forms f911d0d Imported Translations from Zanata 0684501 Imported Translations from Zanata af9505f Remove unused API function from Nova API d545165 Imported Translations from Zanata d465107 Imported Translations from Zanata 2161b91 [Micro version] Support description for instance 58b14a8 transfer-table: Rethink CHANGED message handler e722055 doc: Update the URL of noVNC 784a865 Imported Translations from Zanata b5896d6 Implement setting availability zone hint on network creation 5d561c9 Imported Translations from Zanata edcd222 Add a checkbox to disable SNAT on routers 1a6b16b Switch Cinder-related tests to mock 14a350d Switch Cinder-related tests to mock e94992f Switch Cinder-related tests to mock 33dc940 Correct quota usage check for instances 2949a98 Implement network availability zone column in network list a6ae818 Wrap various API calls with try/except in Router panel b9972f7 Fetch Cinder availability zones list for volume creation 0ee5cfc Imported Translations from Zanata 887d7fb Add network availability zone information for network agents 1e012e7 Support fixed ip address when attaching interface e9db123 Support security groups association per port 9d5be52 Hide IPv6-addresses when assigning floating IP addresses b9664a1 Routers can be created with availability zone 4db34f6 Added type checks for ha device owners 5902176 Router lists display availability zone information 827ed2d Revert "Remove the quota check for "Launch Instance" button" 0a51d07 Remove unused function calls in project instances attach volume form 9808567 Correct the log info when get networks failed in project router form 502cffb Fix logo in IE11/Edge browsers e742950 Remove the errored steps after they all responded 80a84aa Imported Translations from Zanata f9705f0 Remove hardcoded check for subnet actions of a shared network 1afba5f Sort security group rules more meaningfully c87f732 Imported Translations from Zanata 16afe25 Set Angular roles panel as the default c13d6da Add render method to ThemableCheckboxSelectMultiple 7e4dd61 Rename "Import Key Pair" to "Import Public Key" 924fb68 Add REST APIs for Keystone Group 872ea43 Adding identity ng-groups panel aec3a33 Fix displaying pool name for floating ip 6d12291 Remove license headers to openstack_dashboard/enabled/* files 81e7170 Imported Translations from Zanata 5de6b3e Show subnet detail with prefix_delegation subnetpool properly 7b82f7b Fix gettext warning "Empty msgid" 3e6e315 Fix typo 9c303e3 Imported Translations from Zanata fa2e832 Add cache for get_microversion() against Nova 65baa5f Do not fail on AdminUpdateRow if tenant is not found 2e7dce8 Adds extensible header functionality 4083d08 Remove the quota check for "Launch Instance" button b5bd758 Correct the subnets quota check in admin networks panel 194c881 Angularize Key Pair Details 6107983 Fix non-API bound filters in project and admin instance panels e3e5812 Add Django OpenStack Auth to Horizon fc3f319 Imported Translations from Zanata a2bf885 Imported Translations from Zanata a4aed76 Include add subnet action on admin networks panel 2e4ce76 Revert "No need to discover panel in Site class" 91cf6fc Imported Translations from Zanata ee989fc Fix Http302 error message in UT 0c8b0f3 Fixes toggle behavior in Network Topology graphs af3b7e4 flake8-import-order: Ensure to place project imports last 61ad9f6 Fix a bug to unable to retrieve ports when no trunk ext 1eb9596 Set default panel of identity with pluggable settings mechanism dcf5e1e Use WrappingColumn for image name a6aa51c Remove unused code (_logout method and auth_views in base.py) fb39de1 No need to discover panel in Site class a3a7812 Imported Translations from Zanata 9576464 Updated from global requirements de37fc1 NaNJSONEncoder should be used in api "cinder/tenantabsolutelimits" b26b17c Fix icon of status on network topology d6f1d11 Add server-side filtering Floating IPs fbcddd7 Cleaned up date formats for images panel 6a38e83 Clarify the comment for WEBSSO_INITIAL_CHOICE 2139536 Updated from global requirements c1d91d2 Fix wrong links in horizon 818d65d Updated from global requirements 2d2a562 Set PROJECT_DOMAIN_NAME in generated v3 openrc 962b934 Add more entries to LOGGING configuration 55162ef Add reason into warning for error on loading panel 9e1eb5f Fix actions inside instance details view page f22fe2d Display attachment's server_id when name is no longer available 4d32b1f Add permissions explanation to quickstart doc d44f1c7 [doc] Fix broken links f578792 Imported Translations from Zanata 9c3d01a Fix warning message not showing on launch instance modal a4d05ce Clean up broken links due to doc-migration d8071c0 Updated from global requirements 1a7e8cf Imported Translations from Zanata 748d986 TrunkPort, Horizon workflow: launch instance 7c9758d Fix link to serial console stylesheet ff90f4d Imported Translations from Zanata bfd6630 Properly sort Heat stacks on Created field 8f4e02c Show NotAuthorized error message on a separate page 0b65dbc Disable 'Create Port' button if ports quota is exceeded f3e9ef5 extract_messages, update_catalog: Simplify help message b4914c4 Remove remainder of run_tests references c3a2855 Imported Translations from Zanata 233680f Delete unnecessary judgment when getting the neutron quota 616369c Updated from global requirements b33431e Imported Translations from Zanata 4982dc3 Angularize Key Pairs index view 4c5231c Restores sorting in the launch dialog source page ca6ef9e Fix UnhashableKeyWarning when calling get_security_groups function c5b33ec Updated from global requirements 01f91bf Imported Translations from Zanata f61d413 Do not call servers_update_addresses if no instances loaded 893601f Imported Translations from Zanata fb4ae6b Fix subnets can not be deleted from network topology panel 8d7b2ce Make nosehtmloutput an optional test requirement 48862eb do not flush selection on "old" boot source c6c24ed Make icmp_type/code optional 15d996f Allow admin to create port on networks of different projects 03e2299 Imported Translations from Zanata 678bb64 Fix bug for the switchable fields c03ba4e Updated from global requirements b5ecce9 Imported Translations from Zanata 4dbbca3 Updated from global requirements 953cd78 Incorrect URL for polling heat stack 674830c Update neutron policy file 9554177 Ensure all filter items end with '=' 8db04ad Imported Translations from Zanata 4cddc75 Remove FWaaS specific policies from neutron_policy 9787ef4 Minor improvements to the translation document 4d64d61 Make cinder generic group quotas translatable 004dc28 Imported Translations from Zanata 846fc19 Fix pofile for pseudo translations 6529cd1 Remove run_tests.sh 27a828b Imported Translations from Zanata 08fd18c Add exceptions for action bc14b0d Imported Translations from Zanata 00f74fc Revert "Generate language list automatically" 19a4012 extract_messages: Specify input directory 4d1a19f Imported Translations from Zanata 538417b Remove admin requirement for shared network actions d20c941 Make get_available_images() return all the images available 2040d09 releasenote: Move ignore-notes to pike 0723e60 Fix Python 3 issues with serialization json from request 00de2e9 Imported Translations from Zanata 2c69f10 Update reno for stable/pike a9517ff Fix cannot delete user's email addresses in the identity/user panel 5aab8bf Refactor the current UpdatePort form to workflow version a58aa26 Refresh role table after editing role 7f6e03a Fix style of the submit button on confirmation modal 476b0a4 Display correct volume size in error message 09a2afe Fix the error format of glance's createImage 221d1a2 Show updated data on Flavor Access tab 3a99499 Get all needed instances for volumes attachments at Admin->Volumes f20dacf Fix subnet no show in networktopology graph 2415d5e Added error msg when gets redirect to login page a72a1ec Make @memoize thread-aware f713bfb Add missing include template in admin migrate host form d343ca3 template for content under the login form Diffstat (except docs and test files) ------------------------------------- .gitignore | 2 - .gitreview | 1 + .testr.conf | 4 - .zuul.yaml | 88 + MANIFEST.in | 3 - Makefile | 23 - .../contributor/ref/openstack_auth/backend.rst | 6 + .../contributor/ref/openstack_auth/forms.rst | 6 + .../contributor/ref/openstack_auth/utils.rst | 6 + .../contributor/ref/openstack_auth/views.rst | 6 + ...configure-access-and-security-for-instances.rst | 16 +- horizon/base.py | 15 +- horizon/browsers/views.py | 21 + horizon/decorators.py | 23 + horizon/exceptions.py | 17 +- horizon/forms/fields.py | 57 +- horizon/locale/cs/LC_MESSAGES/django.po | 36 +- horizon/locale/cs/LC_MESSAGES/djangojs.po | 21 +- horizon/locale/de/LC_MESSAGES/django.po | 53 +- horizon/locale/de/LC_MESSAGES/djangojs.po | 46 +- horizon/locale/en_AU/LC_MESSAGES/django.po | 51 +- horizon/locale/en_AU/LC_MESSAGES/djangojs.po | 31 +- horizon/locale/en_GB/LC_MESSAGES/django.po | 53 +- horizon/locale/en_GB/LC_MESSAGES/djangojs.po | 43 +- horizon/locale/eo/LC_MESSAGES/django.po | 423 + horizon/locale/eo/LC_MESSAGES/djangojs.po | 495 ++ horizon/locale/es/LC_MESSAGES/django.po | 117 +- horizon/locale/es/LC_MESSAGES/djangojs.po | 134 +- horizon/locale/es_MX/LC_MESSAGES/django.po | 10 +- horizon/locale/fi_FI/LC_MESSAGES/django.po | 10 +- horizon/locale/fr/LC_MESSAGES/django.po | 93 +- horizon/locale/fr/LC_MESSAGES/djangojs.po | 61 +- horizon/locale/hi/LC_MESSAGES/django.po | 10 +- horizon/locale/id/LC_MESSAGES/django.po | 46 +- horizon/locale/id/LC_MESSAGES/djangojs.po | 43 +- horizon/locale/it/LC_MESSAGES/django.po | 10 +- horizon/locale/it/LC_MESSAGES/djangojs.po | 27 +- horizon/locale/ja/LC_MESSAGES/django.po | 51 +- horizon/locale/ja/LC_MESSAGES/djangojs.po | 44 +- horizon/locale/ko_KR/LC_MESSAGES/django.po | 49 +- horizon/locale/ko_KR/LC_MESSAGES/djangojs.po | 53 +- horizon/locale/pa_IN/LC_MESSAGES/django.po | 10 +- horizon/locale/pl_PL/LC_MESSAGES/django.po | 36 +- horizon/locale/pt/LC_MESSAGES/django.po | 10 +- horizon/locale/pt_BR/LC_MESSAGES/django.po | 52 +- horizon/locale/pt_BR/LC_MESSAGES/djangojs.po | 44 +- horizon/locale/ru/LC_MESSAGES/django.po | 41 +- horizon/locale/ru/LC_MESSAGES/djangojs.po | 21 +- horizon/locale/tr_TR/LC_MESSAGES/django.po | 55 +- horizon/locale/tr_TR/LC_MESSAGES/djangojs.po | 42 +- horizon/locale/zh_CN/LC_MESSAGES/django.po | 54 +- horizon/locale/zh_CN/LC_MESSAGES/djangojs.po | 52 +- horizon/locale/zh_TW/LC_MESSAGES/django.po | 32 +- horizon/locale/zh_TW/LC_MESSAGES/djangojs.po | 42 +- horizon/management/commands/pull_catalog.py | 17 +- horizon/middleware/base.py | 18 +- horizon/middleware/operation_log.py | 4 +- .../conf/resource-type-registry.service.js | 12 +- .../conf/resource-type-registry.service.spec.js | 18 +- horizon/static/framework/framework.module.js | 56 +- horizon/static/framework/framework.module.spec.js | 48 +- .../framework/util/file/text-download.service.js | 66 + .../util/file/text-download.service.spec.js | 34 + horizon/static/framework/util/filters/filters.js | 14 + .../static/framework/util/filters/filters.spec.js | 15 + .../util/validators/hz-password-match.directive.js | 31 +- .../validators/hz-password-match.directive.spec.js | 2 +- .../action-list/actions-batch.template.html | 1 + .../widgets/action-list/actions-row.template.html | 1 + .../widgets/action-list/actions.directive.js | 2 +- .../widgets/action-list/actions.service.js | 1 + .../details/routed-details-view.controller.js | 8 +- horizon/static/framework/widgets/form/decorator.js | 4 + .../framework/widgets/form/decorator.spec.js | 2 +- .../widgets/form/fields/password-confirm.html | 57 + .../widgets/form/modal-form.controller.js | 8 +- .../widgets/form/modal-form.controller.spec.js | 17 +- .../static/framework/widgets/form/modal-form.html | 5 +- .../widgets/load-edit/load-edit.directive.js | 53 +- .../widgets/load-edit/load-edit.directive.spec.js | 15 +- .../framework/widgets/load-edit/load-edit.html | 38 +- .../widgets/metadata/display/display.scss | 5 +- .../display/metadata-display.controller.js | 7 + .../widgets/metadata/display/metadata-display.html | 2 +- .../framework/widgets/modal/simple-modal.html | 4 +- .../widgets/modal/simple-modal.service.js | 3 +- .../widgets/modal/wizard-modal.service.js | 9 - .../widgets/modal/wizard-modal.service.spec.js | 10 +- .../framework/widgets/toast/toast.service.js | 15 + .../static/framework/widgets/toast/toast.spec.js | 12 + .../transfer-table/transfer-table.controller.js | 32 +- .../transfer-table.controller.spec.js | 34 +- .../transfer-table/transfer-table.module.js | 2 +- .../framework/widgets/wizard/wizard.controller.js | 52 +- .../widgets/wizard/wizard.controller.spec.js | 96 + .../static/framework/widgets/wizard/wizard.spec.js | 38 + .../static/horizon/js/horizon.extensible_header.js | 65 + horizon/static/horizon/js/horizon.forms.js | 9 + horizon/static/horizon/js/horizon.hacks.js | 24 + horizon/static/horizon/js/horizon.heattop.js | 3 +- horizon/static/horizon/js/horizon.modals.js | 8 +- horizon/static/horizon/js/horizon.tables.js | 7 +- horizon/tables/actions.py | 101 +- horizon/tables/base.py | 17 +- horizon/templates/auth/_login_form.html | 5 + horizon/templates/auth/_login_modal.html | 7 +- horizon/templates/auth/_login_page.html | 7 +- horizon/templates/horizon/client_side/_modal.html | 2 +- .../horizon/common/_data_table_pagination.html | 2 +- .../templates/horizon/common/_limit_summary.html | 16 +- horizon/templates/not_authorized.html | 10 + horizon/test/settings.py | 7 +- horizon/test/templates/angular.html | 0 horizon/test/test_hacking.py | 112 - horizon/test/unit/__init__.py | 0 horizon/test/unit/forms/__init__.py | 0 horizon/test/unit/forms/test_fields.py | 332 + horizon/test/unit/forms/test_forms.py | 106 + horizon/test/unit/hacking/__init__.py | 0 horizon/test/unit/hacking/test_checks.py | 112 + horizon/test/unit/management/__init__.py | 0 horizon/test/unit/management/commands/__init__.py | 0 .../unit/management/commands/test_startdash.py | 37 + .../unit/management/commands/test_startpanel.py | 36 + horizon/test/unit/middleware/__init__.py | 0 horizon/test/unit/middleware/test_base.py | 80 + horizon/test/unit/middleware/test_operation_log.py | 175 + horizon/test/unit/tables/__init__.py | 0 horizon/test/unit/tables/test_tables.py | 1689 ++++ horizon/test/unit/tabs/__init__.py | 0 horizon/test/unit/tabs/test_tabs.py | 344 + horizon/test/unit/templatetags/__init__.py | 0 .../test/unit/templatetags/test_templatetags.py | 152 + horizon/test/unit/test_base.py | 539 ++ horizon/test/unit/test_exceptions.py | 62 + horizon/test/unit/test_messages.py | 53 + horizon/test/unit/test_notifications.py | 59 + horizon/test/unit/test_views.py | 101 + horizon/test/unit/utils/__init__.py | 0 .../test/unit/utils/test_babel_extract_angular.py | 187 + horizon/test/unit/utils/test_file_discovery.py | 252 + horizon/test/unit/utils/test_filters.py | 100 + horizon/test/unit/utils/test_functions.py | 97 + horizon/test/unit/utils/test_memoized.py | 83 + horizon/test/unit/utils/test_secret_key.py | 39 + horizon/test/unit/utils/test_units.py | 74 + horizon/test/unit/utils/test_validators.py | 99 + horizon/test/unit/workflows/__init__.py | 0 horizon/test/unit/workflows/test_workflows.py | 362 + horizon/utils/memoized.py | 35 +- horizon/views.py | 3 +- openstack_auth/__init__.py | 0 openstack_auth/backend.py | 283 + openstack_auth/exceptions.py | 17 + openstack_auth/forms.py | 151 + openstack_auth/locale/de/LC_MESSAGES/django.po | 93 + openstack_auth/locale/en_GB/LC_MESSAGES/django.po | 91 + openstack_auth/locale/eo/LC_MESSAGES/django.po | 90 + openstack_auth/locale/es/LC_MESSAGES/django.po | 93 + openstack_auth/locale/fr/LC_MESSAGES/django.po | 92 + openstack_auth/locale/id/LC_MESSAGES/django.po | 94 + openstack_auth/locale/ja/LC_MESSAGES/django.po | 91 + openstack_auth/locale/ko_KR/LC_MESSAGES/django.po | 89 + openstack_auth/locale/pt_BR/LC_MESSAGES/django.po | 94 + openstack_auth/locale/zh_CN/LC_MESSAGES/django.po | 89 + openstack_auth/models.py | 18 + openstack_auth/plugin/__init__.py | 22 + openstack_auth/plugin/base.py | 241 + openstack_auth/plugin/k2k.py | 107 + openstack_auth/plugin/password.py | 51 + openstack_auth/plugin/token.py | 41 + openstack_auth/policy.py | 232 + openstack_auth/urls.py | 36 + openstack_auth/user.py | 454 ++ openstack_auth/utils.py | 562 ++ openstack_auth/views.py | 329 + openstack_dashboard/api/__init__.py | 2 - openstack_dashboard/api/base.py | 5 +- openstack_dashboard/api/cinder.py | 21 +- openstack_dashboard/api/heat.py | 265 - openstack_dashboard/api/keystone.py | 13 +- openstack_dashboard/api/microversions.py | 31 +- openstack_dashboard/api/neutron.py | 361 +- openstack_dashboard/api/nova.py | 122 +- openstack_dashboard/api/rest/__init__.py | 2 - openstack_dashboard/api/rest/cinder.py | 25 +- openstack_dashboard/api/rest/glance.py | 4 +- openstack_dashboard/api/rest/heat.py | 51 - openstack_dashboard/api/rest/keystone.py | 94 +- openstack_dashboard/api/rest/neutron.py | 24 +- openstack_dashboard/api/rest/nova.py | 34 +- openstack_dashboard/api/rest/utils.py | 7 +- .../conf/cinder_policy.d/consistencygroup.yaml | 10 + openstack_dashboard/conf/cinder_policy.json | 211 +- openstack_dashboard/conf/glance_policy.json | 10 +- openstack_dashboard/conf/heat_policy.json | 92 - openstack_dashboard/conf/keystone_policy.json | 271 +- openstack_dashboard/conf/neutron_policy.json | 40 +- .../conf/nova_policy.d/api-extensions.yaml | 3 + openstack_dashboard/conf/nova_policy.json | 133 +- openstack_dashboard/context_processors.py | 9 + .../contrib/developer/form_builder/urls.py | 1 + .../contrib/developer/resource_browser/urls.py | 1 + .../resource-browser-item.controller.js | 12 +- .../developer/theme-preview/theme-preview.html | 12 +- .../dashboards/admin/aggregates/workflows.py | 18 +- openstack_dashboard/dashboards/admin/dashboard.py | 7 +- .../dashboards/admin/defaults/tables.py | 25 +- .../dashboards/admin/defaults/workflows.py | 8 +- .../dashboards/admin/flavors/tables.py | 3 + .../dashboards/admin/flavors/urls.py | 1 + .../dashboards/admin/flavors/workflows.py | 7 +- .../dashboards/admin/floating_ips/forms.py | 9 +- .../dashboards/admin/floating_ips/tables.py | 24 +- .../dashboards/admin/floating_ips/views.py | 7 +- .../hypervisors/compute/migrate_host.html | 4 +- .../dashboards/admin/images/urls.py | 1 + .../dashboards/admin/images/views.py | 4 +- openstack_dashboard/dashboards/admin/info/panel.py | 3 +- .../dashboards/admin/info/tables.py | 64 +- openstack_dashboard/dashboards/admin/info/tabs.py | 30 +- .../dashboards/admin/instances/forms.py | 6 +- .../dashboards/admin/instances/tables.py | 25 +- .../dashboards/admin/instances/urls.py | 1 + .../dashboards/admin/instances/views.py | 68 +- .../dashboards/admin/networks/agents/tables.py | 11 +- .../dashboards/admin/networks/forms.py | 22 + .../dashboards/admin/networks/ports/forms.py | 117 - .../dashboards/admin/networks/ports/tables.py | 33 + .../dashboards/admin/networks/ports/views.py | 13 +- .../dashboards/admin/networks/ports/workflows.py | 70 + .../dashboards/admin/networks/subnets/tables.py | 56 +- .../dashboards/admin/networks/tables.py | 75 +- .../templates/networks/ports/_edit_port_help.html | 18 + .../networks/templates/networks/ports/_update.html | 7 - .../networks/templates/networks/ports/update.html | 7 - .../dashboards/admin/networks/workflows.py | 2 +- .../dashboards/admin/routers/tables.py | 2 +- .../dashboards/admin/snapshots/panel.py | 3 +- .../dashboards/admin/snapshots/tables.py | 5 + .../dashboards/admin/trunks/__init__.py | 0 .../dashboards/admin/trunks/panel.py | 45 + .../dashboards/admin/trunks/urls.py | 26 + .../dashboards/admin/volume_types/panel.py | 3 +- .../dashboards/admin/volume_types/tables.py | 6 +- .../templates/volume_types/qos_specs/_create.html | 27 +- .../dashboards/admin/volumes/panel.py | 3 +- .../dashboards/admin/volumes/tables.py | 6 + .../dashboards/admin/volumes/tabs.py | 35 + .../dashboards/admin/volumes/views.py | 9 + .../dashboards/identity/dashboard.py | 1 - .../dashboards/identity/domains/tables.py | 1 - .../dashboards/identity/groups/tables.py | 1 - .../dashboards/identity/groups/urls.py | 30 +- .../dashboards/identity/projects/views.py | 24 - .../dashboards/identity/projects/workflows.py | 6 - .../dashboards/identity/roles/urls.py | 1 + .../dashboard/identity/groups/groups.module.js | 123 + .../identity/groups/groups.module.spec.js | 59 + .../static/dashboard/identity/groups/panel.html | 4 + .../static/dashboard/identity/identity.module.js | 3 +- .../static/dashboard/identity/roles/panel.html | 3 +- .../dashboard/identity/roles/roles.module.js | 15 +- .../dashboard/identity/roles/roles.module.spec.js | 47 +- .../identity/users/actions/actions.module.js | 129 + .../users/actions/create.action.service.js | 86 + .../users/actions/create.action.service.spec.js | 91 + .../users/actions/delete.action.service.js | 121 + .../users/actions/delete.action.service.spec.js | 142 + .../users/actions/disable.action.service.js | 76 + .../users/actions/disable.action.service.spec.js | 58 + .../users/actions/enable.action.service.js | 76 + .../users/actions/enable.action.service.spec.js | 58 + .../users/actions/password.action.service.js | 109 + .../users/actions/password.action.service.spec.js | 130 + .../users/actions/update.action.service.js | 96 + .../users/actions/update.action.service.spec.js | 88 + .../workflow/error.admin-password-incorrect.html | 1 + .../users/actions/workflow/error.default.html | 1 + .../users/actions/workflow/info.create.help.html | 1 + .../users/actions/workflow/info.password.help.html | 1 + .../users/actions/workflow/info.update.help.html | 1 + .../users/actions/workflow/workflow.service.js | 211 + .../users/actions/workflow/workflow.spec.js | 71 + .../static/dashboard/identity/users/panel.html | 3 +- .../dashboard/identity/users/users.module.js | 17 +- .../dashboard/identity/users/users.module.spec.js | 2 +- .../dashboard/identity/users/users.service.js | 12 +- .../dashboard/identity/users/users.service.spec.js | 12 +- .../dashboards/identity/users/forms.py | 9 +- .../dashboards/identity/users/tables.py | 4 +- .../dashboards/project/api_access/panel.py | 1 + .../dashboards/project/api_access/tables.py | 5 +- .../templates/api_access/openrc.sh.template | 2 + .../dashboards/project/api_access/urls.py | 1 + .../dashboards/project/api_access/views.py | 10 +- .../dashboards/project/backups/panel.py | 3 +- .../dashboards/project/cg_snapshots/panel.py | 3 +- .../dashboards/project/cg_snapshots/tables.py | 3 +- .../dashboards/project/cgroups/panel.py | 3 +- .../dashboards/project/floating_ips/forms.py | 16 +- .../dashboards/project/floating_ips/panel.py | 1 + .../dashboards/project/floating_ips/tables.py | 22 +- .../templates/floating_ips/_allocate.html | 10 +- .../dashboards/project/floating_ips/views.py | 9 +- .../dashboards/project/floating_ips/workflows.py | 42 +- .../dashboards/project/images/images/urls.py | 1 + .../dashboards/project/images/urls.py | 1 + .../dashboards/project/images/utils.py | 23 +- .../dashboards/project/instances/console.py | 6 +- .../dashboards/project/instances/forms.py | 67 +- .../dashboards/project/instances/tables.py | 33 +- .../templates/instances/_detail_overview.html | 2 + .../dashboards/project/instances/urls.py | 1 + .../dashboards/project/instances/utils.py | 44 +- .../dashboards/project/instances/views.py | 120 +- .../project/instances/workflows/create_instance.py | 7 + .../project/instances/workflows/update_instance.py | 76 +- .../dashboards/project/key_pairs/tables.py | 8 +- .../dashboards/project/key_pairs/urls.py | 28 +- .../templates/network_topology/_graph_view.html | 14 +- .../dashboards/project/network_topology/utils.py | 4 +- .../dashboards/project/network_topology/views.py | 20 +- .../extensions/allowed_address_pairs/tables.py | 14 +- .../dashboards/project/networks/ports/forms.py | 182 +- .../dashboards/project/networks/ports/tables.py | 35 +- .../dashboards/project/networks/ports/views.py | 45 +- .../dashboards/project/networks/ports/workflows.py | 180 + .../dashboards/project/networks/subnets/tables.py | 71 +- .../dashboards/project/networks/subnets/views.py | 3 + .../dashboards/project/networks/tables.py | 97 +- .../networks/templates/networks/ports/_create.html | 2 +- .../templates/networks/ports/_edit_port_help.html | 25 + .../networks/templates/networks/ports/_update.html | 7 - .../networks/templates/networks/ports/update.html | 7 - .../dashboards/project/networks/views.py | 4 + .../dashboards/project/networks/workflows.py | 24 +- .../dashboards/project/overview/views.py | 2 +- .../routers/extensions/extraroutes/forms.py | 3 +- .../dashboards/project/routers/forms.py | 38 +- .../dashboards/project/routers/ports/forms.py | 23 +- .../dashboards/project/routers/ports/tables.py | 10 +- .../dashboards/project/routers/tables.py | 104 +- .../project/routers/templates/routers/_create.html | 3 + .../dashboards/project/routers/views.py | 11 + .../dashboards/project/security_groups/forms.py | 2 + .../dashboards/project/security_groups/panel.py | 1 + .../dashboards/project/security_groups/tables.py | 6 +- .../dashboards/project/security_groups/urls.py | 1 + .../dashboards/project/security_groups/views.py | 19 +- .../dashboards/project/snapshots/panel.py | 3 +- .../dashboards/project/snapshots/tables.py | 3 +- .../dashboards/project/snapshots/views.py | 20 +- .../dashboards/project/stacks/__init__.py | 0 .../dashboards/project/stacks/api.py | 83 - .../dashboards/project/stacks/forms.py | 488 -- .../dashboards/project/stacks/mappings.py | 350 - .../dashboards/project/stacks/panel.py | 21 - .../project/stacks/resource_types/__init__.py | 0 .../project/stacks/resource_types/panel.py | 23 - .../project/stacks/resource_types/tables.py | 36 - .../project/stacks/resource_types/tabs.py | 32 - .../templates/stacks.resource_types/_details.html | 15 - .../project/stacks/resource_types/urls.py | 22 - .../project/stacks/resource_types/views.py | 78 - .../dashboards/project/stacks/sro.py | 44 - .../dashboards/project/stacks/tables.py | 400 - .../dashboards/project/stacks/tabs.py | 173 - .../project/stacks/template_versions/__init__.py | 0 .../project/stacks/template_versions/panel.py | 23 - .../project/stacks/template_versions/tables.py | 52 - .../project/stacks/template_versions/tabs.py | 51 - .../stacks.template_versions/_details.html | 3 - .../templates/stacks.template_versions/index.html | 7 - .../project/stacks/template_versions/urls.py | 24 - .../project/stacks/template_versions/views.py | 61 - .../stacks/templates/stacks/_change_template.html | 7 - .../project/stacks/templates/stacks/_create.html | 6 - .../stacks/templates/stacks/_detail_events.html | 3 - .../stacks/templates/stacks/_detail_overview.html | 55 - .../stacks/templates/stacks/_detail_resources.html | 3 - .../stacks/templates/stacks/_detail_topology.html | 9 - .../project/stacks/templates/stacks/_preview.html | 6 - .../stacks/templates/stacks/_preview_details.html | 58 - .../stacks/templates/stacks/_preview_template.html | 7 - .../stacks/templates/stacks/_resource_info.html | 10 - .../templates/stacks/_resource_overview.html | 38 - .../stacks/templates/stacks/_select_template.html | 7 - .../stacks/templates/stacks/_stack_info.html | 14 - .../stacks/templates/stacks/_stack_template.html | 5 - .../project/stacks/templates/stacks/_update.html | 6 - .../stacks/templates/stacks/change_template.html | 7 - .../project/stacks/templates/stacks/create.html | 7 - .../project/stacks/templates/stacks/preview.html | 7 - .../stacks/templates/stacks/preview_details.html | 7 - .../stacks/templates/stacks/preview_template.html | 7 - .../stacks/templates/stacks/select_template.html | 7 - .../project/stacks/templates/stacks/update.html | 7 - .../dashboards/project/stacks/urls.py | 38 - .../dashboards/project/stacks/views.py | 358 - .../project/containers/containers.controller.js | 5 +- .../project/containers/delete-objects-modal.html | 2 +- .../configuration/configuration.controller.js | 2 +- .../configuration/configuration.html | 12 +- .../launch-instance/details/details.controller.js | 12 +- .../details/details.controller.spec.js | 25 +- .../workflow/launch-instance/details/details.html | 6 + .../workflow/launch-instance/flavor/flavor.html | 24 +- .../launch-instance/keypair/create-keypair.html | 4 +- .../launch-instance-model.service.js | 11 +- .../launch-instance-model.service.spec.js | 28 +- .../launch-instance-workflow.service.js | 9 +- .../launch-instance-workflow.service.spec.js | 13 + .../launch-instance/launch-instance.module.js | 5 + .../launch-instance/networkports/ports.html | 12 +- .../launch-instance/source/source.controller.js | 65 +- .../source/source.controller.spec.js | 14 + .../workflow/launch-instance/source/source.html | 43 +- .../dashboards/project/volumes/forms.py | 21 +- .../dashboards/project/volumes/panel.py | 3 +- .../dashboards/project/volumes/tables.py | 14 +- .../dashboards/project/volumes/tabs.py | 31 +- .../templates/volumes/_detail_overview.html | 6 +- .../volumes/templates/volumes/_show_transfer.html | 10 +- .../templates/volumes/download_transfer_creds.html | 3 + .../dashboards/project/volumes/views.py | 46 +- .../dashboards/settings/password/panel.py | 1 - .../dashboards/settings/user/forms.py | 71 +- openstack_dashboard/enabled/_1000_project.py | 14 - .../enabled/_1020_project_overview_panel.py | 12 - .../enabled/_1050_project_images_panel.py | 14 - .../enabled/_1500_project_trunks_panel.py | 17 - .../enabled/_1510_project_network_qos_panel.py | 12 - .../enabled/_1610_orchestration_panel_group.py | 8 - .../enabled/_1620_project_stacks_panel.py | 9 - .../enabled/_1630_project_resource_types_panel.py | 10 - .../_1640_project_template_versions_panel.py | 10 - .../enabled/_1920_project_containers_panel.py | 14 - openstack_dashboard/enabled/_2000_admin.py | 14 - .../enabled/_2010_admin_overview_panel.py | 12 - .../enabled/_2150__admin_flavors_panel.py | 24 - .../enabled/_2150_admin_flavors_panel.py | 9 + .../enabled/_2340_admin_trunks_panel.py | 9 + openstack_dashboard/enabled/_3000_identity.py | 12 - .../enabled/_3020_identity_projects_panel.py | 2 + openstack_dashboard/exceptions.py | 5 - .../local/local_settings.py.example | 90 +- .../locale/as/LC_MESSAGES/django.po | 305 +- .../locale/bn_IN/LC_MESSAGES/django.po | 303 +- .../locale/brx/LC_MESSAGES/django.po | 304 +- .../locale/cs/LC_MESSAGES/django.po | 588 +- .../locale/cs/LC_MESSAGES/djangojs.po | 98 +- .../locale/de/LC_MESSAGES/django.po | 875 +-- .../locale/de/LC_MESSAGES/djangojs.po | 451 +- .../locale/en_AU/LC_MESSAGES/django.po | 986 ++- .../locale/en_AU/LC_MESSAGES/djangojs.po | 94 +- .../locale/en_GB/LC_MESSAGES/django.po | 853 +- .../locale/en_GB/LC_MESSAGES/djangojs.po | 1690 +++- .../locale/eo/LC_MESSAGES/django.po | 8209 ++++++++++++++++++++ .../locale/eo/LC_MESSAGES/djangojs.po | 3694 +++++++++ .../locale/es/LC_MESSAGES/django.po | 1925 +++-- .../locale/es/LC_MESSAGES/djangojs.po | 1751 ++++- .../locale/fr/LC_MESSAGES/django.po | 861 +- .../locale/fr/LC_MESSAGES/djangojs.po | 312 +- .../locale/gu/LC_MESSAGES/django.po | 304 +- .../locale/hi/LC_MESSAGES/django.po | 297 +- .../locale/id/LC_MESSAGES/django.po | 843 +- .../locale/id/LC_MESSAGES/djangojs.po | 528 +- .../locale/it/LC_MESSAGES/django.po | 555 +- .../locale/it/LC_MESSAGES/djangojs.po | 41 +- .../locale/ja/LC_MESSAGES/django.po | 851 +- .../locale/ja/LC_MESSAGES/djangojs.po | 511 +- .../locale/kn/LC_MESSAGES/django.po | 307 +- .../locale/ko_KR/LC_MESSAGES/django.po | 865 +-- .../locale/ko_KR/LC_MESSAGES/djangojs.po | 586 +- .../locale/kok/LC_MESSAGES/django.po | 304 +- .../locale/ks/LC_MESSAGES/django.po | 304 +- .../locale/mai/LC_MESSAGES/django.po | 304 +- .../locale/mni/LC_MESSAGES/django.po | 306 +- .../locale/mr/LC_MESSAGES/django.po | 303 +- .../locale/ne/LC_MESSAGES/django.po | 303 +- .../locale/nl_NL/LC_MESSAGES/django.po | 293 +- .../locale/pa_IN/LC_MESSAGES/django.po | 305 +- .../locale/pl_PL/LC_MESSAGES/django.po | 548 +- .../locale/pt_BR/LC_MESSAGES/django.po | 853 +- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 541 +- .../locale/ru/LC_MESSAGES/django.po | 905 +-- .../locale/ru/LC_MESSAGES/djangojs.po | 99 +- .../locale/sr/LC_MESSAGES/django.po | 269 +- .../locale/ta/LC_MESSAGES/django.po | 305 +- .../locale/tr_TR/LC_MESSAGES/django.po | 1804 ++--- .../locale/tr_TR/LC_MESSAGES/djangojs.po | 474 +- .../locale/ur/LC_MESSAGES/django.po | 305 +- .../locale/zh_CN/LC_MESSAGES/django.po | 971 +-- .../locale/zh_CN/LC_MESSAGES/djangojs.po | 802 +- .../locale/zh_TW/LC_MESSAGES/django.po | 1209 +-- .../locale/zh_TW/LC_MESSAGES/djangojs.po | 1254 ++- .../management/commands/extract_messages.py | 21 +- .../management/commands/update_catalog.py | 25 +- openstack_dashboard/settings.py | 65 +- openstack_dashboard/static/app/core/_core.scss | 1 + .../core/images/actions/create.action.service.js | 40 +- .../images/actions/create.action.service.spec.js | 100 +- .../core/images/actions/delete-image.service.js | 45 +- .../images/actions/delete-image.service.spec.js | 12 - .../app/core/images/actions/edit.action.service.js | 90 +- .../images/actions/edit.action.service.spec.js | 35 +- .../static/app/core/images/images.module.js | 8 +- .../static/app/core/images/images.service.js | 4 +- .../steps/create-image/create-image.controller.js | 11 +- .../create-image/create-image.controller.spec.js | 14 +- .../create-volume/create-volume.controller.js | 12 +- .../create-volume/create-volume.controller.spec.js | 32 +- .../steps/edit-image/edit-image.controller.js | 6 +- .../steps/edit-image/edit-image.controller.spec.js | 18 +- .../update-metadata/update-metadata.controller.js | 2 +- .../update-metadata.controller.spec.js | 8 +- .../static/app/core/keypairs/_keypairs.scss | 27 + .../app/core/keypairs/actions/actions.module.js | 83 + .../core/keypairs/actions/create.description.html | 5 + .../app/core/keypairs/actions/create.service.js | 159 + .../core/keypairs/actions/create.service.spec.js | 74 + .../app/core/keypairs/actions/delete.service.js | 121 + .../core/keypairs/actions/delete.service.spec.js | 135 + .../core/keypairs/actions/import.description.html | 23 + .../actions/import.public-key.controller.js | 43 + .../actions/import.public-key.controller.spec.js | 54 + .../core/keypairs/actions/import.public-key.html | 9 + .../app/core/keypairs/actions/import.service.js | 157 + .../core/keypairs/actions/import.service.spec.js | 75 + .../core/keypairs/details/details.controller.js | 35 + .../keypairs/details/details.controller.spec.js | 42 + .../static/app/core/keypairs/details/details.html | 12 + .../app/core/keypairs/details/details.module.js | 51 + .../static/app/core/keypairs/details/drawer.html | 5 + .../static/app/core/keypairs/keypairs.module.js | 85 +- .../app/core/keypairs/keypairs.module.spec.js | 22 + .../static/app/core/keypairs/keypairs.service.js | 81 + .../app/core/keypairs/keypairs.service.spec.js | 72 + .../static/app/core/keypairs/panel.html | 5 + .../static/app/core/network_qos/qos.module.js | 20 +- .../static/app/core/network_qos/qos.service.js | 4 +- .../core/openstack-service-api/cinder.service.js | 20 + .../openstack-service-api/cinder.service.spec.js | 7 + .../core/openstack-service-api/glance.service.js | 11 +- .../openstack-service-api/glance.service.spec.js | 29 +- .../app/core/openstack-service-api/heat.service.js | 80 - .../openstack-service-api/heat.service.spec.js | 80 - .../core/openstack-service-api/keystone.service.js | 52 +- .../openstack-service-api/keystone.service.spec.js | 66 + .../core/openstack-service-api/neutron.service.js | 55 +- .../openstack-service-api/neutron.service.spec.js | 96 + .../app/core/openstack-service-api/nova.service.js | 57 + .../openstack-service-api/nova.service.spec.js | 29 + .../app/core/trunks/actions/actions.module.js | 37 +- .../app/core/trunks/actions/actions.module.spec.js | 25 +- .../core/trunks/actions/create.action.service.js | 149 + .../trunks/actions/create.action.service.spec.js | 186 + .../core/trunks/actions/create.workflow.service.js | 68 + .../core/trunks/actions/delete.action.service.js | 126 +- .../trunks/actions/delete.action.service.spec.js | 273 +- .../app/core/trunks/actions/edit.action.service.js | 156 + .../trunks/actions/edit.action.service.spec.js | 196 + .../core/trunks/actions/edit.workflow.service.js | 62 + .../app/core/trunks/actions/ports-extra.service.js | 142 + .../trunks/actions/ports-extra.service.spec.js | 112 + .../app/core/trunks/details/details.module.js | 0 .../app/core/trunks/details/overview.controller.js | 0 .../static/app/core/trunks/details/overview.html | 0 .../static/app/core/trunks/panel.html | 5 +- .../core/trunks/steps/trunk-details.controller.js | 93 + .../trunks/steps/trunk-details.controller.spec.js | 73 + .../app/core/trunks/steps/trunk-details.help.html | 17 + .../app/core/trunks/steps/trunk-details.html | 60 + .../trunks/steps/trunk-parent-port.controller.js | 137 + .../steps/trunk-parent-port.controller.spec.js | 135 + .../core/trunks/steps/trunk-parent-port.help.html | 25 + .../app/core/trunks/steps/trunk-parent-port.html | 179 + .../core/trunks/steps/trunk-subports.controller.js | 165 + .../trunks/steps/trunk-subports.controller.spec.js | 192 + .../app/core/trunks/steps/trunk-subports.help.html | 65 + .../app/core/trunks/steps/trunk-subports.html | 196 + .../static/app/core/trunks/trunks.module.js | 31 +- .../static/app/core/trunks/trunks.module.spec.js | 2 +- .../static/app/core/trunks/trunks.service.js | 59 +- .../static/app/core/trunks/trunks.service.spec.js | 41 +- .../static/app/core/workflow/decorator.service.js | 8 +- .../app/core/workflow/decorator.service.spec.js | 11 +- .../static/dashboard/img/logo-splash.svg | 2 +- openstack_dashboard/static/dashboard/img/logo.svg | 2 +- .../dashboard/scss/components/_messages.scss | 2 +- .../static/dashboard/scss/components/_modals.scss | 6 +- .../static/dashboard/scss/components/_navbar.scss | 7 +- .../scss/components/_transfer_tables.scss | 10 +- .../static/js/angular/directives/serialConsole.js | 45 +- .../static/js/horizon.flatnetworktopology.js | 12 +- .../static/js/horizon.networktopology.js | 136 +- openstack_dashboard/templates/404.html | 23 +- .../templates/_login_form_footer.html | 6 + openstack_dashboard/templates/header/_header.html | 1 + .../templates/header/_header_sections.html | 28 + .../templates/header/_user_menu.html | 33 +- .../templates/horizon/_scripts.html | 2 + openstack_dashboard/templates/serial_console.html | 5 +- openstack_dashboard/test/extensible_header_urls.py | 18 + openstack_dashboard/test/helpers.py | 107 +- .../pages/admin/system/flavorspage.py | 4 +- .../pages/project/orchestration/__init__.py | 0 .../pages/project/orchestration/stackspage.py | 99 - openstack_dashboard/test/selenium/__init__.py | 0 openstack_dashboard/test/settings.py | 18 +- openstack_dashboard/test/test_data/cinder_data.py | 15 +- openstack_dashboard/test/test_data/exceptions.py | 4 - openstack_dashboard/test/test_data/heat_data.py | 617 -- .../test/test_data/keystone_data.py | 32 +- openstack_dashboard/test/test_data/neutron_data.py | 243 +- openstack_dashboard/test/test_data/nova_data.py | 112 +- openstack_dashboard/test/test_data/utils.py | 2 - .../templates/plugin_panel/header.html | 6 + .../test/test_panels/plugin_panel/views.py | 10 + .../panel_config/_10_admin_add_panel.py | 6 +- openstack_dashboard/test/themes.py | 29 - openstack_dashboard/test/unit/__init__.py | 0 openstack_dashboard/test/unit/api/__init__.py | 0 openstack_dashboard/test/unit/api/rest/__init__.py | 0 .../test/unit/api/rest/test_cinder.py | 501 ++ .../test/unit/api/rest/test_config.py | 26 + .../test/unit/api/rest/test_glance.py | 588 ++ .../test/unit/api/rest/test_keystone.py | 817 ++ .../test/unit/api/rest/test_network.py | 104 + .../test/unit/api/rest/test_neutron.py | 351 + .../test/unit/api/rest/test_nova.py | 986 +++ .../test/unit/api/rest/test_policy.py | 88 + .../test/unit/api/rest/test_swift.py | 249 + .../test/unit/api/rest/test_utils.py | 249 + openstack_dashboard/test/unit/api/test_base.py | 332 + openstack_dashboard/test/unit/api/test_cinder.py | 529 ++ openstack_dashboard/test/unit/api/test_glance.py | 351 + openstack_dashboard/test/unit/api/test_keystone.py | 116 + openstack_dashboard/test/unit/api/test_network.py | 137 + openstack_dashboard/test/unit/api/test_neutron.py | 1432 ++++ openstack_dashboard/test/unit/api/test_nova.py | 683 ++ openstack_dashboard/test/unit/api/test_swift.py | 261 + openstack_dashboard/test/unit/test_error_pages.py | 36 + openstack_dashboard/test/unit/test_policy.py | 134 + openstack_dashboard/test/unit/test_themes.py | 29 + openstack_dashboard/test/unit/test_views.py | 46 + openstack_dashboard/test/unit/usage/__init__.py | 0 openstack_dashboard/test/unit/usage/test_quotas.py | 536 ++ openstack_dashboard/test/unit/utils/__init__.py | 0 .../test/unit/utils/test_config_types.py | 43 + .../test/unit/utils/test_filters.py | 41 + .../themes/material/templates/header/_header.html | 1 + openstack_dashboard/urls.py | 1 + openstack_dashboard/usage/__init__.py | 2 + openstack_dashboard/usage/base.py | 183 +- openstack_dashboard/usage/quotas.py | 405 +- openstack_dashboard/usage/views.py | 68 +- openstack_dashboard/utils/config.py | 68 + openstack_dashboard/utils/config_types.py | 213 + openstack_dashboard/utils/settings.py | 26 +- openstack_dashboard/views.py | 72 + openstack_dashboard/wsgi/django.wsgi | 25 +- .../bp-mks-console-support-a943797a8bad14ca.yaml | 4 + ...p-neutron-trunk-ui-queens-1d59df887b9a079a.yaml | 9 + .../notes/bp-ng-keypairs-876c38a1a8aed60f.yaml | 11 + .../notes/bug-1595913-5f0cd019b7c2173a.yaml | 5 + .../cinder-api-v3-by-default-d6e3c12760fdf655.yaml | 11 + .../default-keystone-api-v3-dc201adba4255752.yaml | 9 + .../django-version-queens-b7785b96ecbceaf0.yaml | 5 + .../notes/extensible-header-ac3c94f3057c1b2a.yaml | 5 + .../floating_ip_description-f4d2df7949b9fde9.yaml | 6 + .../heat-panel-splitout-b609b157aa4bf29b.yaml | 11 + ...t-generated-automatically-4a9bf752752d09f6.yaml | 11 - .../merge-openstack-auth-aa101f9432ba799a.yaml | 7 + .../neutron-default-quotas-ddd237af2935fde3.yaml | 9 + .../notes/ngdetail-reload-e711a77b2d07191a.yaml | 14 + ...penstack-auth-policy-dirs-c5d77665eac415ea.yaml | 11 + ...ove-deprecated-init-scope-342153755181f0a4.yaml | 5 + ...nsfer-table-avail-changed-cfae61341b5fea71.yaml | 13 + ...-group-associate-per-port-c81ca7beb7dca409.yaml | 6 + ...eve-instance-ip-addresses-b9db6703d8b010c8.yaml | 10 + releasenotes/source/conf.py | 12 +- releasenotes/source/index.rst | 1 + .../source/locale/de/LC_MESSAGES/releasenotes.po | 4361 ----------- .../source/locale/id/LC_MESSAGES/releasenotes.po | 4849 ------------ .../source/locale/ja/LC_MESSAGES/releasenotes.po | 4740 ----------- .../locale/pt_BR/LC_MESSAGES/releasenotes.po | 3239 -------- releasenotes/source/pike.rst | 24 + releasenotes/source/unreleased.rst | 18 - requirements.txt | 29 +- setup.cfg | 10 + test-requirements.txt | 22 +- tools/executable_files.txt | 6 + tools/find_executables.sh | 11 + tools/gate/integration/devstack_gate_rc | 2 +- tools/install_venv.py | 73 - tools/install_venv_common.py | 175 - tools/policy-diff.py | 53 + tools/pseudo.py | 83 - tools/with_venv.sh | 13 - tox.ini | 40 +- 862 files changed, 63458 insertions(+), 62156 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 9c2385f..15df13b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17 +16,0 @@ django-compressor>=2.0 # MIT -django-openstack-auth>=3.5.0 # Apache-2.0 @@ -19 +18 @@ django-pyscss>=2.0.2 # BSD License (2 clause) -futurist!=0.15.0,>=0.11.0 # Apache-2.0 +futurist>=1.2.0 # Apache-2.0 @@ -21,7 +20,8 @@ iso8601>=0.1.11 # MIT -netaddr!=0.7.16,>=0.7.13 # BSD -oslo.concurrency>=3.8.0 # Apache-2.0 -oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0 -oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0 -oslo.policy>=1.23.0 # Apache-2.0 -oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0 -oslo.utils>=3.20.0 # Apache-2.0 +keystoneauth1>=3.3.0 # Apache-2.0 +netaddr>=0.7.18 # BSD +oslo.concurrency>=3.25.0 # Apache-2.0 +oslo.config>=5.1.0 # Apache-2.0 +oslo.i18n>=3.15.3 # Apache-2.0 +oslo.policy>=1.30.0 # Apache-2.0 +oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +oslo.utils>=3.33.0 # Apache-2.0 @@ -31 +31 @@ pyScss!=1.3.5,>=1.3.4 # MIT License -python-cinderclient>=3.1.0 # Apache-2.0 +python-cinderclient>=3.3.0 # Apache-2.0 @@ -33 +32,0 @@ python-glanceclient>=2.8.0 # Apache-2.0 -python-heatclient>=1.6.1 # Apache-2.0 @@ -36 +35 @@ python-neutronclient>=6.3.0 # Apache-2.0 -python-novaclient>=9.0.0 # Apache-2.0 +python-novaclient>=9.1.0 # Apache-2.0 @@ -39 +38 @@ pytz>=2013.6 # MIT -PyYAML>=3.10.0 # MIT +PyYAML>=3.10 # MIT @@ -41 +40 @@ semantic-version>=2.3.1 # BSD -six>=1.9.0 # MIT +six>=1.10.0 # MIT @@ -54 +53 @@ XStatic-Hogan>=2.0.0.2 # Apache 2.0 License -XStatic-Font-Awesome>=4.7.0 # SIL OFL 1.1 License, MIT License +XStatic-Font-Awesome>=4.7.0.0 # SIL OFL 1.1 License, MIT License diff --git a/test-requirements.txt b/test-requirements.txt index 41de00e..79ecc3d 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -14 +14 @@ django-nose>=1.4.4 # BSD -doc8 # Apache-2.0 +doc8>=0.6.0 # Apache-2.0 @@ -16,2 +16,2 @@ flake8-import-order==0.12 # LGPLv3 -mock>=2.0 # BSD -mox3!=0.19.0,>=0.7.0 # Apache-2.0 +mock>=2.0.0 # BSD +mox3>=0.20.0 # Apache-2.0 @@ -19,4 +19,3 @@ nodeenv>=0.9.4 # BSD -nose # LGPL -nose-exclude # LGPL -nosehtmloutput>=0.0.3 # Apache-2.0 -nosexcover # BSD +nose>=1.3.7 # LGPL +nose-exclude>=0.3.0 # LGPL +nosexcover>=1.0.10 # BSD @@ -24,2 +23,2 @@ openstack.nose-plugin>=0.7 # Apache-2.0 -openstackdocstheme>=1.16.0 # Apache-2.0 -reno!=2.3.1,>=1.8.0 # Apache-2.0 +openstackdocstheme>=1.18.1 # Apache-2.0 +reno>=2.5.0 # Apache-2.0 @@ -28,2 +27,3 @@ selenium>=2.50.1 # Apache-2.0 -sphinx>=1.6.2 # BSD -testtools>=1.4.0 # MIT +sphinx!=1.6.6,>=1.6.2 # BSD +testscenarios>=0.4 # Apache-2.0/BSD +testtools>=2.2.0 # MIT
participants (1)
-
no-reply@openstack.org