elastic-recheck/web/share/elastic-recheck.js
Joe Gordon 77470c4f6f Add graph for gate hit count
When looking at the gate failure rate it is easier to interpret it if
one knows how big the data set is.

Also change the color codes used to be brighter and human readable.
Color code names found here:
http://graphite.readthedocs.org/en/1.0/url-api.html

Change-Id: I7d304623b3c244876684ea2b0f822dee354b84c1
2013-12-16 11:04:59 -08:00

83 lines
2.4 KiB
JavaScript

// Copyright 2013 OpenStack Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations
// under the License.
function graphite_moving_avg(job, color) {
var time = '5hours';
var graph = "color(alias(movingAverage(asPercent(";
graph += "stats.zuul.pipeline.gate.job." + job + ".FAILURE,";
graph += "sum(stats.zuul.pipeline.gate.job." + job + ".{SUCCESS,FAILURE})";
graph += "),'" + time + "'), '" + job + "'),'" + color + "')";
return graph;
}
function graphite_hit_count(job, color) {
var time = '5hours';
var graph = "color(alias(hitcount(";
graph += "sum(stats.zuul.pipeline.gate.job." + job + ".{SUCCESS,FAILURE})";
graph += ",'" + time + "'), '" + job + "'),'" + color + "')";
return graph;
}
function update() {
$.getJSON('http://status.openstack.org/elastic-recheck/data/graph.json', function(data) {
var seen = [];
$.each(data, function(i, bug) {
var id = 'bug-'+bug['number'];
seen.push(id);
var div = $('#'+id);
if (!div.length) {
div = $('<div/>', {'id': id, 'class': 'bug-container'});
div.appendTo($('#main-container'));
$('<h2/>', {text: 'Bug ' + bug['number']}).appendTo(div);
$('<div/>', {'class': 'graph'}).appendTo(div);
$('<a/>', {
href: 'http://logstash.openstack.org/#'+bug['logstash_query'],
text: 'Logstash'
}).appendTo($('<span/>', {
'class': 'extlink'
}).appendTo(div));
$('<a/>', {
href: 'https://bugs.launchpad.net/bugs/'+bug['number'],
text: 'Launchpad'
}).appendTo($('<span/>', {
'class': 'extlink'
}).appendTo(div));
}
div = div.find(".graph");
if (bug['data'].length > 0) {
$.plot(div, bug['data'],
{xaxis: {
mode: "time"
}}
);
} else {
div.html("No matches");
}
});
$.each($('.bug-container'), function(i, container) {
if (seen.indexOf(container.id) == -1) {
container.remove();
}
});
});
}
$(function() {
update();
});