blob: 025c0ad257a41e342c12937582e2366540687540 [file] [log] [blame]
{% macro color(failing, total) %}
{% if failing == 0 %}
is-success
{% else %}
{% if (failing / total) <= 0.1 %}
is-warning
{% else %}
is-danger
{% endif %}
{% endif %}
{% endmacro %}
{% macro percentage(failing, total) %}
{{ ((total - failing) / total) | round }}
{% endmacro %}
{% macro statistic(resource_name, failing, total) %}
{% set success = total - failing %}
<div class="level-item has-text-centered">
<div>
<p class="heading">{{ resource_name | capitalize }}</p>
<p class="title">{{ success }}/{{ total }}</p>
<progress class="progress {{ color(failing, total) }}" value="{{ success }}" max="{{ total }}">{{ percentage(failing, total) }}</progress>
</div>
</div>
{% endmacro %}
{% macro pods_table(pods) %}
<div id="pods" class="table-container">
<table class="table is-fullwidth is-striped is-hoverable">
<thead>
<tr>
<th>Name</th>
<th>Ready</th>
<th>Status</th>
<th>Reason</th>
<th>Restarts</th>
</tr>
</thead>
<tbody>
{% for pod in pods %}
<tr>
<td><a href="./pod-{{ pod.name }}.html" title="{{ pod.name }}">{{ pod.k8s.metadata.name }}</a></td>
{% if pod.init_done %}
<td>{{ pod.running_containers }}/{{ (pod.containers | length) }}</td>
{% else %}
<td>Init:{{ pod.runned_init_containers }}/{{ (pod.init_containers | length) }}</td>
{% endif %}
<td>{{ pod.k8s.status.phase }}</td>
<td>{{ pod.k8s.status.reason }}</td>
{% if pod.init_done %}
<td>{{ pod.restart_count }}</td>
{% else %}
<td>{{ pod.init_restart_count }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endmacro %}
{% macro key_value_description_list(title, dict) %}
<dt><strong>{{ title | capitalize }}:</strong></dt>
<dd>
{% if dict %}
{% for key, value in dict.items() %}
{% if loop.first %}
<dl>
{% endif %}
<dt>{{ key }}:</dt>
<dd>{{ value }}</dd>
{% if loop.last %}
</dl>
{% endif %}
{% endfor %}
{% endif %}
</dd>
{% endmacro %}
{% macro description(k8s) %}
<div class="container">
<h1 class="title is-1">Description</h1>
<div class="content">
<dl>
{% if k8s.spec.type %}
<dt><strong>Type:</strong></dt>
<dd>{{ k8s.spec.type }}</dd>
{% if (k8s.spec.type | lower) == "clusterip" %}
<dt><strong>Headless:</strong></dt>
<dd>{% if (k8s.spec.cluster_ip | lower) == "none" %}Yes{% else %}No{% endif %}</dd>
{% endif %}
{% endif %}
{{ key_value_description_list('Labels', k8s.metadata.labels) | indent(width=6) }}
{{ key_value_description_list('Annotations', k8s.metadata.annotations) | indent(width=6) }}
{% if k8s.spec.selector %}
{% if k8s.spec.selector.match_labels %}
{{ key_value_description_list('Selector', k8s.spec.selector.match_labels) | indent(width=6) }}
{% else %}
{{ key_value_description_list('Selector', k8s.spec.selector) | indent(width=6) }}
{% endif %}
{% endif %}
{% if k8s.phase %}
<dt><strong>Status:</strong></dt>
<dd>{{ k8s.phase }}</dd>
{% endif %}
{% if k8s.metadata.owner_references %}
<dt><strong>Controlled By:</strong></dt>
<dd>{{ k8s.metadata.owner_references[0].kind }}/{{ k8s.metadata.owner_references[0].name }}</dd>
{% endif %}
</dl>
</div>
</div>
{% endmacro %}
{% macro pods_container(pods, parent, has_title=True) %}
<div class="container">
{% if has_title %}
<h1 class="title is-1">Pods</h1>
{% endif %}
{% if (pods | length) > 0 %}
{{ pods_table(pods) | indent(width=2) }}
{% else %}
<div class="notification is-warning">{{ parent }} has no pods!</div>
{% endif %}
</div>
{% endmacro %}
{% macro two_level_breadcrumb(title, name) %}
<section class="section">
<div class="container">
<nav class="breadcrumb" aria-label="breadcrumbs">
<ul>
<li><a href="./index.html">Summary</a></li>
<li class="is-active"><a href="#" aria-current="page">{{ title | capitalize }} {{ name }}</a></li>
</ul>
</nav>
</div>
</section>
{% endmacro %}
{% macro pod_parent_summary(title, name, failed_pods, pods) %}
{{ summary(title, name, [{'title': 'Pod', 'failing': failed_pods, 'total': (pods | length)}]) }}
{% endmacro %}
{% macro number_ok(number, none_value, total=None) %}
{% if number %}
{% if total and number < total %}
<span class="tag is-warning">{{ number }}</span>
{% else %}
{{ number }}
{% endif %}
{% else %}
<span class="tag is-warning">{{ none_value }}</span>
{% endif %}
{% endmacro %}
{% macro summary(title, name, statistics) %}
<section class="hero is-light">
<div class="hero-body">
<div class="container">
<h1 class="title is-1">
{{ title | capitalize }} {{ name }} Summary
</h1>
<nav class="level">
{% for stat in statistics %}
{% if stat.total > 0 %}
{{ statistic(stat.title, stat.failing, stat.total) | indent(width=8) }}
{% endif %}
{% endfor %}
</nav>
</div>
</div>
</section>
{% endmacro %}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tests results - {% block title %}{% endblock %}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.0/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
{% block more_head %}{% endblock %}
</head>
<body>
<nav class="navbar" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="https://www.onap.org">
<img src="https://www.onap.org/wp-content/uploads/sites/20/2017/02/logo_onap_2017.png" width="234" height="50">
</a>
<a role="button" class="navbar-burger burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item">
Summary
</a>
</div>
</div>
</nav>
{% block content %}{% endblock %}
<footer class="footer">
<div class="container">
<div class="columns">
<div class="column">
<p class="has-text-grey-light">
<a href="https://bulma.io/made-with-bulma/">
<img src="https://bulma.io/images/made-with-bulma.png" alt="Made with Bulma" width="128" height="24">
</a>
</div>
<div class="column">
<a class="has-text-grey" href="https://gitlab.com/Orange-OpenSource/lfn/tools/kubernetes-status" style="border-bottom: 1px solid currentColor;">
Improve this page on Gitlab
</a>
</p>
</div>
</div>
</div>
</footer>
</body>
</html>