Prior to this change we had workflow defined inside python-tripleoclient, and most API calls were made directly to Heat. This worked OK but there was too much "business logic" inside the client, which doesn't work well if non-python clients (such as tripleo-ui) want to interact with TripleO.
To solve this problem, number of mistral workflows and custom actions have been implemented, which are available via the Mistral API on the undercloud. This can be considered the primary "TripleO API" for driving all deployment tasks now.
Here's a diagram showing how it fits together:
![]() |
| Overview of Mistral integration in TripleO |
Mistral workflows and actions
There are two primary interfaces to mistral, workflows which are a yaml definition of a process or series of tasks, and actions which are a concrete definition of how to do a specific task (such as call some OpenStack API).Workflows and actions can defined directly via the mistral API, or a wrapper called a workbook. Mistral actions are also defined via a python plugin interface, which TripleO uses to run some tasks such as running jinja2 on tripleo-heat-templates prior to calling Heat to orchestrate the deployment.
Mistral workflows, in detail
Here I'm going to show how to view and interact with the mistral workflows used by TripleO directly, which is useful to understand what TripleO is doing "under the hood" during a deployment, and also for debugging/development.First we view the mistral workbooks loaded into Mistral - these contain the TripleO specific workflows and are defined in tripleo-common
[stack@undercloud ~]$ . stackrc [stack@undercloud ~]$ mistral workbook-list +----------------------------+--------+---------------------+------------+ | Name | Tags | Created at | Updated at | +----------------------------+--------+---------------------+------------+ | tripleo.deployment.v1 | <none> | 2017-02-27 17:59:04 | None | | tripleo.package_update.v1 | <none> | 2017-02-27 17:59:06 | None | | tripleo.plan_management.v1 | <none> | 2017-02-27 17:59:09 | None | | tripleo.scale.v1 | <none> | 2017-02-27 17:59:11 | None | | tripleo.stack.v1 | <none> | 2017-02-27 17:59:13 | None | | tripleo.validations.v1 | <none> | 2017-02-27 17:59:15 | None | | tripleo.baremetal.v1 | <none> | 2017-02-28 19:26:33 | None | +----------------------------+--------+---------------------+------------+
The name of the workbook constitutes a namespace for the workflows it contains, so we can view the related workflows using grep (I also grep for tag_node to reduce the number of matches).
[stack@undercloud ~]$ mistral workflow-list | grep "tripleo.baremetal.v1" | grep tag_node | 75d2566c-13d9-4aa3-b18d-8e8fc0dd2119 | tripleo.baremetal.v1.tag_nodes | 660c5ec71ce043c1a43d3529e7065a9d | <none> | tag_node_uuids, untag_nod... | 2017-02-28 19:26:33 | None | | 7a4220cc-f323-44a4-bb0b-5824377af249 | tripleo.baremetal.v1.tag_node | 660c5ec71ce043c1a43d3529e7065a9d | <none> | node_uuid, role=None, que... | 2017-02-28 19:26:33 | None |
When you know the name of a workflow, you can inspect the required inputs, and run it directly via a mistral execution, in this case we're running the tripleo.baremetal.v1.tag_node workflow, which modifies the profile assigned in the ironic node capabilities (see tripleo-docs for more information about manual tagging of nodes)
[stack@undercloud ~]$ mistral workflow-get tripleo.baremetal.v1.tag_node +------------+------------------------------------------+ | Field | Value | +------------+------------------------------------------+ | ID | 7a4220cc-f323-44a4-bb0b-5824377af249 | | Name | tripleo.baremetal.v1.tag_node | | Project ID | 660c5ec71ce043c1a43d3529e7065a9d | | Tags | <none> | | Input | node_uuid, role=None, queue_name=tripleo | | Created at | 2017-02-28 19:26:33 | | Updated at | None | +------------+------------------------------------------+ [stack@undercloud ~]$ ironic node-list +--------------------------------------+-----------+---------------+-------------+--------------------+-------------+ | UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance | +--------------------------------------+-----------+---------------+-------------+--------------------+-------------+ | 30182cb9-eba9-4335-b6b4-d74fe2581102 | control-0 | None | power off | available | False | | 19fd7ea7-b4a0-4ae9-a06a-2f3d44f739e9 | compute-0 | None | power off | available | False | +--------------------------------------+-----------+---------------+-------------+--------------------+-------------+ [stack@undercloud ~]$ mistral execution-create tripleo.baremetal.v1.tag_node '{"node_uuid": "30182cb9-eba9-4335-b6b4-d74fe2581102", "role": "test"}' +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | ID | 6a141065-ad6e-4477-b1a8-c178e6fcadcb | | Workflow ID | 7a4220cc-f323-44a4-bb0b-5824377af249 | | Workflow name | tripleo.baremetal.v1.tag_node | | Description | | | Task Execution ID | <none> | | State | RUNNING | | State info | None | | Created at | 2017-03-03 09:53:10 | | Updated at | 2017-03-03 09:53:10 | +-------------------+--------------------------------------+
At this point the mistral workflow is running, and it'll either succeed or fail, and also create some output (which in the TripleO model is sometimes returned to the Ux via a Zaqar queue). We can view the status, and the outputs (truncated for brevity):
[stack@undercloud ~]$ mistral execution-list | grep 6a141065-ad6e-4477-b1a8-c178e6fcadcb | 6a141065-ad6e-4477-b1a8-c178e6fcadcb | 7a4220cc-f323-44a4-bb0b-5824377af249 | tripleo.baremetal.v1.tag_node | | <none> | SUCCESS | None | 2017-03-03 09:53:10 | 2017-03-03 09:53:11 | [stack@undercloud ~]$ mistral execution-get-output 6a141065-ad6e-4477-b1a8-c178e6fcadcb { "status": "SUCCESS", "message": { ...
So that's it - we ran a mistral workflow, it suceeded and we looked at the output, now we can see the result looking at the node in Ironic, it worked! :)
[stack@undercloud ~]$ ironic node-show 30182cb9-eba9-4335-b6b4-d74fe2581102 | grep profile | | u'cpus': u'2', u'capabilities': u'profile:test,cpu_hugepages:true,boot_o |
Mistral workflows, create your own!
Here I'll show how to develop your own custom workflows (which isn't something we expect operators to necessarily do, but is now part of many developers workflow during feature development for TripleO).First, we create a simple yaml definition of the workflow, as defined in the v2 Mistral DSL - this example lists all available ironic nodes, then finds those which match the "test" profile we assigned in the example above:
This example uses the mistral built-in "ironic" action, which is basically a pass-through action exposing the python-ironicclient interfaces. Similar actions exist for the majority of OpenStack python clients, so this is a pretty flexible interface.
Now we can now upload the workflow (not wrapped in a workbook this time, so we use workflow-create), run it via execution create, then look at the outputs - we can see that the matching_nodes output matches the ID of the node we tagged in the example above - success! :)
[stack@undercloud tripleo-common]$ mistral workflow-create shtest.yaml +--------------------------------------+-------------------------+----------------------------------+--------+--------------+---------------------+------------+ | ID | Name | Project ID | Tags | Input | Created at | Updated at | +--------------------------------------+-------------------------+----------------------------------+--------+--------------+---------------------+------------+ | 2b8f2bea-f3dd-42f0-ad16-79987c75df4d | test_nodes_with_profile | 660c5ec71ce043c1a43d3529e7065a9d | <none> | profile=test | 2017-03-03 10:18:48 | None | +--------------------------------------+-------------------------+----------------------------------+--------+--------------+---------------------+------------+ [stack@undercloud tripleo-common]$ mistral execution-create test_nodes_with_profile +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | ID | 2392ed1c-96b4-4787-9d11-0f3069e9a7e5 | | Workflow ID | 2b8f2bea-f3dd-42f0-ad16-79987c75df4d | | Workflow name | test_nodes_with_profile | | Description | | | Task Execution ID | <none> | | State | RUNNING | | State info | None | | Created at | 2017-03-03 10:19:30 | | Updated at | 2017-03-03 10:19:30 | +-------------------+--------------------------------------+ [stack@undercloud tripleo-common]$ mistral execution-list | grep 2392ed1c-96b4-4787-9d11-0f3069e9a7e5 | 2392ed1c-96b4-4787-9d11-0f3069e9a7e5 | 2b8f2bea-f3dd-42f0-ad16-79987c75df4d | test_nodes_with_profile | | <none> | SUCCESS | None | 2017-03-03 10:19:30 | 2017-03-03 10:19:31 | [stack@undercloud tripleo-common]$ mistral execution-get-output 2392ed1c-96b4-4787-9d11-0f3069e9a7e5 { "matching_nodes": [ "30182cb9-eba9-4335-b6b4-d74fe2581102" ], "available_nodes": [ "30182cb9-eba9-4335-b6b4-d74fe2581102", "19fd7ea7-b4a0-4ae9-a06a-2f3d44f739e9" ] }
Using this basic example, you can see how to develop workflows which can then easily be copied into the tripleo-common workbooks, and integrated into the TripleO deployment workflow.
In a future post, I'll dig into the use of custom actions, and how to develop/debug those.

