horizon 15.0.0 (stein)
We are psyched to announce the release of: horizon 15.0.0: OpenStack Dashboard This release is part of the stein release series. The source is available from: https://git.openstack.org/cgit/openstack/horizon Download the package from: https://tarballs.openstack.org/horizon/ Please report issues through: https://bugs.launchpad.net/horizon/+bugs For more details, please see below. 15.0.0 ^^^^^^ Upgrade Notes * policy.json files for Cinder, Keystone Neutron and Nova are generated according to Policy file maintenance. Keystone changes to *policy rules <https://docs.openstack.org/releasenotes/keystone/ste in.html#prelude>__*, are not compatible with the Horizon so we keystone_policy.json is not updated. Please, be sure that new Keystone policies are compatible with your deployment before syncing them. Changes in horizon 14.0.0.0rc1..15.0.0 -------------------------------------- 9042981cc Sync policy.json files with service projects 3766cf693 Imported Translations from Zanata 96ad636f8 Not implicitly set vol_device_name to vda 88b27ddde Imported Translations from Zanata 1d0172191 Display first volume image_metadata as an instance image 39be99b85 project volume group: Fix incorrect reference to cgroup panel 273de58cc network topology: handle port AZ correctly 157026d64 Update UPPER_CONSTRAINTS_FILE for stable/stein cf058902d Update .gitreview for stable/stein 803fe90bb Imported Translations from Zanata f05e64095 Modify the success message of launch instance 177f9be74 Fix: Help text for creating group type has incorrect description 59765a9e2 Imported Translations from Zanata a85687cb7 Add Validation msg in Create Extra Spec Form under Volume Type Panel f272d9136 Fix CSRF error on Images dashboard f83324a52 Add Group and Group Snapshot colunm 876a1674f Imported Translations from Zanata 0c482d848 Imported Translations from Zanata 7fbf2b5c0 Setup project-template for nodejs10 jobs 8e13106ad Make domain_lookup return consistent type 989763483 Add verification of the volume type a10d5f18e Define a project-template for horizon plugins e332cef01 Add key_type selection on Keypairs form 3ddfd5d41 Imported Translations from Zanata 0f2df7623 Modify the success message of 'Edit' user information e37a50863 Implement CSRF_COOKIE_HTTPONLY option support 4103de6f3 add the 'word-wrap' to update metadata form 29738534f Show flavor tooltip on mouse hover 52e6fb031 Imported Translations from Zanata ff5f74d5d Fixes double loading in Image source loading 6372a689e Don't use check_for_language in the user settings form beedc4e72 Correcting the error messages of Volume Snapshot Table 4e8e90798 Add python-memcached library to test-requirements.txt 58211d628 Updating Note to Setup guide 7cb4be82b Add Project Information column in group-snapshot table 43f8c3b1f Switch integration tests to run with python3 c0ceda4c5 Imported Translations from Zanata 78de54787 Fix policy function check error d7d6c0577 Add a upgrade_check management command e33d56ff7 add the max_value to field in create flavor form 4b523122b Add volume group-specs-list support for admin panel bdf7e6922 Update appdirs lower constraint to 1.4.0 07e8543e5 Modify the error messages of Create group and update group 5e53e014d Fix recoverable error at volume group create 2c5afc7f0 Imported Translations from Zanata 5f01e34ca Change image_id to aggregate_id eb6a78f51 Throws exceptions.Conflict() in the interface application_credential_create b57eea004 Ensure to use tenant_quota_usages 17d793185 Allow image format edit only for queued images b37abb116 Fix: Volume Snapshot Table "Project' column info b45de686a Add <span class='word-wrap'> c7568b0ec add python 3.7 unit test job 13a083a6c Imported Translations from Zanata 9497a2372 Add volume-group snapshot for admin panel 74b5367c7 Add a additional filter replace_underscores to filter the snapshot status 99b89a430 Add Project ID information in detail page 534539487 the metadata needs to be word wrap in volume detail 787ede8d9 Clarify instance state after launch submission ba4a84148 Modify the prompt of update network f24278da7 Modify the flavor ID regex c871c6570 Add Project Information column in table 07ec6deb5 Add a prompt on the Create Volume form d5b7feb5d Imported Translations from Zanata 611224db1 Quote cinder qos-spec key name 1ca0c6f6e instances.tests: Set return_value for tenant_absolute_limits 4bf069bb9 Ensure to call patch_middleware_get_user() in api.test_base 949802264 pylint: fix cyclic-import 3ac903767 Table checkbox display problem when updating row a06e7de97 Correct error message for volume size in Launch Instance 8ccbd8357 Remove obsolete creation_counter field 2ef503465 Fixing a link in templates of CG and CG snapshots 5764aa588 Add volume group-type list/show support for admin panel 2bbd0e250 Ensure only one prompt for cidr and gateway_ip 96d2b775f Show error message on the Edit Image form ece4ddbe6 Imported Translations from Zanata 35e933867 Align default integration config values with code 26a8b0447 Imported Translations from Zanata e531b7bab Fix osprofiler support in horizon 28b457bc6 UT: Detect template rendering errors a69ba853a UT: Run test_plugins as separate process 55a51b2d6 Add horizon-dsvm-tempest-plugin-py27 job f1654a37c Imported Translations from Zanata 6084b329f Add volume-group table actions for admin panel 508818d90 Revert "Fix osprofiler support in horizon" 4a67f7d79 Correct regular expression of volume type extra spec key 468184bd9 Consistency Group Snapshots detail url is wrong b06657b07 Fix gate failures by a new pycodestyle 65545fb15 Imported Translations from Zanata 677dd6c93 Error should be reported when only a space is entered 9a0dfeb75 Imported Translations from Zanata 59cfc3fc3 Input limit on key name c2a3c6203 Add volume group list/show support for admin panel 2842d7df3 Fix untrusted dashboard host 96aded3c3 Fix osprofiler support in horizon a25d6b331 Fix developer panel when debug is set to False a984ae43e pylint: fix raising-non-exception error 136a3e1de Imported Translations from Zanata 0c8de3eb4 Add non-voting integration tests job 4624438f1 Modify the error message when creating subnet 239bf1390 Show error if required fields are not filled when creating a port 9518f7a5e pylint: fix unexpected-keyword-arg error 0d39a5c33 pylint: Ignore existing misplaced-bare-raise error 150dcc3fb pylint: fix redundant-keyword-arg error 7c585e264 pylint: fix some refactor recommendations 957894963 pylint: fix too-many-nested-blocks/redefined-argument-from-local ac7ac272b pylint: fix several coding convention violations a15275449 Pop up the error message of creating a snapshot 3869e0c6b Imported Translations from Zanata 4dd8e3d40 pylint: fix bad-mcs-classmethod-argument warning f6e1338cd pylint: fix unnecessary-pass warning a8edb5059 pylint: fix simplifiable-if-statement/expression 786fb183e pylint: fix trailing-comma-tuple warning e9f75a7bc pylint: fix useless-super-delegation warning c076db20c pylint: fix len-as-condition warning 3143edef0 pylint: fix import-error 6ce323307 pylint: fixes several errors 8f39950a0 Document horizon policies a1d28fc35 doc: Fix unnecessary spaces in folder paths 000da0f8f api.cinder: refactor microversioning logic 32bfbbf10 Use correct cinder API version for tenant_absolute_limits a98468bef Change the default SESSION_ENGINE to use cached sessions f3bd271fc pylint: fix bad-super-call 51251d9d6 pylint: Drop non-existing IPAddressField 86d1826a2 pylint: ignore access-member-before-definition explicitly 6e1348d05 pylint: fix several warnings 3a584a90c Show domain info in project and user detail panel e832c8549 Allow to specify custom templates for clouds.yaml and openrc 59beb951a pylint: Fix consider-using-(dict|set)-comprehension 220b1346b Enable pylint in horizon f02e7c5ad Imported Translations from Zanata 40e36a1c8 [doc] Fix: Tutorial: Building a Dashboard 643021a96 The name is too long and will exceed the page range cc2a9c050 Provide partial-completed progress bar for DataTable status columns. d910acb7d Change bug tracker URL for the vitrage-dashboard 59038e69b Imported Translations from Zanata 5e07d03f9 doc: Remove errant newline in the plugin tutorial 2a5612a3b volume_groups test: use create_mocks from test helper d234cc6ba Imported Translations from Zanata 8cc055157 doc: Use `manage.py migrate` 90aa4b2b7 SG creation user taken straight to edit rules 6be52c401 Modify the prompt of update volume 3d899d907 the name needs to be word wrap d4cea903b Error should be reported when only a space is entered ecdeff4d8 Decorate Javascript i18n with a last_modified header d0297a5ed Imported Translations from Zanata 6902aee3a Improve RBAC policies panel f41df5a80 Fix folder path in "AngularJS Topic Guide" e4df6cc8e Fixed description in Metadata tab in Edit/Create Image dialog 2a3b04ce6 Changed the message level for deleting some resources to info e9f8abb65 Rework old customization templates and add new blocks d65ebe205 Add RBAC policies feature to horizon dashboard 3b18a92d4 Imported Translations from Zanata 07070c437 Imported Translations from Zanata 72eff9c4f Migrate horizon-dsvm-tempest-plugin job to python3 9feead65c Fix command line of bandit-baseline 372b75c22 Do not load openstack_dashboard.settings in unit tests 467669417 Add "prev" link to instance page list pagination 87e2cf67f Imported Translations from Zanata d641e6d10 Better support for community images 09115c715 tox: Reuse envdirs 26b838b7e Do not instantiate tables when a tab is not allowed 206e132e4 Imported Translations from Zanata dc0ffaf2d Change session timeout to an idle timeout value 898997bad Fix a bug that horizon UT failure is ignored c6baf0073 Allow to hide openrc and clouds.yaml download links d32359e01 SHOW_KEYSTONE_V2_RC defaults to False 25b6706f5 Allow to run pep8/docs tox env with horizon plugins ccb21ca7a python3: Fix handling of other protocol in SG rule 96912aea9 fix checking if enforcer was loaded 2cfe4bb08 Imported Translations from Zanata 2c3484690 Imported Translations from Zanata 82e8729f1 Stein deprecation notices on deprecated/remoevd features e8f040d77 Use template for lower-constraints f2828b910 Drop TripleO UI from horizon plugin registry 7b5e23244 Show password expiration date on user detail 9d6811945 Displays role assignment through group in user details d92c7ab93 Imported Translations from Zanata d66df58e2 Add group tab in user details view. ba82055f0 Add role assignment tab in the user details view. 65b21e7f9 Fix images minimum ram and disk default values 864035146 Imported Translations from Zanata 10ec5d517 Update table header checkbox after searching d6217b3e6 Instances column is shortened so it fits properly 65f14e5d7 Instance: show network info even if name is empty d9c42ea0a Imported Translations from Zanata decf86d9f translate instance action of rescue and unrescue 6e31767a2 Modify the prompt of update network 274706151 Fix precission issue when calculating image size in GB. 30c393aa5 Imported Translations from Zanata f8eb17c59 Get scope token of current project when switch Keystone Provider 069329eeb Drop pki token check from Token class in openstack_auth 31116873f Imported Translations from Zanata 254e3791d Imported Translations from Zanata 49d9a5722 Update mailinglist from dev to discuss 9c4d2bbfd Error should be reported when only a space is entered de69edd04 Add Fix django.contrib.auth.middleware monkey patching for APITestCase c02b9fc2d Get rid of keys() usage 04a0fdafc Imported Translations from Zanata e3bfad6ad Update geckodriver to version 0.23.0 fe6e395a6 Show ports without IP in instance table and detail a0b72d54c Updating "Create an Encrypted Volume Type" Picture 1028a6580 Drop unnecessary LOCALE_PATHS from settings.py e2360f9fe fix an issue with nova extension support checking f520815d3 Modify the prompt of create routes and update routes. 0630be639 Remove "Change Password" from users table for non-admin users 8aea412a4 [doc]Fix: Modify content of configure access and security for instance 0cf4df4a6 Check if the alert box has a sibling element, delete its parent if it doesn't exist a548d464d Update link addresses in documents 9faf1cd10 Fix bug about snapshot pagination 2a703b7a7 When creating a role, check if the role already exists a9d6c7886 Make update status dialog less confusing 9d5a26663 Fix: Help text for encrypted volume type has incorrect description 9a820c488 Instance Action Log miss-translate some actions 3a3cb681c Ensures proper network name in subnet error message e48077318 Fix wording for Cinder Volume QoS Create Extra Specs b21add6e2 Document Django and Python support policy ffa8b5404 Support of rescue instance in Horizon 6216715e7 add the assertWorkflowErrors 9810711e7 Make API calls in Volumes view parallel 23313c7ec Update the HTTP links to HTTPS. 55835c730 Fix: Inconsistent use of btn-danger 127de2412 Imported Translations from Zanata a8006b444 Ignore error msg for gateway IP when gateway is disabled b5c5d81dc Imported Translations from Zanata 02b6c1b40 Make table filters valid for every languages a81098b1d fix the bug of checkSpinnerValue fe6910473 Add domain support for specialized test login cebe212d0 Bump hacking to 1.1.0 2b011289c Correct the word spell of "corporate firewall" a3a4b93d3 Imported Translations from Zanata a0226cf90 Imported Translations from Zanata 21b581b49 Imported Translations from Zanata e062589c6 Only thorw one prompt when resizing instance error 5f4057f8b Show snapshots list correctly when launching instance 0d1636132 Fix django.contrib.auth.middleware monkey patching b5d9aa16c Clarify middleware public methods deb55b841 Call Glance list with certain image ids 47ba614f1 Fix bug of updating metadata for images 19a6c9bc6 Add "Create Router" button to admin panel 9495cd830 fix typo de5df89ed prohibit click blank to close the mode box f3094e6f8 rework memoized as a LRU cache with expiry 1f13da0e4 Server overview: display hypervisor name if available 1953c689e Properly calculate auth_url for WEBSSO from POST data 181cb29d8 Name is outside the page range b7e276349 Remove setup.py check from pep8 job ac8879641 Raise NotFound error when retrieved by not uuid fc53f3526 Network and subnet names are empty 6d2fd17f0 Creating volume prompt message always contain name 18a882809 The metadata submit button ignore filtering 9219ada35 Imported Translations from Zanata 375c681ad doc: Fix title level b2219d5aa Fix startdash and startpanel management commands 967fa3780 Fix documents in doc/source/install b6941b5a1 Imported Translations from Zanata 31718cd1a Refactor app response for api request '/api/keystone/svc-catalog' 61ef739c7 Imported Translations from Zanata fe7c028a5 Imported Translations from Zanata 8f5c1b8dc Increment versioning with pbr instruction bdb3f9d98 Fix changing user's own password 1b5f8f867 Imported Translations from Zanata 35a718a51 Workflow uses parameter "viewModel.ready" to do the repetitive work. f3450df50 Imported Translations from Zanata a53f012fa support WEBSSO_KEYSTONE_URL 781c05a70 Imported Translations from Zanata 4ae8850de Do not raise invalid message when port does not exist 6f7deef34 Imported Translations from Zanata a951f8eb6 Imported Translations from Zanata 9a1a8c435 Imported Translations from Zanata 7f1213639 Truncate table size column cause the exception e02cf3742 Imported Translations from Zanata 132243183 Add hide_create_volume to LAUNCH_INSTANCE_DEFAULTS 4d6a1b327 Hide Swift network info in Horizon error message 6c2225bab Add enabled check in Backups panel 8c03ce0bc Move to 404 page if specified navigation not found 3acb28270 Replace @memoized_with_* with @memoized 1cc2b7fcf Imported Translations from Zanata 770afab1b Remove nose references from Horizon 32811eaf1 Update Volume Backup hint eb4f87177 Add release note for the upgraded project detail view. 108fd0644 Imported Translations from Zanata 87f5e21b0 Select correct boot source when launching instance from different sources b625d8bc0 Imported Translations from Zanata 789b626e3 Imported Translations from Zanata ac9335893 Change user details view in a tab view 7c80aba5e Add groups tab in project details view. 6e754e5da Display users with role through group in users project details tab. 1456f7caa Disables Django 1.10 required attribute 97bc09d26 Imported Translations from Zanata 6066811d4 Update placeholder text of the searchbar 13c6fd0a1 Replace Searchlight-UI launchpad link with Storyboard 3ba15b452 Replace Chinese quotes with English quotes 0c8063980 Improve IP address formatting in Instance table 173144dfa Fixes a faulty if-check 8c22e6e09 Replace Chinese quotes with English quotes e750c9d06 admin info: check required service for network tab d68447452 Avoid UnhashableKeyWarning in api.nova.novaclient cccf477c5 Revert "ROOT_PATH should not be appended to "sys.path"" 71be92dd4 Fixed path after moving wsgi/django.wsgi to wsgi.py 5cb96dd6d Add user tab in project details view. f9bb10b94 Avoid UnhashableKeyWarning in api.nova.extension_supported 5cb89042b Imported Translations from Zanata 19635237b fix volume status bug when restoring a Volume 0afe45010 Imported Translations from Zanata e47f69540 [doc] Remove the redundant "required=True" f269ab3b2 Fixes input validation in angular kepyairs. af42aafbd Imported Translations from Zanata 58af80679 Move to '404' page when resource type or resource not found e681bc2e2 ROOT_PATH should not be appended to "sys.path" bfecbde4d switch documentation job to new PTI 53c738337 Run bandit job with python3 00c581431 Add py3-dj21 tox env for Django 2.1 de3e48479 Move requests to requirements.txt ccdf8c55e Add django-debreach to horizon 33f579b1b Imported Translations from Zanata 797859beb Floating ip filter has no effect a24aa0c87 fix incorrect quota exceeded error when creating snapshot f843b6389 Make fields in image edit required f5666eed0 Use new style for help in Angular ModalFormService 16c4f4c3a Don't expose endpoint URLs in the login form d698f2bc1 import zuul job settings from project-config a0e4508c9 Fix confusing variable names in unit tests aa1ca195f Drop use_mox from horizon test helpers 4704b32a5 Drop mox usage in Selenium tests cf959d1a5 Remove the unused settings 5f82accc4 Imported Translations from Zanata e5d6f54e9 Make generic group check work with admin table 9de78764c add python 3.6 unit test job 5910b6b90 Fix issue where qos delete action returns error message ee40a3693 Remove -u root as mysql is executed with root user c6611abe1 Update keystone v3 admin URL in UT 45e8cc5fe Improved getQosPolicy error messages 7fc801895 Allow to specify redirections on single IdP scenarios 9fbdc8103 Revert "Network Topology graph "twitches"" 9ec34b0b5 Imported Translations from Zanata cf8c63d3f doc: Fix dashboard URL in Debian installation 9e3577087 Fix UnicodeError in build_reno in sphinx docs job 8050c1bfa Imported Translations from Zanata 3f868f37b Update reno for stable/rocky 6ae2a34d3 Imported Translations from Zanata c42aacb27 Change project details view in a tab view. db15eef58 Add package-lock.json which generate by npm 27f619cf9 Safer handling of return statement inside of OperationLogMiddleware 71cac4a14 Replaces the delete button with a disabling version 74a5400a6 Add delete domain action in angular domain panel a42a56f49 Restores deletion in flat network topology b170b54bf Display policy in server groups table instead of sub table Diffstat (except docs and test files) ------------------------------------- .gitignore | 4 +- .gitreview | 1 + .pylintrc | 75 +- .zuul.yaml | 135 +- .../figures/create_volume_type_encryption.png | Bin 161109 -> 33650 bytes .../contributor/topics/javascript_testing.rst | 2 +- .../locale/en_GB/LC_MESSAGES/doc-configuration.po | 4520 +++++++++++++++++ .../locale/id/LC_MESSAGES/doc-configuration.po | 4272 ++++++++++++++++ ...configure-access-and-security-for-instances.rst | 44 +- horizon/base.py | 13 +- horizon/browsers/views.py | 3 + .../dash_template/templates/dash_name/base.html | 20 +- .../panel_template/templates/panel_name/index.html | 23 +- horizon/exceptions.py | 9 +- horizon/forms/__init__.py | 2 +- horizon/forms/fields.py | 13 +- horizon/forms/views.py | 6 +- horizon/karma.conf.js | 1 + horizon/loaders.py | 1 + horizon/locale/ar/LC_MESSAGES/djangojs.po | 425 ++ horizon/locale/cs/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/de/LC_MESSAGES/djangojs.po | 8 +- horizon/locale/en_AU/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/en_GB/LC_MESSAGES/djangojs.po | 8 +- horizon/locale/eo/LC_MESSAGES/djangojs.po | 8 +- horizon/locale/es/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/fr/LC_MESSAGES/djangojs.po | 12 +- horizon/locale/id/LC_MESSAGES/djangojs.po | 8 +- horizon/locale/it/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/ja/LC_MESSAGES/djangojs.po | 16 +- horizon/locale/ko_KR/LC_MESSAGES/djangojs.po | 11 +- horizon/locale/pl_PL/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/pt_BR/LC_MESSAGES/djangojs.po | 8 +- horizon/locale/ru/LC_MESSAGES/django.po | 17 +- horizon/locale/ru/LC_MESSAGES/djangojs.po | 38 +- horizon/locale/tr_TR/LC_MESSAGES/djangojs.po | 5 +- horizon/locale/zh_CN/LC_MESSAGES/django.po | 18 +- horizon/locale/zh_CN/LC_MESSAGES/djangojs.po | 14 +- horizon/locale/zh_TW/LC_MESSAGES/djangojs.po | 5 +- horizon/management/commands/pull_catalog.py | 2 +- horizon/middleware/base.py | 26 +- horizon/middleware/operation_log.py | 11 +- horizon/notifications.py | 5 +- horizon/site_urls.py | 7 +- horizon/static/framework/framework.module.js | 30 +- .../util/navigations/navigations.service.js | 8 +- .../util/navigations/navigations.service.spec.js | 12 + .../details/routed-details-view.controller.js | 18 +- .../details/routed-details-view.controller.spec.js | 52 +- .../widgets/form/modal-form.controller.js | 1 + .../widgets/form/modal-form.controller.spec.js | 7 +- .../static/framework/widgets/form/modal-form.html | 3 + .../framework/widgets/form/modal-form.service.js | 3 +- .../widgets/form/modal-form.service.spec.js | 4 +- .../hz-magic-search-context.directive.js | 2 +- .../widgets/metadata/tree/metadata-tree.html | 9 +- .../framework/widgets/modal/simple-modal.html | 2 +- .../widgets/modal/simple-modal.service.js | 3 +- .../framework/widgets/table/hz-dynamic-table.html | 2 +- horizon/static/framework/widgets/toast/toast.html | 2 +- .../static/framework/widgets/wizard/wizard.html | 2 +- horizon/static/horizon/js/horizon.forms.js | 33 +- horizon/static/horizon/js/horizon.modals.js | 6 +- horizon/static/horizon/js/horizon.tables.js | 19 + horizon/tables/actions.py | 14 +- horizon/tables/base.py | 38 +- horizon/tables/formset.py | 6 +- horizon/tables/views.py | 12 +- horizon/tabs/base.py | 15 +- horizon/templates/_login_footer.html | 10 + horizon/templates/_login_form_footer.html | 11 + horizon/templates/auth/_splash.html | 5 - .../templates/horizon/client_side/_confirm.html | 2 +- .../templates/horizon/common/_detail_header.html | 2 +- horizon/templatetags/angular.py | 11 +- horizon/templatetags/shellfilter.py | 2 +- horizon/templatetags/truncate_filter.py | 1 + horizon/test/helpers.py | 27 +- horizon/test/settings.py | 6 +- horizon/test/unit/forms/test_forms.py | 16 +- horizon/test/unit/hacking/test_checks.py | 8 +- horizon/test/unit/middleware/test_base.py | 78 +- horizon/test/unit/tables/test_tables.py | 65 +- horizon/test/unit/tabs/test_tabs.py | 3 + horizon/test/unit/test_base.py | 3 + horizon/test/unit/test_messages.py | 4 +- horizon/test/unit/utils/test_memoized.py | 89 +- horizon/themes.py | 2 +- horizon/utils/babel_extract_angular.py | 18 +- horizon/utils/functions.py | 1 + horizon/utils/memoized.py | 188 +- horizon/utils/secret_key.py | 1 - horizon/utils/validators.py | 1 + horizon/workflows/base.py | 37 +- lower-constraints.txt | 6 +- openstack_auth/backend.py | 26 +- openstack_auth/exceptions.py | 1 - openstack_auth/forms.py | 24 +- openstack_auth/locale/de/LC_MESSAGES/django.po | 10 +- openstack_auth/locale/en_GB/LC_MESSAGES/django.po | 7 +- openstack_auth/locale/eo/LC_MESSAGES/django.po | 7 +- openstack_auth/locale/fr/LC_MESSAGES/django.po | 9 +- openstack_auth/locale/id/LC_MESSAGES/django.po | 9 +- openstack_auth/locale/ja/LC_MESSAGES/django.po | 10 +- openstack_auth/locale/ko_KR/LC_MESSAGES/django.po | 10 +- openstack_auth/locale/pt_BR/LC_MESSAGES/django.po | 9 +- openstack_auth/locale/ru/LC_MESSAGES/django.po | 94 + openstack_auth/locale/zh_CN/LC_MESSAGES/django.po | 10 +- openstack_auth/middleware.py | 25 + openstack_auth/plugin/base.py | 10 +- openstack_auth/plugin/k2k.py | 3 +- openstack_auth/policy.py | 28 +- openstack_auth/urls.py | 9 +- openstack_auth/user.py | 40 +- openstack_auth/utils.py | 31 +- openstack_auth/views.py | 43 +- openstack_dashboard/api/_nova.py | 154 + openstack_dashboard/api/base.py | 7 +- openstack_dashboard/api/cinder.py | 120 +- openstack_dashboard/api/glance.py | 44 +- openstack_dashboard/api/keystone.py | 48 +- openstack_dashboard/api/microversions.py | 38 +- openstack_dashboard/api/neutron.py | 129 +- openstack_dashboard/api/nova.py | 509 +- openstack_dashboard/api/rest/glance.py | 9 +- openstack_dashboard/api/rest/json_encoder.py | 3 + openstack_dashboard/api/rest/keystone.py | 24 +- openstack_dashboard/api/rest/nova.py | 7 +- openstack_dashboard/api/rest/utils.py | 2 + openstack_dashboard/api/swift.py | 35 +- openstack_dashboard/conf/cinder_policy.json | 15 +- openstack_dashboard/conf/neutron_policy.json | 299 +- openstack_dashboard/conf/nova_policy.json | 36 +- openstack_dashboard/context_processors.py | 4 +- openstack_dashboard/contrib/developer/dashboard.py | 8 +- .../contrib/developer/profiler/api.py | 11 +- .../dashboards/admin/aggregates/tables.py | 4 +- openstack_dashboard/dashboards/admin/dashboard.py | 5 +- .../dashboards/admin/flavors/workflows.py | 19 +- .../dashboards/admin/floating_ips/views.py | 8 +- .../dashboards/admin/group_types/__init__.py | 0 .../dashboards/admin/group_types/forms.py | 107 + .../dashboards/admin/group_types/panel.py | 24 + .../dashboards/admin/group_types/specs/__init__.py | 0 .../dashboards/admin/group_types/specs/forms.py | 81 + .../dashboards/admin/group_types/specs/tables.py | 87 + .../dashboards/admin/group_types/specs/urls.py | 22 + .../dashboards/admin/group_types/specs/views.py | 125 + .../dashboards/admin/group_types/tables.py | 134 + .../templates/group_types/_create_group_type.html | 16 + .../templates/group_types/_update_group_type.html | 20 + .../templates/group_types/create_group_type.html | 7 + .../templates/group_types/specs/_create.html | 7 + .../templates/group_types/specs/_edit.html | 7 + .../templates/group_types/specs/_index.html | 13 + .../templates/group_types/specs/create.html | 14 + .../templates/group_types/specs/edit.html | 14 + .../templates/group_types/specs/index.html | 12 + .../templates/group_types/update_group_type.html | 11 + .../dashboards/admin/group_types/urls.py | 31 + .../dashboards/admin/group_types/views.py | 102 + .../dashboards/admin/images/views.py | 2 +- .../dashboards/admin/info/tables.py | 3 +- openstack_dashboard/dashboards/admin/info/tabs.py | 1 + .../dashboards/admin/instances/forms.py | 6 + .../dashboards/admin/instances/tables.py | 10 +- .../instances/templates/instances/_rescue.html | 27 + .../instances/templates/instances/rescue.html | 7 + .../dashboards/admin/instances/urls.py | 1 + .../dashboards/admin/instances/views.py | 57 +- .../dashboards/admin/metadata_defs/forms.py | 9 - .../dashboards/admin/metadata_defs/views.py | 3 +- .../dashboards/admin/networks/forms.py | 5 +- .../dashboards/admin/networks/subnets/workflows.py | 31 +- .../dashboards/admin/networks/urls.py | 6 +- .../dashboards/admin/networks/views.py | 4 +- .../dashboards/admin/rbac_policies/__init__.py | 0 .../dashboards/admin/rbac_policies/forms.py | 168 + .../dashboards/admin/rbac_policies/panel.py | 44 + .../dashboards/admin/rbac_policies/tables.py | 82 + .../dashboards/admin/rbac_policies/tabs.py | 57 + .../templates/rbac_policies/_create.html | 7 + .../templates/rbac_policies/_detail_overview.html | 18 + .../templates/rbac_policies/_update.html | 7 + .../templates/rbac_policies/create.html | 7 + .../templates/rbac_policies/detail.html | 20 + .../templates/rbac_policies/update.html | 7 + .../dashboards/admin/rbac_policies/urls.py | 30 + .../dashboards/admin/rbac_policies/views.py | 144 + .../dashboards/admin/routers/forms.py | 21 + .../dashboards/admin/routers/tables.py | 7 +- .../dashboards/admin/routers/urls.py | 1 + .../dashboards/admin/routers/views.py | 7 + .../dashboards/admin/snapshots/forms.py | 20 +- .../dashboards/admin/snapshots/tables.py | 8 +- .../dashboards/admin/snapshots/views.py | 30 +- .../dashboards/admin/vg_snapshots/__init__.py | 0 .../dashboards/admin/vg_snapshots/panel.py | 20 + .../dashboards/admin/vg_snapshots/tables.py | 66 + .../dashboards/admin/vg_snapshots/tabs.py | 29 + .../templates/vg_snapshots/_detail_overview.html | 52 + .../dashboards/admin/vg_snapshots/urls.py | 24 + .../dashboards/admin/vg_snapshots/views.py | 85 + .../dashboards/admin/volume_groups/__init__.py | 0 .../dashboards/admin/volume_groups/forms.py | 24 + .../dashboards/admin/volume_groups/panel.py | 20 + .../dashboards/admin/volume_groups/tables.py | 73 + .../dashboards/admin/volume_groups/tabs.py | 29 + .../templates/volume_groups/_delete.html | 9 + .../templates/volume_groups/_detail_overview.html | 44 + .../templates/volume_groups/_remove_vols.html | 7 + .../templates/volume_groups/delete.html | 7 + .../templates/volume_groups/remove_vols.html | 7 + .../dashboards/admin/volume_groups/urls.py | 34 + .../dashboards/admin/volume_groups/views.py | 103 + .../dashboards/admin/volume_groups/workflows.py | 22 + .../dashboards/admin/volume_types/extras/forms.py | 26 +- .../admin/volume_types/qos_specs/tables.py | 8 +- .../_create_volume_type_encryption.html | 2 +- .../_update_volume_type_encryption.html | 2 +- .../templates/volume_types/qos_specs/_create.html | 20 +- .../dashboards/admin/volumes/forms.py | 8 +- .../dashboards/admin/volumes/tables.py | 8 +- .../dashboards/admin/volumes/tabs.py | 5 +- .../templates/volumes/_detail_overview.html | 126 + .../dashboards/admin/volumes/views.py | 77 +- .../application_credentials/_detail_overview.html | 4 +- .../dashboards/identity/domains/workflows.py | 7 +- .../dashboards/identity/groups/forms.py | 6 + .../dashboards/identity/groups/views.py | 3 +- .../identity/identity_providers/protocols/views.py | 3 - .../dashboards/identity/identity_providers/urls.py | 2 +- .../identity/projects/groups/__init__.py | 0 .../dashboards/identity/projects/groups/tables.py | 33 + .../dashboards/identity/projects/tables.py | 2 +- .../dashboards/identity/projects/tabs.py | 236 + .../templates/projects/_detail_overview.html | 12 +- .../dashboards/identity/projects/users/__init__.py | 0 .../dashboards/identity/projects/users/tables.py | 41 + .../dashboards/identity/projects/views.py | 21 +- .../dashboards/identity/projects/workflows.py | 8 +- .../dashboards/identity/roles/views.py | 2 +- .../identity/domains/actions/actions.module.js | 20 + .../identity/domains/actions/delete.service.js | 153 + .../domains/actions/delete.service.spec.js | 151 + .../roles/actions/create.action.service.js | 34 +- .../identity/roles/actions/edit.action.service.js | 4 +- .../dashboard/identity/roles/roles.module.js | 3 +- .../users/actions/workflow/workflow.service.js | 7 +- .../dashboards/identity/users/forms.py | 5 +- .../dashboards/identity/users/groups/__init__.py | 0 .../dashboards/identity/users/groups/tables.py | 23 + .../identity/users/role_assignments/__init__.py | 0 .../identity/users/role_assignments/tables.py | 107 + .../dashboards/identity/users/tables.py | 5 +- .../dashboards/identity/users/tabs.py | 156 + .../users/templates/users/_detail_overview.html | 39 +- .../dashboards/identity/users/views.py | 54 +- .../dashboards/project/api_access/tables.py | 18 +- .../dashboards/project/api_access/views.py | 26 +- .../dashboards/project/backups/forms.py | 3 +- .../dashboards/project/backups/panel.py | 6 + .../backups/templates/backups/_create_backup.html | 13 +- .../dashboards/project/cg_snapshots/tables.py | 2 +- .../templates/cg_snapshots/_detail_overview.html | 8 +- .../templates/cg_snapshots/create.html | 2 +- .../templates/cg_snapshots/update.html | 2 +- .../dashboards/project/cgroups/forms.py | 4 +- .../templates/cgroups/_create_snapshot.html | 2 +- .../templates/cgroups/_detail_overview.html | 6 +- .../cgroups/templates/cgroups/clone_cgroup.html | 2 +- .../cgroups/templates/cgroups/create_snapshot.html | 2 +- .../project/cgroups/templates/cgroups/delete.html | 2 +- .../cgroups/templates/cgroups/remove_vols.html | 2 +- .../project/cgroups/templates/cgroups/update.html | 2 +- .../dashboards/project/cgroups/workflows.py | 38 +- .../dashboards/project/dashboard.py | 1 + .../dashboards/project/floating_ips/views.py | 8 +- .../dashboards/project/floating_ips/workflows.py | 8 +- .../dashboards/project/images/images/forms.py | 1 + .../dashboards/project/images/images/tables.py | 13 +- .../dashboards/project/images/snapshots/forms.py | 16 +- .../dashboards/project/images/utils.py | 23 +- .../dashboards/project/instances/audit_tables.py | 5 + .../dashboards/project/instances/forms.py | 42 +- .../dashboards/project/instances/tables.py | 61 +- .../dashboards/project/instances/tabs.py | 3 +- .../templates/instances/_detail_overview.html | 40 +- .../templates/instances/_instance_flavor.html | 4 +- .../templates/instances/_instance_ips.html | 20 +- .../instances/templates/instances/_rescue.html | 27 + .../instances/templates/instances/rescue.html | 7 + .../dashboards/project/instances/urls.py | 1 + .../dashboards/project/instances/views.py | 77 +- .../project/instances/workflows/create_instance.py | 9 +- .../project/instances/workflows/resize_instance.py | 10 +- .../dashboards/project/key_pairs/forms.py | 13 +- .../dashboards/project/key_pairs/tables.py | 1 + .../client_side/_balloon_container.html | 2 - .../dashboards/project/networks/forms.py | 3 +- .../dashboards/project/networks/ports/sg_base.py | 8 +- .../dashboards/project/networks/ports/workflows.py | 14 + .../dashboards/project/networks/subnets/views.py | 3 +- .../project/networks/subnets/workflows.py | 49 +- .../templates/networks/_detail_overview.html | 2 +- .../templates/networks/ports/_detail_overview.html | 10 +- .../networks/subnets/_detail_overview.html | 6 +- .../dashboards/project/networks/urls.py | 6 +- .../dashboards/project/networks/workflows.py | 49 +- .../dashboards/project/overview/views.py | 2 +- .../dashboards/project/routers/forms.py | 9 +- .../templates/routers/_detail_overview.html | 2 +- .../dashboards/project/security_groups/forms.py | 2 +- .../dashboards/project/security_groups/views.py | 5 +- .../dashboards/project/snapshots/tables.py | 4 +- .../templates/snapshots/_detail_overview.html | 8 +- .../project/containers/containers.controller.js | 12 +- .../containers/containers.controller.spec.js | 2 +- .../project/containers/create-container.help.html | 20 +- .../keypair/create-keypair.controller.js | 11 +- .../launch-instance/keypair/create-keypair.html | 7 + .../keypair/import-keypair.controller.js | 9 +- .../launch-instance/keypair/import-keypair.html | 7 + .../launch-instance/keypair/keypair.controller.js | 7 +- .../launch-instance-model.service.js | 80 +- .../launch-instance-model.service.spec.js | 137 +- .../workflow/launch-instance/network/network.html | 8 +- .../server-groups/server-group-details.html | 13 - .../server-groups/server-groups.controller.js | 16 +- .../server-groups/server-groups.html | 14 +- .../server-groups/server-groups.spec.js | 7 +- .../launch-instance/source/source.controller.js | 54 +- .../source/source.controller.spec.js | 28 +- .../workflow/launch-instance/source/source.html | 4 +- .../dashboards/project/vg_snapshots/views.py | 9 +- .../dashboards/project/volume_groups/forms.py | 13 +- .../dashboards/project/volume_groups/tables.py | 15 +- .../templates/volume_groups/_snapshot_limits.html | 14 +- .../templates/volume_groups/clone_group.html | 2 +- .../dashboards/project/volume_groups/views.py | 20 +- .../dashboards/project/volumes/forms.py | 34 +- .../dashboards/project/volumes/tables.py | 5 +- .../templates/volumes/_detail_overview.html | 12 +- .../dashboards/project/volumes/views.py | 52 +- .../dashboards/settings/user/forms.py | 5 +- .../enabled/_1360_project_volume_groups.py | 3 +- .../enabled/_1370_project_vg_snapshots.py | 3 +- .../enabled/_2250_admin_volume_groups.py | 10 + .../enabled/_2260_admin_vg_snapshots.py | 10 + .../enabled/_2270_admin_group_types_panel.py | 10 + .../enabled/_2350_admin_rbac_policies_panel.py | 10 + openstack_dashboard/hooks.py | 1 + .../local/local_settings.py.example | 55 +- .../locale/as/LC_MESSAGES/django.po | 49 +- .../locale/bn_IN/LC_MESSAGES/django.po | 48 +- .../locale/brx/LC_MESSAGES/django.po | 48 +- .../locale/cs/LC_MESSAGES/django.po | 68 +- .../locale/cs/LC_MESSAGES/djangojs.po | 11 +- .../locale/de/LC_MESSAGES/django.po | 741 ++- .../locale/de/LC_MESSAGES/djangojs.po | 217 +- .../locale/en_AU/LC_MESSAGES/django.po | 67 +- .../locale/en_AU/LC_MESSAGES/djangojs.po | 8 +- .../locale/en_GB/LC_MESSAGES/django.po | 525 +- .../locale/en_GB/LC_MESSAGES/djangojs.po | 161 +- .../locale/eo/LC_MESSAGES/django.po | 167 +- .../locale/eo/LC_MESSAGES/djangojs.po | 186 +- .../locale/es/LC_MESSAGES/django.po | 91 +- .../locale/es/LC_MESSAGES/djangojs.po | 44 +- .../locale/fr/LC_MESSAGES/django.po | 1085 +++- .../locale/fr/LC_MESSAGES/djangojs.po | 433 +- .../locale/gu/LC_MESSAGES/django.po | 49 +- .../locale/hi/LC_MESSAGES/django.po | 22 +- .../locale/id/LC_MESSAGES/django.po | 801 ++- .../locale/id/LC_MESSAGES/djangojs.po | 181 +- .../locale/it/LC_MESSAGES/django.po | 63 +- .../locale/it/LC_MESSAGES/djangojs.po | 10 +- .../locale/ja/LC_MESSAGES/django.po | 1034 +++- .../locale/ja/LC_MESSAGES/djangojs.po | 210 +- .../locale/kn/LC_MESSAGES/django.po | 50 +- .../locale/ko_KR/LC_MESSAGES/django.po | 709 ++- .../locale/ko_KR/LC_MESSAGES/djangojs.po | 188 +- .../locale/kok/LC_MESSAGES/django.po | 48 +- .../locale/ks/LC_MESSAGES/django.po | 48 +- .../locale/mai/LC_MESSAGES/django.po | 48 +- .../locale/mni/LC_MESSAGES/django.po | 48 +- .../locale/mr/LC_MESSAGES/django.po | 48 +- .../locale/ne/LC_MESSAGES/django.po | 48 +- .../locale/nl_NL/LC_MESSAGES/django.po | 3311 ------------ .../locale/pa_IN/LC_MESSAGES/django.po | 50 +- .../locale/pl_PL/LC_MESSAGES/django.po | 63 +- .../locale/pt_BR/LC_MESSAGES/django.po | 450 +- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 133 +- .../locale/ru/LC_MESSAGES/django.po | 1042 +++- .../locale/ru/LC_MESSAGES/djangojs.po | 361 +- .../locale/sr/LC_MESSAGES/django.po | 3213 ------------ .../locale/ta/LC_MESSAGES/django.po | 48 +- .../locale/tr_TR/LC_MESSAGES/django.po | 67 +- .../locale/tr_TR/LC_MESSAGES/djangojs.po | 34 +- .../locale/ur/LC_MESSAGES/django.po | 50 +- .../locale/zh_CN/LC_MESSAGES/django.po | 1102 +++- .../locale/zh_CN/LC_MESSAGES/djangojs.po | 300 +- .../locale/zh_TW/LC_MESSAGES/django.po | 66 +- .../locale/zh_TW/LC_MESSAGES/djangojs.po | 31 +- .../management/commands/extract_messages.py | 1 + .../management/commands/make_web_conf.py | 2 + .../management/commands/upgrade_check.py | 233 + openstack_dashboard/settings.py | 78 +- openstack_dashboard/static/app/app.module.js | 3 +- .../app/core/images/actions/actions.module.js | 15 +- .../delete-image-selected-button.template.html | 1 + .../actions/delete-image-selected.component.js | 74 + .../delete-image-selected.component.spec.js | 97 + .../actions/delete-image-selected.template.html | 7 + .../core/images/filters/image-visibility.filter.js | 2 + .../static/app/core/images/images.module.js | 1 + .../images/steps/create-volume/create-volume.html | 6 +- .../core/images/steps/edit-image/edit-image.html | 12 +- .../core/keypairs/actions/create.description.html | 3 +- .../keypairs/actions/create.key-type.controller.js | 45 + .../app/core/keypairs/actions/create.key-type.html | 9 + .../app/core/keypairs/actions/create.service.js | 26 +- .../actions/import.public-key.controller.js | 7 + .../actions/import.public-key.controller.spec.js | 4 + .../core/keypairs/actions/import.public-key.html | 3 + .../app/core/keypairs/actions/import.service.js | 22 +- .../static/app/core/keypairs/keypairs.module.js | 8 +- .../core/openstack-service-api/neutron.service.js | 39 +- .../openstack-service-api/neutron.service.spec.js | 46 +- .../app/core/server_groups/server-groups.module.js | 1 + .../static/app/core/trunks/trunks.module.js | 1 + .../dashboard/scss/components/_help_panel.scss | 3 +- .../static/js/horizon.flatnetworktopology.js | 6 +- .../static/js/horizon.networktopology.js | 5 +- .../static/js/horizon.networktopologycommon.js | 64 +- openstack_dashboard/templates/_footer.html | 11 +- openstack_dashboard/templates/_login_footer.html | 3 - .../templates/_login_form_footer.html | 6 - openstack_dashboard/templates/angular.html | 3 + openstack_dashboard/templates/auth/_splash.html | 5 + openstack_dashboard/templates/base.html | 10 +- .../templates/context_selection/_project_list.html | 2 +- .../templates/context_selection/_region_list.html | 3 +- .../templates/horizon/_custom_head_js.html | 10 + .../templates/horizon/_custom_meta.html | 10 + .../templatetags/context_selection.py | 6 +- openstack_dashboard/test/helpers.py | 268 +- .../pages/project/network/floatingipspage.py | 6 +- .../pages/settings/changepasswordpage.py | 60 +- openstack_dashboard/test/settings.py | 16 +- openstack_dashboard/test/test_data/glance_data.py | 58 +- .../test/test_data/keystone_data.py | 20 +- openstack_dashboard/test/test_data/neutron_data.py | 35 +- .../test/unit/api/rest/test_keystone.py | 76 +- .../test/unit/api/rest/test_nova.py | 28 +- openstack_dashboard/test/unit/api/test_base.py | 4 +- openstack_dashboard/test/unit/api/test_cinder.py | 6 +- openstack_dashboard/test/unit/api/test_glance.py | 35 +- openstack_dashboard/test/unit/api/test_keystone.py | 11 +- openstack_dashboard/test/unit/api/test_neutron.py | 18 +- openstack_dashboard/test/unit/api/test_nova.py | 86 +- openstack_dashboard/test/unit/test_themes.py | 7 +- openstack_dashboard/theme_settings.py | 2 +- .../themes/example/static/_styles.scss | 0 .../themes/example/static/_variables.scss | 1 + .../themes/example/static/js/my_analytics_js.js | 1 + .../themes/example/static/js/my_custom_js.js | 1 + .../themes/example/templates/auth/_login_form.html | 9 + .../themes/example/templates/auth/login.html | 5 + .../themes/example/templates/base.html | 17 + openstack_dashboard/usage/base.py | 3 +- openstack_dashboard/usage/tables.py | 2 +- openstack_dashboard/utils/config_types.py | 2 +- openstack_dashboard/wsgi.py | 2 +- playbooks/horizon-devstack-integration/post.yaml | 5 + playbooks/horizon-devstack-integration/pre.yaml | 10 + playbooks/horizon-devstack-integration/run.yaml | 6 + ...ate-button-to-admin-panel-02cbe5d96036ac4c.yaml | 4 + .../add-domain-dropdown-65006187e5605735.yaml | 2 +- ...s-customization-templates-30384e91c5565328.yaml | 25 + ...p-mitigate-breach-attacks-dd54b705e22363b0.yaml | 7 + .../bp-neutron-rbac-policies-9cv77nu2k93ieh4r.yaml | 11 + ...p-support-rescue-instance-a7b8578c395abd3e.yaml | 5 + .../notes/bug-1785263-46edf7313d833b4c.yaml | 12 + .../notes/bug-1792524-7497aabcf6bc1e81.yaml | 13 + ...recate-lbaas-v1-dashboard-1f9c48d7c6997b1f.yaml | 2 +- .../deprecations-in-stein-4090a0b816ba2d81.yaml | 18 + .../drop-LBaaS-v1-dashboard-d767b0bde5274af5.yaml | 2 +- ...action-strings-attributes-64f0cb0323f629ee.yaml | 2 +- .../notes/drop-pki-token-d8bc4d665887aedf.yaml | 10 + .../generic-volume-groups-c0bf175f5d7d3a37.yaml | 9 + .../idle-session-timeout-ab47085807881afe.yaml | 11 + ...faults-hide-create-volume-774549bebb6e7c82.yaml | 7 + .../openrc-clouds-yaml-link-f1642b77e25f08ba.yaml | 18 + .../pluggable-workflow-steps-c919cdd8b0cbea55.yaml | 2 +- .../notes/policy-sync-stein-82531c937609ebb2.yaml | 12 + ...hange-pw-from-users-table-ef8d45a4a95762e0.yaml | 5 + .../notes/session-engine-bc6305bfb74a9beb.yaml | 22 + ...-keystone-v2-openrc-false-c7e904473da2f823.yaml | 10 + .../notes/story-2003657-79dec309cb6fa060.yaml | 6 + ...pport-websso_keystone_url-f663bbf40a5855c9.yaml | 8 + .../vpnaas-panel-splitout-5783df1675bc984f.yaml | 2 +- ...ebsso-default-redirection-1acf25d32ac00dd1.yaml | 6 + releasenotes/source/folsom.rst | 2 +- releasenotes/source/index.rst | 1 + .../source/locale/de/LC_MESSAGES/releasenotes.po | 4454 ---------------- .../locale/en_GB/LC_MESSAGES/releasenotes.po | 5190 ------------------- .../source/locale/id/LC_MESSAGES/releasenotes.po | 5324 -------------------- .../source/locale/ja/LC_MESSAGES/releasenotes.po | 4902 ------------------ .../locale/ko_KR/LC_MESSAGES/releasenotes.po | 1463 ------ .../locale/pt_BR/LC_MESSAGES/releasenotes.po | 3927 --------------- .../locale/zh_CN/LC_MESSAGES/releasenotes.po | 508 -- releasenotes/source/rocky.rst | 6 + requirements.txt | 3 + setup.cfg | 8 +- test-requirements.txt | 6 +- tools/executable_files.txt | 1 + tools/find_settings.py | 58 + tox.ini | 63 +- 603 files changed, 50237 insertions(+), 37829 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index a88915455..336f62fa6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,0 +17 @@ django-compressor>=2.0 # MIT +django-debreach>=1.4.2 # BSD License (2 clause) @@ -26,0 +28 @@ oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +oslo.upgradecheck>=0.1.1 # Apache-2.0 @@ -39,0 +42 @@ PyYAML>=3.12 # MIT +requests>=2.14.2 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index e94e6e149..3e33d214d 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -10 +10 @@ -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 +hacking>=1.1.0 # Apache-2.0 @@ -11,0 +12 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 +astroid==2.1.0;python_version>='3.0' # LGPLv2.1 @@ -19 +20,2 @@ nodeenv>=0.9.4 # BSD -requests>=2.14.2 # Apache-2.0 +python-memcached>=1.59 # PSF +pylint==2.2.2;python_version>='3.0' # GPLv2
participants (1)
-
no-reply@openstack.org