Quick Start =========== Prerequisites ------------- Before you start following this guide, make sure you have completed these three prerequisites. Install and run Mistral ~~~~~~~~~~~~~~~~~~~~~~~ Go through the installation manual: :doc:`Mistral Installation Guide ` Install Mistral client ~~~~~~~~~~~~~~~~~~~~~~ To install mistralclient, please refer to :doc:`Mistral Client / CLI Guide ` Export Keystone credentials ~~~~~~~~~~~~~~~~~~~~~~~~~~~ To use the OpenStack command line tools you should specify environment variables with the configuration details for your OpenStack installation. The following example assumes that the Identity service is at ``127.0.0.1:5000``, with a user ``admin`` in the ``admin`` tenant whose password is ``password``: .. code-block:: bash $ export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/ $ export OS_TENANT_NAME=admin $ export OS_USERNAME=admin $ export OS_PASSWORD=password Write a workflow ---------------- For example, we have the following workflow. .. code-block:: mistral --- version: "2.0" my_workflow: type: direct input: - names tasks: task1: with-items: name in <% $.names %> action: std.echo output=<% $.name %> on-success: task2 task2: action: std.echo output="Done" This simple workflow iterates through a list of names in ``task1`` (using `with-items`), stores them as a task result (using the `std.echo` action) and then stores the word "Done" as a result of the second task (`task2`). To learn more about the Mistral Workflows and what you can do, read the :doc:`Mistral DSL specification ` Upload the workflow ------------------- Use the *Mistral CLI* to create the workflow:: $ mistral workflow-create The output should look similar to this:: +------------------------------------+-------------+--------+---------+---------------------+------------+ |ID | Name | Tags | Input | Created at | Updated at | +------------------------------------+-------------+--------+---------+---------------------+------------+ |9b719d62-2ced-47d3-b500-73261bb0b2ad| my_workflow | | names | 2015-08-13 08:44:49 | None | +------------------------------------+-------------+--------+---------+---------------------+------------+ Run the workflow and check the result ------------------------------------- Use the *Mistral CLI* to start the new workflow, passing in a list of names as JSON:: $ mistral execution-create my_workflow '{"names": ["John", "Mistral", "Ivan", "Crystal"]}' Make sure the output is like the following:: +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | ID | 49213eb5-196c-421f-b436-775849b55040 | | Workflow ID | 9b719d62-2ced-47d3-b500-73261bb0b2ad | | Workflow name | my_workflow | | Description | | | Task Execution ID | | | State | RUNNING | | State info | None | | Created at | 2017-03-06 11:24:10 | | Updated at | 2017-03-06 11:24:10 | +-------------------+--------------------------------------+ After a moment, check the status of the workflow execution (replace the example execution id with the ID output above):: $ mistral execution-get 49213eb5-196c-421f-b436-775849b55040 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | ID | 49213eb5-196c-421f-b436-775849b55040 | | Workflow ID | 9b719d62-2ced-47d3-b500-73261bb0b2ad | | Workflow name | my_workflow | | Description | | | Task Execution ID | | | State | SUCCESS | | State info | None | | Created at | 2017-03-06 11:24:10 | | Updated at | 2017-03-06 11:24:20 | +-------------------+--------------------------------------+ The status of each **task** also can be checked:: $ mistral task-list 49213eb5-196c-421f-b436-775849b55040 +--------------------------------------+-------+---------------+--------------------------------------+---------+------------+---------------------+---------------------+ | ID | Name | Workflow name | Execution ID | State | State info | Created at | Updated at | +--------------------------------------+-------+---------------+--------------------------------------+---------+------------+---------------------+---------------------+ | f639e7a9-9609-468e-aa08-7650e1472efe | task1 | my_workflow | 49213eb5-196c-421f-b436-775849b55040 | SUCCESS | None | 2017-03-06 11:24:11 | 2017-03-06 11:24:17 | | d565c5a0-f46f-4ebe-8655-9eb6796307a3 | task2 | my_workflow | 49213eb5-196c-421f-b436-775849b55040 | SUCCESS | None | 2017-03-06 11:24:17 | 2017-03-06 11:24:18 | +--------------------------------------+-------+---------------+--------------------------------------+---------+------------+---------------------+---------------------+ Check the result of task *'task1'*:: $ mistral task-get-result f639e7a9-9609-468e-aa08-7650e1472efe [ "John", "Mistral", "Ivan", "Crystal" ] If needed, we can go deeper and look at a list of the results of the **action_executions** of a single task:: $ mistral action-execution-list f639e7a9-9609-468e-aa08-7650e1472efe +--------------------------------------+----------+---------------+-----------+--------------------------------------+---------+----------+---------------------+---------------------+ | ID | Name | Workflow name | Task name | Task ID | State | Accepted | Created at | Updated at | +--------------------------------------+----------+---------------+-----------+--------------------------------------+---------+----------+---------------------+---------------------+ | 4e0a60be-04df-42d7-aa59-5107e599d079 | std.echo | my_workflow | task1 | f639e7a9-9609-468e-aa08-7650e1472efe | SUCCESS | True | 2017-03-06 11:24:12 | 2017-03-06 11:24:16 | | 5bd95da4-9b29-4a79-bcb1-298abd659bd6 | std.echo | my_workflow | task1 | f639e7a9-9609-468e-aa08-7650e1472efe | SUCCESS | True | 2017-03-06 11:24:12 | 2017-03-06 11:24:16 | | 6ae6c19e-b51b-4910-9e0e-96c788093715 | std.echo | my_workflow | task1 | f639e7a9-9609-468e-aa08-7650e1472efe | SUCCESS | True | 2017-03-06 11:24:12 | 2017-03-06 11:24:16 | | bed5a6a2-c1d8-460f-a2a5-b36f72f85e19 | std.echo | my_workflow | task1 | f639e7a9-9609-468e-aa08-7650e1472efe | SUCCESS | True | 2017-03-06 11:24:12 | 2017-03-06 11:24:17 | +--------------------------------------+----------+---------------+-----------+--------------------------------------+---------+----------+---------------------+---------------------+ Check the result of the first **action_execution**:: $ mistral action-execution-get-output 4e0a60be-04df-42d7-aa59-5107e599d079 { "result": "John" } **Congratulations! Now you are ready to use OpenStack Workflow Service!**