From 16ce49cfbc7520b2c95ad0b4fd33a8df9de75f11 Mon Sep 17 00:00:00 2001 From: Julia Aranovich Date: Fri, 17 Jun 2016 12:57:03 +0300 Subject: [PATCH] Spec for ui-deployment-history Change-Id: Id850182f169d3600c642102b0ace636869162349 --- specs/10.0/ui-deployment-history.rst | 354 +++++++++++++++++++++++++++ 1 file changed, 354 insertions(+) create mode 100644 specs/10.0/ui-deployment-history.rst diff --git a/specs/10.0/ui-deployment-history.rst b/specs/10.0/ui-deployment-history.rst new file mode 100644 index 00000000..8f6fd227 --- /dev/null +++ b/specs/10.0/ui-deployment-history.rst @@ -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_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=&tasks_names=deployment` API +call. + +`GET /api/transactions/?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=&tasks_names=deployment` + * `GET /api/transactions/?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