horizon.verifications = { data_update_url: null, update_health_checks: function() { var url = this.data_update_url + "/verifications"; $.get(url).done(function(data) { horizon.verifications.update_health_checks_view(data.checks); horizon.verifications.schedule_next_update(data); }).fail(function() { horizon.alert("error", gettext("Verification is not available.")); }); }, update_health_checks_view: function(checks) { // Clear health checks $("#sahara_health_checks_body").find("tr").remove(); $(checks).each(function (i, check) { horizon.verifications.create_check_row(check); }); }, create_check_row: function(check) { var check_row_template = "" + "" + "%status%" + "%name%" + "%duration%" + "%description%" + ""; var status_template = "" + "%status_text%"; var status = status_template .replace(/%label_type%/g, check.label) .replace(/%status_text%/g, check.status); var row = check_row_template .replace(/%check_id%/g, check.id) .replace(/%name%/g, check.name) .replace(/%duration%/g, check.duration) .replace(/%status%/g, status) .replace(/%description%/g, check.description); $("#sahara_health_checks_body").append(row); }, schedule_next_update: function(data) { // 2-3 sec delay so that if there are multiple tabs polling the // backend the requests are spread in time var delay = 2000 + Math.floor((Math.random() * 1000) + 1); if (data.need_update) { setTimeout(function() { horizon.verifications.update_health_checks(); }, delay); } } };