diff --git a/images/7.0/fuel-ui-dashboard/deployment_in_progress.png b/images/7.0/fuel-ui-dashboard/deployment_in_progress.png new file mode 100644 index 00000000..da38c75a Binary files /dev/null and b/images/7.0/fuel-ui-dashboard/deployment_in_progress.png differ diff --git a/images/7.0/fuel-ui-dashboard/deployment_success.jpg b/images/7.0/fuel-ui-dashboard/deployment_success.jpg new file mode 100644 index 00000000..d47c37de Binary files /dev/null and b/images/7.0/fuel-ui-dashboard/deployment_success.jpg differ diff --git a/images/7.0/fuel-ui-dashboard/deployment_warnings.png b/images/7.0/fuel-ui-dashboard/deployment_warnings.png new file mode 100644 index 00000000..3983c85b Binary files /dev/null and b/images/7.0/fuel-ui-dashboard/deployment_warnings.png differ diff --git a/images/7.0/fuel-ui-dashboard/new_cluster.png b/images/7.0/fuel-ui-dashboard/new_cluster.png new file mode 100644 index 00000000..bd7fc989 Binary files /dev/null and b/images/7.0/fuel-ui-dashboard/new_cluster.png differ diff --git a/specs/7.0/fuel-ui-dashboard.rst b/specs/7.0/fuel-ui-dashboard.rst new file mode 100644 index 00000000..af0e726d --- /dev/null +++ b/specs/7.0/fuel-ui-dashboard.rst @@ -0,0 +1,320 @@ +.. + This work is licensed under a Creative Commons Attribution 3.0 Unported + License. + + http://creativecommons.org/licenses/by/3.0/legalcode + +========================================== +OpenStack environment Dashboard +========================================== + +https://blueprints.launchpad.net/fuel/+spec/post-deployment-dashboard + +Create a single entry point for user to have access to all the necessary +information before, in progress and after deployment. + +Problem description +=================== + +It might be quite hard for a newbie user to understand what he should do after +OpenStack environment creation. To help user setup the OpenStack environment +and show what can be done with it we'll introduce dashboard. +Dashboard will accumulate information about the OpenStack environment +It also will give the user an idea of what to do next and what in general can +be done with OpenStack environment. + +Proposed change +=============== + +Create a separate tab in UI combining all the necessary information and useful +links for the user. This tab will also replace current Actions tab, combining +data from there. + +The main information should be displayed in the separate block - with +instructions what to do next and what currently is wrong. + +For the new just-created OpenStack environment there should be: + +* link to *Add nodes screen* with warning *No nodes added to OpenStack* + *environment* +* for OpenStack environments with nodes, but no network verification - + corresponding warning and link to Networks tab + +To be short - all warnings and errors, shown in Deploy changes dialog should be +shown here. + +For deployed OpenStack environment there will be link to Horizon, OSTF tests +status with link to Healthcheck tab. For new OpenStack environment Healthcheck +block will be shown but disabled. + +For error OpenStack environment here will be error message, replacing +the one under OpenStack environment page breadcrumbs. + +The additional content here will be: + +* nodes statistics - number of online nodes in OpenStack environments, in graph + view, donut chart. Number of error nodes - just in red (in case of error + offline node this node will be counted as an error one) +* link to plugins documentation +* link to Openstack documentation +* storage backend info - what volume and image type is selected (Cinder or + Ceph) (is needed to know in order to not search this information + through the whole settings tab) +* other OpenStack environment information (in one cumulated block) - OpenStack + environment name, operating system, OpenStack release, selected compute + hypervisors (KVM, QEMU with vCenter or not), network option (Neutron or Nova) +* nodes configuration (HDD, CPU, RAM) +* urls, provided by plugins(services like Murano, Sahara, Ceilometer are + treated as plugins also) via API described in corresponding chapter + `REST API impact`_. Plugin entries will be displayed in the order of date + creation. + +The suggestion is to have a unified source of truth for either deployed +OpenStack environment and a new one, this tab would be the first one and Nodes +tab will go after it. + +The proposed mockups of dashboard: for new OpenStack environment: + + .. image:: ../../images/7.0/fuel-ui-dashboard/new_cluster.png + +For new OpenStack environment being deployed: + + .. image:: ../../images/7.0/fuel-ui-dashboard/deployment_in_progress.png + + For OpenStack environment already deployed: + + .. image:: ../../images/7.0/fuel-ui-dashboard/deployment_success.jpg + + and in case of warnings: + + .. image:: ../../images/7.0/fuel-ui-dashboard/deployment_warnings.png + + +For nailgun +----------- + +Provide API with links to all possible necessary resources after OpenStack +environment deployment. + +* link to Horizon +* link to Zabbix +* link to Murano (description and what to do with it) +* link to Sahara (description and what to do with it) +* link to Ceilometer (description and what to do with it) +* any other links provided by plugins + +We'll have special /cluster/:id/dashboard_entries url by GETting which it will +be possible to get the list of dashboard entries in the format like this: + +.. code-block:: json + + [ + { + title: 'plugin', + description: '', + url: '', + id: Number + } + ] + +with optional 'description' field. + +To solve authentication issues we'll use auth exemption. + + +For UI +----------- + +UX will be affected in several aspects with this change: + +* Actions tab will be substituted with Dashboard tab, providing all the + necessary info about the OpenStack environment for the user +* Deploy button will be moved to Dashboard +* Deployment result message (both success and error or warning-containing) will + be moved to dashboard +* Deployment/resetting/stopping progress will be displayed on the Dashboard tab +* List of changes will be displayed on the dashboard replacing Deploy Changes + dialog +* Discard changes button will be moved to Dashboard + +Alternatives +------------ + +None + +Data model impact +----------------- + +The new table for dashboard entries should be created, containing the +following fields: + ++----+--------+-------------+--------+------------+ +| id | Title | Description | url | cluster_id | ++====+========+=============+========+============+ +| id | String | String | String | id | ++-------------+-------------+--------+------------+ + +cluster_id field means one cluster may have many dashboard entries for plugin, +but it will belong to one cluster (one-to-many relationship) + +REST API impact +--------------- + +API POST, PUT and DELETE method should be available for plugins in their post- +deployment hooks. + +There will be a new REST API url added: + ++--------+--------------------------------+--------------------------+-------+ +| method | URL | action | auth | +| | | | exempt| ++========+================================+==========================+=======+ +| POST | /api/v1/clusters/:cluster_id/ | create a new item | true | +| | dashboard_entries | for dashboard entries | | ++--------+--------------------------------+--------------------------+-------+ +| GET | /api/v1/clusters/:cluster_id/ | get a list of | false | +| | dashboard_entries | dashboard entries | | ++--------+--------------------------------+--------------------------+-------+ +| PUT | /api/v1/clusters/:cluster_id/ | update a dashboard entry | false | +| | dashboard_entries/:entry_id | with specified id | | ++--------+--------------------------------+--------------------------+-------+ +| DELETE | /api/v1/clusters/:cluster_id/ | delete a dashboard | false | +| | dashboard_entries/:entry_id | entry with specified id | | ++--------+--------------------------------+--------------------------+-------+ + +GET returns JSON like this: + +.. code-block:: json + + [ + { + title: 'Zabbix', + description: 'Zabbix is software that monitors numerous' + + + 'parameters of a network and the health and integrity' + + + ' of servers', + url: 'http://www.zabbix.com/', + id: Number(identificator) + }, + { + title: 'Murano', + url: 'https://wiki.openstack.org/wiki/Murano', + id: Number(identificator) + }, + { + title: 'My plugin', + description: 'My awesome plugin', + url: '/my_plugin', + id: Number(identificator) + } + ] + +Upgrade impact +-------------- + +A migration should be created for DashboardEntries model, also +migrations are needed to generate dashboard entries for old OpenStack +environments - for Horizon, Sahara and Murano entries. + +Security impact +--------------- + +None + +Notifications impact +-------------------- + +Unlikely. + +Other end user impact +--------------------- + +Will improve user experience. +Unlikely to impact python-fuelclient. + +Performance Impact +------------------ + +None. + +Plugin impact +--------------------- + +Will provide an entry point for plugins to access post-deployment +dashboard. + +Other deployer impact +--------------------- + +None. + +Developer impact +---------------- + +None. + +Implementation +============== + +Assignee(s) +----------- + +Primary assignee: + Aleksandra Morozova +Other contributors: + * Bogdan Dudko - designer + * Steve Doll - designer + * Vitaly Kramskikh - backend developer +Approver: + * Nathan Trueblood + * Sheena Gregson +Reviewer: + * Vitaly Kramskikh + +Work Items +---------- + +Blueprint will be implemented in several stages: + +* Initial design and logic approval +* Markup implementation +* Javascript React components implementation +* Backend implementation + +Dependencies +============ + +None + +Testing +======= + +Tests to be created for new REST API items. +UI side of Dashboard implementation should also be covered with +functional and unit tests - React components, new UX, new js model. + +Acceptance criteria +------------------- + +User can access OpenStack documentation, list of changes, available actions, +cumulated information and what is missing for OpenStack environment, also +plugin urls will be shown on this separate Dashboard tab. +Cumulated environment information, actions that can be done with environment +and links to OpenStack documentation should always be visible for the user. +Before deployment user can see list of changes, a list of warnings/errors if +any in addition to information displayed always. +In the process of environment deployment, user can see current deployment +progress state, besides the information mentioned above. +After OpenStack deployment has successfully completed, the default displayed +tab shows links out to all relevant dashboards (Horizon, Murano, plugin +UIs). If plugins were included, links should include plugin-relevant UI blocks. +Changing plugin settings and/or removing plugins is not a part of this page. + +Documentation Impact +==================== + +Part about user flow, with new Dashboard tab should be updated. + +References +========== + +1. https://blueprints.launchpad.net/fuel/+spec/post-deployment-dashboard