Nice!
ReplyDeleteThe effectiveness of IEEE Project Domains depends very much on the situation in which they are applied. In order to further improve IEEE Final Year Project Domains practices we need to explicitly describe and utilise our knowledge about software domains of software engineering Final Year Project Domains for CSE technologies. This paper suggests a modelling formalism for supporting systematic reuse of software engineering technologies during planning of software projects and improvement programmes in Final Year Projects for CSE.
DeleteSoftware management seeks for decision support to identify technologies like JavaScript that meet best the goals and characteristics of a software project or improvement programme. JavaScript Training in Chennai Accessible experiences and repositories that effectively guide that technology selection are still lacking.
Aim of technology domain analysis is to describe the class of context situations (e.g., kinds of JavaScript software projects) in which a software engineering technology JavaScript Training in Chennai can be applied successfully
The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training
Great post as usual from hardy!! Good job stacker!!
ReplyDeleteNice post .Keep updating Devops Online Course
ReplyDeleteVery nice post here thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.
ReplyDeleteartificial intelligence and machine learning course in chennai
machine learning classroom training in chennai
machine learning certification in chennai
Android training in chennai
PMP training in chennai
Thanks for your post. This is excellent information. The list of your blogs is very helpful for those who want to learn, It is amazing!!! You have been helping many application.
ReplyDeletebest selenium training in chennai | best selenium training institute in chennai selenium training in chennai | best selenium training in chennai | selenium training in Velachery | selenium training in chennai omr | quora selenium training in chennai | selenium testing course fees | java and selenium training in chennai | best selenium training institute in chennai | best selenium training center in chennai
Connected Health Solutions
ReplyDeleteEnterprise imaging solutions to help you archive, consolidate, access, and share medical imaging data across departments, locations and regions.
A bewildering web journal I visit this blog, it's unfathomably heavenly. Oddly, in this present blog's substance made the purpose of actuality and reasonable. The substance of data is informative
ReplyDeleteOracle Fusion Financials Online Training
Oracle Fusion HCM Online Training
Oracle Fusion SCM Online Training
ReplyDeletevery nice blog.......keep update.......
hrms software solutions in chennai
List Of ERP Software Companies in Chennai
hr payroll software in chennai
real time tracking software in chennai
sales pro crm software in chennai
Thanks for sharing, nice post! Post really provice useful information!
ReplyDeleteGiaonhan247 chuyên dịch vụ mua hộ hàng mỹ trên website hàng đầu Mỹ ebay việt nam cũng như vận chuyển hàng đi mỹ và vận chuyển ship hàng mỹ về VN uy tín, giá rẻ.
Thanks for delivering a good stuff Openstack....
ReplyDeleteOpenstack Training
Openstack Certification Training
OpenStack Online Training
Openstack Training Course
Openstack Training in Hyderabad
Thank you for sharing us education, please kindly visit mine :D
ReplyDeleteAGEN POKER TERPERCAYA
SITUS POKER ONLINE RESMI
Data Science Training In Chennai
ReplyDeleteData Science Course In Chennai
Data Science Course In Chennai
Nice information, want to know about Selenium Training In Chennai
ReplyDeleteSelenium Training In Chennai
Data Science Training In Chennai
Protractor Training in Chennai
jmeter training in chennai
Rpa Training Chennai
Rpa Course Chennai
Selenium Training institute In Chennai
Python Training In Chennai
Rpa Training in Chennai
ReplyDeleteRpa Course in Chennai
Blue prism training in Chennai
Nice Blog!!. Thanks For Sharing..
ReplyDeleteHR Pay Roll Software
JAVA Development Services
Hotel Billing Software
Web Design Company
Hospital Management Software
SAP Software Services
Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
ReplyDeleteRobotic Process Automation (RPA) Training in Chennai | Robotic Process Automation (RPA) Training in anna nagar | Robotic Process Automation (RPA) Training in omr | Robotic Process Automation (RPA) Training in porur | Robotic Process Automation (RPA) Training in tambaram | Robotic Process Automation (RPA) Training in velachery
Thanks for the article. Its very useful. Keep sharing. AWS training in chennai | AWS online course | AWS course online
ReplyDeleteBuy Fake US Dollars
ReplyDeleteBuy Fake Counterfeit US Dollars
Buy Fake 10 US Dollars
Buy Fake 20 US Dollars
Buy Fake 50 US Dollars
Buy Fake 100 US Dollars
Buy Fake Euros
Buy Counterfeit Euros
Buy Fake 20 Euros
Buy Fake 50 Euros
Buy Fake 100 Euros
Buy Fake 200 Euros
Buy Fake Pounds
Buy Counterfeit Pounds
Buy Fake 5 Pounds
Buy Fake 10 Pounds
Buy Fake 20 Pounds
Buy Fake 50 Pounds
Buy Fake Canadian Dollars
Buy Counterfeit Canadian Dollars
Buy Fake 10 Canadian Dollars
Buy Fake 20 Canadian Dollars
Buy Fake 50 Canadian Dollars
Buy Fake 100 Canadian Dollars
Buy Fake Australian Dollars
Buy Counterfeit Australian Dollars
Buy Fake 10 Australian Dollars
Buy Fake 20 Australian Dollars
Buy Fake 50 Australian Dollars
Buy Fake 100 Australian Dollars
ReplyDeleteThanks for provide great informatic and looking beautiful blog, really nice required information & the things i never imagined and i would like to request, wright more blog and blog post like that for us. Thanks you once agian
single status certificate in punjab
single status certificate in india
single status certificate in uttar pradesh
single status certificate in west bengal
single status certificate in bihar
single status certificate in maharashtra
single status certificate in haryana
single status certificate in kerala
single status certificate in rajasthan
single status certificate
osb online training
ReplyDeleteoracle scm online training
abinitio online training
spark online training
scala online training
Interesting information.share more updates.
ReplyDeleteOpenstack Training
Viewpoint Dennis Quaid
ReplyDeleteViewpoint Dennis Quaid
#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
Great Article
ReplyDeleteI have learned something new from
your article, This will definitely help me in my future works, Thanks for sharing it
Best Software Development company
Best web development company
Mobile app development company
Good Post. I like your blog. Thanks for Sharing
ReplyDeleteVisit us: ui path online training
Visit us: uipath training in hyderabad
Borgata Hotel Casino & Spa - Mapyro
ReplyDeleteFree WiFi and parking. Located in the 세종특별자치 출장마사지 Atlantic City Marina District, 여수 출장마사지 this casino resort offers a spa and a fitness center, a 통영 출장안마 seasonal outdoor pool, and a restaurant.Free WiFi: 7.8 Rating: 3.7 · 4,949 reviews · Price range: $$$Does Borgata Hotel 성남 출장안마 Casino & Spa have a 부산광역 출장마사지 restaurant on site?What days are Borgata Hotel Casino & Spa open?
Wow, that is appealing studying. i am glad i found this and were given to artifice in it. I preferred it loads. thanks for the colossal and precise data. Prezi Pro Account Hack
ReplyDeleteExcellent site work, please share us more.
ReplyDeleteWallpapaer Engine Crack
Final Draft Crack
Advanced Systemcare Crack
Emsisoft Anti Malware Crack