Changelog: https://roxy-wi.org/changelog#7.1.0
pull/372/head
Aidaho 2023-12-16 14:02:37 +03:00
parent 3ed145aac4
commit a7ab2ae888
4 changed files with 37 additions and 50 deletions

View File

@ -318,7 +318,7 @@ def generate_service_inv(json_data: json, install_service: str) -> object:
return inv, server_ips
def run_ansible(inv: object, server_ips: str, ansible_role: str, service: str) -> object:
def run_ansible(inv: object, server_ips: str, ansible_role: str) -> object:
inventory_path = '/var/www/haproxy-wi/app/scripts/ansible/inventory'
inventory = f'{inventory_path}/{ansible_role}.json'
proxy = sql.get_setting('proxy')
@ -380,3 +380,29 @@ def run_ansible(inv: object, server_ips: str, ansible_role: str, service: str) -
os.remove(inventory)
return stats
def service_actions_after_install(server_ips: str, service: str, json_data) -> None:
is_docker = None
json_data = json.loads(json_data)
update_functions = {
'haproxy': sql.update_haproxy,
'nginx': sql.update_nginx,
'apache': sql.update_apache,
'keepalived': sql.update_keepalived,
}
for server_ip in server_ips:
server_id = sql.select_server_id_by_ip(server_ip)
try:
update_functions[service](server_ip)
except Exception as e:
raise Exception(f'error: Cannot activate {service} on server {server_ip}: {e}')
if service != 'keepalived':
is_docker = json_data['services'][service]['docker']
if is_docker == '1' and service != 'keepalived':
sql.insert_or_update_service_setting(server_id, service, 'dockerized', '1')
sql.insert_or_update_service_setting(server_id, service, 'restart', '1')

View File

@ -251,45 +251,3 @@ def ha_vip(service, cluster_id):
return 'ok'
except Exception as e:
return f'error: Cannot delete VIP: {e}'
@bp.route('/<service>/reconfigure/<install_service>', methods=['PUT'])
@check_services
def reconfigure_haproxy(service, install_service):
json_data = request.form.get('jsonData')
update_functions = {
'haproxy': sql.update_haproxy,
'nginx': sql.update_nginx,
'apache': sql.update_apache,
}
generate_functions = {
'haproxy': installation.generate_haproxy_inv,
'nginx': installation.generate_service_inv,
'apache': installation.generate_service_inv,
'keepalived': installation.generate_kp_inv,
}
inv, server_ips = generate_functions[install_service](json_data, install_service)
json_data = json.loads(json_data)
is_docker = None
if install_service == 'keepalived':
nice_service_name = 'HA cluster'
else:
service_desc = sql.select_service(install_service)
nice_service_name = service_desc.service
is_docker = json_data['services'][install_service]['docker']
for server_ip in server_ips:
if install_service == 'keepalived':
continue
try:
update_functions[install_service](server_ip)
except Exception as e:
return str(e)
if is_docker == '1':
server_id = sql.select_server_id_by_ip(server_ip)
sql.insert_or_update_service_setting(server_id, install_service, 'dockerized', '1')
sql.insert_or_update_service_setting(server_id, install_service, 'restart', '1')
return installation.run_ansible(inv, server_ips, install_service, nice_service_name), 201

View File

@ -38,14 +38,17 @@ def install_monitoring():
@bp.post('/<service>')
@check_services
def install_service(service):
json_data = request.form.get('jsonData')
generate_functions = {
'haproxy': service_mod.generate_haproxy_inv,
'nginx': service_mod.generate_service_inv,
'apache': service_mod.generate_service_inv,
'keepalived': service_mod.generate_kp_inv,
}
try:
json_data = request.form.get('jsonData')
generate_functions = {
'haproxy': service_mod.generate_haproxy_inv,
'nginx': service_mod.generate_service_inv,
'apache': service_mod.generate_service_inv,
}
inv, server_ips = generate_functions[service](json_data, service)
service_mod.service_actions_after_install(server_ips, service, json_data)
return service_mod.run_ansible(inv, server_ips, service, service), 201
except Exception as e:
return str(e)

View File

@ -415,7 +415,7 @@ function installServiceCluster(jsonData, service, progress_step) {
var nice_service_name = {'keepalived': 'HA Custer', 'haproxy': 'HAProxy', 'nginx': 'NGINX', 'apache': 'Apache'};
$('#server_creating_list').append('<li id="' + li_id + servers['cluster_id'] + '" class="server-creating proccessing">' + install_mess + ' ' + nice_service_name[service] + '</li>');
return $.ajax({
url: "/app/ha/cluster/reconfigure/" + service,
url: "/app/install/" + service,
type: "PUT",
statusCode: {
500: function () {