';
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,
"405": 1,
"Connection Error": 1,
"Other": 1
};
function checkHTTP(url, elementId) {
var oReq = new XMLHttpRequest();
oReq.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE) {
$("#" + elementId).val(this.status);
}
};;
oReq.open("GET", url);
oReq.send();
}
function exportSettings() {
// Crea un oggetto con i dati delle impostazioni
const settings = {
sys_cluster_endpoint: document.getElementById('sys_cluster_endpoint').value,
sys_insecure_endpoint_flag: document.getElementById('sys_insecure_endpoint_flag').value,
sys_k8s_proxied_api_http_status_code: document.getElementById('sys_k8s_proxied_api_http_status_code').value,
sys_openresty_env_vars: document.getElementById('sys_openresty_env_vars').value
};
// Converti l'oggetto in una stringa JSON
const jsonSettings = JSON.stringify(settings, null, 2);
// Crea un blob e un URL per il download
const blob = new Blob([jsonSettings], { type: 'application/json' });
const url = URL.createObjectURL(blob);
// Crea un link temporaneo per il download
const a = document.createElement('a');
a.href = url;
a.download = 'settings.json';
document.body.appendChild(a);
a.click();
// Pulisci
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
function setSystemSettings() {
var sys_element = document.getElementById('sys_cluster_endpoint');
sys_element.value = k8s_url;
sys_element = document.getElementById('sys_insecure_endpoint_flag');
sys_element.value = clu_insecure;
sys_element = document.getElementById('sys_openresty_env_vars');
sys_element.value = selected_env_vars;
checkHTTP(k8s_url, 'sys_k8s_proxied_api_http_status_code')
}
function currentChaosContainerJsonTextAreaVal() {
return editor_chaos_container_definition.getValue();
}
function getCodeName() {
const prefixes = ['astro', 'cosmo', 'space', 'star', 'nova', 'nebula', 'galaxy', 'super', 'hyper', 'quantum'];
const suffixes = ['nova', 'tron', 'wave', 'core', 'pulse', 'jump', 'drive', 'ship', 'gate', 'hole'];
const prefix = prefixes[Math.floor(Math.random() * prefixes.length)];
const suffix = suffixes[Math.floor(Math.random() * suffixes.length)];
const
codename = prefix + suffix;
return codename;
}
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.