Spec for node list view modes
Blueprint node-list-view-modes Change-Id: I71f96d49fc794b1fe453a9fbf0e01123a45c132b
This commit is contained in:
parent
ff9c053984
commit
d9f1a4f6f6
BIN
images/7.0/node-list-view-modes/compact-view.png
Normal file
BIN
images/7.0/node-list-view-modes/compact-view.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
BIN
images/7.0/node-list-view-modes/deploying-env.png
Normal file
BIN
images/7.0/node-list-view-modes/deploying-env.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
BIN
images/7.0/node-list-view-modes/extended-view.png
Normal file
BIN
images/7.0/node-list-view-modes/extended-view.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
279
specs/7.0/node-list-view-modes.rst
Normal file
279
specs/7.0/node-list-view-modes.rst
Normal file
@ -0,0 +1,279 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
====================================================
|
||||
Node list standard and compact view modes in Fuel UI
|
||||
====================================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/node-list-view-modes
|
||||
|
||||
Implement possibility to switch between standard and compact node list view
|
||||
modes.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
In big environments it becomes hard to manage a large number of nodes.
|
||||
|
||||
Node panel takes an entire row on environment nodes screen now and End User
|
||||
is forced to scroll through a large list of nodes before finding
|
||||
the right one.
|
||||
At the same time not all information on a node panel is needed for everyday
|
||||
work with operational cloud.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
We should introduce a compact view for a clickable node panel which shows
|
||||
the most significant information about the node such as:
|
||||
|
||||
* name
|
||||
* status (including deployment progress bar)
|
||||
* hardware information (HDD/CPU/RAM) in a short form
|
||||
* checked state
|
||||
|
||||
And add an ability to switch between standard and compact modes in particular
|
||||
environment. The choice should be stored in the database, so UI settings for
|
||||
an environment will be the same for every client. This will allow user not to
|
||||
set environment UI on each device.
|
||||
|
||||
Standard mode should be default view mode for new environments.
|
||||
|
||||
Switching node list view is always available and does not depend on
|
||||
environment status.
|
||||
|
||||
In compact mode there should be about 5 nodes in row in the node list.
|
||||
|
||||
When user hovers a compact node it should transform to extended view with more
|
||||
detailed info:
|
||||
|
||||
* name (with ability to rename the node)
|
||||
* status (including deployment progress bar)
|
||||
* checked state
|
||||
* role list
|
||||
* hardware information (HDD/CPU/RAM) in a short form
|
||||
* action buttons (such as Discard Addition, Discard Deletion, Remove
|
||||
(for offline nodes), View Logs)
|
||||
* Details button to launch node pop-up with detailed hardware information.
|
||||
|
||||
There are mockups for the feature:
|
||||
|
||||
.. image:: ../../images/7.0/node-list-view-modes/compact-view.png
|
||||
|
||||
.. image:: ../../images/7.0/node-list-view-modes/extended-view.png
|
||||
|
||||
.. image:: ../../images/7.0/node-list-view-modes/deploying-env.png
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
As the next iteration it is suggested to consider saving of UI settings
|
||||
not to Nailgun DB but to Keystone. This will allow to couple UI settings
|
||||
of particular environment to a particular user. This will be increasingly
|
||||
relevant with the growing number of UI settings.
|
||||
|
||||
UX impact
|
||||
---------
|
||||
|
||||
Proposed solution mostly affects UI/UX:
|
||||
|
||||
* New control for changing node list view mode should be added in a node
|
||||
management panel.
|
||||
* A node panel should have a new layout in case of 'compact' mode with less
|
||||
node data.
|
||||
* Compact node panel should transform to extended view with more details when
|
||||
user hovers a node.
|
||||
* The proposed change does not affect neither standard node view nor existing
|
||||
node pop-up with detailed hardware configuration.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
Existing ``grouping`` column should be removed from ``Cluster`` model into
|
||||
Nailgun. At the same time new ``ui_settings`` attribute of JSON type should be
|
||||
added to ``Cluster`` model with the following default value:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"view_mode": "standard",
|
||||
"grouping": "roles"
|
||||
}
|
||||
|
||||
This attribute should contain all UI settings of specific environment
|
||||
including node list grouping mode, that stored in ``grouping`` field of
|
||||
``Cluster`` model now.
|
||||
|
||||
This is an extendable way to handle future UI changes and not to create a big
|
||||
amount of additional fields in ``Cluster`` model.
|
||||
|
||||
This new ``ui_settings`` field should be validated on backend using JSON
|
||||
schema.
|
||||
"view_mode" property has one of the following values: "standard" (default) or
|
||||
"compact".
|
||||
"grouping" property has one of the following values: "roles" (default),
|
||||
"hardware" or "both".
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
No new methods needed.
|
||||
|
||||
Existing ``PUT /api/cluster/{cluster_id}`` method should be modified to be able
|
||||
to accept data (Ok code 200, server error code starting from 500) in the form
|
||||
of the following JSON:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"ui_settings": {
|
||||
"view_mode": "compact",
|
||||
"grouping": "roles"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Accordingly, this new ``ui_settings`` field should be added to the method
|
||||
output:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"id": 1,
|
||||
"name": "cluster#1",
|
||||
"release_id": 2,
|
||||
...
|
||||
"ui_settings": {
|
||||
"view_mode": "compact",
|
||||
"grouping": "roles"
|
||||
}
|
||||
}
|
||||
|
||||
Similarly existing ``GET /api/cluster/{cluster_id}`` method should return
|
||||
the new field.
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
Since we have a "Data model impact" we have to prepare an Alembic migration
|
||||
that should update clusters to fit the new format.
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Plugin impact
|
||||
-------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Infrastructure impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
|
||||
* Julia Aranovich (jkirnosova@mirantis.com)
|
||||
|
||||
Developers:
|
||||
|
||||
* Julia Aranovich (jkirnosova@mirantis.com) - JS code
|
||||
* Bogdan Dudko (bdudko@mirantis.com) - Design
|
||||
* Vitaly Kramskikh (vkramskikh@mirantis.com) - Python code
|
||||
|
||||
Mandatory Design Reviewer:
|
||||
|
||||
* Vitaly Kramskikh (vkramskikh@mirantis.com)
|
||||
|
||||
Approver:
|
||||
|
||||
* Sheena Gregson <sgregson@mirantis.com>
|
||||
|
||||
QA engineer:
|
||||
|
||||
* Anastasia Palkina <apalkina@mirantis.com>
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Provide a control to switch between standard and compact node list views.
|
||||
* Implement a new compact node panel layout.
|
||||
* Implement layout of an extended view of compact node.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
* This new Fuel UI feature should be covered by UI functional tests.
|
||||
* Addition of ``ui_settings`` attribute to ``Cluster`` model should be covered
|
||||
by Python tests.
|
||||
|
||||
Acceptance criteria
|
||||
-------------------
|
||||
|
||||
* User can switch between standard and compact view mode on nodes screen (both
|
||||
environment nodes and unallocated nodes screens).
|
||||
* The view mode choice is saved for particular environment, so user
|
||||
does not need to switch again when he returned to environment. Selected view
|
||||
mode is also the same for different clients (browsers).
|
||||
* When switching to compact view node panels should transform to their compact
|
||||
view.
|
||||
* Compact node panel tranforms to extended view with more detailed information
|
||||
when user hovers a node.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
The documentation should cover how the end user experience has been changed.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* #fuel-ui on freenode
|
Loading…
Reference in New Issue
Block a user