Plugin specifications added.
Change-Id: I6958b5882f9fac8b5a421f7d741219f15bce8ed2
This commit is contained in:
parent
0280fee2a6
commit
ca14c28f0a
|
@ -0,0 +1,234 @@
|
|||
===================
|
||||
Mistral Fuel plugin
|
||||
===================
|
||||
|
||||
Mistral Fuel plugin allows Fuel to deploy OpenStack with Mistral installed and configured.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
It’s 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 Mistral’s documentation!
|
||||
http://docs.openstack.org/developer/mistral/
|
||||
* Welcome to yaql’s documentation!
|
||||
https://yaql.readthedocs.io/en/latest/
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue