From 0f362e5e7b86dc66eb8768482071f7f73d1118eb Mon Sep 17 00:00:00 2001 From: Matthew Thode Date: Tue, 7 Aug 2018 15:26:16 -0500 Subject: [PATCH] fix ironic driver data structure usage The template would previously split strings so you'd get things like enabled_hardware_types = p,x,e Now we use jmespath to do the search of the lists/dicts for us. Change-Id: I3f2f4550ed47b78c20d603d77124609c1ec2a63d --- defaults/main.yml | 2 +- templates/ironic.conf.j2 | 15 ++++++++------- vars/main.yml | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index d4bb1490..e8e48fc3 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -74,7 +74,7 @@ ironic_services: ironic-oneviewd: group: ironic_conductor service_name: ironic-oneviewd - service_en: "{{ 'oneview' in filtered_ironic_drivers.hardware_type }}" + service_en: "{{ 'oneview' in (filtered_ironic_drivers | json_query('[*].hardware_type') | unique) }}" init_config_overrides: "{{ ironic_oneviewd_init_config_overrides }}" diff --git a/templates/ironic.conf.j2 b/templates/ironic.conf.j2 index 3c5a6a48..e9f7356b 100644 --- a/templates/ironic.conf.j2 +++ b/templates/ironic.conf.j2 @@ -16,12 +16,13 @@ default_network_interface = {{ ironic_default_network_interface }} transport_url = {{ ironic_oslomsg_rpc_transport }}://{% for host in ironic_oslomsg_rpc_servers.split(',') %}{{ ironic_oslomsg_rpc_userid }}:{{ ironic_oslomsg_rpc_password }}@{{ host }}:{{ ironic_oslomsg_rpc_port }}{% if not loop.last %},{% else %}/{{ ironic_oslomsg_rpc_vhost }}{% if ironic_oslomsg_rpc_use_ssl | bool %}?ssl=1{% else %}?ssl=0{% endif %}{% endif %}{% endfor %} # drivers -enabled_hardware_types = {{ filtered_ironic_drivers.hardware_type | join(',') }} -enabled_boot_interfaces = {{ filtered_ironic_drivers.boot | join(',') }} -enabled_deploy_interfaces = {{ filtered_ironic_drivers.deploy | join(',') }} -enabled_inspect_interfaces = {{ filtered_ironic_drivers.inspect | join(',') }} -enabled_management_interfaces = {{ filtered_ironic_drivers.management | join(',') }} -enabled_power_interfaces = {{ filtered_ironic_drivers.power | join(',') }} +enabled_hardware_types = {{ filtered_ironic_drivers | json_query('[*].hardware_type') | unique | join(',') }} +enabled_boot_interfaces = {{ filtered_ironic_drivers | json_query('[*].boot') | unique | join(',') }} +enabled_deploy_interfaces = {{ filtered_ironic_drivers | json_query('[*].deploy') | unique | join(',') }} +enabled_inspect_interfaces = {{ filtered_ironic_drivers | json_query('[*].inspect') | unique | join(',') }} +enabled_management_interfaces = {{ filtered_ironic_drivers | json_query('[*].management') | unique | join(',') }} +enabled_power_interfaces = {{ filtered_ironic_drivers | json_query('[*].power') | unique | join(',') }} + [agent] @@ -141,7 +142,7 @@ cleaning_network = {{ ironic_neutron_cleaning_network_uuid | default(ironic_neut {% endif %} [oneview] -{%- if 'oneview' in filtered_ironic_drivers.hardware_type -%} +{%- if 'oneview' in (filtered_ironic_drivers | json_query('[*].hardware_type') | unique) -%} manager_url = {{ ironic_oneview_manager_url }} username = {{ ironic_oneview_username }} password = {{ ironic_oneview_password }} diff --git a/vars/main.yml b/vars/main.yml index f212c6f8..44fd8d35 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -180,10 +180,10 @@ filtered_ironic_services: |- {{ services }} filtered_ironic_drivers: |- - {% set concat_drivers = {} %} + {% set concat_drivers = [] %} {% for driver in ironic_drivers_enabled %} {% if driver in ironic_driver_types.keys() %} - {% set _ = concat_drivers.update(ironic_driver_types[driver]) %} + {% set _ = concat_drivers.append(ironic_driver_types[driver]) %} {% endif %} {% endfor %} {{ concat_drivers }}