From bcfa2aa095287a9a1c1017840ed25d02fd536f8c Mon Sep 17 00:00:00 2001 From: Jeffrey Zhang Date: Sat, 8 Feb 2020 18:25:53 +0800 Subject: [PATCH] Support json type for the ironic_node config_drive parameter Since patch[0], ironic config_drive parameter support json type. [0] https://review.opendev.org/639050 Change-Id: Ieecb9e6125a182a3da41002aea26233a98aecc8c --- plugins/modules/os_ironic_node.py | 51 ++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/plugins/modules/os_ironic_node.py b/plugins/modules/os_ironic_node.py index 35c66e09..519bc9f7 100644 --- a/plugins/modules/os_ironic_node.py +++ b/plugins/modules/os_ironic_node.py @@ -97,19 +97,35 @@ extends_documentation_fragment: EXAMPLES = ''' # Activate a node by booting an image with a configdrive attached -os_ironic_node: - cloud: "openstack" - uuid: "d44666e1-35b3-4f6b-acb0-88ab7052da69" - state: present - power: present - deploy: True - maintenance: False - config_drive: "http://192.168.1.1/host-configdrive.iso" - instance_info: - image_source: "http://192.168.1.1/deploy_image.img" - image_checksum: "356a6b55ecc511a20c33c946c4e678af" - image_disk_format: "qcow" - delegate_to: localhost +- os_ironic_node: + cloud: "openstack" + uuid: "d44666e1-35b3-4f6b-acb0-88ab7052da69" + state: present + power: present + deploy: True + maintenance: False + config_drive: "http://192.168.1.1/host-configdrive.iso" + instance_info: + image_source: "http://192.168.1.1/deploy_image.img" + image_checksum: "356a6b55ecc511a20c33c946c4e678af" + image_disk_format: "qcow" + delegate_to: localhost + +# Activate a node by booting an image with a configdrive json object +- os_ironic_node: + uuid: "d44666e1-35b3-4f6b-acb0-88ab7052da69" + auth_type: None + ironic_url: "http://192.168.1.1:6385/" + config_drive: + meta_data: + hostname: node1 + public_keys: + default: ssh-rsa AAA...BBB== + instance_info: + image_source: "http://192.168.1.1/deploy_image.img" + image_checksum: "356a6b55ecc511a20c33c946c4e678af" + image_disk_format: "qcow" + delegate_to: localhost ''' from ansible.module_utils.basic import AnsibleModule @@ -205,7 +221,7 @@ def main(): uuid=dict(required=False), name=dict(required=False), instance_info=dict(type='dict', required=False), - config_drive=dict(required=False), + config_drive=dict(type='raw', required=False), ironic_url=dict(required=False), state=dict(required=False, default='present'), maintenance=dict(required=False), @@ -229,6 +245,13 @@ def main(): endpoint=module.params['ironic_url'] ) + if (module.params['config_drive'] and + not isinstance(module.params['config_drive'], (str, dict))): + config_drive_type = type(module.params['config_drive']) + msg = ('argument config_drive is of type %s and we expected' + ' str or dict') % config_drive_type + module.fail_json(msg=msg) + node_id = _choose_id_value(module) if not node_id: