{%- set node_service_profiles = hosts[inventory_hostname]['service_profiles'] %} {%- if (openstack is defined) and (openstack != '') -%} {%- if (('management' in node_service_profiles) and (ceph_configured | default(False))) -%} {%- set _ = node_service_profiles.append("cephcontroller") -%} {%- endif -%} {%- endif -%} {%- if node_service_profiles|length > 1 %} {%- set device_mapping = {} %} {% if device_mapping.update(localstorage[node_service_profiles[0]]) %}{%- endif %} {%- macro update_bigger_hash(hash) -%} {%- set vol_names1 = device_mapping.keys()|list %} {%- set vol_names2 = hash.keys()| list %} {%- set vol_names = vol_names1 + vol_names2| unique|list%} {%- for vol_name in vol_names %} {% if vol_name in device_mapping.keys() and vol_name not in hash.keys() %} {% if device_mapping.update({ vol_name: device_mapping[vol_name]}) %}{%- endif %} {% elif vol_name not in device_mapping.keys() and vol_name in hash.keys() %} {% if device_mapping.update({ vol_name: hash[vol_name]} ) %}{%- endif %} {%- elif device_mapping[vol_name]["lvm_size"]|replace("%VG", "")|int > hash[vol_name]["lvm_size"]|replace("%VG", "")|int %} {% if device_mapping.update({ vol_name: device_mapping[vol_name]}) %}{%- endif %} {%- else %} {% if device_mapping.update({ vol_name: hash[vol_name]} ) %}{%- endif %} {%- endif %} {%- endfor -%} {%- endmacro -%} {%- for index in range(1, node_service_profiles | length) -%} {%-if update_bigger_hash(localstorage[node_service_profiles[index]]) -%}{%- endif %} {%- endfor -%} {%- else %} {%- set device_mapping = localstorage[node_service_profiles[0]] %} {%- endif %} {% set allocated_vg = device_mapping.values() | map(attribute="lvm_size") | map("replace", "%VG", "") | map("int") | sum %} {% set variable_found = device_mapping.values() | selectattr("lvm_size", "search", "variable") | list %} {% if variable_found %} {% set variable_size = (100-allocated_vg) | string + '%VG'%} {% set _ = variable_found[0].update({'lvm_size': variable_size}) %} {% endif %} { "device_mapping": [ {%- for vol_value in device_mapping.values() %} { {%- for vol_details_key,vol_details_value in vol_value.iteritems() %} "{{vol_details_key}}":"{{vol_details_value}}"{% if not loop.last %},{% endif %} {%- endfor -%} }{% if not loop.last %},{% endif %} {%- endfor -%} ] }