Pavel Loginov 2021-10-18 20:13:18 +06:00
parent 36c843bfbe
commit 99b0ab8e83
6 changed files with 50 additions and 19 deletions

View File

@ -805,6 +805,24 @@ def update_db_v_5_3_0(**kwargs):
print("An error occurred:", e)
def update_db_v_5_3_1(**kwargs):
cursor = conn.cursor()
sql = """
ALTER TABLE `servers` ADD COLUMN keepalived_active INTEGER NOT NULL DEFAULT 0;
"""
try:
cursor.execute(sql)
except Exception as e:
if kwargs.get('silent') != 1:
if e.args[0] == 'duplicate column name: keepalived_active' or str(e) == '(1060, "Duplicate column name \'keepalived_active\'")':
print('Updating... DB has been updated to version 5.3.1')
else:
print("An error occurred:", e)
else:
print("Updating... DB has been updated to version 5.3.1")
def update_ver():
query = Version.update(version='5.3.1.0')
try:
@ -839,6 +857,7 @@ def update_all():
update_db_v_5_2_5_3()
update_db_v_5_2_6()
update_db_v_5_3_0()
update_db_v_5_3_1()
update_ver()
@ -868,6 +887,7 @@ def update_all_silent():
update_db_v_5_2_5_3(silent=1)
update_db_v_5_2_6(silent=1)
update_db_v_5_3_0(silent=1)
update_db_v_5_3_1(silent=1)
update_ver()

View File

@ -61,6 +61,7 @@ class Server(BaseModel):
nginx_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
protected = IntegerField(constraints=[SQL('DEFAULT 0')])
nginx_metrics = IntegerField(constraints=[SQL('DEFAULT 0')])
keepalived_active = IntegerField(constraints=[SQL('DEFAULT 0')])
class Meta:
table_name = 'servers'

View File

@ -26,8 +26,6 @@ keep_alive, stderr = funct.subprocess_execute(cmd)
if service == 'nginx':
if funct.check_login(service=2):
title = 'Nginx servers overview'
servers = sql.get_dick_permit(virt=1, nginx=1)
service = 'nginx'
if serv:
if funct.check_is_server_in_group(serv):
servers = sql.select_servers(server=serv)
@ -35,12 +33,11 @@ if service == 'nginx':
server_id = sql.select_server_id_by_ip(serv)
service_settings = sql.select_docker_service_settings(server_id, service)
else:
servers = sql.get_dick_permit(virt=1, nginx=1)
service_settings = sql.select_docker_services_settings(service)
elif service == 'keepalived':
if funct.check_login(service=3):
title = 'Keepalived servers overview'
servers = sql.get_dick_permit(virt=1, keepalived=1)
service = 'keepalived'
if serv:
if funct.check_is_server_in_group(serv):
servers = sql.select_servers(server=serv)
@ -48,6 +45,7 @@ elif service == 'keepalived':
server_id = sql.select_server_id_by_ip(serv)
service_settings = sql.select_docker_service_settings(server_id, service)
else:
servers = sql.get_dick_permit(virt=1, keepalived=1)
service_settings = sql.select_docker_services_settings(service)
else:
if funct.check_login(service=1):
@ -120,11 +118,11 @@ for s in servers:
h = (out1,)
servers_with_status.append(h)
servers_with_status.append(h)
servers_with_status.append(s[17])
servers_with_status.append(s[22])
except:
servers_with_status.append(h)
servers_with_status.append(h)
servers_with_status.append(s[17])
servers_with_status.append(s[22])
else:
cmd = 'echo "show info" |nc %s %s -w 1 -v|grep -e "Ver\|Uptime:\|Process_num"' % (s[2], haproxy_sock_port)
out = funct.subprocess_execute(cmd)

View File

@ -2046,9 +2046,10 @@ if form.getvalue('updatehapwiserver') is not None:
name = form.getvalue('name')
alert = form.getvalue('alert_en')
metrics = form.getvalue('metrics')
service_name = form.getvalue('service_name')
sql.update_hapwi_server(hapwi_id, alert, metrics, active, service_name)
funct.logging('the server ' + name, ' has been updated ', haproxywi=1, login=1)
service = form.getvalue('service_name')
sql.update_hapwi_server(hapwi_id, alert, metrics, active, service)
server_ip = sql.select_server_ip_by_id(hapwi_id)
funct.logging(server_ip, 'the server ' + name, ' has been updated ', haproxywi=1, login=1, keep_history=1, service=service)
if form.getvalue('updateserver') is not None:
name = form.getvalue('updateserver')

View File

@ -261,6 +261,8 @@ def update_hapwi_server(server_id, alert, metrics, active, service_name):
update_hapwi = Server.update(nginx_alert=alert, metrics=metrics, nginx_active=active,
nginx_metrics=metrics).where(
Server.server_id == server_id)
elif service_name == 'keepalived':
update_hapwi = Server.update(keepalived_active=active).where(Server.server_id == server_id)
else:
update_hapwi = Server.update(alert=alert, metrics=metrics, active=active).where(
Server.server_id == server_id)
@ -1852,25 +1854,33 @@ def select_nginx_alert(**kwargs):
def select_keep_alive():
cursor = conn.cursor()
sql = """select ip from servers where active = 1 """
query = Server.select(Server.ip).where(Server.active == 1)
try:
cursor.execute(sql)
query_res = query.execute()
except Exception as e:
out_error(e)
else:
return cursor.fetchall()
return query_res
def select_nginx_keep_alive():
cursor = conn.cursor()
sql = """select ip from servers where nginx_active = 1 """
query = Server.select(Server.ip).where(Server.nginx_active == 1)
try:
cursor.execute(sql)
query_res = query.execute()
except Exception as e:
out_error(e)
else:
return cursor.fetchall()
return query_res
def select_keepalived_keep_alive():
query = Server.select(Server.ip).where(Server.keepalived_active == 1)
try:
query_res = query.execute()
except Exception as e:
out_error(e)
else:
return query_res
def select_keepalived(serv):

View File

@ -101,6 +101,7 @@
{% set additional_status_class = 'div-server-head-down' %}
{% endif %}
{% elif service == 'keepalived' %}
{% set is_auto_start_enabled = s.8.0.22 %}
{% set action_service = 'keepalived' %}
{% if s.5.0.1 == 'active' %}
{% set additional_status_class = 'div-server-head-up' %}
@ -128,7 +129,7 @@
{% else %}
{{s.1}}
{% endif %}
{% if s.6|int() >= 1 and service != 'keepalived' %}
{% if s.6|int() >= 1 %}
<span
{% if keep_alive|int() >= 1 %}
class="shield green" title="Autostart is enabled">
@ -224,13 +225,13 @@
{% else %}
{{ checkbox(id, title='Enable collecting metrics', value='1', desc='Metrics') }}
{% endif %}
{% endif %}
{% set id = 'active-' + s.8.0.0|string() %}
{% if is_auto_start_enabled == 1 %}
{{ checkbox(id, title='Auto Start is enabled', value='1', desc='Auto Start', checked='checked') }}
{% else %}
{{ checkbox(id, title='Enable Auto Start', value='1', desc='Auto Start') }}
{% endif %}
{% endif %}
</div>
<div class="server-act-links">
<a href="/app/config.py?service={{service}}&serv={{s.2}}&showConfig" class="ui-button ui-widget ui-corner-all" title="Open running config">Config</a>