From d815a4774b1dbb062b4c1cf8a5e3aacd4bf3d4c4 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 19 May 2026 00:53:43 -0700 Subject: [PATCH] Use proven singlequote format for RR variable in BGP Peer Map MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switch the route-reflector membership test to = ANY(ARRAY[${rr_loopbacks:singlequote}]::text[]) — the singlequote format is the one already proven to interpolate correctly in this Grafana instance (rr_locrib_diff uses it), and the ARRAY[...]::text[] wrapper stays valid (empty array) when the variable resolves empty. Co-Authored-By: Claude Opus 4.7 (1M context) --- obmp-grafana/dashboards/obmp/Maps-1006/bgp_peer_map.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/obmp-grafana/dashboards/obmp/Maps-1006/bgp_peer_map.json b/obmp-grafana/dashboards/obmp/Maps-1006/bgp_peer_map.json index 2ae25a6..5ec8ec2 100644 --- a/obmp-grafana/dashboards/obmp/Maps-1006/bgp_peer_map.json +++ b/obmp-grafana/dashboards/obmp/Maps-1006/bgp_peer_map.json @@ -25,7 +25,7 @@ { "datasource": {"type": "postgres","uid": "obmp_postgres"}, "format": "table", - "rawSql": "SELECT vp.router_hash_id::text AS id,\n MAX(vp.routername) AS title,\n 'AS ' || MAX(vp.localasn)::text AS mainstat,\n COUNT(DISTINCT vp.peerbgpid) FILTER (WHERE vp.peer_state = 'up')::text || ' peers up' AS secondarystat,\n host(MAX(vp.localbgpid)) AS detail__bgp_id,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(string_to_array('${rr_loopbacks:csv}', ',')) THEN 'Route Reflector' ELSE 'Router' END AS detail__role,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(string_to_array('${rr_loopbacks:csv}', ',')) THEN 1 ELSE 0 END AS arc__rr,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(string_to_array('${rr_loopbacks:csv}', ',')) THEN 0 ELSE 1 END AS arc__std\nFROM v_peers vp\nWHERE vp.localbgpid IS NOT NULL\nGROUP BY vp.router_hash_id\nORDER BY title", + "rawSql": "SELECT vp.router_hash_id::text AS id,\n MAX(vp.routername) AS title,\n 'AS ' || MAX(vp.localasn)::text AS mainstat,\n COUNT(DISTINCT vp.peerbgpid) FILTER (WHERE vp.peer_state = 'up')::text || ' peers up' AS secondarystat,\n host(MAX(vp.localbgpid)) AS detail__bgp_id,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(ARRAY[${rr_loopbacks:singlequote}]::text[]) THEN 'Route Reflector' ELSE 'Router' END AS detail__role,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(ARRAY[${rr_loopbacks:singlequote}]::text[]) THEN 1 ELSE 0 END AS arc__rr,\n CASE WHEN host(MAX(vp.localbgpid)) = ANY(ARRAY[${rr_loopbacks:singlequote}]::text[]) THEN 0 ELSE 1 END AS arc__std\nFROM v_peers vp\nWHERE vp.localbgpid IS NOT NULL\nGROUP BY vp.router_hash_id\nORDER BY title", "refId": "nodes" }, {