<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cloud Package versions check</title>
    {% include 'common_styles.j2' %}
    {% include 'common_scripts.j2' %}
    <style>        
        td.repo {width: 3em; text-align: center; font-size: 0.7em; color: #113b11; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;}
        td.component, td.app, td.package_name {
            font-size: 0.75em;
            text-align: center;
            color: #113b11;
            font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
        }
        
        td.repo {column-width: 50px;}
        td.component {column-width: 130px;}
        td.app {column-width: 80px;}
        td.package_name {column-width: 200px; padding-left: 10px; text-align: left;}
        td.node_name {column-width: 210px;}
        td.installed {column-width: 16%;}
        td.status_container {column-width: 200px;}
        td.candidate {column-width: 16%;}
        td.release {column-width: 13%;}

        .status_container {
            display: inline-block;
        }

        .status {
            display: block;
            float: left;
            width: 80px;
            padding: 1px;
            padding-left: 5px;
            padding-right: 5px;
            color: white;
            background-color: #113b11;
            text-align: center;
        }
        .action {
            display: block;
            float: left;
            width: 120px;
            padding: 1px;
            padding-left: 5px;
            padding-right: 5px;
            color: gray;
            background-color: #d4dad9;
            text-align: center;
        }

        .status_container .ok {
            color: white;
            background-color: #113b11;
        }
        .status_container .error {
            color: white;
            background-color: darkred;
        }
        .status_container .upgraded {
            color: azure;
            background-color: green;
        }
        .status_container .downgraded {
            color: white;
            background-color: darkolivegreen;
        }

        .status_container .needs_repo {
            color: black;
            background-color: #50aacc;
        }

        .status_container .needs_up {
            color: black;
            background-color: #aaccaa;
        }

        .status_container .needs_down {
            color: black;
            background-color: #ffcc48;
        }

        .status_container .possible {
            color: gray;
            background-color: #d4dad9;
        }

        .status_container .text {
            width: 500px;
            font-size: 1em;
            padding-left: 10px;
            line-height: 20px;
        }



        .version {text-align: left; padding: 2px}
        .v_epoch, .v_upstream, .v_debian, .colon, .dash {
            color: darkslategray;
            float: left;
            display: block;
        }

        .ok {color: darkslategray;}
        .error {color: white; background-color: darkred;}
        .upgraded {color: whitesmoke; background-color: darkslategray;}
        .downgraded {color: red;}

        .smallgreytext {float: right; font-size: 0.5em; color: gray;}

        /* Table specific */
        .nodes tr:nth-child(even) {
            background-color: #fff;
        }
        .nodes tr:nth-child(odd) {
            background-color: #d4dad9;
            
        }
    </style>
</head>
<body onload="init()">

<div class="header">
	<div class="label">OpenStack release:</div>
	<div class="text">{{ openstack_release }}</div>
	<div class="label">MCP Version:</div>
    <div class="text">{{ mcp_release }}</div>
    <div class="label date">generated on: {{ gen_date }}</div>
</div>

<div class="bar">
	<button class="bar-item" onclick="openBar(event, 'mirantis')">Mirantis</button>
	<button class="bar-item" onclick="openBar(event, 'system')">System</button>
    <button class="bar-item" onclick="openBar(event, 'other')">Other</button>
    <button class="bar-item" onclick="openBar(event, 'unlisted')">Unlisted</button>
    <button class="bar-item" onclick="openBar(event, 'legend')">Legend</button>
</div>

{% macro prettify_version(v) %}
    <div class="version">
        {% if v.epoch %}
        <div class="v_epoch {{ v.epoch_status | make_status_class }}">{{ v.epoch }}</div>
        <div class="colon">:</div>
        {% endif %}
        <div class="v_upstream {{ v.upstream_status | make_status_class }}">{{ v.upstream }}{{ v.upstream_rev }}</div>
        {% if v.debian %}
        <div class="dash">-</div>
        <div class="v_debian {{ v.debian_status | make_status_class }}">{{ v.debian }}{{ v.debian_rev }}</div>
        {% endif %}
        {{ caller() }}
    </div>
{% endmacro %}

{% macro render_package(pkg_name, dat, status_shown, action_shown, id_label) %}
        <tr onclick="toggleClassByID('{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}')" id="{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}_button">
            <td class="repo">{{ dat['desc']['repo'] }}</td>
            <td class="component">{{ dat['desc']['section'] }}</td>
            <td class="app">{{ dat['desc']['app'] }}</td>
            <td class="package_name">{{ pkg_name }}</td>
            <td class="status_container" colspan="3">
                <div class="status {{ status_shown | make_status_class }}">{{ status_shown | make_status_label }}</div>
                {% if action_shown | make_action_label %}
                    <div class="action {{ action_shown | make_action_class }}">{{ action_shown | make_action_label }}</div>
                {% endif %}
            </td>
        </tr>
        <tr class="collapsable" id="{{ id_label }}_{{ pkg_name }}_{{ status_shown }}_{{ action_shown }}"><td colspan="7">
        <table class="nodes"><tbody>
        {% for status in dat['results'].keys() | sort(reverse=true) %}
        {% for action in dat['results'][status].keys() | sort(reverse=true) %}
        {% set counter = 1 + loop.index0 %}
        {% for node in dat['results'][status][action].keys() | sort %}
        {% set n_counter = 1 + loop.index0 %}
        {% set nd = dat['results'][status][action][node] %}
        <tr>
            <td class="repo">{{ n_counter }}</td>
            <td class="node_name">{{ node }}</td>
            <td class="status_container">
                <div class="status {{ status | make_status_class }}">{{ status | make_status_label }}</div>
                {% if action | make_action_label %}
                    <div class="action {{ action | make_action_class }}">{{ action | make_action_label }}</div>
                {% endif %}
            </td>
            <td class="installed">
                <div class="tooltip">
                    {% call prettify_version(nd['i']) %}
                    <pre class="tooltiptext">{{ nd['raw'] | linebreaks }}</pre>
                    {% endcall %}
                </div>
            </td>
            <td class="candidate">{{ nd['c'].version }}</td>
            <td class="release">
                <div class="tooltip">
                    {{ dat['r'].version }}
                    <pre class="repoinfotext">{{ dat['repos'] | make_repo_info }}</pre>
                </div>
            </td>
        </tr>
        {% endfor %}
        {% endfor %}
        {% endfor %}
        </tbody></table>
        </td></tr>
    {{ caller() }}
{% endmacro %}

{% macro package_table(pkg_dict, id_label) %}
<div id="{{ id_label }}" class="barcontent">
    <h5>{{ caller() }}</h5>
    <table class="pkgversions">
            <tbody>
            <tr>
                <td class="table_header" width="50px">repo</td>
                <td class="table_header" width="130px">Component</td>
                <td class="table_header" width="80px">App</td>
                <td class="table_header" width="200px">Package name</td>
                <td class="table_header">Installed</td>
                <td class="table_header">Candidate</td>
                <td class="table_header">Release</td>
            </tr>
            <!-- Print errors -->
            <tr><td colspan="7">Errors ({{ errors[id_label] }})</td></tr>
            {% for pkg_name in pkg_dict | get_sorted_keys %}
            {% set dat = pkg_dict[pkg_name] %}
                {% if status_err in dat['results'] %}
                    {% set action_to_show = dat['results'][status_err].keys() | get_max %}
                    {% call render_package(pkg_name, dat, status_err, action_to_show, id_label) %}
                    {% endcall %}
                {% endif%}
            {% endfor %}
            {% if not errors[id_label] %}
            <tr><td class="note" colspan="7">no errors found </td></tr>
            {% endif %}

            <!-- Print downgrades -->
            <tr><td colspan="7">Downgrades ({{ downgrades[id_label] }})</td></tr>
            {% for pkg_name in pkg_dict | get_sorted_keys %}
            {% set dat = pkg_dict[pkg_name] %}
                {% if status_down in dat['results'] %}
                    {% set action_to_show = dat['results'][status_down].keys() | get_max %}
                    {% call render_package(pkg_name, dat, status_down, action_to_show, id_label) %}
                    {% endcall %}
                {% endif %}
            {% endfor %}
            {% if not downgrades[id_label] %}
            <tr><td class="note" colspan="7">no downgrades found</td></tr>
            {% endif %}

            <!-- Print all other -->
            <tr><td colspan="7">All others</td></tr>
            {% for pkg_name in pkg_dict | get_sorted_keys %}
            {% set dat = pkg_dict[pkg_name] %}
                {% set status_to_show = dat['results'].keys() | get_max %}
                {% set action_to_show = dat['results'][status_to_show].keys() | get_max %}
                {% if status_err != status_to_show and status_down !=  status_to_show %}
                    {% call render_package(pkg_name, dat, status_to_show, action_to_show, id_label) %}
                    {% endcall %}
                {% endif %}
            {% endfor %}
            </tbody>
        </table>
</div>
{%- endmacro %}

<!-- Mirantis packages which version is critical for functionality -->
{% call package_table(critical, "mirantis") %}
    Packages maintained and updated by Mirantis
{% endcall %}

<!-- System labeled packages-->
{% call package_table(system, "system") %}
    System packages which versions are critical to proper cloud function
{%- endcall %}

<!-- Other packages -->
{% call package_table(other, "other") %}
    Packages with no description or not critical
{%- endcall %}

{% call package_table(unlisted, "unlisted") %}
    Packages that are not listed in version map. I.e. unexpected on the environment
{%- endcall %}

<!-- Legend -->
<div id="legend" class="barcontent">
	<table width="100%"><tbody>
		<tr>
			<td width="50%"><h5>Version status desctiptions</h5></td>
			<td width="50%"><h5>Action descriptions</h5></td>
		</tr>

		<tr>
			<td width="50%">
				<div class="status_container">
					<div class="status {{ cs.ok | make_status_class }}">{{ cs.ok | make_status_label }}</div>
					<div class="text">Installed and Candidate epoch:upstream version mach</div>
				</div>
			</td>
			<td width="50%">
				<div class="status_container">
					<div class="action {{ ca.na | make_action_class }}">{{ ca.na | make_action_label }} (no action)</div>
					<div class="text">No action suggested</div>
				</div>
			</td>
		</tr>
		<tr>
			<td width="50%">
				<div class="status_container">
					<div class="status {{ cs.up | make_status_class }}">{{ cs.up | make_status_label }}</div>
					<div class="text">Installed version is newer that the one found in Repo (i.e. candidate) or Release notes recordset</div>
				</div>
			</td>
			<td width="50%">
				<div class="status_container">
					<div class="action {{ ca.up | make_action_class }}">{{ ca.up | make_action_label }}</div>
					<div class="text">There is an upgrade possible for the package. But it is not strictly required action</div>
				</div>
			</td>
		</tr>
		<tr>
			<td width="50%">
				<div class="status_container">
					<div class="status {{ cs.down | make_status_class }}">{{ cs.down | make_status_label }}</div>
					<div class="text">Installed version is older that the one found in Repo (i.e. candidate) or Release notes recordset</div>
				</div>
			</td>
			<td width="50%">
				<div class="status_container">
					<div class="action {{ ca.need_up | make_action_class }}">{{ ca.need_up | make_action_label }}</div>
					<div class="text">Package should be upgraded to match version either in repo or in Release notes</div>
				</div>
			</td>
		</tr>
		<tr>
			<td width="50%">
				<div class="status_container">
					<div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div>
					<div class="text">Installed version conflicts with a combination of Candidate and Release notes versions</div>
				</div>
			</td>
			<td width="50%">
				<div class="status_container">
					<div class="action {{ ca.need_down | make_action_class }}">{{ ca.need_down | make_action_label }}</div>
					<div class="text">Package should be downgraded to match version either in repo or in Release notes</div>
				</div>
			</td>
		</tr>
		<tr>
			<td width="50%">
			</td>
			<td width="50%">
				<div class="status_container">
					<div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
					<div class="text">Repo that is configured on the target node contains invalid version and should be updated</div>
				</div>
			</td>
		</tr>
	</tbody></table>
    <hr>
    <h5>Versions status and Action combinations</h5>
    <div class="status_container">
        <div class="status {{ cs.ok | make_status_class }}">{{ cs.ok | make_status_label }}</div>
        <div class="action {{ ca.na | make_action_class }}">{{ ca.na | make_action_label }} (no action)</div>
        <div class="text">All versions are inline with each other</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.up | make_status_class }}">{{ cs.up | make_status_label }}</div>
        <div class="action {{ ca.na | make_action_class }}">{{ ca.na | make_action_label }} (no action)</div>
        <div class="text">Installed version is newer that Cadidate, Release version - unknown or not tracked</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.ok | make_status_class }}">{{ cs.ok | make_status_label }}</div>
        <div class="action {{ ca.up | make_action_class }}">{{ ca.up | make_action_label }}</div>
        <div class="text">Installed version is equal to Release, but there is newer in the repo</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.up | make_status_class }}">{{ cs.up | make_status_label }}</div>
        <div class="action {{ ca.up | make_action_class }}">{{ ca.up | make_action_label }}</div>
        <div class="text">Installed version is newer than Release, and there is even newer in the repo</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div>
        <div class="action {{ ca.need_up | make_action_class }}">{{ ca.need_up | make_action_label }}</div>
        <div class="text">Installed version is older than Candidate and Release versions and must be upgraded</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div>
        <div class="action {{ ca.need_down | make_action_class }}">{{ ca.need_down | make_action_label }}</div>
        <div class="text">Unknown version installed, Release and Candidate versions are older</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.err | make_status_class }}">{{ cs.err | make_status_label }}</div>
        <div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
        <div class="text">Installed and Candidate versions is older than release and repo must be updated</div>
    </div>

    <div class="status_container">
        <div class="status {{ cs.up | make_status_class }}">{{ cs.up | make_status_label }}</div>
        <div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
        <div class="text">Candidate version in repo is older vs Release and both older vs Installed</div>
    </div>
    <div class="status_container">
        <div class="status {{ cs.ok | make_status_class }}">{{ cs.ok | make_status_label }}</div>
        <div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
        <div class="text">Candidate version in Repo is older vs release, but release version installed</div>
    </div>
    
    <div class="status_container">
        <div class="status {{ cs.down | make_status_class }}">{{ cs.down | make_status_label }}</div>
        <div class="action {{ ca.repo | make_action_class }}">{{ ca.repo | make_action_label }}</div>
        <div class="text">Both Candidate in repo and Installed older vs release</div>
    </div>
    <div class="status_container">

        <div class="text"></div>
    </div>

</div>
</body>
</html>