mirror of https://github.com/Aidaho12/haproxy-wi
v8.0: Handle exceptions and update data structure
Added try-except blocks for better exception handling and updated VIP retrieval logic. Changed the structure from using server names and IPs to using IDs in both backend and frontend code. Updated template selections and introduced new expected version options.pull/399/head
parent
c54f42f65b
commit
975a49d818
|
@ -65,6 +65,8 @@ def select_cluster_vip(cluster_id: int, router_id: int) -> HaClusterVip:
|
||||||
def select_cluster_vip_by_vip_id(cluster_id: int, vip_id: int) -> HaClusterVip:
|
def select_cluster_vip_by_vip_id(cluster_id: int, vip_id: int) -> HaClusterVip:
|
||||||
try:
|
try:
|
||||||
return HaClusterVip.get((HaClusterVip.cluster_id == cluster_id) & (HaClusterVip.id == vip_id))
|
return HaClusterVip.get((HaClusterVip.cluster_id == cluster_id) & (HaClusterVip.id == vip_id))
|
||||||
|
except HaClusterVip.DoesNotExist:
|
||||||
|
raise RoxywiResourceNotFound
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
out_error(e)
|
out_error(e)
|
||||||
|
|
||||||
|
|
|
@ -207,9 +207,8 @@ class ChannelRequest(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class ServerInstall(BaseModel):
|
class ServerInstall(BaseModel):
|
||||||
ip: Union[IPvAnyAddress, DomainName]
|
id: int
|
||||||
master: Optional[bool] = 0
|
master: Optional[bool] = 0
|
||||||
name: EscapedString
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceInstall(BaseModel):
|
class ServiceInstall(BaseModel):
|
||||||
|
|
|
@ -284,7 +284,7 @@ def _create_or_update_master_slaves_servers(cluster_id: int, servers: dict, rout
|
||||||
roxywi_common.logging(cluster_id, f'New server {s.hostname} has been added to the cluster', keep_history=1,
|
roxywi_common.logging(cluster_id, f'New server {s.hostname} has been added to the cluster', keep_history=1,
|
||||||
roxywi=1, service='HA cluster')
|
roxywi=1, service='HA cluster')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception(f'error: Cannot update slave server {server["ip"]}: {e}')
|
raise Exception(f'error: Cannot update slave server {s.hostname}: {e}')
|
||||||
|
|
||||||
if server['master']:
|
if server['master']:
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -151,9 +151,10 @@ function installService(service) {
|
||||||
}
|
}
|
||||||
let jsonData = {};
|
let jsonData = {};
|
||||||
let server = {
|
let server = {
|
||||||
"ip": $(select_id).val(),
|
// "ip": $(select_id).val(),
|
||||||
"master": '0',
|
"master": '0',
|
||||||
"name": $(select_id + ' option:selected').text(),
|
"id": $(select_id + ' option:selected').attr('data-id'),
|
||||||
|
// "name": $(select_id + ' option:selected').text(),
|
||||||
}
|
}
|
||||||
if (service === 'haproxy') {
|
if (service === 'haproxy') {
|
||||||
server['version'] = $('#hapver option:selected').val();
|
server['version'] = $('#hapver option:selected').val();
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
{% for select in g.user_params['servers'] %}
|
{% for select in g.user_params['servers'] %}
|
||||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
<option value="{{ select.2 }}" data-id="{{ select.0 }}">{{ select.1 }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
<select autofocus required name="nginxaddserv" id="nginxaddserv">
|
<select autofocus required name="nginxaddserv" id="nginxaddserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
{% for select in g.user_params['servers'] %}
|
{% for select in g.user_params['servers'] %}
|
||||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
<option value="{{ select.2 }}" data-id="{{ select.0 }}">{{ select.1 }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
<select autofocus required name="apacheaddserv" id="apacheaddserv">
|
<select autofocus required name="apacheaddserv" id="apacheaddserv">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
{% for select in g.user_params['servers'] %}
|
{% for select in g.user_params['servers'] %}
|
||||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
<option value="{{ select.2 }}" data-id="{{ select.0 }}">{{ select.1 }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
|
@ -223,8 +223,8 @@
|
||||||
<td id="cur_nginx_exp_ver" class="padding10 first-collumn"></td>
|
<td id="cur_nginx_exp_ver" class="padding10 first-collumn"></td>
|
||||||
<td class="padding10 first-collumn" style="width: 20%;">
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
{% set values = dict() %}
|
{% set values = dict() %}
|
||||||
{% set values = {'0.7.0':'0.7.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0', '0.11.0':'0.11.0', '1.0.0':'1.0.0', '1.1.0':'1.1.0'} %}
|
{% set values = {'0.11.0':'0.11.0', '1.0.0':'1.0.0', '1.1.0':'1.1.0', '1.2.0':'1.2.0', '1.3.0':'1.3.0'} %}
|
||||||
{{ select('nginxexpver', values=values, selected='1.1.0') }}
|
{{ select('nginxexpver', values=values, selected='1.3.0') }}
|
||||||
</td>
|
</td>
|
||||||
<td class="padding10 first-collumn">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
||||||
|
@ -316,8 +316,8 @@
|
||||||
<td id="cur_node_exp_ver" class="padding10 first-collumn"></td>
|
<td id="cur_node_exp_ver" class="padding10 first-collumn"></td>
|
||||||
<td class="padding10 first-collumn" style="width: 20%;">
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
{% set values = dict() %}
|
{% set values = dict() %}
|
||||||
{% set values = {'1.2.0':'1.2.0', '1.2.2':'1.2.2', '1.3.0':'1.3.0', '1.3.1':'1.3.1', '1.5.0':'1.5.0', '1.6.1':'1.6.1', '1.7.0':'1.7.0'} %}
|
{% set values = {'1.3.0':'1.3.0', '1.3.1':'1.3.1', '1.5.0':'1.5.0', '1.6.1':'1.6.1', '1.7.0':'1.7.0', '1.8.0':'1.8.0', '1.8.2':'1.8.2'} %}
|
||||||
{{ select('nodeexpver', values=values, selected='1.7.0') }}
|
{{ select('nodeexpver', values=values, selected='1.8.2') }}
|
||||||
</td>
|
</td>
|
||||||
<td class="padding10 first-collumn">
|
<td class="padding10 first-collumn">
|
||||||
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
||||||
|
|
|
@ -475,7 +475,10 @@ class HAVIPView(MethodView):
|
||||||
default:
|
default:
|
||||||
description: Unexpected error
|
description: Unexpected error
|
||||||
"""
|
"""
|
||||||
vip = ha_sql.select_cluster_vip_by_vip_id(cluster_id, vip_id)
|
try:
|
||||||
|
vip = ha_sql.select_cluster_vip_by_vip_id(cluster_id, vip_id)
|
||||||
|
except Exception as e:
|
||||||
|
return roxywi_common.handler_exceptions_for_json_data(e, 'Cannot find VIP')
|
||||||
try:
|
try:
|
||||||
ha_cluster.update_vip(cluster_id, vip.router_id, body, self.group_id)
|
ha_cluster.update_vip(cluster_id, vip.router_id, body, self.group_id)
|
||||||
return BaseResponse().model_dump(mode='json'), 201
|
return BaseResponse().model_dump(mode='json'), 201
|
||||||
|
|
|
@ -46,8 +46,8 @@ class InstallView(MethodView):
|
||||||
items:
|
items:
|
||||||
type: 'object'
|
type: 'object'
|
||||||
properties:
|
properties:
|
||||||
ip:
|
id:
|
||||||
type: 'string'
|
type: 'integer'
|
||||||
name:
|
name:
|
||||||
type: 'string'
|
type: 'string'
|
||||||
services:
|
services:
|
||||||
|
|
Loading…
Reference in New Issue