From 99b0ab8e8375ae4f8be563e1ff09a35c2526be92 Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Mon, 18 Oct 2021 20:13:18 +0600 Subject: [PATCH] v5.3.1.0 Changelog: https://haproxy-wi.org/changelog.py#5_3_1 --- app/create_db.py | 20 ++++++++++++++++++++ app/db_model.py | 1 + app/hapservers.py | 10 ++++------ app/options.py | 7 ++++--- app/sql.py | 26 ++++++++++++++++++-------- app/templates/hapservers.html | 5 +++-- 6 files changed, 50 insertions(+), 19 deletions(-) diff --git a/app/create_db.py b/app/create_db.py index 5d984187..c2259296 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -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() diff --git a/app/db_model.py b/app/db_model.py index e3c662fd..771db028 100644 --- a/app/db_model.py +++ b/app/db_model.py @@ -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' diff --git a/app/hapservers.py b/app/hapservers.py index a5b5a08c..0f41c099 100644 --- a/app/hapservers.py +++ b/app/hapservers.py @@ -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) diff --git a/app/options.py b/app/options.py index e2882515..2f91f53c 100644 --- a/app/options.py +++ b/app/options.py @@ -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') diff --git a/app/sql.py b/app/sql.py index 3556d425..f4e57b26 100644 --- a/app/sql.py +++ b/app/sql.py @@ -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): diff --git a/app/templates/hapservers.html b/app/templates/hapservers.html index 3a27ec97..1819909b 100644 --- a/app/templates/hapservers.html +++ b/app/templates/hapservers.html @@ -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 %} = 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 %}