mirror of https://github.com/Aidaho12/haproxy-wi
v8.0.1: Handle missing services and improve error handling
Enhanced error handling for missing NGINX and Keepalived services. Updated JavaScript to handle 404 errors and provide clearer messages in UI if services are not installed.pull/399/head
parent
1f9942aa7d
commit
8ef721d72c
|
@ -708,10 +708,13 @@ function get_keepalived_ver(div_id, server_ip) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: api_prefix + "/service/keepalived/" + server_ip + "/status",
|
url: api_prefix + "/service/keepalived/" + server_ip + "/status",
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
success: function (data) {
|
statusCode: {
|
||||||
if (data.status === 'failed') {
|
404: function (xhr) {
|
||||||
div_id.text('Keepalived has not installed');
|
div_id.text('Keepalived has not installed');
|
||||||
} else if (!data.Version) {
|
}
|
||||||
|
},
|
||||||
|
success: function (data) {
|
||||||
|
if (!data.Version) {
|
||||||
div_id.text('Keepalived has not installed');
|
div_id.text('Keepalived has not installed');
|
||||||
} else {
|
} else {
|
||||||
div_id.text(data.Version);
|
div_id.text(data.Version);
|
||||||
|
|
|
@ -254,7 +254,7 @@ function showServiceVersion(service) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (data.status === 'failed') {
|
if (data.status === 'failed' || !data.Version) {
|
||||||
ver_div.text(service + ' has not installed');
|
ver_div.text(service + ' has not installed');
|
||||||
install_div.text('Install');
|
install_div.text('Install');
|
||||||
install_div.attr('title', 'Install');
|
install_div.attr('title', 'Install');
|
||||||
|
|
|
@ -132,7 +132,7 @@ $.ajaxSetup({
|
||||||
headers: {"X-CSRF-TOKEN": csrf_token},
|
headers: {"X-CSRF-TOKEN": csrf_token},
|
||||||
});
|
});
|
||||||
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
|
$(document).ajaxError(function myErrorHandler(event, xhr, ajaxOptions, thrownError) {
|
||||||
if (xhr.status != 401) {
|
if (xhr.status != 401 && xhr.status != 404) {
|
||||||
toastr.error(xhr.responseJSON.error);
|
toastr.error(xhr.responseJSON.error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -123,8 +123,11 @@ class ServiceView(MethodView):
|
||||||
out = server_mod.ssh_command(server.ip, cmd)
|
out = server_mod.ssh_command(server.ip, cmd)
|
||||||
out = out.replace('\n', '')
|
out = out.replace('\n', '')
|
||||||
out1 = out.split('\r')
|
out1 = out.split('\r')
|
||||||
out1[0] = out1[0].split('/')[1]
|
try:
|
||||||
out1[1] = out1[1].split(';')[1]
|
out1[0] = out1[0].split('/')[1]
|
||||||
|
out1[1] = out1[1].split(';')[1]
|
||||||
|
except IndexError:
|
||||||
|
return ErrorResponse(error='NGINX service not found').model_dump(mode='json'), 404
|
||||||
try:
|
try:
|
||||||
data = {
|
data = {
|
||||||
"Version": out1[0],
|
"Version": out1[0],
|
||||||
|
@ -164,11 +167,21 @@ class ServiceView(MethodView):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
data = ErrorResponse(error=str(e)).model_dump(mode='json')
|
data = ErrorResponse(error=str(e)).model_dump(mode='json')
|
||||||
elif service == 'keepalived':
|
elif service == 'keepalived':
|
||||||
|
try:
|
||||||
|
os_info = server_sql.select_os_info(server_id)
|
||||||
|
except RoxywiResourceNotFound:
|
||||||
|
raise RoxywiResourceNotFound('Cannot find system information')
|
||||||
|
if "CentOS" in os_info or "Redhat" in os_info:
|
||||||
|
kp_proc_name = 'keepalived -D'
|
||||||
|
else:
|
||||||
|
kp_proc_name = 'keepalived --dont-fork'
|
||||||
cmd = ("sudo /usr/sbin/keepalived -v 2>&1|head -1|awk '{print $2}' && sudo systemctl status keepalived |grep -e 'Active'"
|
cmd = ("sudo /usr/sbin/keepalived -v 2>&1|head -1|awk '{print $2}' && sudo systemctl status keepalived |grep -e 'Active'"
|
||||||
"|awk '{print $2, $9$10$11$12$13}' && ps ax |grep 'keepalived -D'|grep -v grep |wc -l")
|
f"|awk '{{print $2, $9$10$11$12$13}}' && ps ax |grep '{kp_proc_name}'|grep -v grep |wc -l")
|
||||||
try:
|
try:
|
||||||
out = server_mod.ssh_command(server.ip, cmd)
|
out = server_mod.ssh_command(server.ip, cmd)
|
||||||
out1 = out.split()
|
out1 = out.split()
|
||||||
|
if out1[0].split('\r')[0] == '/usr/sbin/keepalived:':
|
||||||
|
return ErrorResponse(error='Keepalived service not found').model_dump(mode='json'), 404
|
||||||
data = {"Version": out1[0].split('\r')[0], "Uptime": out1[2], "Process": out1[3], 'Status': self._service_status(out1[3])}
|
data = {"Version": out1[0].split('\r')[0], "Uptime": out1[2], "Process": out1[3], 'Status': self._service_status(out1[3])}
|
||||||
except IndexError:
|
except IndexError:
|
||||||
return ErrorResponse(error='Keepalived service not found').model_dump(mode='json'), 404
|
return ErrorResponse(error='Keepalived service not found').model_dump(mode='json'), 404
|
||||||
|
|
Loading…
Reference in New Issue