diff --git a/app/modules/service/installation.py b/app/modules/service/installation.py index 153486bb..df36eda9 100644 --- a/app/modules/service/installation.py +++ b/app/modules/service/installation.py @@ -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') diff --git a/app/routes/ha/routes.py b/app/routes/ha/routes.py index c4fc6ea1..a0477296 100644 --- a/app/routes/ha/routes.py +++ b/app/routes/ha/routes.py @@ -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('//reconfigure/', 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 diff --git a/app/routes/install/routes.py b/app/routes/install/routes.py index fe1ba360..8a01d9f9 100644 --- a/app/routes/install/routes.py +++ b/app/routes/install/routes.py @@ -38,14 +38,17 @@ def install_monitoring(): @bp.post('/') @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) diff --git a/inc/ha.js b/inc/ha.js index 7485529e..163aedc2 100644 --- a/inc/ha.js +++ b/inc/ha.js @@ -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('
  • ' + install_mess + ' ' + nice_service_name[service] + '
  • '); return $.ajax({ - url: "/app/ha/cluster/reconfigure/" + service, + url: "/app/install/" + service, type: "PUT", statusCode: { 500: function () {