Pass target_raid_config field to ironic variable
In order to create/delete RAID configuration via the Ansible driver we should be able to retrieve the JSON target_raid_config data from the node. Change-Id: Ie1bbefbc438a6c7f4592ea96ff84d2d5eb2d412d Story: 2006417 Task: 36307
This commit is contained in:
parent
c9ae2ffcd3
commit
678114799d
@ -362,6 +362,7 @@ Those values are then accessible in your plays as well
|
||||
preserve_ephemeral: "<bool>"
|
||||
ephemeral_format: "<FILESYSTEM TO CREATE ON EPHEMERAL PARTITION>"
|
||||
partitions: "<LIST OF PARTITIONS IN FORMAT EXPECTED BY PARTED MODULE>"
|
||||
raid_config: "<COPY OF NODE's TARGET_RAID_CONFIG FIELD>"
|
||||
|
||||
|
||||
``ironic.nodes``
|
||||
@ -434,6 +435,10 @@ Those values are then accessible in your plays as well
|
||||
Optional. Taken from the ``instance_info``, it specifies if the ephemeral
|
||||
partition must be preserved or rebuilt. Defaults to ``no``.
|
||||
|
||||
``ironic.raid_config``
|
||||
Taken from the ``target_raid_config`` if not empty, it specifies the RAID
|
||||
configuration to apply.
|
||||
|
||||
As usual for Ansible playbooks, you also have access to standard
|
||||
Ansible facts discovered by ``setup`` module.
|
||||
|
||||
|
@ -428,8 +428,10 @@ class AnsibleDeploy(agent_base.HeartbeatMixin, base.DeployInterface):
|
||||
{'node': node.uuid, 'ip': node_address})
|
||||
variables = _prepare_variables(task)
|
||||
if not node.driver_internal_info.get('is_whole_disk_image'):
|
||||
variables.update(_parse_partitioning_info(task.node))
|
||||
playbook, user, key = _parse_ansible_driver_info(task.node)
|
||||
variables.update(_parse_partitioning_info(node))
|
||||
if node.target_raid_config:
|
||||
variables.update({'raid_config': node.target_raid_config})
|
||||
playbook, user, key = _parse_ansible_driver_info(node)
|
||||
node_list = [(node.uuid, node_address, user, node.extra)]
|
||||
extra_vars = _prepare_extra_vars(node_list, variables=variables)
|
||||
|
||||
@ -535,11 +537,18 @@ class AnsibleDeploy(agent_base.HeartbeatMixin, base.DeployInterface):
|
||||
node_address = _get_node_ip(task)
|
||||
|
||||
node_list = [(node.uuid, node_address, user, node.extra)]
|
||||
extra_vars = _prepare_extra_vars(node_list)
|
||||
|
||||
if node.target_raid_config:
|
||||
variables = {'raid_config': node.target_raid_config}
|
||||
extra_vars = _prepare_extra_vars(node_list, variables=variables)
|
||||
else:
|
||||
extra_vars = _prepare_extra_vars(node_list)
|
||||
|
||||
LOG.debug('Starting cleaning step %(step)s on node %(node)s',
|
||||
{'node': node.uuid, 'step': stepname})
|
||||
step_tags = step['args'].get('tags', [])
|
||||
LOG.debug("Detected tags from cleaning step: %(tags)s",
|
||||
{'tags': step_tags})
|
||||
_run_playbook(node, playbook, extra_vars, key, tags=step_tags)
|
||||
LOG.info('Ansible completed cleaning step %(step)s '
|
||||
'on node %(node)s.',
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add ``target_raid_config`` data to ``ironic`` variable under
|
||||
``raid_config`` top-level key which will expose the RAID configuration
|
||||
to the ``ansible`` driver.
|
||||
See `story 2006417
|
||||
<https://storyboard.openstack.org/#!/story/2006417>`__ for details.
|
Loading…
Reference in New Issue
Block a user