use optimized url for zuul status
This returns the optimized url for zuul, which should dramatically drop the amount of data transfered out of zuul. It also uses the ajax method which lets us ensure that we don't schedule another pass through the loop until we completed the current request. Add support for jquery visibility optimization Change-Id: I0e50f07fd9165e7a45c2712f6b1c4b3601759cba
This commit is contained in:
parent
0c18496c2f
commit
c4b4073367
@ -28,7 +28,7 @@ var pipelineNameRegex = /Build \w+ \((\w+) pipeline\)/;
|
||||
// The url to full status information on running jobs
|
||||
var zuulStatusURL = 'http://status.openstack.org/zuul';
|
||||
// The json URL to check for running jobs
|
||||
var zuulStatusJSON = 'https://zuul.openstack.org/status.json';
|
||||
var zuulStatusJSON = 'https://zuul.openstack.org/status/change/';
|
||||
|
||||
// This is a variable to determine if we're in debugging mode, which
|
||||
// lets you globally set it to see what's going on in the flow.
|
||||
@ -449,18 +449,6 @@ var ci_zuul_process_changes = function(data, change_psnum) {
|
||||
}
|
||||
};
|
||||
|
||||
var ci_zuul_inner_loop = function(change_psnum) {
|
||||
var current = ci_current_change();
|
||||
if (current && change_psnum.indexOf(current) != 0) {
|
||||
// window url is dead
|
||||
return;
|
||||
}
|
||||
$.getJSON(zuulStatusJSON, function(data) {
|
||||
ci_zuul_process_changes(data, change_psnum);
|
||||
});
|
||||
setTimeout(function() {ci_zuul_inner_loop(change_psnum);}, 10000);
|
||||
};
|
||||
|
||||
var ci_zuul_for_change = function(comments) {
|
||||
if (!comments) {
|
||||
comments = ci_parse_comments();
|
||||
@ -468,9 +456,57 @@ var ci_zuul_for_change = function(comments) {
|
||||
var change = ci_current_change();
|
||||
var psnum = ci_latest_patchset(comments);
|
||||
var change_psnum = change + "," + psnum;
|
||||
ci_zuul_inner_loop(change_psnum);
|
||||
|
||||
// do the loop recursively in ajax
|
||||
(function poll() {
|
||||
$.ajax({
|
||||
url: zuulStatusJSON + change_psnum,
|
||||
type: "GET",
|
||||
success: function(data) {
|
||||
dbg("Found zuul data for " + change_psnum, data);
|
||||
ci_zuul_process_changes(data, change_psnum);
|
||||
},
|
||||
dataType: "json",
|
||||
complete: setTimeout(function() {
|
||||
// once we are done with this cycle in the loop we
|
||||
// schedule ourselves again in the future with
|
||||
// setTimeout. However, by the time the function
|
||||
// actually gets called, other things might have
|
||||
// happened, and we may want to just dump the data
|
||||
// instead.
|
||||
//
|
||||
// the UI might have gone hidden (user was bored,
|
||||
// switched to another tab / window).
|
||||
//
|
||||
// the user may have navigated to another review url,
|
||||
// so the data returned is not relevant.
|
||||
//
|
||||
// both cases are recoverable when the user navigates
|
||||
// around, because a new "thread" gets started on
|
||||
// ci_page_load.
|
||||
//
|
||||
// BUG(sdague): there is the possibility that the user
|
||||
// navigates away from a page and back fast enough
|
||||
// that the first "thread" is not dead, and a second
|
||||
// one is started. greghaynes totally said he'd come
|
||||
// up with a way to fix that.
|
||||
if (window.zuul_enable_status_updates == false) {
|
||||
return;
|
||||
}
|
||||
var current = ci_current_change();
|
||||
if (current && change_psnum.indexOf(current) != 0) {
|
||||
// window url is dead, so don't schedule any more future
|
||||
// updates for this url.
|
||||
return;
|
||||
}
|
||||
poll();
|
||||
}, 15000),
|
||||
timeout: 5000
|
||||
});
|
||||
})();
|
||||
};
|
||||
|
||||
|
||||
window.onload = function() {
|
||||
var input = document.createElement("input");
|
||||
input.id = "toggleci";
|
||||
@ -501,4 +537,14 @@ window.onload = function() {
|
||||
subtree: true,
|
||||
attributes: true
|
||||
});
|
||||
|
||||
$(document).on({
|
||||
'show.visibility': function() {
|
||||
window.zuul_enable_status_updates = true;
|
||||
ci_page_loaded();
|
||||
},
|
||||
'hide.visibility': function() {
|
||||
window.zuul_enable_status_updates = false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user