[openstack-dev] [tripleo] Mistral workflows for node assignment

Honza Pokorny hpokorny at redhat.com
Fri May 27 12:50:44 UTC 2016

Hello folks,

I would love to get your thoughts on a new way of assigning roles to

Since nova flavors are created during the installation of the
undercloud, they don't correspond to the actual hardware specifications
of the available nodes.  So, once a node is assigned, we should update
the flavor with new hardware specs based on that node.  This is a
two-step operation: update the node and update the flavor.

Now that we have multiple steps and multiple APIs involved in node
assignment, it seems that we should turn this procedure into a mistral
workflow.  I have created a patch that does just that and you're welcome
to review it and submit your feedback:


The patch introduces two workflows: assign_node and assign_nodes.  The
latter is just a loop of the former.  It works like this:

Given a node_id and a role_name (compute, swift-storage, etc):

1.  Retrieve the node's details using ironic
2.  Create a JSON patch object to update the node's capabilities
3.  Update the node with the new capabilities
4.  Get all nodes for that role and determine the lowest common specs
5.  Recreate flavor with the common specs

The reason for recreating the flavor instead of updating it in place is
because mistral and the nova client don't expose the "set_keys" API yet.
If the above patch receives favorable comments, we can work on getting
those APIs exposed in order to simplify the code in tripleo-common.

Honza Pokorny

More information about the OpenStack-dev mailing list