
When filtering the uncategorized page by a time window, completely hide jobs that have no uncategorized failures in said time window. Hide entries in the menu that have no hits in the window as well. This patch doesn't dynamically update any numbers to only show what is visible in the window. Also add debug info to web_server script. Change-Id: I2fd792a1a202a70a3dedd20316b3c4fdd8fcdc6e
120 lines
3.7 KiB
HTML
120 lines
3.7 KiB
HTML
{% extends "base.html" %}
|
|
{% block body %}
|
|
{{ super() }}
|
|
|
|
<style>
|
|
.menu {
|
|
float: right;
|
|
padding-top: 1em;
|
|
}
|
|
.jobs {
|
|
padding-top: 1em;
|
|
}
|
|
</style>
|
|
<script type="text/javascript">
|
|
function filter_log_age(ev, days) {
|
|
ev.preventDefault();
|
|
var generated = $('#generated-date').text();
|
|
var gen_date = Date.parse(generated);
|
|
|
|
$("div.job").each(function () {
|
|
$(this).show();
|
|
});
|
|
$( "li.log-link" ).each(function() {
|
|
if (! $( this ).hasClass("dated") ) {
|
|
var timestamp = $( this ).text().substr(0,16);
|
|
var item_date = Date.parse(timestamp);
|
|
var date_delta = (gen_date - item_date) / 86400000;
|
|
$( this ).addClass("dated");
|
|
$( this ).attr("age", date_delta);
|
|
}
|
|
if ($( this ).attr("age") > days ) {
|
|
$( this ).hide();
|
|
} else {
|
|
$( this ).show();
|
|
}
|
|
});
|
|
$("div.job").each(function () {
|
|
var visible = $('ul li:visible', $(this)).size()
|
|
if (visible == 0) $(this).hide();
|
|
else $(this).show();
|
|
});
|
|
$("#menu li").each(function () {
|
|
var h = $("a", this).attr('href').substring(1);
|
|
if ($('a[name="' + h + '"]').closest("div").is(":visible")){
|
|
$(this).show();
|
|
}else{
|
|
$(this).hide();
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
$(function() {
|
|
$("#24hours").click(function(e) {
|
|
filter_log_age(e, 1);
|
|
});
|
|
$("#2days").click(function(e) {
|
|
filter_log_age(e, 2);
|
|
});
|
|
$("#7days").click(function(e) {
|
|
filter_log_age(e, 7);
|
|
});
|
|
$("#10days").click(function(e) {
|
|
filter_log_age(e, 10);
|
|
});
|
|
});
|
|
</script>
|
|
<div class="container">
|
|
<ul class="nav nav-tabs">
|
|
<li><a href="../index.html">All Pipelines</a></li>
|
|
<li><a href="../gate.html">Gate Pipeline</a></li>
|
|
<li class="active"><a href="uncategorized.html">Uncategorized</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<div class="menu" id="menu">
|
|
<a name="top"></a>
|
|
{% for job in jobs %}
|
|
<li><a href="#{{job[0]}}">{{job[0]}} ({{job[1]}})</a></li>
|
|
{% endfor %}
|
|
</div>
|
|
<div class='crm114-verbiage'>
|
|
Failures on this page are collected from all gate failures that don't match current elastic-recheck bug fingerprints.<br>
|
|
The crm114 links are logstash queries showing log messages that have been flagged as potential errors.<br>
|
|
More information on the system can be found <a href="http://docs.openstack.org/infra/system-config/logstash.html#crm114">here</a>
|
|
</div>
|
|
<div class="jobs">
|
|
<h1>Unclassified failed jobs</h1>
|
|
Overall Categorization Rate: {{ rate['overall'] }}%
|
|
<p>
|
|
Total: {{ total }} - Found: {{ count }} = Unclassified: {{ uncounted }}
|
|
</p>
|
|
<p>
|
|
Generated at: <span id="generated-date">{{ generated_at }}</span>
|
|
(View: <a id="24hours" href="#">24 hours</a>,
|
|
<a id="2days" href="#">2 days</a>,
|
|
<a id="7days" href="#">7 days</a>,
|
|
<a id="10days" href="#">10 days</a>)
|
|
</p>
|
|
{% for job in jobs %}
|
|
<div class="job">
|
|
<a name="{{job[0]}}"></a>
|
|
<a href="#top"><i>back to top</i></a>
|
|
<h2>{{ job[0] }} : {{ job[1] }} Uncategorized Fails. {{rate[job[0]]}}% Classification Rate ({{total_job_failures[job[0]]}} Total Fails)</h2>
|
|
<ul>
|
|
{% for url in urls[job[0]] %}
|
|
{% if url['crm114'] %}
|
|
<li class="log-link">{{url['timestamp']}}: <a href="{{ url['log'] }}">{{ url['log'] }}</a> : <a href="{{ url['crm114'] }}">crm114</a></li>
|
|
{% else %}
|
|
<li class="log-link">{{url['timestamp']}}: <a href="{{ url['log'] }}">{{ url['log'] }}</a></li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
{% endfor %}
|
|
{% endblock %}
|
|
</div>
|