Pavel Loginov 2021-02-23 10:50:23 +06:00
parent 322dd978bb
commit 763626332b
6 changed files with 115 additions and 68 deletions

View File

@ -1206,3 +1206,30 @@ def check_is_server_in_group(serv):
def check_service(serv, service_name): def check_service(serv, service_name):
commands = ["systemctl status "+service_name+" |grep Active |awk '{print $1}'"] commands = ["systemctl status "+service_name+" |grep Active |awk '{print $1}'"]
return ssh_command(serv, commands) 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

View File

@ -2351,7 +2351,7 @@ if form.getvalue('providerdel'):
if form.getvalue('awsinit') or form.getvalue('doinit'): if form.getvalue('awsinit') or form.getvalue('doinit'):
funct.check_user_group() 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) output, stderr = funct.subprocess_execute(cmd)
if stderr != '': if stderr != '':
print('error: '+stderr) print('error: '+stderr)
@ -2773,28 +2773,20 @@ if form.getvalue('edit_aws_provider'):
print('ok') print('ok')
funct.logging('localhost', 'Provider has been renamed. New name is ' + new_name, provisioning=1) 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 from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates')) env = Environment(loader=FileSystemLoader('templates'))
versions = ''
checker_ver = ''
smon_ver = ''
metrics_ver = ''
keep_ver = ''
telegrams = ''
groups = ''
page = ''
if form.getvalue('loadservices'):
template = env.get_template('ajax/load_services.html') template = env.get_template('ajax/load_services.html')
elif form.getvalue('loadupdatehapwi'): services = funct.get_services_status()
versions = funct.versions()
checker_ver = funct.check_new_version(service='checker') template = template.render(services=services)
smon_ver = funct.check_new_version(service='smon') print(template)
metrics_ver = funct.check_new_version(service='metrics')
keep_ver = funct.check_new_version(service='keep') if form.getvalue('loadchecker'):
template = env.get_template('ajax/load_updatehapwi.html') from jinja2 import Environment, FileSystemLoader
elif form.getvalue('loadchecker'): env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('ajax/load_telegram.html')
services = funct.get_services_status()
groups = sql.select_groups() groups = sql.select_groups()
page = form.getvalue('page') page = form.getvalue('page')
if page == 'servers.py': if page == 'servers.py':
@ -2803,40 +2795,31 @@ if form.getvalue('loadservices') or form.getvalue('loadupdatehapwi') or form.get
else: else:
telegrams = sql.select_telegram() telegrams = sql.select_telegram()
template = env.get_template('ajax/load_telegram.html') template = template.render(services=services,
telegrams=telegrams,
groups=groups,
page=page)
print(template)
services = [] if form.getvalue('loadupdatehapwi'):
services_name = {'checker_haproxy': 'Checker backends master service', from jinja2 import Environment, FileSystemLoader
'keep_alive': 'Auto start service', env = Environment(loader=FileSystemLoader('templates'))
'metrics_haproxy': 'Metrics master service', template = env.get_template('ajax/load_updatehapwi.html')
'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)
try: versions = funct.versions()
services.append([s, status, v, service_ver[0]]) checker_ver = funct.check_new_version(service='checker')
except Exception: smon_ver = funct.check_new_version(service='smon')
services.append([s, status, v, '']) 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, template = template.render(services=services,
versions=versions, versions=versions,
checker_ver=checker_ver, checker_ver=checker_ver,
smon_ver=smon_ver, smon_ver=smon_ver,
metrics_ver=metrics_ver, metrics_ver=metrics_ver,
keep_ver=keep_ver, keep_ver=keep_ver)
telegrams=telegrams,
groups=groups,
page=page)
print(template) print(template)
if form.getvalue('loadopenvpn'): if form.getvalue('loadopenvpn'):

View File

@ -0,0 +1,8 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.28.0"
}
}
}

View File

@ -315,7 +315,9 @@
<div id="wait-mess"></div> <div id="wait-mess"></div>
<div id="created-mess" class="alert alert-success" style="display:none;"></div> <div id="created-mess" class="alert alert-success" style="display:none;"></div>
<div id="creating-error" class="alert alert-danger" style="display:none;"></div> <div id="creating-error" class="alert alert-danger" style="display:none;"></div>
<progress id="creating-progress" value="0" max="100"></progress> <div class="progress-bar-striped">
<div id="creating-progress" style="width: 0%;"></div>
</div>
</div> </div>
<div id="server_editing" style="display: none;"> <div id="server_editing" style="display: none;">
<ul style="padding: 20px 20px 0px 20px;font-size: 15px;"> <ul style="padding: 20px 20px 0px 20px;font-size: 15px;">
@ -328,5 +330,7 @@
<div id="editing-wait-mess"></div> <div id="editing-wait-mess"></div>
<div id="edited-mess" class="alert alert-success" style="display:none;"></div> <div id="edited-mess" class="alert alert-success" style="display:none;"></div>
<div id="editing-error" class="alert alert-danger" style="display:none;"></div> <div id="editing-error" class="alert alert-danger" style="display:none;"></div>
<progress id="editing-progress" value="0" max="100"></progress> <div class="progress-bar-striped">
<div id="editing-progress" style="width: 0%;"></div>
</div>
</div> </div>

View File

@ -26,20 +26,45 @@
width: 100%; width: 100%;
height: 10px; height: 10px;
} }
progress { .progress-bar-striped {
border-radius: 5px; 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 { .progress-bar-striped > div {
background-color: #ddd; 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);
border-radius: 5px; background-size: 40px 40px;
} float: left;
progress::-webkit-progress-value { 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; background-color: #5d9ceb;
border-radius: 5px;
} }
progress::-moz-progress-bar { .progress-bar-striped p{
background-color: #5d9ceb; margin: 0;
border-radius: 5px; }
@keyframes progress-bar-stripes {
0% {
background-position: 40px 0;
}
100% {
background-position: 0 0;
}
} }
.alert-danger { .alert-danger {
margin-bottom: 10px; margin-bottom: 10px;

View File

@ -773,7 +773,7 @@ function showProvisioningError(data, step_id, prev_step_id, wait_mess, error_id,
$(error_id).show(); $(error_id).show();
$(prev_step_id).removeClass('proccessing'); $(prev_step_id).removeClass('proccessing');
$(step_id).addClass('processing_error'); $(step_id).addClass('processing_error');
$(progress_id).val('0'); $(progress_id).css('width', '0%');
if(cloud == 'aws') { if(cloud == 'aws') {
add_button_after_server_created(); add_button_after_server_created();
} else if (cloud == 'do') { } 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).addClass('proccessing_done');
$(step_id).removeClass('proccessing'); $(step_id).removeClass('proccessing');
$(next_step_id).addClass('proccessing'); $(next_step_id).addClass('proccessing');
$(progress_id).val(progress_value); $(progress_id).css('width', progress_value+'%');
$.getScript("/inc/fontawesome.min.js"); $.getScript("/inc/fontawesome.min.js");
} }
function cleanProvisioningProccess(div_id, success_div) { function cleanProvisioningProccess(div_id, success_div) {