)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"4386530371f3dee9677400979c815b37e72a3c44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cda84857_d1f3be9f","updated":"2023-01-19 22:14:11.000000000","message":"I know that removing support for `haproxy_*_service_overrides` sounds nasty but I really have no idea how we can make them deprecated but still support them for next release :|","commit_id":"5e617fa7ab544c2af7b5ffb923a9a206a04b0af9"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"a13d03faeeec849b4887d5c5ea803b82d1afc029","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0aea928a_83a8fa43","updated":"2023-02-07 13:28:02.000000000","message":"we need to run haproxy-install.yml before repo-install.yml in setup-infrastructure.yml\n\nI\u0027ll change it once gating is fixed.","commit_id":"96ffb012f7da9c561c4fdc2dfab1c184f4618c7c"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d090ddc1_a5a9ef58","updated":"2023-02-16 13:54:41.000000000","message":"i fixed your suggestions so:\n- switched back from haproxy_base_services to haproxy_default_services\n- switched back from haproxy_services to haproxy_service_configs(automatic conversion will be supported until 2024.1)\n- added back support for haproxy service overrides\n- moved haproxy LE temporary service creation from haproxy_server role to openstack-ansible repo\n- added licenses in newly created files","commit_id":"4afcf6afc835c5cfc02e470cb4426a40629671bd"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"a22bd1ea735f8ef700940f63fe5a48c77cbf1d09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"be5ed9c7_15643fc2","updated":"2023-02-21 22:20:31.000000000","message":"currently i don\u0027t think that this leaves working LE renewals when horizon is not deployed","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"d4574b542f1c3aef2aee160d5d366f7242c61e92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"245d0b23_2b3fd1bd","updated":"2023-02-17 16:44:35.000000000","message":"recheck\n\nI\u0027m not sure why openstack-ansible-deploy-aio_ceph-ubuntu-focal and openstack-ansible-deploy-aio_proxy-ubuntu-focal keeps failing/timeouting.\n\nI deployed `aio_ceph_integrated` scenario on my focal AIO and everything works fine :|","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"4604619019441dbb99652cf02a213558f54e6247","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0b006180_ba948cf9","updated":"2023-02-18 00:38:18.000000000","message":"recheck\n\nnow openstack-ansible-deploy-aio_ceph-ubuntu-focal and openstack-ansible-deploy-aio_proxy-ubuntu-focal have succeeded but openstack-ansible-deploy-aio_lxc-centos-9-stream failed instead","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"ed8dc83e9a367c09e03491fbac27964f96952ab1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d2f48a44_7b0a107c","updated":"2023-02-18 12:43:09.000000000","message":"recheck\n\nnow openstack-ansible-deploy-aio_metal-ubuntu-jammy failed and openstack-ansible-upgrade-aio_metal-ubuntu-focal timed out","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"1ce9a456c3d12a10f025ce266d86d26703136a03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"6b9dca51_5f889ae3","updated":"2023-02-17 00:06:35.000000000","message":"recheck - tempest failed for openstack-ansible-deploy-aio_ceph-ubuntu-focal and openstack-ansible-deploy-aio_proxy-ubuntu-focal but for different tests","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"5d33d4858125a8f2e4186f8a382f673f805b5d8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"814983b1_198bb28c","updated":"2023-02-16 20:43:22.000000000","message":"recheck - timeout","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"670d5032_b2ddd13f","in_reply_to":"be5ed9c7_15643fc2","updated":"2023-02-22 21:09:27.000000000","message":"fixed.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"87dbde6ae2cab11eec37885275dbcf8427ae8a50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2abee36e_ecb24cdb","updated":"2023-03-03 09:11:26.000000000","message":"recheck timeout","commit_id":"8f309a9f33c2de32ebb87d5d1b3751b0f907e5e1"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"4a95db5a7fd3c6d2d534a8715108252430dd3285","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"251ba410_4e94dbb1","updated":"2023-03-06 15:50:15.000000000","message":"recheck - rebased dependant patches","commit_id":"d1fa4a91928db5e5557ef409c1acad65ae23320b"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"da15e76dffcf442f34712758e3613953d4fd394a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"eacbd4cc_1acd5c3f","updated":"2023-03-06 16:03:50.000000000","message":"recheck - rebased dependant patches again","commit_id":"d1fa4a91928db5e5557ef409c1acad65ae23320b"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"65159255051e4f7ed8b2b076a49bee2984324e2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"a1e6c135_dbac8564","updated":"2023-03-06 13:52:30.000000000","message":"recheck - removed too complex depends-on in other patches","commit_id":"d1fa4a91928db5e5557ef409c1acad65ae23320b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"a828505b9c61194ad3c990e94c225feca82c1bb9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"2bfc3951_a8b999f8","updated":"2023-03-06 15:14:03.000000000","message":"recheck - weird zuul error","commit_id":"d1fa4a91928db5e5557ef409c1acad65ae23320b"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"5c5a5be93d2b5b562c7c90c02dbfc226ad842602","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"0fa7e632_415ba2a1","updated":"2023-03-15 22:49:08.000000000","message":"recheck - 871188 was rebased","commit_id":"7f358cd906d27582da8affb11de4d7b1c3b7465a"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"6fe6c11e7d4eab497c530c56ded40f898f65672f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"cdddb0e5_8a4b310b","updated":"2023-04-03 20:30:08.000000000","message":"recheck - gating should be unblocked now","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"d297e8975cdba24226c2028f3f7b445db5be6a60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"4c1ec483_e248013b","updated":"2023-04-07 12:19:03.000000000","message":"recheck - dependencies removed since they are already merged(and they could have caused merge conflict)","commit_id":"201f1bf6c34f364e5e9a56e40e04d98e9fb94f9c"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"1ac7dc2a57dac4c2b74b1ef6773904a336b74447","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"2125c057_11033c38","updated":"2023-04-07 14:59:04.000000000","message":"recheck - openstack-ansible-deploy-aio_metal-centos-9-stream is now non-voting\nhttps://review.opendev.org/c/openstack/openstack-ansible/+/879671","commit_id":"201f1bf6c34f364e5e9a56e40e04d98e9fb94f9c"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"c024c0296bf601774721f33b8293eb0d8ae7d254","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"bc83a271_ef05a7ba","updated":"2023-04-07 21:03:26.000000000","message":"i rebased this relation chain and fixed this change to respect recently merged changes that caused merge conflict:\n878082: Convert haproxy_security_headers_csp to a multiline string | https://review.opendev.org/c/openstack/openstack-ansible/+/878082\n878083: Define individual haproxy services for each console type | https://review.opendev.org/c/openstack/openstack-ansible/+/878083","commit_id":"986052137628f01ceea92c7272474882c30ee312"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"2dced2266e100d179c415aa6d6518af0941f9826","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"64b1a7bd_a88d87d8","updated":"2023-04-08 00:19:39.000000000","message":"recheck - openstack-ansible-deploy-aio_ceph-ubuntu-jammy post failure","commit_id":"986052137628f01ceea92c7272474882c30ee312"}],"doc/source/user/security/ssl-certificates.rst":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"9071f3b77352f25718852d6abba339c81914b29f","unresolved":true,"context_lines":[{"line_number":254,"context_line":"    haproxy_ssl_letsencrypt_email: \"email.address@example.com\""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"If you don\u0027t have horizon deployed, you will need to define dummy service that"},{"line_number":258,"context_line":"will listen on 80 and 443 ports and will be used for acme-challenge, whose"},{"line_number":259,"context_line":"backend is certbot on the haproxy host:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":".. code-block:: shell-session"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"e812307f_2ab5e98f","line":259,"range":{"start_line":257,"start_character":0,"end_line":259,"end_character":39},"updated":"2023-02-21 22:19:56.000000000","message":"is this still correct? i think that these changes make this now automatic? if so there is a bunch of stuff to delete here.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":false,"context_lines":[{"line_number":254,"context_line":"    haproxy_ssl_letsencrypt_email: \"email.address@example.com\""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"If you don\u0027t have horizon deployed, you will need to define dummy service that"},{"line_number":258,"context_line":"will listen on 80 and 443 ports and will be used for acme-challenge, whose"},{"line_number":259,"context_line":"backend is certbot on the haproxy host:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":".. code-block:: shell-session"},{"line_number":262,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"5ec296eb_e38ca2dc","line":259,"range":{"start_line":257,"start_character":0,"end_line":259,"end_character":39},"in_reply_to":"e812307f_2ab5e98f","updated":"2023-02-22 21:09:27.000000000","message":"after your suggestions from other comments, I deleted this section from openstack-ansible docs.\n\nPlease note that custom service listening on port 80 is still required for non-OSA deployments to issue LE cert, so I leave haproxy docs unchanged.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"}],"inventory/group_vars/adjutant_all.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"cc135b94c6030cc2e300a5d7001e11cd1b9bedeb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"_haproxy_services:"},{"line_number":2,"context_line":"  - haproxy_service_name: adjutant_api"},{"line_number":3,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027adjutant_api\u0027] | default([]) }}\""},{"line_number":4,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"24fcada2_edaa06af","line":1,"updated":"2023-02-14 10:12:24.000000000","message":"We need to have proper yaml file start as well as license for all newly created files.","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":1,"context_line":"_haproxy_services:"},{"line_number":2,"context_line":"  - haproxy_service_name: adjutant_api"},{"line_number":3,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027adjutant_api\u0027] | default([]) }}\""},{"line_number":4,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9df96a56_bd430a5a","line":1,"in_reply_to":"24fcada2_edaa06af","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":1,"context_line":"_haproxy_services:"},{"line_number":2,"context_line":"  - haproxy_service_name: adjutant_api"},{"line_number":3,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027adjutant_api\u0027] | default([]) }}\""},{"line_number":4,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7bfd4c34_81673640","line":1,"in_reply_to":"9df96a56_bd430a5a","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"}],"inventory/group_vars/all/haproxy.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2f74c7fc65c3a93b9bf3d62d28975b16fcc8f29c","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"haproxy_ssl: true"},{"line_number":17,"context_line":"haproxy_ssl_all_vips: false"},{"line_number":18,"context_line":"haproxy_ssl_letsencrypt_enable: false"},{"line_number":19,"context_line":"haproxy_ssl_letsencrypt_acl:"},{"line_number":20,"context_line":"  letsencrypt-acl:"},{"line_number":21,"context_line":"    rule: \"path_beg /.well-known/acme-challenge/\""},{"line_number":22,"context_line":"    backend_name: letsencrypt"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"haproxy_allowlist_networks:"},{"line_number":25,"context_line":"  - 192.168.0.0/16"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"936c4cd5_9f1a11ce","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":29},"updated":"2023-04-06 08:39:00.000000000","message":"does it needs to be in `all`? As I think it\u0027s used only in base service, which is defined in haproxy/haproxy?","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"b56234e361e485b3470e28632cf2d9e0b8367a51","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"haproxy_ssl: true"},{"line_number":17,"context_line":"haproxy_ssl_all_vips: false"},{"line_number":18,"context_line":"haproxy_ssl_letsencrypt_enable: false"},{"line_number":19,"context_line":"haproxy_ssl_letsencrypt_acl:"},{"line_number":20,"context_line":"  letsencrypt-acl:"},{"line_number":21,"context_line":"    rule: \"path_beg /.well-known/acme-challenge/\""},{"line_number":22,"context_line":"    backend_name: letsencrypt"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"haproxy_allowlist_networks:"},{"line_number":25,"context_line":"  - 192.168.0.0/16"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"36733d3a_7a549ce1","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":29},"in_reply_to":"936c4cd5_9f1a11ce","updated":"2023-04-06 23:04:30.000000000","message":"ah, i think you\u0027re right. Fixed.","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"460dadf65a310c9d6dc2ee84cdd7f30a922f7bc1","unresolved":true,"context_lines":[{"line_number":29,"context_line":"openstack_haproxy_stick_table:"},{"line_number":30,"context_line":"  - \"stick-table  type ipv6  size 256k  expire 10s  store http_err_rate(10s)\""},{"line_number":31,"context_line":"  - \"http-request track-sc0 src\""},{"line_number":32,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_err_rate(0) gt 20 } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# apply the stick table as default for all backends"},{"line_number":35,"context_line":"haproxy_stick_table: \"{{ openstack_haproxy_stick_table }}\""}],"source_content_type":"text/x-yaml","patch_set":34,"id":"5bf50896_fbb3ea8d","line":32,"range":{"start_line":32,"start_character":79,"end_line":32,"end_character":82},"updated":"2023-04-18 09:28:08.000000000","message":"nit - space is missing","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"9003a63de6fd5b4bb62062eea617ef28c5f006db","unresolved":false,"context_lines":[{"line_number":29,"context_line":"openstack_haproxy_stick_table:"},{"line_number":30,"context_line":"  - \"stick-table  type ipv6  size 256k  expire 10s  store http_err_rate(10s)\""},{"line_number":31,"context_line":"  - \"http-request track-sc0 src\""},{"line_number":32,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_err_rate(0) gt 20 } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"# apply the stick table as default for all backends"},{"line_number":35,"context_line":"haproxy_stick_table: \"{{ openstack_haproxy_stick_table }}\""}],"source_content_type":"text/x-yaml","patch_set":34,"id":"d59a7368_dbaf84e4","line":32,"range":{"start_line":32,"start_character":79,"end_line":32,"end_character":82},"in_reply_to":"5bf50896_fbb3ea8d","updated":"2023-04-18 20:20:00.000000000","message":"fixed - here and in few other places","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"}],"inventory/group_vars/glance_all.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":23,"context_line":"  - bind_dir_path: \"/var/lib/glance/cache\""},{"line_number":24,"context_line":"    mount_path: \"/openstack/{{ inventory_hostname }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_haproxy_services:"},{"line_number":27,"context_line":"  - haproxy_service_name: glance_api"},{"line_number":28,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027glance_api\u0027] | default([]) }}\""},{"line_number":29,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"8bcc8574_99f2b668","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":17},"updated":"2023-02-14 09:26:48.000000000","message":"this variable should be namespaced to glance (_glance_haproxy_services) so that it can be overridden in user_variables or group_vars","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  - bind_dir_path: \"/var/lib/glance/cache\""},{"line_number":24,"context_line":"    mount_path: \"/openstack/{{ inventory_hostname }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_haproxy_services:"},{"line_number":27,"context_line":"  - haproxy_service_name: glance_api"},{"line_number":28,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027glance_api\u0027] | default([]) }}\""},{"line_number":29,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9a9dc46f_c0fdab1b","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":17},"in_reply_to":"87841cbb_9ad9468e","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":23,"context_line":"  - bind_dir_path: \"/var/lib/glance/cache\""},{"line_number":24,"context_line":"    mount_path: \"/openstack/{{ inventory_hostname }}\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"_haproxy_services:"},{"line_number":27,"context_line":"  - haproxy_service_name: glance_api"},{"line_number":28,"context_line":"    haproxy_backend_nodes: \"{{ groups[\u0027glance_api\u0027] | default([]) }}\""},{"line_number":29,"context_line":"    haproxy_ssl: \"{{ haproxy_ssl }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"87841cbb_9ad9468e","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":17},"in_reply_to":"8bcc8574_99f2b668","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":36,"context_line":"    haproxy_backend_ssl: \"{{ glance_backend_https | default(False) }}\""},{"line_number":37,"context_line":"    haproxy_backend_ca: \"{{ openstack_haproxy_backend_ca | default(True) }}\""},{"line_number":38,"context_line":"    haproxy_service_enabled: \"{{ groups[\u0027glance_api\u0027] is defined and groups[\u0027glance_api\u0027] | length \u003e 0 }}\""},{"line_number":39,"context_line":"haproxy_services: \"{{ haproxy_glance_services | default(_haproxy_services) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"141c469f_858188f0","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":78},"updated":"2023-02-14 09:26:48.000000000","message":"this line seems redundant as it redefines the _haproxy_services, which in the context of this group_vars file is always defined, so the default() should not be needed either","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":36,"context_line":"    haproxy_backend_ssl: \"{{ glance_backend_https | default(False) }}\""},{"line_number":37,"context_line":"    haproxy_backend_ca: \"{{ openstack_haproxy_backend_ca | default(True) }}\""},{"line_number":38,"context_line":"    haproxy_service_enabled: \"{{ groups[\u0027glance_api\u0027] is defined and groups[\u0027glance_api\u0027] | length \u003e 0 }}\""},{"line_number":39,"context_line":"haproxy_services: \"{{ haproxy_glance_services | default(_haproxy_services) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"4a42ff1c_67adefd1","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":78},"in_reply_to":"141c469f_858188f0","updated":"2023-02-16 13:54:41.000000000","message":"_haproxy_services is always defined, but haproxy_glance_services doesn\u0027t.\nanyway, after your suggestions i came back to the \"old way\" of defining haproxy services so it\u0027s not relevant anymore","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    haproxy_backend_ssl: \"{{ glance_backend_https | default(False) }}\""},{"line_number":37,"context_line":"    haproxy_backend_ca: \"{{ openstack_haproxy_backend_ca | default(True) }}\""},{"line_number":38,"context_line":"    haproxy_service_enabled: \"{{ groups[\u0027glance_api\u0027] is defined and groups[\u0027glance_api\u0027] | length \u003e 0 }}\""},{"line_number":39,"context_line":"haproxy_services: \"{{ haproxy_glance_services | default(_haproxy_services) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"b47f2125_c86af2b6","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":78},"in_reply_to":"4a42ff1c_67adefd1","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"}],"inventory/group_vars/haproxy/haproxy.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":46,"context_line":"      - expect rstatus 200|405"},{"line_number":47,"context_line":"    haproxy_service_enabled: \"{{ (groups[\u0027ceph-rgw\u0027] is defined and groups[\u0027ceph-rgw\u0027] | length \u003e 0) or (ceph_rgws | length \u003e 0) }}\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"haproxy_preconfigured_services: \"{{ haproxy_base_services + haproxy_extra_services | default([]) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3522d2f0_747ac4b4","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":30},"updated":"2023-02-14 09:26:48.000000000","message":"this should be unnecessary if `haproxy_base_services` is passed to the haproxy_server role as an override for haproxy_services in the haproxy_install playbook.","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":46,"context_line":"      - expect rstatus 200|405"},{"line_number":47,"context_line":"    haproxy_service_enabled: \"{{ (groups[\u0027ceph-rgw\u0027] is defined and groups[\u0027ceph-rgw\u0027] | length \u003e 0) or (ceph_rgws | length \u003e 0) }}\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"haproxy_preconfigured_services: \"{{ haproxy_base_services + haproxy_extra_services | default([]) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"341d663a_55b38561","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":30},"in_reply_to":"0618d80d_5f7a446e","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":46,"context_line":"      - expect rstatus 200|405"},{"line_number":47,"context_line":"    haproxy_service_enabled: \"{{ (groups[\u0027ceph-rgw\u0027] is defined and groups[\u0027ceph-rgw\u0027] | length \u003e 0) or (ceph_rgws | length \u003e 0) }}\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"haproxy_preconfigured_services: \"{{ haproxy_base_services + haproxy_extra_services | default([]) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"0618d80d_5f7a446e","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":30},"in_reply_to":"3522d2f0_747ac4b4","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"}],"inventory/group_vars/horizon_all.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"9071f3b77352f25718852d6abba339c81914b29f","unresolved":true,"context_lines":[{"line_number":16,"context_line":"horizon_enable_cinder_backup: \"{{ hostvars[\u0027localhost\u0027][\u0027cinder_service_backup_program_enabled\u0027] }}\""},{"line_number":17,"context_line":"horizon_enable_ha_router: \"{{ groups[\u0027neutron_l3_agent\u0027] | length \u003e\u003d 2 }}\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"haproxy_security_txt_acl:"},{"line_number":20,"context_line":"  keystone-security-txt-acl:"},{"line_number":21,"context_line":"    rule: \"path_end /security.txt\""},{"line_number":22,"context_line":"    backend_name: keystone_service"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Variables to set security headers used by browsers"},{"line_number":25,"context_line":"haproxy_security_headers_max_age: 31536000"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"83e7cfa7_78ff30a6","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":34},"updated":"2023-02-21 22:19:56.000000000","message":"this does not feel right to be in the horizon vars, as it\u0027s an ACL on haproxy which uses the keystone backend, so nothing really to do with horizon","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":true,"context_lines":[{"line_number":16,"context_line":"horizon_enable_cinder_backup: \"{{ hostvars[\u0027localhost\u0027][\u0027cinder_service_backup_program_enabled\u0027] }}\""},{"line_number":17,"context_line":"horizon_enable_ha_router: \"{{ groups[\u0027neutron_l3_agent\u0027] | length \u003e\u003d 2 }}\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"haproxy_security_txt_acl:"},{"line_number":20,"context_line":"  keystone-security-txt-acl:"},{"line_number":21,"context_line":"    rule: \"path_end /security.txt\""},{"line_number":22,"context_line":"    backend_name: keystone_service"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Variables to set security headers used by browsers"},{"line_number":25,"context_line":"haproxy_security_headers_max_age: 31536000"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"b007779d_3082c8bb","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":34},"in_reply_to":"83e7cfa7_78ff30a6","updated":"2023-02-22 21:09:27.000000000","message":"IMO it\u0027s a strange situation that security.txt is hosted on keystone but it\u0027s accessible via horizon(through haproxy). This whole relation between keystone, haproxy and horizon makes me confused.\n\nWith this change, security.txt will work exactly the same as before because `haproxy_security_txt_acl` is used only by horizon\u0027s haproxy service.\nBut you\u0027re right that horizon\u0027s haproxy service leverages `keystone_security_txt_content` so there\u0027s a problem with variable scope.\n\nI have 2 suggestions:\n\na) host security.txt in horizon - it will simply fix our issue\nb) keep it as it is for now and be aware of `keystone_security_txt_content` scope issue.(keep in mind that this change does not create this issue. it existed before)\n\nOr maybe you see some other options?","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"87fe1d323f08f0f6b7c4a92ef274c581fe5f652e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"horizon_enable_cinder_backup: \"{{ hostvars[\u0027localhost\u0027][\u0027cinder_service_backup_program_enabled\u0027] }}\""},{"line_number":17,"context_line":"horizon_enable_ha_router: \"{{ groups[\u0027neutron_l3_agent\u0027] | length \u003e\u003d 2 }}\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"haproxy_security_txt_acl:"},{"line_number":20,"context_line":"  keystone-security-txt-acl:"},{"line_number":21,"context_line":"    rule: \"path_end /security.txt\""},{"line_number":22,"context_line":"    backend_name: keystone_service"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Variables to set security headers used by browsers"},{"line_number":25,"context_line":"haproxy_security_headers_max_age: 31536000"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a847ca22_99da0ec5","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":34},"in_reply_to":"b007779d_3082c8bb","updated":"2023-04-14 18:41:14.000000000","message":"security.txt is hosted directly by haproxy now","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2176ee5b6c9aae7cf787cd458e8a8ff80ea3ddc9","unresolved":true,"context_lines":[{"line_number":44,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 } { path_beg /auth } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":45,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_err_rate(0) gt 20 } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Certbot service may be created by haproxy-install.yml to issue"},{"line_number":48,"context_line":"# initial LetsEncrypt certificate when horizon is not deployed yet."},{"line_number":49,"context_line":"# This service should be removed when horizon is going to be installed."},{"line_number":50,"context_line":"haproxy_certbot_service:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"2593f029_e1b84ed8","line":47,"updated":"2023-03-02 06:41:26.000000000","message":"This looks wrong - should not be defined in both the haproxy group_vars and here as thats not compatible with the new approach using add_host.\n\nIt needs to be determined again during the run of the horizon playbook if horizon is *about* to be installed (different logic from the condition used in the haproxy playbook to enable the certbot backend).","commit_id":"efcb6eff173241a27350c9d9095020faf51ff9ae"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0f0cdd308ae70ae508795469c02db68fbdb339c3","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 } { path_beg /auth } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":45,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_err_rate(0) gt 20 } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Certbot service may be created by haproxy-install.yml to issue"},{"line_number":48,"context_line":"# initial LetsEncrypt certificate when horizon is not deployed yet."},{"line_number":49,"context_line":"# This service should be removed when horizon is going to be installed."},{"line_number":50,"context_line":"haproxy_certbot_service:"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"0a45d21d_f17639c8","line":47,"in_reply_to":"2593f029_e1b84ed8","updated":"2023-03-29 20:01:21.000000000","message":"not relevant anymore","commit_id":"efcb6eff173241a27350c9d9095020faf51ff9ae"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2f74c7fc65c3a93b9bf3d62d28975b16fcc8f29c","unresolved":true,"context_lines":[{"line_number":20,"context_line":"# returns 429 when more than 20 calls to /auth per 10 second window"},{"line_number":21,"context_line":"# returns 429 when more than 20 4xx responses per 10 second window"},{"line_number":22,"context_line":"# from external IP addresses. Override as necessary."},{"line_number":23,"context_line":"openstack_haproxy_horizon_stick_table:"},{"line_number":24,"context_line":"  - \"stick-table  type ipv6  size 256k  expire 10s  store http_req_rate(10s),http_err_rate(10s)\""},{"line_number":25,"context_line":"  - \"http-request track-sc0 src\""},{"line_number":26,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 } { path_beg /auth } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"da1888d0_1b52a06f","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"updated":"2023-04-06 08:39:00.000000000","message":"this name is slightly confusing. Should we call it just `horizon_haproxy_stick_table` since it\u0027s applicable only to horizon and we have `openstack_haproxy_stick_table` for the rest?","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"b56234e361e485b3470e28632cf2d9e0b8367a51","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# returns 429 when more than 20 calls to /auth per 10 second window"},{"line_number":21,"context_line":"# returns 429 when more than 20 4xx responses per 10 second window"},{"line_number":22,"context_line":"# from external IP addresses. Override as necessary."},{"line_number":23,"context_line":"openstack_haproxy_horizon_stick_table:"},{"line_number":24,"context_line":"  - \"stick-table  type ipv6  size 256k  expire 10s  store http_req_rate(10s),http_err_rate(10s)\""},{"line_number":25,"context_line":"  - \"http-request track-sc0 src\""},{"line_number":26,"context_line":"  - \"http-request deny deny_status 429 if { sc_http_req_rate(0) gt 20 } { path_beg /auth } !{ src {{haproxy_stick_table_allowlist_networks | join(\u0027 } !{ src \u0027) }} }\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"4d49976d_974433ee","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":37},"in_reply_to":"da1888d0_1b52a06f","updated":"2023-04-06 23:04:30.000000000","message":"fixed in: https://review.opendev.org/c/openstack/openstack-ansible/+/879791","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"}],"inventory/group_vars/repo_all.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"1b18a138ba71e4b384a23bdb92abf0a226abfc68","unresolved":true,"context_lines":[{"line_number":45,"context_line":"    - \"httpchk GET /constraints/upper_constraints_cached.txt HTTP/1.0\\\\r\\\\nUser-agent:\\\\ osa-haproxy-healthcheck\""},{"line_number":46,"context_line":"  haproxy_backend_httpcheck_options:"},{"line_number":47,"context_line":"    - \"expect status 200\""},{"line_number":48,"context_line":"  haproxy_backend_ssl: \"{{ repo_backend_https | default(False) }}\""},{"line_number":49,"context_line":"  haproxy_backend_ca: \"{{ openstack_haproxy_backend_ca | default(True) }}\""},{"line_number":50,"context_line":"  haproxy_service_enabled: \"{{ groups[\u0027repo_all\u0027] is defined and groups[\u0027repo_all\u0027] | length \u003e 0 }}\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"repo_haproxy_services:"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"74dc5751_5a53e402","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":74},"updated":"2023-03-16 08:56:41.000000000","message":"we discussed in the openstack-ansible meeting splitting out the changes to enable TLS into follow on patches, this is not part of the spec/blueprint and shouldnt be changed at the same time","commit_id":"7f358cd906d27582da8affb11de4d7b1c3b7465a"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"72247a973184fbaebae02ab5b35bd1bf4fc769f2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    - \"httpchk GET /constraints/upper_constraints_cached.txt HTTP/1.0\\\\r\\\\nUser-agent:\\\\ osa-haproxy-healthcheck\""},{"line_number":46,"context_line":"  haproxy_backend_httpcheck_options:"},{"line_number":47,"context_line":"    - \"expect status 200\""},{"line_number":48,"context_line":"  haproxy_backend_ssl: \"{{ repo_backend_https | default(False) }}\""},{"line_number":49,"context_line":"  haproxy_backend_ca: \"{{ openstack_haproxy_backend_ca | default(True) }}\""},{"line_number":50,"context_line":"  haproxy_service_enabled: \"{{ groups[\u0027repo_all\u0027] is defined and groups[\u0027repo_all\u0027] | length \u003e 0 }}\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"repo_haproxy_services:"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"169fb522_335b35d3","line":49,"range":{"start_line":48,"start_character":0,"end_line":49,"end_character":74},"in_reply_to":"74dc5751_5a53e402","updated":"2023-03-29 19:59:08.000000000","message":"Done","commit_id":"7f358cd906d27582da8affb11de4d7b1c3b7465a"}],"playbooks/common-playbooks/haproxy-service-config.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"1b18a138ba71e4b384a23bdb92abf0a226abfc68","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# Copyright 2023, Cleura AB"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"4cb2e7bd_cf075302","line":1,"updated":"2023-03-16 08:56:41.000000000","message":"this file needs updating to use the approach here https://paste.opendev.org/show/bowVjtmvnimW2myXdEsI/\n\nit is possible that it\u0027s not necessary to reload the inventory, needs a bit of a deeper look at","commit_id":"7f358cd906d27582da8affb11de4d7b1c3b7465a"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"72247a973184fbaebae02ab5b35bd1bf4fc769f2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"# Copyright 2023, Cleura AB"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"070a9afb_76240ef6","line":1,"in_reply_to":"4cb2e7bd_cf075302","updated":"2023-03-29 19:59:08.000000000","message":"Done","commit_id":"7f358cd906d27582da8affb11de4d7b1c3b7465a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"460dadf65a310c9d6dc2ee84cdd7f30a922f7bc1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":34,"id":"3d694f4e_7931ab48","line":42,"updated":"2023-04-18 09:28:08.000000000","message":"I wonder if we should still do refresh_inventory afterwards just in case... I can\u0027t think of real consequences at the moment though if we don\u0027t. But likely good to keep that in mind.","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"e63f809b6958eb27e6eef33efadbd709b9c1858d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"c057b8b3_fe68ce0f","line":42,"in_reply_to":"0f885cb4_3ee6d574","updated":"2023-04-19 10:48:24.000000000","message":"uh, i pasted the wrong link, i was talking about https://review.opendev.org/c/openstack/openstack-ansible-haproxy_server/+/880781","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"9003a63de6fd5b4bb62062eea617ef28c5f006db","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":34,"id":"80649a85_03afe967","line":42,"in_reply_to":"3d694f4e_7931ab48","updated":"2023-04-18 20:20:00.000000000","message":"hmm, i don\u0027t think it\u0027s really necessary\n\n`openstack-ansible /opt/openstack-ansible/playbooks/setup-openstack.yml -t haproxy-service-config` works like a charm and this playbook should be highly vulnerable to inventory issues.\n\nBut if you have some other ideas how can we ensure that everything is okay, I can perform some more tests.\n\nBut that\u0027s good you mentioned it because during my tests i discovered a small issue in haproxy_server role: https://review.opendev.org/c/openstack/openstack-ansible-haproxy_server/+/880781","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"aed78faceee0d2ad7507c1d002d7ffd9dcd21f8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"0f885cb4_3ee6d574","line":42,"in_reply_to":"6bde2b03_c0b592d3","updated":"2023-04-19 09:13:51.000000000","message":"we just talked about it on IRC, we couldn\u0027t fix this issue with clear_facts.\n\nDmitriy reviewed https://review.opendev.org/c/openstack/openstack-ansible/+/871189 so i guess this comment can be mark as resolved.","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"9166173a1a01e999d0443be99bd8000ea7031a53","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":34,"id":"6bde2b03_c0b592d3","line":42,"in_reply_to":"80649a85_03afe967","updated":"2023-04-18 20:22:19.000000000","message":"So this can likely be covered with clear_facts meta task here?\nhttps://docs.ansible.com/ansible/latest/collections/ansible/builtin/meta_module.html#notes\n\nSo when doing multiple imports, the variable won\u0027t survive it.","commit_id":"ef8f8e79c911ca1f394139ab8f632e7b2f416165"}],"playbooks/common-playbooks/nova.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"e3779c43b6244b6cd78e17148824fd186cb63ad6","unresolved":true,"context_lines":[{"line_number":60,"context_line":"      tags:"},{"line_number":61,"context_line":"        - always"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - include_tasks: ../common-tasks/haproxy-service-config.yml"},{"line_number":64,"context_line":"      vars:"},{"line_number":65,"context_line":"        haproxy_services_filtered: \"{{ haproxy_services | selectattr(\u0027haproxy_service_name\u0027, \u0027\u003d\u003d\u0027, backend_name) }}\""},{"line_number":66,"context_line":"      loop_control:"},{"line_number":67,"context_line":"        loop_var: backend_name"},{"line_number":68,"context_line":"      when:"},{"line_number":69,"context_line":"        - \"backend_name in group_names\""},{"line_number":70,"context_line":"      with_items:"},{"line_number":71,"context_line":"        - \"nova_api_metadata\""},{"line_number":72,"context_line":"        - \"nova_api_os_compute\""},{"line_number":73,"context_line":"        - \"nova_console\""},{"line_number":74,"context_line":"      tags: haproxy-service-config"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # In order to ensure that any container, software or"},{"line_number":77,"context_line":"    # config file changes which causes a container/service"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"b5d53898_58c96dad","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":34},"updated":"2023-02-03 19:33:00.000000000","message":"what happens when nova consoles are deployed for ironic where the backend name may (or may not be, depending on the deployment) nova_ironic_console?","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":60,"context_line":"      tags:"},{"line_number":61,"context_line":"        - always"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - include_tasks: ../common-tasks/haproxy-service-config.yml"},{"line_number":64,"context_line":"      vars:"},{"line_number":65,"context_line":"        haproxy_services_filtered: \"{{ haproxy_services | selectattr(\u0027haproxy_service_name\u0027, \u0027\u003d\u003d\u0027, backend_name) }}\""},{"line_number":66,"context_line":"      loop_control:"},{"line_number":67,"context_line":"        loop_var: backend_name"},{"line_number":68,"context_line":"      when:"},{"line_number":69,"context_line":"        - \"backend_name in group_names\""},{"line_number":70,"context_line":"      with_items:"},{"line_number":71,"context_line":"        - \"nova_api_metadata\""},{"line_number":72,"context_line":"        - \"nova_api_os_compute\""},{"line_number":73,"context_line":"        - \"nova_console\""},{"line_number":74,"context_line":"      tags: haproxy-service-config"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # In order to ensure that any container, software or"},{"line_number":77,"context_line":"    # config file changes which causes a container/service"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"86689a59_408f18f2","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":34},"in_reply_to":"58494663_c89dc4ed","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"a3e9c44f7edc8944a95a1f4fa118cb83a4ba8859","unresolved":true,"context_lines":[{"line_number":60,"context_line":"      tags:"},{"line_number":61,"context_line":"        - always"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    - include_tasks: ../common-tasks/haproxy-service-config.yml"},{"line_number":64,"context_line":"      vars:"},{"line_number":65,"context_line":"        haproxy_services_filtered: \"{{ haproxy_services | selectattr(\u0027haproxy_service_name\u0027, \u0027\u003d\u003d\u0027, backend_name) }}\""},{"line_number":66,"context_line":"      loop_control:"},{"line_number":67,"context_line":"        loop_var: backend_name"},{"line_number":68,"context_line":"      when:"},{"line_number":69,"context_line":"        - \"backend_name in group_names\""},{"line_number":70,"context_line":"      with_items:"},{"line_number":71,"context_line":"        - \"nova_api_metadata\""},{"line_number":72,"context_line":"        - \"nova_api_os_compute\""},{"line_number":73,"context_line":"        - \"nova_console\""},{"line_number":74,"context_line":"      tags: haproxy-service-config"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    # In order to ensure that any container, software or"},{"line_number":77,"context_line":"    # config file changes which causes a container/service"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"58494663_c89dc4ed","line":74,"range":{"start_line":63,"start_character":0,"end_line":74,"end_character":34},"in_reply_to":"b5d53898_58c96dad","updated":"2023-02-06 23:23:07.000000000","message":"it has to be named `nova_ironic_console`\nthat\u0027s true, it some kind of limitation but it used to look like that for haproxy-endpoint-manage.yml even before this change.\nIn order to manage haproxy endpoints properly during playbook run, services need to be named:\n- \"nova_api_metadata\"\n- \"nova_api_os_compute\"\n- \"nova_console\"\n\nPS. looks like haproxy-endpoint-manage.yml never worked properly for nova_ironic_console","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"}],"playbooks/common-tasks/haproxy-service-config.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"e3779c43b6244b6cd78e17148824fd186cb63ad6","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    handlers_from: dummy.yml"},{"line_number":9,"context_line":"    apply:"},{"line_number":10,"context_line":"      tags: haproxy-service-config"},{"line_number":11,"context_line":"  loop: \"{{ groups[\u0027haproxy_all\u0027]  }}\""},{"line_number":12,"context_line":"  loop_control:"},{"line_number":13,"context_line":"    loop_var: haproxy_host"},{"line_number":14,"context_line":"  tags: haproxy-service-config"},{"line_number":15,"context_line":"  # run only on first host(regardless of batch count)"},{"line_number":16,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"a26451f7_2fa463b6","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":26},"updated":"2023-02-03 19:33:00.000000000","message":"this feels like an anti-pattern as it is recreating the internal host loop in ansible.","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    handlers_from: dummy.yml"},{"line_number":9,"context_line":"    apply:"},{"line_number":10,"context_line":"      tags: haproxy-service-config"},{"line_number":11,"context_line":"  loop: \"{{ groups[\u0027haproxy_all\u0027]  }}\""},{"line_number":12,"context_line":"  loop_control:"},{"line_number":13,"context_line":"    loop_var: haproxy_host"},{"line_number":14,"context_line":"  tags: haproxy-service-config"},{"line_number":15,"context_line":"  # run only on first host(regardless of batch count)"},{"line_number":16,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"70e3e483_1149efd8","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":26},"in_reply_to":"1d4eeb86_f9846984","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"a3e9c44f7edc8944a95a1f4fa118cb83a4ba8859","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    handlers_from: dummy.yml"},{"line_number":9,"context_line":"    apply:"},{"line_number":10,"context_line":"      tags: haproxy-service-config"},{"line_number":11,"context_line":"  loop: \"{{ groups[\u0027haproxy_all\u0027]  }}\""},{"line_number":12,"context_line":"  loop_control:"},{"line_number":13,"context_line":"    loop_var: haproxy_host"},{"line_number":14,"context_line":"  tags: haproxy-service-config"},{"line_number":15,"context_line":"  # run only on first host(regardless of batch count)"},{"line_number":16,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1d4eeb86_f9846984","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":26},"in_reply_to":"a26451f7_2fa463b6","updated":"2023-02-06 23:23:07.000000000","message":"hmm can you explain it please? i don\u0027t understand what\u0027s wrong here.\n\nlet\u0027s take keystone as an example:\n\ncurrently it picks first keystone host and delegates haproxy-service-config from it to all haproxy hosts.\n\nIt\u0027s a bit tricky but it\u0027s the only way i know to access keystone variables in haproxy role.","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"9071f3b77352f25718852d6abba339c81914b29f","unresolved":true,"context_lines":[{"line_number":17,"context_line":"  include_role:"},{"line_number":18,"context_line":"    name: haproxy_server"},{"line_number":19,"context_line":"    tasks_from: haproxy_service_config_external.yml"},{"line_number":20,"context_line":"    # NOTE(damiandabrowski): some roles may have own handlers like \u0027cert installed\u0027."},{"line_number":21,"context_line":"    # If haproxy_server role has a handler with the same name it will be overriden for the whole parent role."},{"line_number":22,"context_line":"    # To avoid issues with duplicates, we include handlers from a blank file."},{"line_number":23,"context_line":"    handlers_from: dummy.yml"},{"line_number":24,"context_line":"    apply:"},{"line_number":25,"context_line":"      tags: haproxy-service-config"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fbb241e2_bd1b6561","line":22,"range":{"start_line":20,"start_character":4,"end_line":22,"end_character":77},"updated":"2023-02-21 22:19:56.000000000","message":"it would be great if we could be a bit more specific here - is it that the haproxy role calls the pki role, and also another role like glance might also call the pki role with the same name handlers?\n\nfrom the comment as it is now it sounds like we should be renaming a handler, but i feel there is something more complex here","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  include_role:"},{"line_number":18,"context_line":"    name: haproxy_server"},{"line_number":19,"context_line":"    tasks_from: haproxy_service_config_external.yml"},{"line_number":20,"context_line":"    # NOTE(damiandabrowski): some roles may have own handlers like \u0027cert installed\u0027."},{"line_number":21,"context_line":"    # If haproxy_server role has a handler with the same name it will be overriden for the whole parent role."},{"line_number":22,"context_line":"    # To avoid issues with duplicates, we include handlers from a blank file."},{"line_number":23,"context_line":"    handlers_from: dummy.yml"},{"line_number":24,"context_line":"    apply:"},{"line_number":25,"context_line":"      tags: haproxy-service-config"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"71b6bf26_e2e95eab","line":22,"range":{"start_line":20,"start_character":4,"end_line":22,"end_character":77},"in_reply_to":"29aa9b35_c3c8d9da","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":true,"context_lines":[{"line_number":17,"context_line":"  include_role:"},{"line_number":18,"context_line":"    name: haproxy_server"},{"line_number":19,"context_line":"    tasks_from: haproxy_service_config_external.yml"},{"line_number":20,"context_line":"    # NOTE(damiandabrowski): some roles may have own handlers like \u0027cert installed\u0027."},{"line_number":21,"context_line":"    # If haproxy_server role has a handler with the same name it will be overriden for the whole parent role."},{"line_number":22,"context_line":"    # To avoid issues with duplicates, we include handlers from a blank file."},{"line_number":23,"context_line":"    handlers_from: dummy.yml"},{"line_number":24,"context_line":"    apply:"},{"line_number":25,"context_line":"      tags: haproxy-service-config"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"29aa9b35_c3c8d9da","line":22,"range":{"start_line":20,"start_character":4,"end_line":22,"end_character":77},"in_reply_to":"fbb241e2_bd1b6561","updated":"2023-02-22 21:09:27.000000000","message":"you are right, this comment was slightly incorrect.\nI fixed it, hopefully it\u0027s more clear now.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"}],"playbooks/haproxy-install.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":52,"context_line":"      when: haproxy_use_keepalived | bool"},{"line_number":53,"context_line":"      tags:"},{"line_number":54,"context_line":"        - keepalived"},{"line_number":55,"context_line":"    - role: \"haproxy_server\""},{"line_number":56,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":57,"context_line":"  tags:"},{"line_number":58,"context_line":"    - haproxy-config"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f018296f_6ec8d1b9","line":55,"range":{"start_line":55,"start_character":4,"end_line":55,"end_character":28},"updated":"2023-02-14 09:26:48.000000000","message":"This should follow the pattern of the other roles where we override the defaults when calling them..... something like \"vars: haproxy_services: \"{{ haproxy_default_services}}\" here. Doing it like this would mean there was no need to have anything about `haproxy_preconfigured_services` in the haproxy_server role and it would stay completely generic\n\nI think that this playbook should be the place to resolve the \"initial\" configuration of haproxy, and any steps needed to bootstrap a fresh deployment for example with LE rather than put any of that into the haproxy_server role itself.","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      when: haproxy_use_keepalived | bool"},{"line_number":53,"context_line":"      tags:"},{"line_number":54,"context_line":"        - keepalived"},{"line_number":55,"context_line":"    - role: \"haproxy_server\""},{"line_number":56,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":57,"context_line":"  tags:"},{"line_number":58,"context_line":"    - haproxy-config"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"8f4d4437_7a6cc8a8","line":55,"range":{"start_line":55,"start_character":4,"end_line":55,"end_character":28},"in_reply_to":"b43a8bd4_7e6ab59c","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":52,"context_line":"      when: haproxy_use_keepalived | bool"},{"line_number":53,"context_line":"      tags:"},{"line_number":54,"context_line":"        - keepalived"},{"line_number":55,"context_line":"    - role: \"haproxy_server\""},{"line_number":56,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":57,"context_line":"  tags:"},{"line_number":58,"context_line":"    - haproxy-config"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"b43a8bd4_7e6ab59c","line":55,"range":{"start_line":55,"start_character":4,"end_line":55,"end_character":28},"in_reply_to":"f018296f_6ec8d1b9","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"9071f3b77352f25718852d6abba339c81914b29f","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    - name: Check if horizon is enabled"},{"line_number":55,"context_line":"      shell: \u0027echo \"show stat\" | nc -U /var/run/haproxy.stat | grep horizon\u0027"},{"line_number":56,"context_line":"      failed_when: false"},{"line_number":57,"context_line":"      register: haproxy_horizon_enabled"},{"line_number":58,"context_line":"      when:"},{"line_number":59,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":60,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"04c8af61_6a95311a","line":57,"range":{"start_line":57,"start_character":16,"end_line":57,"end_character":39},"updated":"2023-02-21 22:19:56.000000000","message":"where is this used - i\u0027m expecting it to be somewhere near this task...","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    - name: Check if horizon is enabled"},{"line_number":55,"context_line":"      shell: \u0027echo \"show stat\" | nc -U /var/run/haproxy.stat | grep horizon\u0027"},{"line_number":56,"context_line":"      failed_when: false"},{"line_number":57,"context_line":"      register: haproxy_horizon_enabled"},{"line_number":58,"context_line":"      when:"},{"line_number":59,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":60,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"106c35ef_96782abd","line":57,"range":{"start_line":57,"start_character":16,"end_line":57,"end_character":39},"in_reply_to":"04c8af61_6a95311a","updated":"2023-02-22 21:09:27.000000000","message":"it\u0027s used here: https://opendev.org/openstack/openstack-ansible/src/commit/edded900e6a41eea9b1789972a778d3c6c20173f/inventory/group_vars/haproxy/haproxy.yml#L35\n\nmaybe it\u0027s not super obvious when you look at haproxy-install.yml, but it should be fairly easy to understand when you look at haproxy group_vars.\n\ndo you see any better way how we can do this?","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0f0cdd308ae70ae508795469c02db68fbdb339c3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    - name: Check if horizon is enabled"},{"line_number":55,"context_line":"      shell: \u0027echo \"show stat\" | nc -U /var/run/haproxy.stat | grep horizon\u0027"},{"line_number":56,"context_line":"      failed_when: false"},{"line_number":57,"context_line":"      register: haproxy_horizon_enabled"},{"line_number":58,"context_line":"      when:"},{"line_number":59,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":60,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"e8700a34_1d6c893f","line":57,"range":{"start_line":57,"start_character":16,"end_line":57,"end_character":39},"in_reply_to":"106c35ef_96782abd","updated":"2023-03-29 20:01:21.000000000","message":"not relevant anymore","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"9071f3b77352f25718852d6abba339c81914b29f","unresolved":true,"context_lines":[{"line_number":68,"context_line":"    - role: \"haproxy_server\""},{"line_number":69,"context_line":"      haproxy_service_configs: \"{{ haproxy_default_services + haproxy_extra_services | default([]) }}\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  post_tasks:"},{"line_number":72,"context_line":"    - name: Remove temporary certbot service"},{"line_number":73,"context_line":"      include_role:"},{"line_number":74,"context_line":"        name: haproxy_server"},{"line_number":75,"context_line":"        tasks_from: haproxy_service_config.yml"},{"line_number":76,"context_line":"        apply:"},{"line_number":77,"context_line":"          tags: letsencrypt"},{"line_number":78,"context_line":"      vars:"},{"line_number":79,"context_line":"        haproxy_service_configs: \"[ {{ haproxy_certbot_service | combine({\u0027haproxy_service_enabled\u0027: False}) }} ]\""},{"line_number":80,"context_line":"      when:"},{"line_number":81,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":82,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"},{"line_number":83,"context_line":"      tags: always"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":86,"context_line":"  tags:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"6228c09f_3483bad8","line":83,"range":{"start_line":71,"start_character":0,"end_line":83,"end_character":18},"updated":"2023-02-21 22:19:56.000000000","message":"the certbot service is currently removed at the end of the haproxy play when LE is enabled\n\nwhat happens when horizon is not installed and the certificate needs to be renewed with http-01?\n\ni would expect the haproxy_certbot_service to be removed as part of the horizon playbook so that everything is in the correct state at the end of setup-openstack.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    - role: \"haproxy_server\""},{"line_number":69,"context_line":"      haproxy_service_configs: \"{{ haproxy_default_services + haproxy_extra_services | default([]) }}\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  post_tasks:"},{"line_number":72,"context_line":"    - name: Remove temporary certbot service"},{"line_number":73,"context_line":"      include_role:"},{"line_number":74,"context_line":"        name: haproxy_server"},{"line_number":75,"context_line":"        tasks_from: haproxy_service_config.yml"},{"line_number":76,"context_line":"        apply:"},{"line_number":77,"context_line":"          tags: letsencrypt"},{"line_number":78,"context_line":"      vars:"},{"line_number":79,"context_line":"        haproxy_service_configs: \"[ {{ haproxy_certbot_service | combine({\u0027haproxy_service_enabled\u0027: False}) }} ]\""},{"line_number":80,"context_line":"      when:"},{"line_number":81,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":82,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"},{"line_number":83,"context_line":"      tags: always"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":86,"context_line":"  tags:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"6970c9f7_0b410de9","line":83,"range":{"start_line":71,"start_character":0,"end_line":83,"end_character":18},"in_reply_to":"2975f61e_ce7771db","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"21956d8d7b00466484edf272f9d025ced00ea784","unresolved":true,"context_lines":[{"line_number":68,"context_line":"    - role: \"haproxy_server\""},{"line_number":69,"context_line":"      haproxy_service_configs: \"{{ haproxy_default_services + haproxy_extra_services | default([]) }}\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"  post_tasks:"},{"line_number":72,"context_line":"    - name: Remove temporary certbot service"},{"line_number":73,"context_line":"      include_role:"},{"line_number":74,"context_line":"        name: haproxy_server"},{"line_number":75,"context_line":"        tasks_from: haproxy_service_config.yml"},{"line_number":76,"context_line":"        apply:"},{"line_number":77,"context_line":"          tags: letsencrypt"},{"line_number":78,"context_line":"      vars:"},{"line_number":79,"context_line":"        haproxy_service_configs: \"[ {{ haproxy_certbot_service | combine({\u0027haproxy_service_enabled\u0027: False}) }} ]\""},{"line_number":80,"context_line":"      when:"},{"line_number":81,"context_line":"        - haproxy_ssl_letsencrypt_enable | bool"},{"line_number":82,"context_line":"        - haproxy_ssl_letsencrypt_certbot_challenge \u003d\u003d \u0027http-01\u0027"},{"line_number":83,"context_line":"      tags: always"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":86,"context_line":"  tags:"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"2975f61e_ce7771db","line":83,"range":{"start_line":71,"start_character":0,"end_line":83,"end_character":18},"in_reply_to":"6228c09f_3483bad8","updated":"2023-02-22 21:09:27.000000000","message":"\u003e i would expect the haproxy_certbot_service to be removed as part of the horizon playbook so that everything is in the correct state at the end of setup-openstack.\n\nactually it\u0027s a great idea. I don\u0027t know why I didn\u0027t come up with this before.\n\nFixed.","commit_id":"edded900e6a41eea9b1789972a778d3c6c20173f"}],"playbooks/os-glance-install.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"e3779c43b6244b6cd78e17148824fd186cb63ad6","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"6139dd71_636d887b","line":42,"updated":"2023-02-03 19:33:00.000000000","message":"why do we not make this simpler and add another play just before this one which targets haproxy_all?","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"a3e9c44f7edc8944a95a1f4fa118cb83a4ba8859","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"650cab03_b4514a4a","line":42,"in_reply_to":"6139dd71_636d887b","updated":"2023-02-06 23:23:07.000000000","message":"it\u0027s not that simple, if we do as you say, we won\u0027t be able to access service(for ex. keystone) variables there.\n\nit means that haproxy won\u0027t know whether to configure backends to communicate over TLS or not.","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"da68f2aa_23a38d86","line":42,"in_reply_to":"650cab03_b4514a4a","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"245f39e5159dc2a9401c5c910fd25c82e7041507"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"a4391400_c42ad0bf","line":42,"updated":"2023-02-14 09:26:48.000000000","message":"During the construction of a list here it would also be a place that you could use `combine` to keep the existing `haproxy_glance_api_service_overrides` variable.","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"62884e3d_69d5bcf5","line":42,"updated":"2023-02-14 09:26:48.000000000","message":"This is the point to use \n\n  vars:\n    haproxy_services: \"{{ glance_haproxy_services }}\"\n    \nin order to override the default in the haproxy_server role. It is much better to make this explicit here rather than implicit as it is at the moment, and will make it so that the same name variable `haproxy_services` does not appear in all the group_vars","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"b11e05cc_53f9e6a5","line":42,"in_reply_to":"21517df3_e4f89385","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f716aad1_cf2446d0","line":42,"in_reply_to":"62884e3d_69d5bcf5","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"21517df3_e4f89385","line":42,"in_reply_to":"a4391400_c42ad0bf","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # config file changes which causes a container/service"},{"line_number":40,"context_line":"    # restart do not cause an unexpected outage, we drain"},{"line_number":41,"context_line":"    # the load balancer back end for this container."},{"line_number":42,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":43,"context_line":"      tags: haproxy-service-config"},{"line_number":44,"context_line":"    - include_tasks: common-tasks/haproxy-endpoint-manage.yml"},{"line_number":45,"context_line":"      vars:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ba2ff02e_1d9bea05","line":42,"in_reply_to":"f716aad1_cf2446d0","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"}],"playbooks/os-mistral-install.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e190b90ec1bf8eaaab91675d15551a54e1c3d9e8","unresolved":true,"context_lines":[{"line_number":33,"context_line":"    - haproxy-service-config"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- name: Install mistral components"},{"line_number":36,"context_line":"  hosts: mistral_api"},{"line_number":37,"context_line":"  gather_facts: false"},{"line_number":38,"context_line":"  serial: \"{{ mistral_serial | default([\u00271\u0027,\u0027100%\u0027]) }}\""},{"line_number":39,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""}],"source_content_type":"text/x-yaml","patch_set":31,"id":"77ff6fd2_38a79754","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":20},"updated":"2023-04-10 09:01:19.000000000","message":"wait, why are we changing this?","commit_id":"986052137628f01ceea92c7272474882c30ee312"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"3f4dfb647bf0c6973406e2c6b3af6c2bbe7f4338","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    - haproxy-service-config"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- name: Install mistral components"},{"line_number":36,"context_line":"  hosts: mistral_api"},{"line_number":37,"context_line":"  gather_facts: false"},{"line_number":38,"context_line":"  serial: \"{{ mistral_serial | default([\u00271\u0027,\u0027100%\u0027]) }}\""},{"line_number":39,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""}],"source_content_type":"text/x-yaml","patch_set":31,"id":"c0a2f369_bc01e9a9","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":20},"in_reply_to":"77ff6fd2_38a79754","updated":"2023-04-11 13:28:06.000000000","message":"that\u0027s a good question :D \nthis change was added in patchset 15(uploaded by you). So I assume it was a mistake.\n\nfixed","commit_id":"986052137628f01ceea92c7272474882c30ee312"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"c347b5b2dd5045c330780406614e1105013b79dc","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    - haproxy-service-config"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"- name: Install mistral components"},{"line_number":36,"context_line":"  hosts: mistral_api"},{"line_number":37,"context_line":"  gather_facts: false"},{"line_number":38,"context_line":"  serial: \"{{ mistral_serial | default([\u00271\u0027,\u0027100%\u0027]) }}\""},{"line_number":39,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""}],"source_content_type":"text/x-yaml","patch_set":31,"id":"25e588c1_d74a06ed","line":36,"range":{"start_line":36,"start_character":9,"end_line":36,"end_character":20},"in_reply_to":"c0a2f369_bc01e9a9","updated":"2023-04-11 17:45:35.000000000","message":"hehe, sorry for that 😄","commit_id":"986052137628f01ceea92c7272474882c30ee312"}],"playbooks/rabbitmq-install.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6ccbf831e754fdd0c086aa33fc17304b34db23fa","unresolved":true,"context_lines":[{"line_number":64,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":65,"context_line":"      vars:"},{"line_number":66,"context_line":"        haproxy_service_configs: \"{{ rabbitmq_haproxy_services }}\""},{"line_number":67,"context_line":"      tags: haproxy-service-config"},{"line_number":68,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":69,"context_line":"  tags:"},{"line_number":70,"context_line":"    - rabbitmq"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"52f3e335_c6063389","line":67,"range":{"start_line":67,"start_character":6,"end_line":67,"end_character":34},"updated":"2023-02-28 16:35:53.000000000","message":"Hm, why tags does work for include_tasks this way? As they should not according to https://docs.ansible.com/ansible/latest/collections/ansible/builtin/include_tasks_module.html#examples\n\nBUT, I see them kind of working for some reason. But there\u0027s some trouble with rabbit at very least:\n\nhttps://paste.openstack.org/show/bqXKmyPlD2g8IPRO9oqc/\n\nI\u0027ve tested and it doesn\u0027t seem to be related to how tags are being applied.","commit_id":"a1b8ad64f7f69c49c7f9da0230008eae0f6c0dc3"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    - include_tasks: common-tasks/haproxy-service-config.yml"},{"line_number":65,"context_line":"      vars:"},{"line_number":66,"context_line":"        haproxy_service_configs: \"{{ rabbitmq_haproxy_services }}\""},{"line_number":67,"context_line":"      tags: haproxy-service-config"},{"line_number":68,"context_line":"  environment: \"{{ deployment_environment_variables | default({}) }}\""},{"line_number":69,"context_line":"  tags:"},{"line_number":70,"context_line":"    - rabbitmq"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"e96a9c1d_690c9219","line":67,"range":{"start_line":67,"start_character":6,"end_line":67,"end_character":34},"in_reply_to":"52f3e335_c6063389","updated":"2023-03-01 22:57:08.000000000","message":"tags work because the only task in common-tasks/haproxy-service-config.yml has this tag explicitly set\n\nrabbitmq tag issue was fixed in https://review.opendev.org/c/openstack/openstack-ansible-rabbitmq_server/+/875971","commit_id":"a1b8ad64f7f69c49c7f9da0230008eae0f6c0dc3"}],"releasenotes/notes/separated-haproxy-service-config-9ccecbcb286355ef.yaml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8ca8bc8de432676de1b62111570cc83702648b2c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Haproxy services are now configured separately at the beginning of each"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"cd1e4e42_9feb5a7d","line":1,"updated":"2023-04-06 16:12:40.000000000","message":"I think we should also cover that haproxy service configurations is placed now in different place.","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"b56234e361e485b3470e28632cf2d9e0b8367a51","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Haproxy services are now configured separately at the beginning of each"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"bcceb107_149eb016","line":1,"in_reply_to":"96bdbd92_10d8c140","updated":"2023-04-06 23:04:30.000000000","message":"done","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"818626e0211b7b142338a7666e1b33614c5936b1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Haproxy services are now configured separately at the beginning of each"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"96bdbd92_10d8c140","line":1,"in_reply_to":"cd1e4e42_9feb5a7d","updated":"2023-04-06 16:15:48.000000000","message":"I assume that old overrides (like haproxy_glance_api_service) defined in group_vars/haproxy_all won\u0027t work, right? Then we should also add upgrade release note that will cover moving overrides to appropriate place.","commit_id":"ee65ab9058b81ac91ef8709f082ced3888813b02"}],"scripts/upgrade-utilities/deploy-config-changes.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"2fe11e6f75c23052dd05917d6c5b5c3ecf1a2cc0","unresolved":true,"context_lines":[{"line_number":97,"context_line":"      tags:"},{"line_number":98,"context_line":"        - remove-fact-cache"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    # NOTE(damiandabrowski): To be removed after 2024.1"},{"line_number":101,"context_line":"    - name: Check if removed haproxy_*_service_overrides variables are still being used"},{"line_number":102,"context_line":"      find:"},{"line_number":103,"context_line":"        paths: \"{{ lookup(\u0027env\u0027, \u0027OSA_CONFIG_DIR\u0027) | default(\u0027/etc/openstack_deploy\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"46375fcd_5082c627","line":100,"updated":"2023-02-14 09:26:48.000000000","message":"This is really unfortunate - a user asked for these override vars to be added very recently so it\u0027s not great to be removing them.","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"0500226ae0a31582d825503c69fbcd68f95086ee","unresolved":true,"context_lines":[{"line_number":97,"context_line":"      tags:"},{"line_number":98,"context_line":"        - remove-fact-cache"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    # NOTE(damiandabrowski): To be removed after 2024.1"},{"line_number":101,"context_line":"    - name: Check if removed haproxy_*_service_overrides variables are still being used"},{"line_number":102,"context_line":"      find:"},{"line_number":103,"context_line":"        paths: \"{{ lookup(\u0027env\u0027, \u0027OSA_CONFIG_DIR\u0027) | default(\u0027/etc/openstack_deploy\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f3b52948_f4755321","line":100,"in_reply_to":"46375fcd_5082c627","updated":"2023-02-16 13:54:41.000000000","message":"fixed","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"32a827d473a4daa4f376ac85e03f97fafe863178","unresolved":false,"context_lines":[{"line_number":97,"context_line":"      tags:"},{"line_number":98,"context_line":"        - remove-fact-cache"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    # NOTE(damiandabrowski): To be removed after 2024.1"},{"line_number":101,"context_line":"    - name: Check if removed haproxy_*_service_overrides variables are still being used"},{"line_number":102,"context_line":"      find:"},{"line_number":103,"context_line":"        paths: \"{{ lookup(\u0027env\u0027, \u0027OSA_CONFIG_DIR\u0027) | default(\u0027/etc/openstack_deploy\u0027) }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"6a7fd9be_0f0b79ba","line":100,"in_reply_to":"f3b52948_f4755321","updated":"2023-03-01 22:57:08.000000000","message":"Done","commit_id":"a14f98706cb39fabe4b6ba7b62edc8f9ff8dd5f0"}]}
