Skip to content

ISD-5155 correctly publish proxied endpoint for haproxy-route-tcp#384

Merged
Thanhphan1147 merged 6 commits intomainfrom
send_vip_in_relation_data
Mar 14, 2026
Merged

ISD-5155 correctly publish proxied endpoint for haproxy-route-tcp#384
Thanhphan1147 merged 6 commits intomainfrom
send_vip_in_relation_data

Conversation

@Thanhphan1147
Copy link
Collaborator

@Thanhphan1147 Thanhphan1147 commented Mar 4, 2026

Fixes: #365

Publish proxied endpoint for haproxy-route-tcp:

  1. If sni routing is configured, publish <sni>:<frontend_port> for each backend
  2. If (1) is not met, and if VIP is configured, then publish <vip>:<port> for each backend
  3. Fallback to <unit_ip>: for each backend if both (1) and (2) is not met. Note that this will be a list of IPs if haproxy is deployed with multiple units

Checklist

@Thanhphan1147 Thanhphan1147 requested a review from a team as a code owner March 4, 2026 15:26
@Thanhphan1147 Thanhphan1147 changed the title correctly publish proxied endpoint for haproxy-route-tcp ISD-5155 correctly publish proxied endpoint for haproxy-route-tcp Mar 4, 2026
@javierdelapuente
Copy link
Contributor

Can we add a test for the implementation?

@github-actions
Copy link
Contributor

Test results for commit 537433d

Test coverage for 537433d

Name                                       Stmts   Miss Branch BrPart  Cover   Missing
--------------------------------------------------------------------------------------
lib/charms/haproxy/v0/ddos_protection.py     154     51     34      8    64%   157-174, 183-187, 288, 316-318, 323, 326-330, 342-344, 381, 387, 393, 396, 424, 495-498, 510-529
src/charm.py                                  21      0      0      0   100%
src/state.py                                  43      0      0      0   100%
--------------------------------------------------------------------------------------
TOTAL                                        218     51     34      8    73%

Static code analysis report

Run started:2026-03-13 13:20:21.210391+00:00

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 333
  Total lines skipped (#nosec): 0
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 0

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@github-actions
Copy link
Contributor

Test results for commit 537433d

Test coverage for 537433d

Name                                         Stmts   Miss Branch BrPart  Cover   Missing
----------------------------------------------------------------------------------------
lib/charms/haproxy/v0/ddos_protection.py       154     42     34      3    72%   157-174, 183-187, 265, 284, 415-418, 422-424, 459-478, 514-529
lib/charms/haproxy/v0/spoe_auth.py             158     55     32      2    59%   203, 304-306, 315, 354-381, 392-402, 441-442, 459-472, 484-501, 522-525, 529-531
lib/charms/haproxy/v1/haproxy_route_tcp.py     385    153     78      8    56%   209, 212, 281, 290-293, 297-300, 318-321, 336, 342-347, 447, 452, 829-832, 836, 863-874, 897-900, 904-906, 926-928, 1042-1083, 1087-1093, 1097, 1166-1195, 1266-1305, 1335-1337, 1362-1364, 1386-1390, 1409-1411, 1429-1431, 1438-1444, 1452-1454, 1462-1463, 1474-1481, 1494-1505, 1513-1534, 1546-1547, 1558-1559, 1570-1573, 1584-1585, 1614-1623, 1639-1642, 1658-1669, 1685-1688, 1706-1717, 1728-1729, 1737-1738, 1746-1747, 1758-1761
lib/charms/haproxy/v2/haproxy_route.py         385     53     98     26    82%   181, 257, 266-269, 294-297, 318-323, 673-674, 860->exit, 867, 893-904, 927-930, 934-936, 955-957, 1129-1135, 1139, 1336->1338, 1340->1342, 1342->1344, 1344->1346, 1346->1348, 1348->1351, 1386, 1394, 1399, 1402, 1427, 1455, 1459, 1463, 1486, 1506, 1515-1516, 1518->exit, 1554-1556, 1576, 1590, 1595-1597
src/charm.py                                   286     69     78     11    71%   100, 228, 236-252, 257, 262, 279, 290, 296-297, 331-351, 455-463, 491-504, 517-522, 531, 544-545, 552, 562, 572, 578-584, 600, 650-653, 659->658, 672-675
src/haproxy.py                                 127     31      6      2    75%   110-116, 136-158, 268-269, 272, 280-286, 314, 344-355, 367-369, 379-380
src/http_interface.py                           73     25      4      0    62%   74, 83, 92, 106-108, 126, 138, 150, 162, 170-175, 187, 194, 202, 217-227
src/state/charm_state.py                        77     15     14      4    79%   93-95, 100-101, 104, 145-150, 159, 208-210, 222-223
src/state/ddos_protection.py                    39      0      2      0   100%
src/state/exception.py                           1      0      0      0   100%
src/state/ha.py                                 30      1      2      1    94%   50
src/state/haproxy_route.py                     197     14     60      5    90%   132, 161-170, 194, 227, 297, 346-348, 365
src/state/haproxy_route_tcp.py                 120     17     42      1    80%   92-94, 109->112, 147-160
src/state/ingress.py                            38      0      4      0   100%
src/state/ingress_per_unit.py                   32      0      4      0   100%
src/state/spoe_auth.py                          26      2      2      0    93%   63-64
src/state/tls.py                                39      7     12      4    78%   74, 77-78, 127-135, 141-142
src/state/validation.py                         46     23      8      1    44%   66-67, 71-98
src/tls_relation.py                             61      3     14      3    92%   86->85, 118-128, 140->142
----------------------------------------------------------------------------------------
TOTAL                                         2274    510    494     71    74%

Static code analysis report

Working... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Run started:2026-03-13 14:15:25.634615+00:00

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 10203
  Total lines skipped (#nosec): 13
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 10

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@github-actions
Copy link
Contributor

Test results for commit 537433d

Test coverage for 537433d

Name                               Stmts   Miss Branch BrPart  Cover   Missing
------------------------------------------------------------------------------
src/charm.py                          45      9      2      0    77%   65-91, 96-98
src/haproxy_spoe_auth_service.py      44     16      2      0    61%   56-64, 76-82, 93-117
src/state.py                          55     15      6      1    67%   64-66, 79, 125-146
------------------------------------------------------------------------------
TOTAL                                144     40     10      1    68%

Static code analysis report

Run started:2026-03-13 14:59:07.955488

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 409
  Total lines skipped (#nosec): 1
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 1

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@Thanhphan1147 Thanhphan1147 merged commit 63345e2 into main Mar 14, 2026
80 checks passed
@Thanhphan1147 Thanhphan1147 deleted the send_vip_in_relation_data branch March 14, 2026 00:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose HAProxy unit IPs and their availability via the relation data

3 participants