We are chuffed to announce the release of: senlin-dashboard 0.6.0: Senlin Dashboard This release is part of the ocata release series. Download the package from: https://tarballs.openstack.org/senlin-dashboard/ Please report issues through launchpad: https://bugs.launchpad.net/senlin-dashboard For more details, please see below. 0.6.0 ^^^^^ AngularJS-based panels are implemented. These new panels have most of functions in exist Django-based panels. Users can switch to AngularJS- based panels by editing settings in "_59_toggle_angular_senlin_dashboard.py" . New Features ************ * Five panels, profiles, nodes, clusters, policies and receivers, are implemented as AngularJS-based. These panels uses recent Horizon framework features, e.g. angular-json-schema, common "views" for AngularJS-based plugin, initAction instead initScope, and so on. Also these source codes are tested with Jasmine and Eslint to ensure its quality. Changes in senlin-dashboard 0.5.0..0.6.0 ---------------------------------------- 80ba54b Update README file 4acf7dc Reorganize docs ca8f66c Imported Translations from Zanata a1c34b3 Updated from global requirements 8c7dd17 Add senlin-dashboard installation guide 03c2baa Cluster status should be translatable abaab04 Use type rather than type_name a43185c Imported Translations from Zanata 2e034fa Node Status should be translatable 56ae3f5 Cleanup unnecessary blank line 2c2b062 Use more readable toast message 824c6af Fix typo in senlin rest api 93f70cd Imported Translations from Zanata 63be8a7 Cleanup help messages 7005f9f Add policy for delete resources 898bce5 Add file loader for spec of policy 904995c Use ModalFormService instead wizard-modal 7e9be6a Display error message when create/update failed 9a9e779 Clean up initAction and scope 54fff1a Imported Translations from Zanata 2bdff6d Add release note for Angularization 82d2831 Imported Translations from Zanata 1ace5ba Add create action into Receiver panel 00ee56c Add update action for cluster 73c253d Add delete action for cluster 8b0701a Add create and update actions for policy e1277bf Implement action updating cluster policies 62f461b Updated from global requirements 261db01 Imported Translations from Zanata 7b6725b Add delete action for policies panel 0a1710e Add details view into Policies panel f677629 Add angular policies table ae382d7 Address receiver panel to recent Horizon framework c5d63ac Updated from global requirements fa37e18 Imported Translations from Zanata ed2c1b4 Display selected panel name on browser title bar b90afcb Add update profile action for angular profile panel b996b26 Following up patch of ddf8b00fe49c571994955eff25c1e2d6e7255c06 bf978f6 Move _50_senlin.py into senlin_dashboard/enabled folder 0ba8e29 Add node create/update actions 7252b7c Imported Translations from Zanata afe9a51 Fix typo on error for profile creation ad35de9 Add create cluster action e361f9f Following patch for angular cluster table e5d32d7 Add delete action for angular nodes panel 5116c96 Angularize node tables f9082b8 angularize cluster tables 0eb27b6 Updated from global requirements d335c67 Replace mox with mock 3f0fcf4 Show team and repo badges on README 44971e1 Use proper assert check c126d9f Add JS tests for profile create service 89c4057 Improve translate attribute for profile creation workflow a89d2b2 Update karma coverage threshold values decc497 Update reno for stable/newton c7910fd Add JS tests for receiver delete service ab5500f Add filterFacets for angular profile table 914a788 Add JS tests for profile delete service ffd2dcd Updated from global requirements 68a108c Remove unnecessary variable assignment c9ff1fe Add spec file for profiles.service.js 95ad9bb Imported Translations from Zanata 9e130f6 Updated from global requirements 189869b Fix the wrong url to the policy detail page in cluster detail page c462a9c Change an attribute name from 'type' to 'type_name' 1cfb679 Return single promise rather than array-like promises 1ff23c4 Update karma coverage threshold values 54e44c3 [Improve Test Coverage] Add spec file for senlin.service.js 948a014 Clean up profile.service.js c75a98b Add 'Action' info in receiver detail page fe08fd4 Update REST API docstring c1c470e Add 'type_name' to Profile class to fix errors related with profile.type 29fb73a Add create profile action for angular profile panel 70ca41f Add the detail link for the cluster in receiver detail page 0132f58 Updated from global requirements 19b99bd Add setting file for enabling Angularized panel e58d54b Add angurlar toggle feature for receivers panel c01005a Add delete action for angular profile panel 5c8d65d Add allowed function Cluster/Node delete action f08699e angularize profile tables 1330741 Fix typo 7d61b7d Imported Translations from Zanata 216a313 Fix the update time not display error 87ab36a Add node recover action in table row actions c8490ba Add spec file for receiver action module 5668275 Remove static from .gitignore e009376 Fix no-redeclare warning in js lint 60276a7 Add missing RecoverCluster row actions 906db5d Batch action should check datum 0d7348e Return APIResourceWrapper object for senlin api ff9bb6e Add allowed function Cluster/Node recover action eadcb96 Cleanup .gitignore and tox.ini 9f5651c Fix typo e10c5c0 Cleanup allowed() for cluster/node action c27e50b Add cluster recover for cluster object 35d0589 Add node recover for node object 155087b Add cluster check for cluster object 0a69d56 Add node check for node object 07b7572 Relocate policies in cluster detial overview 6bb7da4 Add api test for senlin receiver_list 1f44c21 Add sticky for tab group 34cee46 Remove unused paramters of pagination utils f4324d3 Enable pagination in event table 35338b9 Define modal header and submit in views instead of template 3884b47 Fix profile update error Diffstat (except docs and test files) ------------------------------------- .gitignore | 54 +- README.rst | 40 +- _50_senlin.py.example | 16 - _59_toggle_angular_senlin_dashboard.py.example | 7 + .../notes/angularize-ac693bf52216fdf5.yaml | 16 + releasenotes/source/index.rst | 1 + .../source/locale/ja/LC_MESSAGES/releasenotes.po | 34 +- releasenotes/source/newton.rst | 6 + requirements.txt | 4 +- senlin_dashboard/api/rest/__init__.py | 9 +- senlin_dashboard/api/rest/senlin.py | 457 +++++++++++++++- senlin_dashboard/api/senlin.py | 178 ++++-- senlin_dashboard/api/utils.py | 27 +- senlin_dashboard/cluster/clusters/forms.py | 6 +- senlin_dashboard/cluster/clusters/tables.py | 61 +++ senlin_dashboard/cluster/clusters/tabs.py | 27 +- .../clusters/templates/clusters/_create.html | 7 - .../templates/clusters/_detail_overview.html | 16 +- .../templates/clusters/_manage_policies.html | 5 - senlin_dashboard/cluster/clusters/urls.py | 28 +- senlin_dashboard/cluster/clusters/views.py | 15 +- senlin_dashboard/cluster/ngreceivers/__init__.py | 0 senlin_dashboard/cluster/ngreceivers/panel.py | 25 - senlin_dashboard/cluster/ngreceivers/urls.py | 21 - senlin_dashboard/cluster/ngreceivers/views.py | 17 - senlin_dashboard/cluster/nodes/forms.py | 61 ++- senlin_dashboard/cluster/nodes/tables.py | 61 +++ senlin_dashboard/cluster/nodes/tabs.py | 30 +- .../cluster/nodes/templates/nodes/_create.html | 7 - .../cluster/nodes/templates/nodes/_update.html | 7 - senlin_dashboard/cluster/nodes/urls.py | 28 +- senlin_dashboard/cluster/nodes/views.py | 12 +- senlin_dashboard/cluster/policies/forms.py | 17 + .../policies/templates/policies/_create.html | 11 +- .../templates/policies/_detail_overview.html | 2 +- .../policies/templates/policies/_update.html | 7 - senlin_dashboard/cluster/policies/urls.py | 28 +- senlin_dashboard/cluster/policies/views.py | 12 +- senlin_dashboard/cluster/profiles/forms.py | 6 +- senlin_dashboard/cluster/profiles/panel.py | 2 + .../profiles/templates/profiles/_create.html | 12 +- .../profiles/templates/profiles/_update.html | 7 - senlin_dashboard/cluster/profiles/urls.py | 29 +- senlin_dashboard/cluster/profiles/views.py | 12 +- senlin_dashboard/cluster/receivers/forms.py | 22 +- .../receivers/templates/receivers/_create.html | 7 - .../templates/receivers/_detail_overview.html | 4 +- senlin_dashboard/cluster/receivers/urls.py | 25 +- senlin_dashboard/cluster/receivers/views.py | 9 +- senlin_dashboard/conf/README.rst | 2 +- senlin_dashboard/enabled/_50_senlin.py | 30 + senlin_dashboard/enabled/__init__.py | 0 senlin_dashboard/karma.conf.js | 9 +- senlin_dashboard/locale/ja/LC_MESSAGES/django.po | 104 +++- senlin_dashboard/locale/ja/LC_MESSAGES/djangojs.po | 606 ++++++++++++++++++++- .../locale/zh_CN/LC_MESSAGES/django.po | 22 +- .../locale/zh_CN/LC_MESSAGES/djangojs.po | 88 --- senlin_dashboard/static/app/core/cluster.module.js | 5 + senlin_dashboard/static/app/core/cluster.scss | 2 + .../app/core/clusters/actions/actions.module.js | 96 ++++ .../core/clusters/actions/actions.module.spec.js | 46 ++ .../core/clusters/actions/create/cluster.help.html | 18 + .../core/clusters/actions/create/create.service.js | 92 ++++ .../clusters/actions/create/create.service.spec.js | 93 ++++ .../app/core/clusters/actions/delete.service.js | 157 ++++++ .../core/clusters/actions/delete.service.spec.js | 125 +++++ .../manage-policy/manage-policy-detail.html | 17 + .../actions/manage-policy/manage-policy-model.js | 51 ++ .../manage-policy-workflow.service.js | 50 ++ .../manage-policy/manage-policy.controller.js | 68 +++ .../actions/manage-policy/manage-policy.help.html | 5 + .../actions/manage-policy/manage-policy.html | 70 +++ .../actions/manage-policy/manage-policy.service.js | 123 +++++ .../core/clusters/actions/update/cluster.help.html | 12 + .../core/clusters/actions/update/update.service.js | 108 ++++ .../clusters/actions/update/update.service.spec.js | 84 +++ .../clusters/actions/workflow/workflow.service.js | 164 ++++++ .../actions/workflow/workflow.service.spec.js | 72 +++ .../static/app/core/clusters/clusters.module.js | 127 +++++ .../app/core/clusters/clusters.module.spec.js | 24 + .../static/app/core/clusters/clusters.service.js | 85 +++ .../app/core/clusters/clusters.service.spec.js | 66 +++ .../app/core/clusters/details/details.module.js | 53 ++ .../static/app/core/clusters/details/drawer.html | 5 + .../core/clusters/details/overview.controller.js | 40 ++ .../static/app/core/clusters/details/overview.html | 14 + .../static/app/core/clusters/panel.html | 4 + .../static/app/core/events/events.module.js | 120 ++++ .../static/app/core/events/events.module.spec.js | 24 + .../static/app/core/events/events.service.js | 49 ++ .../static/app/core/events/events.service.spec.js | 41 ++ .../static/app/core/events/events_drawer.html | 5 + .../app/core/nodes/actions/actions.module.js | 86 +++ .../app/core/nodes/actions/actions.module.spec.js | 24 + .../core/nodes/actions/create/create.service.js | 92 ++++ .../nodes/actions/create/create.service.spec.js | 83 +++ .../app/core/nodes/actions/create/node.help.html | 14 + .../app/core/nodes/actions/delete.service.js | 154 ++++++ .../app/core/nodes/actions/delete.service.spec.js | 123 +++++ .../app/core/nodes/actions/update/node.help.html | 12 + .../core/nodes/actions/update/update.service.js | 106 ++++ .../nodes/actions/update/update.service.spec.js | 83 +++ .../nodes/actions/workflow/workflow.service.js | 159 ++++++ .../actions/workflow/workflow.service.spec.js | 64 +++ .../app/core/nodes/details/details.module.js | 61 +++ .../static/app/core/nodes/details/drawer.html | 6 + .../app/core/nodes/details/events.controller.js | 36 ++ .../static/app/core/nodes/details/events.html | 6 + .../app/core/nodes/details/overview.controller.js | 36 ++ .../static/app/core/nodes/details/overview.html | 16 + .../static/app/core/nodes/nodes.module.js | 168 ++++++ .../static/app/core/nodes/nodes.module.spec.js | 24 + senlin_dashboard/static/app/core/nodes/nodes.scss | 3 + .../static/app/core/nodes/nodes.service.js | 82 +++ .../static/app/core/nodes/nodes.service.spec.js | 58 ++ senlin_dashboard/static/app/core/nodes/panel.html | 4 + .../core/openstack-service-api/senlin.service.js | 487 ++++++++++++++++- .../openstack-service-api/senlin.service.spec.js | 169 ++++++ .../app/core/policies/actions/actions.module.js | 86 +++ .../core/policies/actions/actions.module.spec.js | 44 ++ .../core/policies/actions/create/create.service.js | 89 +++ .../policies/actions/create/create.service.spec.js | 79 +++ .../app/core/policies/actions/delete.service.js | 157 ++++++ .../core/policies/actions/delete.service.spec.js | 123 +++++ .../core/policies/actions/update/update.service.js | 100 ++++ .../policies/actions/update/update.service.spec.js | 90 +++ .../actions/workflow/load-file.controller.js | 55 ++ .../actions/workflow/load-file.controller.spec.js | 42 ++ .../core/policies/actions/workflow/load-file.html | 7 + .../policies/actions/workflow/policy.help.html | 13 + .../policies/actions/workflow/workflow.service.js | 116 ++++ .../actions/workflow/workflow.service.spec.js | 53 ++ .../app/core/policies/details/details.module.js | 53 ++ .../static/app/core/policies/details/drawer.html | 6 + .../core/policies/details/overview.controller.js | 36 ++ .../static/app/core/policies/details/overview.html | 15 + .../static/app/core/policies/panel.html | 4 + .../static/app/core/policies/policies.module.js | 115 ++++ .../app/core/policies/policies.module.spec.js | 24 + .../static/app/core/policies/policies.service.js | 82 +++ .../app/core/policies/policies.service.spec.js | 58 ++ .../app/core/profiles/actions/actions.module.js | 87 +++ .../core/profiles/actions/actions.module.spec.js | 24 + .../core/profiles/actions/create/create.service.js | 104 ++++ .../profiles/actions/create/create.service.spec.js | 80 +++ .../core/profiles/actions/create/profile.help.html | 15 + .../app/core/profiles/actions/delete.service.js | 154 ++++++ .../core/profiles/actions/delete.service.spec.js | 123 +++++ .../core/profiles/actions/update/profile.help.html | 8 + .../core/profiles/actions/update/update.service.js | 105 ++++ .../profiles/actions/update/update.service.spec.js | 90 +++ .../actions/workflow/load-file.controller.js | 55 ++ .../actions/workflow/load-file.controller.spec.js | 42 ++ .../core/profiles/actions/workflow/load-file.html | 7 + .../profiles/actions/workflow/workflow.service.js | 126 +++++ .../actions/workflow/workflow.service.spec.js | 56 ++ .../app/core/profiles/details/details.module.js | 53 ++ .../static/app/core/profiles/details/drawer.html | 5 + .../core/profiles/details/overview.controller.js | 40 ++ .../static/app/core/profiles/details/overview.html | 14 + .../static/app/core/profiles/panel.html | 4 + .../static/app/core/profiles/profiles.module.js | 118 ++++ .../app/core/profiles/profiles.module.spec.js | 24 + .../static/app/core/profiles/profiles.scss | 3 + .../static/app/core/profiles/profiles.service.js | 83 +++ .../app/core/profiles/profiles.service.spec.js | 59 ++ .../app/core/receivers/actions/actions.module.js | 21 +- .../core/receivers/actions/actions.module.spec.js | 44 ++ .../app/core/receivers/actions/create.service.js | 91 ++++ .../core/receivers/actions/create.service.spec.js | 83 +++ .../app/core/receivers/actions/delete.service.js | 34 +- .../core/receivers/actions/delete.service.spec.js | 124 +++++ .../app/core/receivers/actions/receiver.help.html | 12 + .../static/app/core/receivers/actions/workflow.js | 160 ++++++ .../app/core/receivers/actions/workflow.spec.js | 58 ++ .../app/core/receivers/details/details.module.js | 14 +- .../static/app/core/receivers/details/drawer.html | 26 +- .../core/receivers/details/overview.controller.js | 8 - .../app/core/receivers/details/overview.html | 29 +- .../static/app/core/receivers/panel.html | 2 +- .../static/app/core/receivers/receivers.module.js | 94 ++-- .../static/app/core/receivers/receivers.service.js | 82 +++ .../app/core/receivers/receivers.service.spec.js | 58 ++ senlin_dashboard/test/helpers.py | 7 +- test-requirements.txt | 10 +- tox.ini | 4 +- 196 files changed, 10089 insertions(+), 679 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 0dc4cae..1429a9e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,2 +5,2 @@ -pbr>=1.6 # Apache-2.0 -python-senlinclient>=0.3.0 # Apache-2.0 +pbr>=1.8 # Apache-2.0 +python-senlinclient>=1.1.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 959166f..80bbefb 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -9 +9 @@ http://tarballs.openstack.org/horizon/horizon-master.tar.gz#egg=horizon -coverage>=3.6 # Apache-2.0 +coverage>=4.0 # Apache-2.0 @@ -13,2 +13,2 @@ mox>=0.5.3 # Apache-2.0 -mox3>=0.7.0 # Apache-2.0 -nodeenv>=0.9.4 # BSD License # BSD +mox3!=0.19.0,>=0.7.0 # Apache-2.0 +nodeenv>=0.9.4 # BSD @@ -23 +23 @@ xvfbwrapper>=0.1.3 #license: MIT -sphinx!=1.3b1,<1.4,>=1.2.1 # BSD +sphinx>=1.5.1 # BSD @@ -25 +25 @@ oslosphinx>=4.7.0 # Apache-2.0 -reno>=1.8.0 # Apache2 +reno>=1.8.0 # Apache-2.0