)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"ecade0bc3035c733559bd6d3233df70922ff9f38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"56d2eb1c_6e0bc84e","updated":"2026-02-20 11:58:57.000000000","message":"Test changes so I can use this patch in my POC to validate horizon frontend deduplication","commit_id":"f4640e4b4bee816831a036e12c383e234538239a"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"3ad7439b211a5b7c9a2e534ec1be891c2e82ccfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"36ec25ea_8b085256","updated":"2026-02-20 13:12:50.000000000","message":"this broke something tempest will most likely fail.","commit_id":"f4640e4b4bee816831a036e12c383e234538239a"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"632c4b11fe299e3101e3a4336759b6883531b434","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"18437639_87b66e81","updated":"2026-02-23 09:38:55.000000000","message":"accounting for previous +2s","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"a4b9457bdffd4178dde5a6ca7f46788eb463700d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2df5097b_78688901","updated":"2026-02-27 09:06:48.000000000","message":"recheck something still wrong with tempest","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"7eee0f09b9929a3c2f364ba5aaa42ff284759298","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"cee3849f_c9034fca","updated":"2026-02-23 19:42:32.000000000","message":"recheck something wrong with tempest","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"fcc3bd8bd94e3bb18ccec17de13215949f2ad3f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"03ca5f68_4f657ab1","updated":"2026-03-02 18:37:51.000000000","message":"recheck tempest has a hard time on slow machines","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"a840cfb08d3555ceea8581dce2c8283d8fdc8570","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4892a0d3_f240c6f9","updated":"2026-02-27 23:07:38.000000000","message":"recheck tempest timeout flakiness","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"f7911ff5033abd968adaffd74b85e4586750fb66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d75368a6_d001530e","updated":"2026-02-20 16:56:24.000000000","message":"this should pass","commit_id":"4939a11e6f59de9c5e8512800b8c0ac659d109ff"}],"ansible/roles/haproxy-config/templates/haproxy_single_service_split.cfg.j2":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"ce874003798e4177d23bea8057fc455d32b685c5","unresolved":true,"context_lines":[{"line_number":121,"context_line":"{%     set external \u003d haproxy_service.external | default(false) | bool %}"},{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external when the external vip is not enabled #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"2ff3c437_59a22f85","line":124,"updated":"2026-02-16 14:00:09.000000000","message":"Should we update that comment?","commit_id":"1ef7d4c83e726295de7a5db2beccec40f5120f04"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"7bebbfec72830efbf478922022b94e4b0d456df2","unresolved":false,"context_lines":[{"line_number":121,"context_line":"{%     set external \u003d haproxy_service.external | default(false) | bool %}"},{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external when the external vip is not enabled #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"}],"source_content_type":"text/x-jinja2","patch_set":1,"id":"d7878e28_620bd0eb","line":124,"in_reply_to":"2ff3c437_59a22f85","updated":"2026-02-16 14:15:34.000000000","message":"Done","commit_id":"1ef7d4c83e726295de7a5db2beccec40f5120f04"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"2653e534418658617baac028e27502620d5380c9","unresolved":true,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"e6f2f8d8_0eddd120","line":125,"updated":"2026-02-17 12:31:59.000000000","message":"Did you test that with TLS ? I am wondering with haproxy_single_external_frontend: true, haproxy_enable_external_vip: false (shared VIP), and kolla_enable_tls_internal: true, will it render both horizon_redirect and horizon_external_redirect on :80 ?","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"9155ed92770895be9829f7b221efd5183dc91135","unresolved":true,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"ae20ffaf_b1b21b23","line":125,"in_reply_to":"26139743_d4802f57","updated":"2026-02-17 15:53:05.000000000","message":"can we avoid that?","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"f7b831464c2445f84170f427feb2c1c2fdab64d9","unresolved":true,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"7ffe89bf_f4c3f996","line":125,"in_reply_to":"291290df_ef5e33a8","updated":"2026-02-20 13:01:05.000000000","message":"With this change and:\n- single vip\n- tls enabled\n- single external frontend\n\nYou get: (for horizon):\n- frontend horizon_front\n- backend horizon_back\n- frontend horizon_redirect_front\n- backend horizon_external_back\n\nSo it looks like it\u0027s good ?","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"313f5be02aa33402f5fc2ac307a01382f4ac3bea","unresolved":false,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"a70f2768_9092815f","line":125,"in_reply_to":"7ffe89bf_f4c3f996","updated":"2026-02-20 21:21:44.000000000","message":"Ok now I believe this should be done. It skips duplicate redirects if a single vip is used. It also skips binding stuff on port 443 (horizon) when single external frontend is enabled and there is a single vip","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"d61ef796b6b94f382c2443cf490425bf026d9330","unresolved":true,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"291290df_ef5e33a8","line":125,"in_reply_to":"ae20ffaf_b1b21b23","updated":"2026-02-18 07:47:56.000000000","message":"I will try to only render one of them if we fall in this scenario of single vip but single external frontend yes. \n\ngood catch, thanks. I was testing in my poc but without horizon as I didn\u0027t need it.","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"6f4e030fadf6c83146380e64fb3ea13ac60cd1ed","unresolved":true,"context_lines":[{"line_number":122,"context_line":"{#     Active/passive defaults to false #}"},{"line_number":123,"context_line":"{%     set active_passive \u003d haproxy_service.active_passive | default(false) | bool %}"},{"line_number":124,"context_line":"{#     Skip anything that is external, unless the external vip is enabled or single external frontend mode is set. #}"},{"line_number":125,"context_line":"{%     if haproxy_service.enabled | bool and (not external or haproxy_enable_external_vip | bool or haproxy_single_external_frontend | bool) %}"},{"line_number":126,"context_line":"{#         Here we define variables and their defaults #}"},{"line_number":127,"context_line":"{#         services can be listening on a different port than haproxy #}"},{"line_number":128,"context_line":"{%         set listen_port \u003d haproxy_service.listen_port | default(haproxy_service.port) %}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"26139743_d4802f57","line":125,"in_reply_to":"e6f2f8d8_0eddd120","updated":"2026-02-17 14:46:53.000000000","message":"I just tested in a POC with horizon, single VIP, single_external_frontend enabled, and internal+external TLS enabled.\n\nI get both int/ext frontends on port 80 of the same vip.\nI get  both int/ext backends correctly configured.\n\nthe double binding of horizon_redirect could be avoided I think, but it doesn\u0027t seem to break anything on horizon itself.","commit_id":"d2e9ee75b818ab00a757485f3ef6d505290074a7"}]}
