';
var alert_div = '
';
var alert_div_webtail = '
';
var kubelinter = '';
var showPodName = true
var latestPodNameY = '';
var namespacesJumpFlag = false;
var namespacesJumpStatus = 'Disabled';
var latest_preset_name = "";
var latest_preset_lang = "";
var codename = getCodeName();
const codename_regex = /chaos-codename:\ [a-zA-Z_]*/g;
const chaos_job_regex = /chaos_jobs_pod_phase.*/g;
var codename_configured = false;
var chaos_jobs_status = new Map();
var current_color_mode = "light";
var chaos_logs_pos = 0;
var chaos_report_switch = false;
var chaos_report_http_elapsed_time_array = [];
var chaosReportprojectName = "";
var chaos_report_start_date = "";
var chart_deleted_pods_total = 0;
var chart_chaos_jobs_total = 0;
var chart_current_chaos_job_pod = 0;
var chart_pods_not_running_on = 0;
var chart_fewer_replicas_seconds = 0;
var chart_latest_fewer_replicas_seconds = 0;
var chart_status_code_dict = {
"200": 1,
"500": 1,
"502": 1,
"503": 1,
"504": 1,
"400": 1,
"401": 1,
"403": 1,
"404": 1,
"Connection Error": 1,
"Other": 1
};
function getCodeName() {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
codename = this.responseText.trim();
if (codename == "") {
$('#alert_placeholder').replaceWith(alert_div + 'Error getting codename from backend.
');
codename = "error_fix_getcodename_from_backend";
}
}
};;
oReq.open("GET", k8s_url + "/codename");
oReq.send();
}
function setCodeNameToTextInput(elementId) {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
codename = this.responseText.trim();
$("#" + elementId).val(codename);
$("#" + elementId).text(codename);
if (codename == "") {
$('#alert_placeholder').replaceWith(alert_div + 'Error getting codename from backend.
');
codename = "error_fix_getcodename_from_backend";
}
}
};;
oReq.open("GET", k8s_url + "/codename");
oReq.send();
}
function getMetrics() {
var oReq = new XMLHttpRequest();
oReq.onload = function () {
var lines = this.responseText.split('\n');
for (var i = 0;i < lines.length;i++){
metric = lines[i].split(' ');
if (metric[0] == "chaos_node_jobs_total") {
$('#chaos_jobs_total').text(metric[1]);
chart_chaos_jobs_total = Number(metric[1]);
}
else if (metric[0] == "deleted_pods_total") {
chart_deleted_pods_total = Number(metric[1]);
$('#deleted_pods_total').text(metric[1]);
}
else if (metric[0] == "fewer_replicas_seconds") {
chart_fewer_replicas_seconds = Number(metric[1]);
$('#fewer_replicas_seconds').text(metric[1]);
}
else if (metric[0] == "latest_fewer_replicas_seconds") {
chart_latest_fewer_replicas_seconds = Number(metric[1]);
$('#latest_fewer_replicas_seconds').text(metric[1]);
}
else if (metric[0] == "pods_not_running_on_selected_ns") {
chart_pods_not_running_on = Number(metric[1]);
$('#pods_not_running_on').text(metric[1]);
}
else if (metric[0] == "pods_match_regex:" + random_code) {
$('#pods_match_regex').text(metric[1]);
}
else if (metric[0].match(chaos_job_regex)) {
metrics_split = metric[0].split(":");
chaos_jobs_status.set(metrics_split[1] + ":" + metrics_split[2] + ":" + metrics_split[3], metric[1]);
}
else if (metric[0] == "current_chaos_job_pod") {
chart_current_chaos_job_pod = Number(metric[1]);
$('#current_chaos_job_pod').text(metric[1]);
}
}
};;
oReq.open("GET", k8s_url + "/metrics");
oReq.send();
}
function getChaosJobsPodsPhase() {
var oReq = new XMLHttpRequest();
oReq.onload = function () {
var lines = this.responseText.split('\n');
for (var i = 0;i < lines.length;i++){
metric = lines[i].split(' ');
if (metric[0].match(chaos_job_regex)) {
metrics_split = metric[0].split(":");
chaos_jobs_status.set(metrics_split[1] + ":" + metrics_split[2] + ":" + metrics_split[3], metric[1]);
}
}
};;
oReq.open("GET", k8s_url + "/chaos_jobs_pod_phase");
oReq.send();
}
function scroll_backwards() {
if (chaos_logs_pos > 0){
chaos_logs_pos = chaos_logs_pos -1;
$('#current_log_pos').text(chaos_logs_pos);
getChaosJobsLogs();
}
}
function getTotalLogsPos() {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
if (log_tail_switch) {
if (this.responseText.trim() == "null") {
$('#total_logs_pos').text("0");
} else {
$('#total_logs_pos').text(this.responseText);
}
}
}
};;
oReq.open("GET", k8s_url + "/chaos/logs/count?logid=" + random_code);
oReq.send();
}
function scroll_forward() {
chaos_logs_pos = chaos_logs_pos + 1;
$('#current_log_pos').text(chaos_logs_pos);
getChaosJobsLogs();
}
function getChaosJobsLogs() {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
if (log_tail_switch) {
if (this.responseText.trim() == "null") {
document.getElementById("logTailDiv").innerHTML = "Logs has been cleaned...";
} else {
document.getElementById("logTailDiv").innerHTML = "";
document.getElementById("logTailDiv").innerHTML = this.responseText;
}
}
}
};;
oReq.open("GET", k8s_url + "/chaos/logs?logid=" + random_code + "&pos=" + chaos_logs_pos);
oReq.send();
keepAliveJobsLogs();
}
function keepAliveJobsLogs() {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
if (!this.responseText.toLowerCase().match(/.*null.*/)) {
$('#alert_placeholder3').replaceWith(log_tail_alert_no_pixel + this.responseText.replace("nil", "") + '
');
}
}
};;
oReq.open("GET", k8s_url + "/chaos/logs/keepalive?logid=" + random_code + "&pos=" + chaos_logs_pos);
oReq.send();
}
function runKubeLinter() {
var oReq = new XMLHttpRequest();
oReq.onload = function () {
kubelinter = this.responseText;
$('#alert_placeholder').replaceWith(alert_div + "KubeLinter executed correctly on namespace " + namespace + ". Changing Regex and activating logs tail.