{% macro package_list(pkg_dict, id_label) %}
    {% for pkg_name in pkg_dict | get_sorted_keys %}
        {% set p = pkg_dict[pkg_name] %}
        {% for status in p['results'].keys() | sort(reverse=true) %}
        {% for action in p['results'][status].keys() | sort(reverse=true) %}
            {% for node in p['results'][status][action].keys() | sort %}
                {% set nd = p['results'][status][action][node] %}
{{ id_label }},{{ pkg_name }},{{ node }},{{ status | pkg_status_label }},{{ action | pkg_action_label }},{{ nd['i'].version }},{{ nd['c'].version }},{{ p['r'].version }}
            {% endfor %}
        {% endfor %}
        {% endfor %}
    {% endfor %}
    {{ caller() }}
{% endmacro %}
type,package_name,node,status,action,installed,candidate,release
{% call package_list(critical, "mirantis") %}
{% endcall %}
{% call package_list(system, "system") %}
{%- endcall %}
{% call package_list(other, "other") %}
{%- endcall %}
{% call package_list(unlisted, "unlisted") %}
{%- endcall %}
