<!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']['component'] }}</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">{{ dat['r'].version }}</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>