You've already forked haproxy-wi
mirror of
https://github.com/roxy-wi/roxy-wi.git
synced 2025-12-15 11:54:05 +08:00
Add group-based filtering for metrics queries in service and route layers
- Updated `select_metrics_enabled` to include `group_id` filtering. - Refactored query logic to handle `group_id` constraints consistently across services. - Integrated `group_id` parameter in route handlers for metrics APIs.
This commit is contained in:
@@ -131,14 +131,14 @@ def select_servers_metrics_for_master(group_id: int):
|
||||
out_error(e)
|
||||
|
||||
|
||||
def select_metrics_enabled(service: Literal['haproxy', 'nginx', 'apache']):
|
||||
def select_metrics_enabled(service: Literal['haproxy', 'nginx', 'apache'], group_id: int):
|
||||
query_where = {
|
||||
'haproxy': ((Server.haproxy_metrics == 1) & (Server.haproxy == 1)),
|
||||
'nginx': ((Server.nginx_metrics == 1) & (Server.nginx == 1)),
|
||||
'apache': ((Server.apache_metrics == 1) & (Server.apache == 1)),
|
||||
}
|
||||
try:
|
||||
return Server.select(Server.ip).where(query_where[service] & (Server.enabled == 1)).execute()
|
||||
return Server.select(Server.ip).where(query_where[service] & (Server.enabled == 1) & (Server.group_id == group_id)).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
|
||||
@@ -156,13 +156,10 @@ def select_table_metrics(group_id):
|
||||
# Get servers with haproxy metrics enabled
|
||||
server_query = Server.select(Server.ip, Server.hostname).where(
|
||||
(Server.haproxy_metrics == 1) &
|
||||
(Server.enabled == 1)
|
||||
(Server.enabled == 1) &
|
||||
(Server.group_id == group_id)
|
||||
)
|
||||
|
||||
# Apply group filter if not admin group
|
||||
if group_id != 1:
|
||||
server_query = server_query.where(Server.group_id == group_id)
|
||||
|
||||
# Get list of server IPs
|
||||
servers = list(server_query.execute())
|
||||
if not servers:
|
||||
|
||||
@@ -48,14 +48,13 @@ def metrics(service):
|
||||
servers = ''
|
||||
else:
|
||||
services = '1'
|
||||
servers = metric_sql.select_metrics_enabled(service)
|
||||
servers = metric_sql.select_metrics_enabled(service, g.user_params['group_id'])
|
||||
else:
|
||||
servers = ''
|
||||
except Exception as e:
|
||||
return f'error: on Metrics page: {e}', 500
|
||||
|
||||
kwargs = {
|
||||
'autorefresh': 1,
|
||||
'servers': servers,
|
||||
'service': service,
|
||||
'services': services,
|
||||
|
||||
Reference in New Issue
Block a user