RAID workflow for TripleO

Registered by Dmitry Tantsur

We need to extend TripleO to support per-profile RAID configuration. It was previously available as "ready state" command in tripleoclient, but relied on downstream-only patches, and hence was dropped. We need to resurrect it.

There are the following principal difference from previous code:
* Stop using "ready state" wording as everyone understands something different by it.
* Use vendor-agnostic Ironic RAID support [1] instead of hardcoding DRAC.
* Use a new Mistral workflow to driver the configuration.

I) Create workflow tripleo.baremetal.v1.create_raid_configuration
inputs:
* node_uuids - list of nodes
* configuration - desired configuration as JSON
the workflow will
* set given RAID configuration on nodes using set_target_raid_config [2]
* run manual cleaning with an appropriate clean step [1]
* wait for cleaning to be finished and report the result

II) Create workflow tripleo.baremetal.v1.create_raid_configuration_for_profile
inputs:
* profile_name - profile name as used in profile matching (e.g. compute)
* configuration - configuration to apply
the workflow will
* find all nodes in manageable state and given profile
** special case empty or None profile name to match nodes without profile set
* invoke tripleo.baremetal.v1.create_raid_configuration with given configuration for this nodes

III) Create workflow tripleo.baremetal.v1.create_raid_configuration_for_manageable_nodes
inputs:
* configuration - configuration to apply
the workflow will
* find all nodes in manageable state
* invoke tripleo.baremetal.v1.create_raid_configuration with given configuration for this nodes

IV) Create new tripleoclient command coming in these flavors:

* openstack overcloud nodes raid create --all-manageable <configuration>

 Runs tripleo.baremetal.v1.create_raid_configuration_for_manageable_nodes

* openstack overcloud nodes raid create --profile=compute <configuration>

 Runs tripleo.baremetal.v1.create_raid_configuration_for_profile

* openstack overcloud nodes raid create --node node1 --node node2 <configuration>

 Runs tripleo.baremetal.v1.create_raid_configuration

[1] http://docs.openstack.org/developer/ironic/deploy/raid.html
[2] http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.node.html#ironicclient.v1.node.NodeManager.set_target_raid_config

Blueprint information

Status:
Not started
Approver:
Steven Hardy
Priority:
Medium
Drafter:
Dmitry Tantsur
Direction:
Approved
Assignee:
Dmitry Tantsur
Definition:
Approved
Series goal:
Accepted for future
Implementation:
Deferred
Milestone target:
None

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/raid-workflow,n,z

Addressed by: https://review.openstack.org/400231
    Workflow for applying RAID configuration to Ironic nodes

Addressed by: https://review.openstack.org/405379
    Create a workflow for running manual cleaning on nodes

Addressed by: https://review.openstack.org/421242
    Create command for building RAID on given nodes

The first command and workflow are available in Ocata. Bumping everything else to Pike.

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.