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):
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

View File

@ -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'):

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

View File

@ -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;

View File

@ -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) {