Plugin specifications added.

Change-Id: I6958b5882f9fac8b5a421f7d741219f15bce8ed2
This commit is contained in:
Oleksandr Martsyniuk 2016-08-16 13:12:22 +03:00
parent 0280fee2a6
commit ca14c28f0a
1 changed files with 234 additions and 0 deletions

234
specs/spec.rst Normal file
View File

@ -0,0 +1,234 @@
===================
Mistral Fuel plugin
===================
Mistral Fuel plugin allows Fuel to deploy OpenStack with Mistral installed and configured.
Problem description
===================
Its often required to execute some set of closely related OpenStack API calls.
For example creating a volume backup requires actions like creating a snapshot,
creating a backup, removing a snapshot. This is a place where Mistral,
the OpenStack workflow service, becomes very handy as it allows to compose
such set of API calls in workflows and invoke the API calls as a single entity.
Fuel is a widely used automation tool for deploying OpenStack clouds but
currently does not support installing and configuring Mistral during OpenStack deployment.
Proposed changes
================
Develop Fuel plugin to automate Mistral installation and configuration.
The plugin should provide ``mistral`` role.
The role should be compatible with Controller role or placed to a standalone node.
Multiple nodes with ``mistral`` role should be allowed to provide HA and performance improvement.
Mistral Engine and Mistral Executor HA is achieved by running multiple
Engine and Executor processes.
The tasks to be performed by the plugin:
* On primary controller.
* Create ``mistral`` MySQL database.
* Create ``mistral`` MySQL database user.
* Grant the appropriate rights.
* Create ``mistral`` Keystone service user.
* Create Mistral Keystone endpoint
* Keystone Service Name : mistral
* Keystone Service Type : workflow
* On Mistral node.
* Install ``mistral-engine``, ``mistral-executor`` packages.
* Create mistral.conf.
* Enable ``mistral-engine`` and ``mistral-executor`` services autostart and start them.
* On all controllers and Mistral node.
* Configure Mistral logging.
* On all controllers.
* Install ``mistral-api`` package
* Create mistral.conf.
* Enable ``mistral-api`` service autostart and start it.
* Configure firewall to open the port TCP/8989 for ``mistral-api`` endpoint.
* Configure HAProxy to balance calls to mistral-api.
* Install ``mistral-client`` package.
* Create Mistral-specific ``openrc`` file in ``root`` user home directory.
* Install ``mistral-dashboard`` package to add Mistral section to Horizon.
* On primary controller.
* Initialize and populate the database.
Web UI
------
Fuel Web UI is extended with plugin-specific settings.
The settings are:
* A checkbox to enable Mistral Fuel Plugin.
* MySQL password
* name: db_password
* label: MySQL password
* description: Password of MySQL user for Mistral.
* type: hidden
* default value: generated automatically
* Keystone password
* name: keystone_password
* label: Keystone password
* description: Password of Keystone service user for Mistral.
* type: hidden
* default value: generated automatically
Nailgun
-------
None
Data model
----------
None
REST API
--------
Mistral service endpoints will be registered with Keystone.
Orchestration
-------------
None
Fuel Client
-----------
None
Fuel Library
------------
None
Limitations
-----------
None
Alternatives
============
The plugin can also be implemented as a part of Fuel core but it was decided
to create a plugin as any new additional functionality makes a project and
testing more difficult which is an additional risk for the Fuel release.
Also Mistral can be installed manually.
Upgrade impact
==============
Compatibility of new Fuel components and the Plugin should be checked before
upgrading Fuel Master.
Security impact
===============
None
Notifications impact
====================
None
End user impact
===============
None
Performance impact
==================
Working Mistral server causes additional load on DB and query services.
Deployment impact
=================
The plugin is hotpluggable and can be installed and enabled either during
Fuel Master installation or after an environment has been deployed.
Developer impact
================
None
Infrastructure impact
=====================
A new role with name *mistral* is provided.
Mistral can be deployed to primary Controller node.
Documentation impact
====================
* Deployment Guide
* User Guide
* Test Plan
* Test Report
Implementation
==============
Assignee(s)
-----------
Primary assignee:
- Taras Kostyuk <tkostyuk@mirantis.com> - developer
Other contributors:
- Oleksandr Martsyniuk <omartsyniuk@mirantis.com> - feature lead, developer
- Kostiantyn Kalynovskyi <kkalynovskyi@mirantis.com> - developer
Project manager:
- Andrian Noga <anoga@mirantis.com>
Quality assurance:
- Vitaliy Yerys <vyerys@mirantis.com> - qa
- Oleksandr Kosse <okosse@mirantis.com> - qa
Work Items
----------
* Prepare development environment
* Implement Puppet manifests to install and configure Mistral
* Test Mistral Fuel plugin
* Prepare Documentation
Dependencies
============
* Fuel 9.0
* OpenStack Mitaka
Testing
=======
* Test Mistral deployed on a Controller in HA cloud.
* Test Mistral deployed on standalone node.
Acceptance criteria
-------------------
* Mistral server is up and running
* Mistral client can retrieve a list of actions
(verifies that DB is populated)
* Mistral client can create and execute a very basic workflow
* Mistral UI is working
References
==========
* Welcome to Mistrals documentation!
http://docs.openstack.org/developer/mistral/
* Welcome to yaqls documentation!
https://yaql.readthedocs.io/en/latest/