From 763626332b87a7ae85b59af53a8841ff247589c9 Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Tue, 23 Feb 2021 10:50:23 +0600 Subject: [PATCH] 5.0.0.0 Changelog: https://haproxy-wi.org/changelog.py#5_0_0 --- app/funct.py | 27 ++++++ app/options.py | 89 ++++++++----------- app/scripts/terraform/versions.tf | 8 ++ .../provisioning/creating_dialogs.html | 8 +- inc/provisioning.css | 47 +++++++--- inc/provisioning.js | 4 +- 6 files changed, 115 insertions(+), 68 deletions(-) create mode 100644 app/scripts/terraform/versions.tf diff --git a/app/funct.py b/app/funct.py index eed0504f..840b1d7a 100644 --- a/app/funct.py +++ b/app/funct.py @@ -1206,3 +1206,30 @@ def check_is_server_in_group(serv): def check_service(serv, service_name): commands = ["systemctl status "+service_name+" |grep Active |awk '{print $1}'"] return ssh_command(serv, commands) + + +def get_services_status(): + services = [] + services_name = {'checker_haproxy': 'Checker backends master service', + 'keep_alive': 'Auto start service', + 'metrics_haproxy': 'Metrics master service', + 'prometheus': 'Prometheus service', + 'grafana-server': 'Grafana service', + 'smon': 'Simple monitoring network ports', + 'fail2ban': 'Fail2ban service'} + for s, v in services_name.items(): + cmd = "systemctl status %s |grep Act |awk '{print $2}'" % s + status, stderr = subprocess_execute(cmd) + if s != 'keep_alive': + service_name = s.split('_')[0] + else: + service_name = s + cmd = "rpm --query haproxy-wi-" + service_name + "-* |awk -F\"" + service_name + "\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'" + service_ver, stderr = subprocess_execute(cmd) + + try: + services.append([s, status, v, service_ver[0]]) + except Exception: + services.append([s, status, v, '']) + + return services diff --git a/app/options.py b/app/options.py index 6dae154f..60f4af91 100644 --- a/app/options.py +++ b/app/options.py @@ -2351,7 +2351,7 @@ if form.getvalue('providerdel'): if form.getvalue('awsinit') or form.getvalue('doinit'): funct.check_user_group() - cmd = 'cd scripts/terraform/ && sudo terraform init -upgrade' + cmd = 'cd scripts/terraform/ && sudo terraform init -upgrade -no-color' output, stderr = funct.subprocess_execute(cmd) if stderr != '': print('error: '+stderr) @@ -2773,70 +2773,53 @@ if form.getvalue('edit_aws_provider'): print('ok') funct.logging('localhost', 'Provider has been renamed. New name is ' + new_name, provisioning=1) -if form.getvalue('loadservices') or form.getvalue('loadupdatehapwi') or form.getvalue('loadchecker'): +if form.getvalue('loadservices'): from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates')) - versions = '' - checker_ver = '' - smon_ver = '' - metrics_ver = '' - keep_ver = '' - telegrams = '' - groups = '' - page = '' + template = env.get_template('ajax/load_services.html') + services = funct.get_services_status() - if form.getvalue('loadservices'): - template = env.get_template('ajax/load_services.html') - elif form.getvalue('loadupdatehapwi'): - versions = funct.versions() - checker_ver = funct.check_new_version(service='checker') - smon_ver = funct.check_new_version(service='smon') - metrics_ver = funct.check_new_version(service='metrics') - keep_ver = funct.check_new_version(service='keep') - template = env.get_template('ajax/load_updatehapwi.html') - elif form.getvalue('loadchecker'): - groups = sql.select_groups() - page = form.getvalue('page') - if page == 'servers.py': - user_group = funct.get_user_group(id=1) - telegrams = sql.get_user_telegram_by_group(user_group) - else: - telegrams = sql.select_telegram() + template = template.render(services=services) + print(template) - template = env.get_template('ajax/load_telegram.html') +if form.getvalue('loadchecker'): + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates')) + template = env.get_template('ajax/load_telegram.html') + services = funct.get_services_status() + groups = sql.select_groups() + page = form.getvalue('page') + if page == 'servers.py': + user_group = funct.get_user_group(id=1) + telegrams = sql.get_user_telegram_by_group(user_group) + else: + telegrams = sql.select_telegram() - services = [] - services_name = {'checker_haproxy': 'Checker backends master service', - 'keep_alive': 'Auto start service', - 'metrics_haproxy': 'Metrics master service', - 'prometheus': 'Prometheus service', - 'grafana-server': 'Grafana service', - 'smon': 'Simple monitoring network ports', - 'fail2ban': 'Fail2ban service'} - for s, v in services_name.items(): - cmd = "systemctl status %s |grep Act |awk '{print $2}'" % s - status, stderr = funct.subprocess_execute(cmd) - if s != 'keep_alive': - service_name = s.split('_')[0] - else: - service_name = s - cmd = "rpm --query haproxy-wi-" + service_name + "-* |awk -F\"" + service_name + "\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'" - service_ver, stderr = funct.subprocess_execute(cmd) + template = template.render(services=services, + telegrams=telegrams, + groups=groups, + page=page) + print(template) - try: - services.append([s, status, v, service_ver[0]]) - except Exception: - services.append([s, status, v, '']) +if form.getvalue('loadupdatehapwi'): + from jinja2 import Environment, FileSystemLoader + env = Environment(loader=FileSystemLoader('templates')) + template = env.get_template('ajax/load_updatehapwi.html') + + versions = funct.versions() + checker_ver = funct.check_new_version(service='checker') + smon_ver = funct.check_new_version(service='smon') + metrics_ver = funct.check_new_version(service='metrics') + keep_ver = funct.check_new_version(service='keep') + + services = funct.get_services_status() template = template.render(services=services, versions=versions, checker_ver=checker_ver, smon_ver=smon_ver, metrics_ver=metrics_ver, - keep_ver=keep_ver, - telegrams=telegrams, - groups=groups, - page=page) + keep_ver=keep_ver) print(template) if form.getvalue('loadopenvpn'): diff --git a/app/scripts/terraform/versions.tf b/app/scripts/terraform/versions.tf new file mode 100644 index 00000000..aa661d12 --- /dev/null +++ b/app/scripts/terraform/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "3.28.0" + } + } +} diff --git a/app/templates/include/provisioning/creating_dialogs.html b/app/templates/include/provisioning/creating_dialogs.html index 913825a5..46003029 100644 --- a/app/templates/include/provisioning/creating_dialogs.html +++ b/app/templates/include/provisioning/creating_dialogs.html @@ -315,7 +315,9 @@
- +
+
+
\ No newline at end of file diff --git a/inc/provisioning.css b/inc/provisioning.css index 31fd062c..5552feee 100644 --- a/inc/provisioning.css +++ b/inc/provisioning.css @@ -26,20 +26,45 @@ width: 100%; height: 10px; } -progress { - border-radius: 5px; +.progress-bar-striped { + overflow: hidden; + height: 10px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } -progress::-webkit-progress-bar { - background-color: #ddd; - border-radius: 5px; -} -progress::-webkit-progress-value { +.progress-bar-striped > div { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 3s ease; + -moz-transition: width 3s ease; + -o-transition: width 3s ease; + transition: width 3s ease; + animation: progress-bar-stripes 2s linear infinite; background-color: #5d9ceb; - border-radius: 5px; } -progress::-moz-progress-bar { - background-color: #5d9ceb; - border-radius: 5px; +.progress-bar-striped p{ + margin: 0; +} +@keyframes progress-bar-stripes { + 0% { + background-position: 40px 0; + } + 100% { + background-position: 0 0; + } } .alert-danger { margin-bottom: 10px; diff --git a/inc/provisioning.js b/inc/provisioning.js index e89acefc..210314b5 100644 --- a/inc/provisioning.js +++ b/inc/provisioning.js @@ -773,7 +773,7 @@ function showProvisioningError(data, step_id, prev_step_id, wait_mess, error_id, $(error_id).show(); $(prev_step_id).removeClass('proccessing'); $(step_id).addClass('processing_error'); - $(progress_id).val('0'); + $(progress_id).css('width', '0%'); if(cloud == 'aws') { add_button_after_server_created(); } else if (cloud == 'do') { @@ -793,7 +793,7 @@ function showProvisioningProccess(prev_step_id, step_id, next_step_id, progress_ $(step_id).addClass('proccessing_done'); $(step_id).removeClass('proccessing'); $(next_step_id).addClass('proccessing'); - $(progress_id).val(progress_value); + $(progress_id).css('width', progress_value+'%'); $.getScript("/inc/fontawesome.min.js"); } function cleanProvisioningProccess(div_id, success_div) {