We are glad to announce the release of: murano-dashboard 3.0.0: The Murano Dashboard This release is part of the newton release series. For more details, please see below. 3.0.0 ^^^^^ New Features ************ * Added "DISPLAY_MURANO_REPO_URL" setting that is used as a user- visible link to "apps.openstack.org" or any other murano applications repository. * Added the capability to execute actions (delete, abandon or deploy) on multiple selected environments. * Murano dashboard now comes with the "muranodashboard/local/local_settings.d/_50_murano.py" file that contains murano-specific settings for horizon (for example, "MURANO_API_URL"). Upgrade Notes ************* * Previously all murano-specific horizon settings had to be kept in "local_settings.py" file of Horizon. You need to remove those settings from local_settings.py and copy "muranodashboard/local/local_settings.d/_50_murano.py" to "openstack_dashboard/local/local_settings.d/" directory in horizon and keep all murano-related changes there. Security Issues *************** * cve-2016-4972 has been addressed. In ceveral places Murano used loaders inherited directly from yaml.Loader when parsing MuranoPL and UI files from packages. This is unsafe, because this loader is capable of creating custom python objects from specifically constructed yaml files. With this change all yaml loading operations are done using safe loaders instead. Bug Fixes ********* * Specifying a base class in the UI definition now also fetches all the packages with classes that inherit from that class, when glare is used. For example, if you specify the 'io.example.Parent' class, the dashboard fetches 'io.example.Child1' and 'io.example.Child2', and any other descendants of 'io.example.Parent' that are present. * Fixed the issue with sequential download of packages. Dashboard is now using 'tables.LinkAction' instead of 'tables.Action' for DownloadPackage table action. * Fixed the issue that prevented the murano dashboard from finding certain horizon filters, such as 'parse_isotime', 'timesince_or_never', and others. * Fixed the password check in dynamic UI forms. Previously, the dashboard did not validate the password fields with IDs not ending with 'password'. Now, to determine whether to add default password validators to the field or not, the dashbord only checks the field type itself, instead of both field type and ending of the field ID. * The >>:guilabel:`Environment components`<< page now reloads after an empty environment deployment. This allows adding new components to the empty environment without having to reload the page manually. <SYSTEM MESSAGE: <string>:37: (ERROR/3) Unknown interpreted text role "guilabel".> * Improved the performance of the >>:guilabel:`Recent Activity`<< panel on the >>:guilabel:`Browse Catalog`<< page. <SYSTEM MESSAGE: <string>:39: (ERROR/3) Unknown interpreted text role "guilabel".> <SYSTEM MESSAGE: <string>:39: (ERROR/3) Unknown interpreted text role "guilabel".> * Fixed the issue that reset all environment changes from the previous session (adding or removing components without deployment) after consequent login. Also, the >>:guilabel:`Ready to deploy`<< status now only displays if there are changes pending in the current session. <SYSTEM MESSAGE: <string>:41: (ERROR/3) Unknown interpreted text role "guilabel".> Other Notes *********** * Murano Dashboard relies on Glance v1 API for image uploads. In case it is not available an error will be shown and all the image- related functionality will be unavailable. Changes in murano-dashboard 2.0.0.0rc1..3.0.0 --------------------------------------------- fba7641 Imported Translations from Zanata f9498f1 Imported Translations from Zanata 4a4c7ba Murano-dashboard now shows warnings if glance v1 is unavailable 8ea7d5e Imported Translations from Zanata 410c869 Let murano dashboard using glance v1 6913ba1 Imported Translations from Zanata 174b6f9 Update UPPER_CONSTRAINTS_FILE for stable/newton d1535b8 Update .gitreview for stable/newton 5fda985 Replace table row 'status_unknown' class with 'warning' class bf80fd3 Imported Translations from Zanata 88ba72f Cleanup, clarify newton release-notes 27789e1 Removing unused tools/rfc.sh file f9b9b37 Return an empty list instead of None when getting available networks de26d5e Add a LICENSE file 4528a4a Wrap 500 code in dashboard errors 8f4596f Remove the test_upload_package_detail TODO 9f7f0b6 Imported Translations from Zanata af3a846 Clean imports in code 68fd5ae Imported Translations from Zanata 7440bbf Change selector if creating environment failed 1e42dee [tests] Do not check for Category count if glare is enabled 27d6b16 Unskip the test_upload_package when glare backend ce5c8e3 Fix create/delete/abandon environment redirect_url a0b2cc1 Enable "Delete Environments" button on delete failure 9d7f30e Using WrappingColumn to prevent long names breaking table layouts bb347d8 Create glare client in dashboard tests 0eceafb Separate internal MURANO_REPO_URL and DISPLAY_MURANO_REPO_URL b1c55c7 Move descriptions for hidden fields on top of dynamic_ui forms c1b21fc Adds multiline support for reports in dashboard c2e06ac Update Readme with correct Doc URL eae8faa Using rbac policy for package panel 8af6b38 Using rbac policy for environments panel c836faa Using rbac policy for categories panel 8b86508 Fix ci test_check_image_info failed 28c6d60 Imported Translations from Zanata 1fd620a Update tox.ini for upper constraints 41d5a7b Create murano session client in tests e7d0879 Update the murano settings 5d116b0 Updated from global requirements 3ab6c00 Add cover dir to gitignore b733060 Fix script for unit test coverage job 83fd44d Honor title of Action in murano dashboard c30ae0e Fix allowance of Deploy environment action 274853a Imported Translations from Zanata da828b0 Imported Translations from Zanata 415c1e6 Correct env status in the new session cfeee59 Add and update the license header 8d2dceb Skip test_deploy_several_mock_apps_in_a_row bc46e85 Trivial: Modified python identifiers in setup.cfg. b365322 Make some i18n for trans text df6a439 Fix inaccuracies in dashboard environments api afdb143 Add script for unit test coverage job a968b69 Updated from global requirements ff05db6 Add Python 3.5 classifier and venv d0bbbb5 Remove the H104 pep8 ignore from tox.ini 956e3b0 Get ready for Horizon rework ae8be46 Preserve new environment row from sorting with other rows 2a10970 Modify assert statement when comparing with None d579e83 [TrivialFix]Remove the redundant navigation in app_details page 81f1fff RBAC settings for murano-dashboard 121fd1f Updated from global requirements 2648566 [TrivialFix]Remove the redundant required=True af5ad53 Make _generate_hostname() and int2base() work in python3 61f9587 Make generateHostname honor pattern parameter 9fa2329 Remove the old settings files 3635518 Correct domain parameter value in tests cfee806 Mark display statuses for translation 9f2f1d5 Refactor to a single request for latest apps f719229 Disable action buttons according to the statuses of environments 6c603fa Imported Translations from Zanata 40f84bc Add py27-mitaka tox target 4bad018 Updated from global requirements dd239e8 Use upper-constraints in tox test environments 978f0ed Make more-less js get dynamic-ui form description trim space adab734 Convert dynamic UI form names to string type 1c18762 Add exception for communicate with glare api 2ea6e87 Switch tests to keystone v3 API 34022c2 Imported Translations from Zanata 2960fff Add page_title in breadcrumb for pages a3fa3f5 Package table form 'Cancel' button consistent with others d9c70b3 Updated from global requirements 66ef3d7 Inherit custom yaml Loader from yaml.SafeLoader 0ba994d Updated from global requirements d59d9e7 Imported Translations from Zanata 2b34fcc Import horizon filters for murano-dashboard 8c0ce28 Mark image form filter out the 'aki' and 'ari' format d031c61 Increase timeout in test_deploy_several_mock_apps_in_a_row cb82be7 Imported Translations from Zanata d941994 Reorder releasenotes and increase toctree depth 1b8a257 Replace names in comment and description 4fe159a Imported Translations from Zanata f5f7d5c Increase timeout in test_deploy_several_mock_apps_in_a_row 5a77852 Add timeout argument to some test methods 551b73b Treat hyphen as a special character during password validation 9667719 Correct test workflow 6139b1b Correct password-checking js in dynamic UI forms 833193c Refactor sort direction use 6988fb0 Imported Translations from Zanata f5d9fe7 Fix message for environment deploy action 2857c8f Fetch class descendants in the dynamic_ui from glare 75e8ce5 Updated from global requirements f762c4a Updated from global requirements ffde837 Reorganize Murano-specific Horizon settings 5d07abc Add page_title in breadcrumb for Browse page 368476d python 3.4 support for urlparse d43857b Imported Translations from Zanata 6acf11c Revert "Add 'password' to names of password fields in dynamic forms" 75a6a4d Updated from global requirements 7e5121b Change "Deploy Environment" button b112cda Use 'trimmed' for blocktrans in html page d5f9bce Added a warning message if environment name is empty 7e28210 Rename the 'Applications' to 'Browse' in html template 43653f3 Fix Downloading Package blocks downloading next package b7a6a23 Use template filter to convert list of packages in the template 7e5e071 Updated from global requirements 70a0cfb Add ability to manage several environments at once in dashboard d23b755 Imported Translations from Zanata 3de1c42 Trival: Add icons for DeployEnvironment and DeployThisEnvironment 6edfc04 Add 'password' to names of password fields in dynamic forms 7c8f9bd Fix typo in murano-dashboard tests c8832a5 Reload env components page after deployment of empty environment 19608ce Updated from global requirements ef1fde4 Imported Translations from Zanata 6c6c587 Renamed murano dashboard panel 02bedc7 Add SESSION_ENGINE to local_settings.py.example ee7edeb Made breadcrumb consistent with horizon 21ab20a Enabled the Stickyness for Murano Tabs fa74dfd Imported Translations from Zanata 06cb133 Updated from global requirements 95c5651 Fix and simplify 'ClusterIPField' 8304a32 Hide category's description when modifying Library type packages 452645f Updated from global requirements b7afbd0 Updated from global requirements 856b489 Fix test_import_big_zip_file the mismatch error message 4a71cfa Imported Translations from Zanata 6ff1669 Hide package_counter in case of using glare c4f1efb Make test_add_pkg_to_category_non_admin more robust 4ebf7f5 Fix Typo in Password Validator c2e0102 Hide extra text in descriptions and allow expanding f3c29db Add i18n trans for form field label and help_text 39831c1 Update the gitignore for i18n compiled files c992619 Correct description during the package importing c3409b4 Add table action for environment details e67be10 Update reno for stable/mitaka b65a3ed Imported Translations from Zanata Diffstat (except docs and test files) ------------------------------------- .coveragerc | 9 + .gitignore | 4 + .gitreview | 1 + LICENSE | 176 +++ README.rst | 13 +- muranodashboard/api/__init__.py | 14 + muranodashboard/api/packages.py | 14 +- muranodashboard/catalog/forms.py | 2 +- muranodashboard/catalog/panel.py | 2 +- muranodashboard/catalog/tabs.py | 4 +- muranodashboard/catalog/views.py | 44 +- muranodashboard/categories/forms.py | 4 +- muranodashboard/categories/panel.py | 2 +- muranodashboard/categories/tables.py | 19 +- muranodashboard/common/net.py | 2 +- muranodashboard/common/utils.py | 7 + muranodashboard/conf/murano_policy.json | 36 + muranodashboard/dashboard.py | 4 +- muranodashboard/dynamic_ui/__init__.py | 13 - muranodashboard/dynamic_ui/fields.py | 179 +-- muranodashboard/dynamic_ui/forms.py | 2 +- muranodashboard/dynamic_ui/helpers.py | 15 +- muranodashboard/dynamic_ui/services.py | 18 +- muranodashboard/dynamic_ui/yaql_functions.py | 4 +- muranodashboard/environments/__init__.py | 13 - muranodashboard/environments/api.py | 29 +- muranodashboard/environments/consts.py | 31 +- muranodashboard/environments/forms.py | 9 +- muranodashboard/environments/panel.py | 1 + muranodashboard/environments/tables.py | 192 ++- muranodashboard/environments/tabs.py | 19 +- muranodashboard/environments/views.py | 17 +- muranodashboard/images/__init__.py | 13 - muranodashboard/images/forms.py | 15 +- muranodashboard/images/tables.py | 13 +- muranodashboard/images/views.py | 56 +- muranodashboard/local/_50_murano.py | 23 - muranodashboard/local/enabled/_50_murano.py | 24 + .../local/local_settings.d/_50_murano.py | 32 + muranodashboard/local/local_settings.py.example | 566 -------- muranodashboard/locale/cs/LC_MESSAGES/django.po | 1044 ++++++++++++++ muranodashboard/locale/cs/LC_MESSAGES/djangojs.po | 39 + muranodashboard/locale/de/LC_MESSAGES/djangojs.po | 53 +- muranodashboard/locale/django.pot | 1430 -------------------- muranodashboard/locale/djangojs.pot | 43 - .../locale/en_GB/LC_MESSAGES/djangojs.po | 39 + muranodashboard/locale/fr/LC_MESSAGES/djangojs.po | 15 +- muranodashboard/locale/ja/LC_MESSAGES/django.po | 186 ++- muranodashboard/locale/ja/LC_MESSAGES/djangojs.po | 52 +- muranodashboard/locale/ko_KR/LC_MESSAGES/django.po | 217 +-- .../locale/ko_KR/LC_MESSAGES/djangojs.po | 52 +- muranodashboard/locale/pt_BR/LC_MESSAGES/django.po | 121 +- .../locale/pt_BR/LC_MESSAGES/djangojs.po | 33 - muranodashboard/locale/ru/LC_MESSAGES/django.po | 991 ++++++++++++++ muranodashboard/locale/ru/LC_MESSAGES/djangojs.po | 34 - muranodashboard/locale/zh_CN/LC_MESSAGES/django.po | 278 ++-- .../locale/zh_CN/LC_MESSAGES/djangojs.po | 53 +- muranodashboard/packages/__init__.py | 13 - muranodashboard/packages/consts.py | 4 + muranodashboard/packages/forms.py | 6 +- muranodashboard/packages/panel.py | 1 + muranodashboard/packages/tables.py | 50 +- muranodashboard/packages/urls.py | 2 + muranodashboard/packages/views.py | 171 ++- .../static/muranodashboard/css/catalog.css | 7 + .../muranodashboard/js/environments-in-place.js | 15 +- .../static/muranodashboard/js/more-less.js | 42 + .../static/muranodashboard/js/murano.tables.js | 120 +- .../static/muranodashboard/js/passwordfield.js | 22 +- .../static/muranodashboard/js/upload_form.js | 2 +- .../templates/catalog/_details_page_header.html | 15 - muranodashboard/templates/catalog/app_details.html | 6 +- muranodashboard/templates/catalog/index.html | 18 +- muranodashboard/templates/deployments/_logs.html | 2 +- muranodashboard/templates/deployments/reports.html | 5 +- .../templates/packages/_import_bundle.html | 8 +- .../templates/packages/_modify_package.html | 8 +- muranodashboard/templates/packages/_upload.html | 10 +- muranodashboard/templates/packages/detail.html | 5 +- .../templates/services/_data_table.html | 21 +- muranodashboard/templates/services/_overview.html | 4 +- .../templates/services/_wizard_create.html | 13 +- muranodashboard/templates/services/details.html | 5 +- muranodashboard/templates/services/index.html | 6 +- muranodashboard/templatetags/__init__.py | 17 + muranodashboard/templatetags/custom_filters.py | 12 + muranodashboard/templatetags/jsonify.py | 23 + .../DeployingApp/Classes/mock_muranopl.yaml | 22 + .../abstract-base-class-fix-7cb06a0924b973f3.yaml | 7 + .../notes/bug-1579220-0a3fe23ac8f249ee.yaml | 5 + .../notes/display_repo_url-47c3cb0b45c2d68d.yaml | 5 + .../notes/glance-v2-wanring-b7ef3e3ce0ce6ce1.yaml | 5 + .../import-horizon-filters-af5dcf0720502567.yaml | 5 + .../manage-multiple-envs-e587c2e9432e39d7.yaml | 4 + .../notes/password-checking-780dc07fa1d9926a.yaml | 6 + .../notes/reload-empty-env-10165198e8384b08.yaml | 4 + ...ganize-dashboard-settings-11733b5c1003154b.yaml | 11 + .../safeloader-cve-2016-4972-82523879a6c3b1a5.yaml | 9 + ...ingle_request_latest_apps-4f6add404ab07c15.yaml | 4 + .../notes/status-session-b06786d470910080.yaml | 7 + releasenotes/source/index.rst | 5 +- releasenotes/source/mitaka.rst | 6 + requirements.txt | 6 +- setup.cfg | 2 +- test-requirements.txt | 12 +- tools/cover.sh | 90 ++ tools/rfc.sh | 145 -- tox.ini | 14 +- 118 files changed, 5018 insertions(+), 3413 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 2dc5aa2..1e0c9ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9 +9 @@ django-formtools # BSD -iso8601>=0.1.9 # MIT +iso8601>=0.1.11 # MIT @@ -19,2 +19,2 @@ semantic-version>=2.3.1 # BSD -Babel>=1.3 # BSD -django-babel>=0.4.0 # BSD +Babel>=2.3.4 # BSD +django-babel>=0.5.1 # BSD diff --git a/test-requirements.txt b/test-requirements.txt index 5edc2a0..4e29a80 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7 +7 @@ coverage>=3.6 # Apache-2.0 -django-nose>=1.2 # BSD +django-nose>=1.4.4 # BSD @@ -9 +9 @@ nose # LGPL -oslo.config>=3.7.0 # Apache-2.0 +oslo.config>=3.14.0 # Apache-2.0 @@ -15 +15 @@ testtools>=1.4.0 # MIT -mock>=1.2 # BSD +mock>=2.0 # BSD @@ -20,2 +20,2 @@ oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 -sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD -reno>=0.1.1 # Apache2 +sphinx!=1.3b1,<1.3,>=1.2.1 # BSD +reno>=1.8.0 # Apache2 @@ -25 +25 @@ django-compressor>=2.0 # MIT -django-openstack-auth>=2.0.0 # Apache-2.0 +django-openstack-auth>=2.4.0 # Apache-2.0