)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"984acf6442b70f343b78b77f910575bbb139d83c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"563462f4_8f2602ce","updated":"2025-04-15 07:04:23.000000000","message":"So I was thinking about a way to add basic auth users to the HAProxy role. Though my usecase was not only around stats access, but overall HTTP basic auth for frontends.\n\nWhile ACLs can be defined there, there\u0027s not real way to create users, so having this scenario is completely valid and I\u0027d love to have and use that as well.\n\nBut it would be nice to make implementation more abstract from stats socket, and more oriented on adding extra users to haproxy.","commit_id":"d76428f1b027b7e6863c625c1aa5178c0d61622a"}],"defaults/main.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"984acf6442b70f343b78b77f910575bbb139d83c","unresolved":true,"context_lines":[{"line_number":328,"context_line":"    condition: \"{{ haproxy_security_txt_content is truthy }}\""},{"line_number":329,"context_line":"haproxy_static_files_extra: []"},{"line_number":330,"context_line":"haproxy_static_files: \"{{ haproxy_static_files_default + haproxy_static_files_extra }}\""},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"haproxy_sysctl_file: \"{{ openstack_sysctl_file | default(\u0027/etc/sysctl.conf\u0027) }}\""},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"# Allows to define custom errorfiles in the format:"},{"line_number":335,"context_line":"# - code: 504"},{"line_number":336,"context_line":"#   path: /path/to/504.http"},{"line_number":337,"context_line":"# You can use haproxy_static_files_extra to add those files."},{"line_number":338,"context_line":"# See https://github.com/haproxy/haproxy/tree/master/examples/errorfiles for examples"},{"line_number":339,"context_line":"#"},{"line_number":340,"context_line":"# An example combination of haproxy_static_files_extra and haproxy_errorfiles:"},{"line_number":341,"context_line":"# haproxy_static_files_extra:"},{"line_number":342,"context_line":"#   - dest: /etc/haproxy/500.http"},{"line_number":343,"context_line":"#     content: |"},{"line_number":344,"context_line":"#       HTTP/1.0 500 Internal Server Error"},{"line_number":345,"context_line":"#       Cache-Control: no-cache"},{"line_number":346,"context_line":"#       Connection: close"},{"line_number":347,"context_line":"#       Content-Type: text/html"},{"line_number":348,"context_line":"#"},{"line_number":349,"context_line":"#       \u003chtml\u003e\u003cbody\u003e\u003ch1\u003e500 Internal Server Error\u003c/h1\u003e"},{"line_number":350,"context_line":"#       This Server Made a Boo Boo"},{"line_number":351,"context_line":"#       \u003c/body\u003e\u003c/html\u003e"},{"line_number":352,"context_line":"#   - dest: /etc/haproxy/504.http"},{"line_number":353,"context_line":"#     content: \"{{ lookup(\u0027file\u0027, \u0027/etc/openstack_deploy/haproxy/504.http\u0027) }}\""},{"line_number":354,"context_line":"#"},{"line_number":355,"context_line":"# haproxy_errorfiles:"},{"line_number":356,"context_line":"#   - code: 500"},{"line_number":357,"context_line":"#     path: /etc/haproxy/500.http"},{"line_number":358,"context_line":"#   - code: 504"},{"line_number":359,"context_line":"#     path: /etc/haproxy/504.http"},{"line_number":360,"context_line":"#"},{"line_number":361,"context_line":"haproxy_errorfiles: []"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9e7cfbe7_bfae2f99","side":"PARENT","line":361,"range":{"start_line":331,"start_character":0,"end_line":361,"end_character":22},"updated":"2025-04-15 07:04:23.000000000","message":"I believe this was removed by mistake as patch was not made from top of master HEAD","commit_id":"5da10f8559a04fc69e55a086b7c606e8b256298c"}],"templates/haproxy.cfg.j2":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"984acf6442b70f343b78b77f910575bbb139d83c","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        timeout http-request {{ haproxy_http_request_timeout }}"},{"line_number":37,"context_line":"        timeout server {{ haproxy_server_timeout }}"},{"line_number":38,"context_line":"        maxconn {{ haproxy_maxconn }}"},{"line_number":39,"context_line":"{% for value in haproxy_errorfiles %}"},{"line_number":40,"context_line":"        errorfile {{ value.code }} {{ value.path }}"},{"line_number":41,"context_line":"{% endfor %}"},{"line_number":42,"context_line":"{% if haproxy_stats_enabled | bool %}"},{"line_number":43,"context_line":"{% set haproxy_ssl_path \u003d haproxy_ssl_cert_path + \"/haproxy_\" + (haproxy_host | default(ansible_facts[\u0027hostname\u0027])) + \"-\" + ((haproxy_bind_internal_lb_vip_interface is truthy) | ternary(haproxy_bind_internal_lb_vip_address ~ \u0027-\u0027 ~ haproxy_bind_internal_lb_vip_interface, haproxy_bind_internal_lb_vip_address)) + \".pem\" %}"},{"line_number":44,"context_line":"listen stats"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"d0287b0c_5fd24759","side":"PARENT","line":41,"range":{"start_line":39,"start_character":0,"end_line":41,"end_character":12},"updated":"2025-04-15 07:04:23.000000000","message":"this also should not have been removed","commit_id":"5da10f8559a04fc69e55a086b7c606e8b256298c"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"984acf6442b70f343b78b77f910575bbb139d83c","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"{% if haproxy_stats_acl_enabled | bool %}"},{"line_number":41,"context_line":"  userlist StatsUsers"},{"line_number":42,"context_line":"    group admin users {{ haproxy_stats_user }}"},{"line_number":43,"context_line":"    user {{ haproxy_username }} password {{ haproxy_stats_password | password_hash(\u0027sha256\u0027) }}"},{"line_number":44,"context_line":"    {% for user in haproxy_stats_readonly_users %}"},{"line_number":45,"context_line":"    user {{ user.username }} password {{ user.password | password_hash(\u0027sha256\u0027) }}"}],"source_content_type":"text/x-jinja2","patch_set":2,"id":"16529726_6e75bc32","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":15},"updated":"2025-04-15 07:04:23.000000000","message":"I think we should allow to make group configurable","commit_id":"d76428f1b027b7e6863c625c1aa5178c0d61622a"}]}
