diff --git a/specs/spec.rst b/specs/spec.rst new file mode 100644 index 0000000..125a3fb --- /dev/null +++ b/specs/spec.rst @@ -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 - developer + +Other contributors: + +- Oleksandr Martsyniuk - feature lead, developer +- Kostiantyn Kalynovskyi - developer + +Project manager: + +- Andrian Noga + +Quality assurance: + + +- Vitaliy Yerys - qa +- Oleksandr Kosse - 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/ + + +