Spec for ui-deployment-history

Change-Id: Id850182f169d3600c642102b0ace636869162349
This commit is contained in:
Julia Aranovich 2016-06-17 12:57:03 +03:00
parent bf6e2c59d5
commit 16ce49cfbc
1 changed files with 354 additions and 0 deletions

View File

@ -0,0 +1,354 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
============================================
Deployment task execution history in Fuel UI
============================================
https://blueprints.launchpad.net/fuel/+spec/ui-deployment-history
Show deployment execution graphs for all cluster deployments in Fuel UI.
This would allow End User to perform maintenance of a cluster with
an ability to do troubleshooting and audit of things happening to the cluster.
--------------------
Problem description
--------------------
Currently, it is almost impossible for Fuel UI user to see and understand
details of the deployment execution processes happened to cluster.
User has no information about running processes on nodes during deployment,
tasks sequence and their statuses, just a final result of successful or
failed environment deployment.
It makes maintenance and troubleshooting of a cluster via Fuel UI difficult
and time-consuming.
This change proposes to show all the information about particular deployments
for each particular cluster and its nodes.
----------------
Proposed changes
----------------
Web UI
======
#. Deployment progress bar on a cluster Dashboard should be clickable if
'deployment' task is running in the cluster. By clicking on it a graph with
the deployment data should appear.
#. Cluster page should be extended with the new 'History' tab that contains
'Deployment History' section with data of finished cluster deployments.
User should be able to choose a particular deployment on the tab
(deployments are referred to by their `id` and `time_start` attributes)
and get the process details and see graphs for all the deployed nodes.
Deployment should be represented as a graph where x-axis is a timeline and
y-axis indicates cluster nodes. Each node section contains a sequence of
deployment tasks related to the node. An additional section shows tasks
executed on the master node. Node sections are grouped by node roles.
Each bar on the graph corresponds to particular deployment task. Being hovered
it pops over the following info about the task:
* start time
* end time
* status (failed tasks should have a special layout)
Task bar should be clickable and display a popover with the following task
data:
* name
* node ID
* node name (user-assigned name during the deployment)
* node roles
* start time
* end time
* status
* message (actual for failed tasks with 'error' status)
Timeline should support zooming for better UX.
Tasks in 'skipped' status should not be reflected on the timeline, as they do
not participate in deployment. The same for tasks in 'pending' status. They
are not shown on the timeline because they are not started yet.
Deployment timeline should have a control to switch to table representation.
It is a table that displays a list of deployment tasks and it is divided into
sections. Each section includes tasks executed on nodes of specific roles and
has an appropriate role combination as a title.
Deployment table has the following columns:
* task name
* node ID
* node name (user-assigned name during the deployment)
* task status
* start time
* end time
* details (link to a full list of the task properties)
The list of tasks in the table should be sorted by node ID, then by start time
attribute.
Link in the 'Details' column should open a pop-up with all the task
attributes listed.
All tasks, including skipped and pending, should be shown in a table view.
Deployment tasks table should support filtering by:
* task name
* node (the filter options are node name and ID pairs)
* node role
* task status
These filters should support multiple values selection (user may want to see
tasks for several nodes or with a specific set of statuses).
Filters panel should have 'Reset' button to reset applied filters.
When switching to deployment table view on the Dashboard, tasks in the table
should be filtered by 'ready', 'running' and 'error' statuses by default.
History of a particular cluster deployment comes from
`GET /api/transactions/<deployment_id>/deployment_history/` response.
The response is a list of deployment tasks in the following format (only
attributes used in Fuel UI are described):
.. code-block:: json
{
"task_name": "upload_configuration",
"node_id": "6",
"node_roles": ["compute", "cinder"],
"node_name": "Node X",
"status": "running",
"time_start": "2016-06-24T06:37:51.735185",
"time_end": null,
"message": "",
...
}
where
* `task_name` - name of a deployment task
* `node_id` - id of node where a task was executed OR 'master' string if
a task was executed on the master node
* `node_roles` - list of the deployed node roles (an empty list in case of
master node)
* `node_name` - name that the node had at the moment of the deployment start
(should be 'Master Node' in case of the master node)
* `status` - status of a task and has one of the following values:
'pending', 'ready', 'running', 'error', or 'skipped'
* `time_start` - timestamp when a task was started (Null if a task is not
started yet)
* `time_end` - timestamp when a task was finished (Null if a task is not
started or not finished yet)
* `message` - text message that the finished task returns
`node_id` attribute can be set to 'null' or '-'. Null value means that
the task represents synchronization process on nodes and refers to Virtual
Sync Node. '-' value means that the task was not executed on any node.
Fuel UI should not display such tasks on timeline or in deployment table,
tasks related to cluster nodes or the master node should be shown only.
Ids of all cluster deployments come from the response of
`GET /api/transactions?cluster_id=<cluster_id>&tasks_names=deployment` API
call.
`GET /api/transactions/?cluster_id=<cluster_id>&tasks_names=deployment&
statuses=running` API call should be used on the cluster Dashboard to get id
of the running deployment.
Nailgun
=======
Data model
----------
#. Model of a cluster deployment (named 'transaction') should be extended with
`time_start` attribute, that will be used in Fuel UI to distinguish cluster
deployments.
#. Model of a deployment task from a deployment history should be extended
with `node_name` and 'node_roles' attributes.
#. The content of `custom` attribute of a deployment task should be merged
with root and task should not contain the `custom` property.
REST API
--------
#. Need to add filtering of results by task names or/and statuses for
`GET /api/transactions/` method. The following API calls should be
supported:
* `GET /api/transactions/?cluster_id=<cluster_id>&tasks_names=deployment`
* `GET /api/transactions/?cluster_id=<cluster_id>&tasks_names=deployment&
statuses=running`
Orchestration
=============
RPC Protocol
------------
No changes required.
Fuel Client
===========
None.
Plugins
=======
No changes required.
Fuel Library
============
No changes required.
------------
Alternatives
------------
None.
--------------
Upgrade impact
--------------
Migration should be prepared according to the changes in data models.
---------------
Security impact
---------------
None.
--------------------
Notifications impact
--------------------
None.
---------------
End user impact
---------------
Ability to easier troubleshoot and perform maintenance of a cluster.
------------------
Performance impact
------------------
None.
-----------------
Deployment impact
-----------------
None.
----------------
Developer impact
----------------
None.
---------------------
Infrastructure impact
---------------------
None.
--------------------
Documentation impact
--------------------
Fuel UI user guide should be updated to include information about the feature.
--------------
Implementation
--------------
Assignee(s)
===========
Primary assignee:
jkirnosova
Other contributors:
bdudko (visual design)
bgaifullin, ikutukov, dguryanov (Nailgun)
Mandatory design review:
vkramskikh
ashtokolov
Work Items
==========
* Display a deployment graph of a current deployment on the Dashboard tab.
* Display history graphs of all finished cluster deployments in a new
History tab.
* Support both display modes for deployment information: a timeline graph and
table view.
* Add filters toolbar for table representation of deployment history.
Dependencies
============
None.
------------
Testing, QA
------------
* Manual testing.
* UI functional tests should cover the changes.
Acceptance criteria
===================
Fuel UI user should be able to run several deployments for a cluster and see
the deployment tasks history in the cluster page, including real-time
information about a current deployment.
----------
References
----------
* Store Deployment Tasks Execution History in DB
https://blueprints.launchpad.net/fuel/+spec/store-deployment-tasks-history