)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"95ebca6acf5ba6d8d8806af5a186d8312657e85a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f37540f7_afef0c24","updated":"2024-11-10 10:57:50.000000000","message":"for now slightly a blind spot for me is how to use 2 different wildcards for internal/external endpoints.\nAs the only option seems that you need to have same external_lb_vip_address and internal_lb_vip_address, and differntiate by `identity/int-identity`. But same vips are not allowed as of today.\n\nAnd haproxy_user_ssl_cert/haproxy_user_ssl_key are pretty much same for internal/external vips in current config.\n\nSo they pretty much MUST be SAN. Or we need to document better how to workaround the default here: https://opendev.org/openstack/openstack-ansible-haproxy_server/src/commit/efaee49680542994a2b1d02ce9448f27f6618f6c/vars/main.yml#L60","commit_id":"758fb5779f72358781e11572db0aefb3b85f70b5"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8087296a_b2b9ef5d","updated":"2024-11-19 20:34:56.000000000","message":"Ok first pass through, sorry for the delay","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"879fff4e9a6311eac72b2fc3ff1ecf34097077cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"68ae82b5_84de9755","updated":"2024-11-11 14:59:13.000000000","message":"would be awesome if you could check this bit of docs, as I\u0027m really a terrible writer 😊","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"85919dc2_f38fc19e","updated":"2024-11-26 12:43:13.000000000","message":"This is a note to myself - i was going to edit this a bit.","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"cc7deac630c666d9bb7915c29768d96fe63c8579","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"df4b91fe_2524c912","updated":"2024-11-20 08:22:18.000000000","message":"ok, I managed to find some kind of spell checker for my ide to at least get rid of such stupid mistakes...","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"6fdd92ad80fa1cb79b3aa3e6865617a9b49f25d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"abb8512f_fc15ab21","updated":"2024-12-31 00:09:39.000000000","message":"Some nice catches by Jonathan! A few minor grammar suggestions","commit_id":"92a4d9606ec771a7900f07d368af2a369cb8ded7"}],"doc/source/user/prod/pretty_endpoint_naming.rst":[{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":2,"context_line":"Using domain (or path) based endpoints instead of port-based"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"By default OpenStack-Ansible does use port-based endpoints. This means, that"},{"line_number":6,"context_line":"each service will be served on it\u0027s unique port for both public and internal"},{"line_number":7,"context_line":"endpoints. For example, Keystone will be added as"},{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3b6a8f48_8dd6285f","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":37},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nBy default, OpenStack-Ansible uses port-based endpoints. This means, that\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":2,"context_line":"Using domain (or path) based endpoints instead of port-based"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"By default OpenStack-Ansible does use port-based endpoints. This means, that"},{"line_number":6,"context_line":"each service will be served on it\u0027s unique port for both public and internal"},{"line_number":7,"context_line":"endpoints. For example, Keystone will be added as"},{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"}],"source_content_type":"text/x-rst","patch_set":8,"id":"12363ced_1c1a0ab9","line":5,"range":{"start_line":5,"start_character":29,"end_line":5,"end_character":37},"in_reply_to":"3b6a8f48_8dd6285f","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"By default OpenStack-Ansible does use port-based endpoints. This means, that"},{"line_number":6,"context_line":"each service will be served on it\u0027s unique port for both public and internal"},{"line_number":7,"context_line":"endpoints. For example, Keystone will be added as"},{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"},{"line_number":9,"context_line":"on."}],"source_content_type":"text/x-rst","patch_set":8,"id":"d4b361f4_53d57f00","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":35},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\neach service will be served on its own unique port for both public and internal\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2e6b8cb30b8423f7b9a7003e44a740b52d7f0782","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"By default OpenStack-Ansible does use port-based endpoints. This means, that"},{"line_number":6,"context_line":"each service will be served on it\u0027s unique port for both public and internal"},{"line_number":7,"context_line":"endpoints. For example, Keystone will be added as"},{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"},{"line_number":9,"context_line":"on."}],"source_content_type":"text/x-rst","patch_set":8,"id":"17a3ce37_b933d797","line":6,"range":{"start_line":6,"start_character":31,"end_line":6,"end_character":35},"in_reply_to":"d4b361f4_53d57f00","updated":"2024-11-20 08:12:31.000000000","message":"Done","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"},{"line_number":9,"context_line":"on."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1c8f5f27_3c869816","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":39},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nWhile this is the simplest approach, as it does not require any extra\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":8,"context_line":"``https://domain.com:5000/v3``, Nova as ``https://domain.com:8774/v2.1`` and so"},{"line_number":9,"context_line":"on."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1d77e004_f77d699e","line":11,"range":{"start_line":11,"start_character":37,"end_line":11,"end_character":39},"in_reply_to":"1c8f5f27_3c869816","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":9,"context_line":"on."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"41f9bdb8_b5005731","line":12,"range":{"start_line":12,"start_character":18,"end_line":12,"end_character":22},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nconfiguration and is easy to start with, it also has some disadvantages.\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2e6b8cb30b8423f7b9a7003e44a740b52d7f0782","unresolved":false,"context_lines":[{"line_number":9,"context_line":"on."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"29a1c8ca_281875b5","line":12,"range":{"start_line":12,"start_character":18,"end_line":12,"end_character":22},"in_reply_to":"41f9bdb8_b5005731","updated":"2024-11-20 08:12:31.000000000","message":"Done","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In order to workaround such limitations starting from 2023.1 (Antelope) release"},{"line_number":17,"context_line":"it is possible to have domain-based or path-based endpoints instead."}],"source_content_type":"text/x-rst","patch_set":8,"id":"f522394d_9b6065be","line":14,"range":{"start_line":14,"start_character":16,"end_line":14,"end_character":65},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nto custom ports which completely disables the ability to use them in such deployments.\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":11,"context_line":"While this is the simplest approach, as does not require any extra"},{"line_number":12,"context_line":"configuration and easy to start with, it also have some disadvatages."},{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In order to workaround such limitations starting from 2023.1 (Antelope) release"},{"line_number":17,"context_line":"it is possible to have domain-based or path-based endpoints instead."}],"source_content_type":"text/x-rst","patch_set":8,"id":"09955450_4c837092","line":14,"range":{"start_line":14,"start_character":16,"end_line":14,"end_character":65},"in_reply_to":"f522394d_9b6065be","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In order to workaround such limitations starting from 2023.1 (Antelope) release"},{"line_number":17,"context_line":"it is possible to have domain-based or path-based endpoints instead."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"d4beb6f7_c9f97146","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nIn order to workaround such limitations, starting from 2023.1 (Antelope) release,\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":13,"context_line":"For example, some clients or organizations might not be allowed to connect"},{"line_number":14,"context_line":"to custom ports completely disabling them to use such deployments."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"In order to workaround such limitations starting from 2023.1 (Antelope) release"},{"line_number":17,"context_line":"it is possible to have domain-based or path-based endpoints instead."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"f636feaf_b0ec316d","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":2},"in_reply_to":"d4beb6f7_c9f97146","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":20,"context_line":"Configuring domain-based endpoints (recommended)"},{"line_number":21,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Domain-based endpoints mean to separate services based on FQDNs. Usually for"},{"line_number":24,"context_line":"this purpose subdomains are used. For example, Keystone endpoint may look"},{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."}],"source_content_type":"text/x-rst","patch_set":8,"id":"4d3eee39_732a35f3","line":23,"range":{"start_line":23,"start_character":22,"end_line":23,"end_character":48},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nDomain-based endpoints are separated services based on FQDNs. Usually for\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Configuring domain-based endpoints (recommended)"},{"line_number":21,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Domain-based endpoints mean to separate services based on FQDNs. Usually for"},{"line_number":24,"context_line":"this purpose subdomains are used. For example, Keystone endpoint may look"},{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."}],"source_content_type":"text/x-rst","patch_set":8,"id":"53d5d905_9e98fbef","line":23,"range":{"start_line":23,"start_character":22,"end_line":23,"end_character":48},"in_reply_to":"4d3eee39_732a35f3","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As a pre-requisite for such setup you need to ensure that corresponsive"},{"line_number":29,"context_line":"`A` or `CNAME` records are present for your domain. Also you need to ensure"},{"line_number":30,"context_line":"having a valid wildcard or SAN certificates for public/internal endpoints."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a7e09128_c1499fda","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":2},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nAs a pre-requisite for this type of setup you need to ensure that corresponding\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As a pre-requisite for such setup you need to ensure that corresponsive"},{"line_number":29,"context_line":"`A` or `CNAME` records are present for your domain. Also you need to ensure"},{"line_number":30,"context_line":"having a valid wildcard or SAN certificates for public/internal endpoints."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"269e3d07_e73c3974","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":2},"in_reply_to":"a7e09128_c1499fda","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":99,"context_line":"Service configuration"},{"line_number":100,"context_line":"---------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables does have following format:"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"5645c775_cbb65e4c","line":102,"range":{"start_line":102,"start_character":56,"end_line":102,"end_character":60},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nAlong with HAProxy configuration we also need to ensure that the endpoint catalog\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Service configuration"},{"line_number":100,"context_line":"---------------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables does have following format:"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"dc1ebe26_97ad45eb","line":102,"range":{"start_line":102,"start_character":56,"end_line":102,"end_character":60},"in_reply_to":"5645c775_cbb65e4c","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables does have following format:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* `\u003cservice\u003e_service_publicuri`"},{"line_number":107,"context_line":"* `\u003cservice\u003e_service_internaluri`"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1b75527a_1817f91b","line":104,"range":{"start_line":104,"start_character":46,"end_line":104,"end_character":50},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nneeds to be overriden. Usually such variables has the following format:\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables does have following format:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* `\u003cservice\u003e_service_publicuri`"},{"line_number":107,"context_line":"* `\u003cservice\u003e_service_internaluri`"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c0ad2dab_4b483e7e","line":104,"range":{"start_line":104,"start_character":46,"end_line":104,"end_character":50},"in_reply_to":"1b75527a_1817f91b","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":140,"context_line":"      - \"identity.{{ external_lb_vip_address }}\""},{"line_number":141,"context_line":"      - \"compute.{{ external_lb_vip_address }}\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Please mention, that Internal FQDNs are still going to be covered with"},{"line_number":144,"context_line":"self-signed certificates as in most use-cases Let\u0027s Encrypt should not be"},{"line_number":145,"context_line":"able to verify domain ownership for internal VIPs, unles dns-01 auth is used."},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"e9522d09_8dc533ac","line":143,"range":{"start_line":143,"start_character":7,"end_line":143,"end_character":14},"updated":"2024-11-19 20:34:56.000000000","message":"Should this be note?","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2e6b8cb30b8423f7b9a7003e44a740b52d7f0782","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      - \"identity.{{ external_lb_vip_address }}\""},{"line_number":141,"context_line":"      - \"compute.{{ external_lb_vip_address }}\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Please mention, that Internal FQDNs are still going to be covered with"},{"line_number":144,"context_line":"self-signed certificates as in most use-cases Let\u0027s Encrypt should not be"},{"line_number":145,"context_line":"able to verify domain ownership for internal VIPs, unles dns-01 auth is used."},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"6e067801_2d11f71d","line":143,"range":{"start_line":143,"start_character":7,"end_line":143,"end_character":14},"in_reply_to":"e9522d09_8dc533ac","updated":"2024-11-20 08:12:31.000000000","message":"Done","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":205,"context_line":"    a conflict."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"While path-based endpoints might look tempting due to using FQDN and"},{"line_number":208,"context_line":"thus not having need for wildcard TLS, they are harder to maintain and more"},{"line_number":209,"context_line":"complex to setup. Also worth mentioning, that not all services are ready"},{"line_number":210,"context_line":"to support path-based endpoints, despite this approach being used in Devstack."},{"line_number":211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"a078ed70_a76ef40a","line":208,"range":{"start_line":208,"start_character":16,"end_line":208,"end_character":20},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nthus not having the need for wildcard TLS, they are harder to maintain and more\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    a conflict."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"While path-based endpoints might look tempting due to using FQDN and"},{"line_number":208,"context_line":"thus not having need for wildcard TLS, they are harder to maintain and more"},{"line_number":209,"context_line":"complex to setup. Also worth mentioning, that not all services are ready"},{"line_number":210,"context_line":"to support path-based endpoints, despite this approach being used in Devstack."},{"line_number":211,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9dc4ae10_ccdad796","line":208,"range":{"start_line":208,"start_character":16,"end_line":208,"end_character":20},"in_reply_to":"a078ed70_a76ef40a","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":218,"context_line":"HAProxy configuration"},{"line_number":219,"context_line":"---------------------"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Alike to domain-based endpoints we rely on HAProxy maps functionality. But instead of"},{"line_number":222,"context_line":"``map_dom`` we will be using ``map_reg``."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"So we need to define a map file to be used and a way to parse it. For that we"}],"source_content_type":"text/x-rst","patch_set":8,"id":"611499cf_bb9f39e4","line":221,"range":{"start_line":221,"start_character":0,"end_line":221,"end_character":5},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nSimilar to domain-based endpoints we rely on HAProxy maps functionality. But instead of\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":218,"context_line":"HAProxy configuration"},{"line_number":219,"context_line":"---------------------"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Alike to domain-based endpoints we rely on HAProxy maps functionality. But instead of"},{"line_number":222,"context_line":"``map_dom`` we will be using ``map_reg``."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"So we need to define a map file to be used and a way to parse it. For that we"}],"source_content_type":"text/x-rst","patch_set":8,"id":"498a5714_332fc69a","line":221,"range":{"start_line":221,"start_character":0,"end_line":221,"end_character":5},"in_reply_to":"611499cf_bb9f39e4","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":278,"context_line":"Service configuration"},{"line_number":279,"context_line":"---------------------"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"Alike to the domain-based endpoints we need to override endpoints defenition"},{"line_number":282,"context_line":"for each service. Endpoints are usually defined with following variables:"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* `\u003cservice\u003e_service_publicuri`"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dd3ebcba_20209d77","line":281,"range":{"start_line":281,"start_character":0,"end_line":281,"end_character":5},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nSimilar to the domain-based endpoints we need to override endpoints defenition\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":278,"context_line":"Service configuration"},{"line_number":279,"context_line":"---------------------"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"Alike to the domain-based endpoints we need to override endpoints defenition"},{"line_number":282,"context_line":"for each service. Endpoints are usually defined with following variables:"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"* `\u003cservice\u003e_service_publicuri`"}],"source_content_type":"text/x-rst","patch_set":8,"id":"23bd0801_4c1091fa","line":281,"range":{"start_line":281,"start_character":0,"end_line":281,"end_character":5},"in_reply_to":"dd3ebcba_20209d77","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"303b77d7744e70c7be07ee9007f7eb41ffcfce38","unresolved":true,"context_lines":[{"line_number":297,"context_line":"    nova_service_internaluri: \"{{ openstack_service_internaluri_proto }}://{{ internal_lb_vip_address }}/compute\""},{"line_number":298,"context_line":"    nova_service_adminuri: \"{{ openstack_service_adminuri_proto }}://{{ internal_lb_vip_address }}/compute\""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"However, there is another important part of configuration required per service which"},{"line_number":301,"context_line":"is not a case for domain-based setup."},{"line_number":302,"context_line":"All services assume that they\u0027ve been served on root path (ie `/`) while in path-based"},{"line_number":303,"context_line":"approach we use a unique path for each service."}],"source_content_type":"text/x-rst","patch_set":8,"id":"b1f5192f_5053622b","line":300,"range":{"start_line":300,"start_character":44,"end_line":300,"end_character":57},"updated":"2024-11-19 20:34:56.000000000","message":"```suggestion\nHowever, there is another important part of the configuration required per service which\n```","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6ce368b3e5ee8be6fe9987921a8d05be5deb108","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    nova_service_internaluri: \"{{ openstack_service_internaluri_proto }}://{{ internal_lb_vip_address }}/compute\""},{"line_number":298,"context_line":"    nova_service_adminuri: \"{{ openstack_service_adminuri_proto }}://{{ internal_lb_vip_address }}/compute\""},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"However, there is another important part of configuration required per service which"},{"line_number":301,"context_line":"is not a case for domain-based setup."},{"line_number":302,"context_line":"All services assume that they\u0027ve been served on root path (ie `/`) while in path-based"},{"line_number":303,"context_line":"approach we use a unique path for each service."}],"source_content_type":"text/x-rst","patch_set":8,"id":"4d6b70eb_80345d9d","line":300,"range":{"start_line":300,"start_character":44,"end_line":300,"end_character":57},"in_reply_to":"b1f5192f_5053622b","updated":"2024-11-20 08:10:26.000000000","message":"Fix applied.","commit_id":"043bafe6792724c76596e067f7908518925645b0"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":20,"context_line":"Configuring domain-based endpoints (recommended)"},{"line_number":21,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Domain-based endpoints are separated services based on FQDNs. Usually for"},{"line_number":24,"context_line":"this purpose subdomains are used. For example, Keystone endpoint may look"},{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."}],"source_content_type":"text/x-rst","patch_set":10,"id":"c16a896b_4494b106","line":23,"range":{"start_line":23,"start_character":23,"end_line":23,"end_character":36},"updated":"2024-11-26 12:43:13.000000000","message":"direct requests to specific services","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Configuring domain-based endpoints (recommended)"},{"line_number":21,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Domain-based endpoints are separated services based on FQDNs. Usually for"},{"line_number":24,"context_line":"this purpose subdomains are used. For example, Keystone endpoint may look"},{"line_number":25,"context_line":"like ``https://identity.domain.com`` while Nova endpoint can be like"},{"line_number":26,"context_line":"``https://compute.domain.com``."}],"source_content_type":"text/x-rst","patch_set":10,"id":"79d52e0a_3216e54f","line":23,"range":{"start_line":23,"start_character":23,"end_line":23,"end_character":36},"in_reply_to":"c16a896b_4494b106","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Prevent creation of a front-end per service. As we are now expecting traffic"},{"line_number":43,"context_line":"  to come only on default `80` and `443` ports there is no need to have a"},{"line_number":44,"context_line":"  separate frontend per service. Map files in topic will be parsed by a \"base\""},{"line_number":45,"context_line":"  frontend that is being deployed with haproxy_server role regardless of"},{"line_number":46,"context_line":"  service defenitions"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  .. note::"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"e23e3d27_8eeb9dcf","line":46,"range":{"start_line":44,"start_character":33,"end_line":46,"end_character":21},"updated":"2024-11-26 12:43:13.000000000","message":"A haproxy map file is attached to a \"base\" frontend which is deployed with the haproxy_server role and is independent of any service definitions. The map file can be used to direct incoming requests to specific backends by using rules defined in the map file to match against host request headers.","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"* Prevent creation of a front-end per service. As we are now expecting traffic"},{"line_number":43,"context_line":"  to come only on default `80` and `443` ports there is no need to have a"},{"line_number":44,"context_line":"  separate frontend per service. Map files in topic will be parsed by a \"base\""},{"line_number":45,"context_line":"  frontend that is being deployed with haproxy_server role regardless of"},{"line_number":46,"context_line":"  service defenitions"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"  .. note::"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"05c59e8b_1916da28","line":46,"range":{"start_line":44,"start_character":33,"end_line":46,"end_character":21},"in_reply_to":"e23e3d27_8eeb9dcf","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that the endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables has the following format:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* `\u003cservice\u003e_service_publicuri`"},{"line_number":107,"context_line":"* `\u003cservice\u003e_service_internaluri`"}],"source_content_type":"text/x-rst","patch_set":10,"id":"e40c3661_25fe8179","line":104,"range":{"start_line":104,"start_character":46,"end_line":104,"end_character":49},"updated":"2024-11-26 12:43:13.000000000","message":"have","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Along with HAProxy configuration we also need to ensure that the endpoint catalog"},{"line_number":103,"context_line":"will be populated with correct URIs. Each service has a set of variables that"},{"line_number":104,"context_line":"needs to be overriden. Usually such variables has the following format:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* `\u003cservice\u003e_service_publicuri`"},{"line_number":107,"context_line":"* `\u003cservice\u003e_service_internaluri`"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bc072c09_8bf9b693","line":104,"range":{"start_line":104,"start_character":46,"end_line":104,"end_character":49},"in_reply_to":"e40c3661_25fe8179","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":211,"context_line":"complex to setup. Also worth mentioning, that not all services are ready"},{"line_number":212,"context_line":"to support path-based endpoints, despite this approach being used in Devstack."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Good exmaple of exceptions which do not support path-based endpoints at the moment"},{"line_number":215,"context_line":"are VNC consoles for VMs (to be implemented with"},{"line_number":216,"context_line":"`blueprint \u003chttps://blueprints.launchpad.net/nova/+spec/novnc-base-url-respect-extra-params\u003e`_),"},{"line_number":217,"context_line":"Magnum (`bug report \u003chttps://launchpad.net/bugs/2083168\u003e`) and Ceph Rados Gateway."}],"source_content_type":"text/x-rst","patch_set":10,"id":"2fce9995_4cb56e61","line":214,"range":{"start_line":214,"start_character":5,"end_line":214,"end_character":12},"updated":"2024-11-26 12:43:13.000000000","message":"example","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":211,"context_line":"complex to setup. Also worth mentioning, that not all services are ready"},{"line_number":212,"context_line":"to support path-based endpoints, despite this approach being used in Devstack."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Good exmaple of exceptions which do not support path-based endpoints at the moment"},{"line_number":215,"context_line":"are VNC consoles for VMs (to be implemented with"},{"line_number":216,"context_line":"`blueprint \u003chttps://blueprints.launchpad.net/nova/+spec/novnc-base-url-respect-extra-params\u003e`_),"},{"line_number":217,"context_line":"Magnum (`bug report \u003chttps://launchpad.net/bugs/2083168\u003e`) and Ceph Rados Gateway."}],"source_content_type":"text/x-rst","patch_set":10,"id":"d8663707_e249fbd5","line":214,"range":{"start_line":214,"start_character":5,"end_line":214,"end_character":12},"in_reply_to":"2fce9995_4cb56e61","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. warning::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    Example bellow does not represent a correct approach on how to"},{"line_number":313,"context_line":"    configure path-based endpoint for most of services"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":".. code:: yaml"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d50e0706_ec3f07e4","line":312,"range":{"start_line":312,"start_character":12,"end_line":312,"end_character":18},"updated":"2024-11-26 12:43:13.000000000","message":"below","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":".. warning::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    Example bellow does not represent a correct approach on how to"},{"line_number":313,"context_line":"    configure path-based endpoint for most of services"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":".. code:: yaml"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bd13a7a8_379bf8d5","line":312,"range":{"start_line":312,"start_character":12,"end_line":312,"end_character":18},"in_reply_to":"d50e0706_ec3f07e4","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":319,"context_line":"        route: \u0027^/identity(.*)$ rewrite:$1\u0027"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":322,"context_line":"or usecases, despite service will look as completely functional."},{"line_number":323,"context_line":"The problem with approach above is hidden on how service returns `self`"},{"line_number":324,"context_line":"URL when it\u0027s asked for it. Most of services will reply with their"},{"line_number":325,"context_line":"current microversion and URI to this microversion in reply."}],"source_content_type":"text/x-rst","patch_set":10,"id":"7c2a317a_94ae75dd","line":322,"range":{"start_line":322,"start_character":21,"end_line":322,"end_character":41},"updated":"2024-11-26 12:43:13.000000000","message":"the service appearing","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        route: \u0027^/identity(.*)$ rewrite:$1\u0027"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":322,"context_line":"or usecases, despite service will look as completely functional."},{"line_number":323,"context_line":"The problem with approach above is hidden on how service returns `self`"},{"line_number":324,"context_line":"URL when it\u0027s asked for it. Most of services will reply with their"},{"line_number":325,"context_line":"current microversion and URI to this microversion in reply."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9da8207a_2cc27bd7","line":322,"range":{"start_line":322,"start_character":21,"end_line":322,"end_character":41},"in_reply_to":"7c2a317a_94ae75dd","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":322,"context_line":"or usecases, despite service will look as completely functional."},{"line_number":323,"context_line":"The problem with approach above is hidden on how service returns `self`"},{"line_number":324,"context_line":"URL when it\u0027s asked for it. Most of services will reply with their"},{"line_number":325,"context_line":"current microversion and URI to this microversion in reply."},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ad38ab0f_c5c84b2a","line":323,"range":{"start_line":323,"start_character":35,"end_line":323,"end_character":64},"updated":"2024-11-26 12:43:13.000000000","message":"related to how services return the","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":322,"context_line":"or usecases, despite service will look as completely functional."},{"line_number":323,"context_line":"The problem with approach above is hidden on how service returns `self`"},{"line_number":324,"context_line":"URL when it\u0027s asked for it. Most of services will reply with their"},{"line_number":325,"context_line":"current microversion and URI to this microversion in reply."},{"line_number":326,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"bd8f2205_714cb69e","line":323,"range":{"start_line":323,"start_character":35,"end_line":323,"end_character":64},"in_reply_to":"ad38ab0f_c5c84b2a","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":355,"context_line":"    }"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"}],"source_content_type":"text/x-rst","patch_set":10,"id":"caae9b68_392b18c9","line":358,"range":{"start_line":358,"start_character":62,"end_line":358,"end_character":67},"updated":"2024-11-26 12:43:13.000000000","message":"others","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":355,"context_line":"    }"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"}],"source_content_type":"text/x-rst","patch_set":10,"id":"6930db73_39daab3b","line":358,"updated":"2024-11-26 12:43:13.000000000","message":"refer","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    }"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ac4d3fae_173f15e4","line":358,"in_reply_to":"6930db73_39daab3b","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    }"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"}],"source_content_type":"text/x-rst","patch_set":10,"id":"175e0d57_c5708f2a","line":358,"range":{"start_line":358,"start_character":62,"end_line":358,"end_character":67},"in_reply_to":"caae9b68_392b18c9","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"},{"line_number":362,"context_line":"control how `href` is being defined. For instance, keystone does have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"23800d65_5b071ca5","line":359,"range":{"start_line":359,"start_character":30,"end_line":359,"end_character":39},"updated":"2024-11-26 12:43:13.000000000","message":"this will result","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":356,"context_line":""},{"line_number":357,"context_line":"As you might see, `href` is pointing not to the expected location. While"},{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"},{"line_number":362,"context_line":"control how `href` is being defined. For instance, keystone does have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ce22faa9_cbb1316a","line":359,"range":{"start_line":359,"start_character":30,"end_line":359,"end_character":39},"in_reply_to":"23800d65_5b071ca5","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"},{"line_number":362,"context_line":"control how `href` is being defined. For instance, keystone does have"},{"line_number":363,"context_line":"`[DEFAULT]/public_endpoint` option, but this approach is not consistent"},{"line_number":364,"context_line":"across services. Moreover, keystone will return provided `public_endpoint`"}],"source_content_type":"text/x-rst","patch_set":10,"id":"04482049_dbb4d491","line":361,"range":{"start_line":361,"start_character":29,"end_line":361,"end_character":39},"updated":"2024-11-26 12:43:13.000000000","message":"have","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":358,"context_line":"some clients may not reffer to href link provided by service, other might"},{"line_number":359,"context_line":"use it as source of truth and result in failures."},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"Some services, like keystone, do have a configuration options which may"},{"line_number":362,"context_line":"control how `href` is being defined. For instance, keystone does have"},{"line_number":363,"context_line":"`[DEFAULT]/public_endpoint` option, but this approach is not consistent"},{"line_number":364,"context_line":"across services. Moreover, keystone will return provided `public_endpoint`"}],"source_content_type":"text/x-rst","patch_set":10,"id":"639656e8_d3a50369","line":361,"range":{"start_line":361,"start_character":29,"end_line":361,"end_character":39},"in_reply_to":"04482049_dbb4d491","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"72b96ca9d74e661c5ec7363f311d273424b06f04","unresolved":true,"context_lines":[{"line_number":416,"context_line":"        /compute/v2.1/+: openstack_compute_api_v21"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"We suggest reffering to each service api-paste.ini for more details"},{"line_number":420,"context_line":"on how to properly configure overrides."}],"source_content_type":"text/x-rst","patch_set":10,"id":"25b9ada3_f63f7ca5","line":419,"range":{"start_line":419,"start_character":11,"end_line":419,"end_character":20},"updated":"2024-11-26 12:43:13.000000000","message":"referring","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bd827be4d19ffba7715cac82b243c67c3e9f81ec","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        /compute/v2.1/+: openstack_compute_api_v21"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"We suggest reffering to each service api-paste.ini for more details"},{"line_number":420,"context_line":"on how to properly configure overrides."}],"source_content_type":"text/x-rst","patch_set":10,"id":"7e8e4af3_dfd91c7c","line":419,"range":{"start_line":419,"start_character":11,"end_line":419,"end_character":20},"in_reply_to":"25b9ada3_f63f7ca5","updated":"2024-12-23 10:07:35.000000000","message":"Done","commit_id":"b2f820e9fd0d7714af2f2f9a00f5763e31385d66"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"6fdd92ad80fa1cb79b3aa3e6865617a9b49f25d1","unresolved":true,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":324,"context_line":"or use cases, despite the service appearing completely functional."},{"line_number":325,"context_line":"The problem with approach above is related to how services return the `self`"},{"line_number":326,"context_line":"URL when it\u0027s asked for it. Most services will reply with their"},{"line_number":327,"context_line":"current micro-version and URI to this micro-version in reply."},{"line_number":328,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9fa1c10b_48b9e81e","line":325,"range":{"start_line":325,"start_character":12,"end_line":325,"end_character":17},"updated":"2024-12-31 00:09:39.000000000","message":"```suggestion\nThe problem with the approach above is related to how services return the `self`\n```","commit_id":"92a4d9606ec771a7900f07d368af2a369cb8ded7"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0d09a78faa963bbbc4d1a376fe9ed4a083c92e60","unresolved":false,"context_lines":[{"line_number":322,"context_line":""},{"line_number":323,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":324,"context_line":"or use cases, despite the service appearing completely functional."},{"line_number":325,"context_line":"The problem with approach above is related to how services return the `self`"},{"line_number":326,"context_line":"URL when it\u0027s asked for it. Most services will reply with their"},{"line_number":327,"context_line":"current micro-version and URI to this micro-version in reply."},{"line_number":328,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"33c0c45d_b43a0718","line":325,"range":{"start_line":325,"start_character":12,"end_line":325,"end_character":17},"in_reply_to":"9fa1c10b_48b9e81e","updated":"2025-01-06 11:30:36.000000000","message":"Fix applied.","commit_id":"92a4d9606ec771a7900f07d368af2a369cb8ded7"},{"author":{"_account_id":15993,"name":"Amy Marrich","display_name":"Amy Marrich (spotz)","email":"amy@demarco.com","username":"amarrich"},"change_message_id":"6fdd92ad80fa1cb79b3aa3e6865617a9b49f25d1","unresolved":true,"context_lines":[{"line_number":323,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":324,"context_line":"or use cases, despite the service appearing completely functional."},{"line_number":325,"context_line":"The problem with approach above is related to how services return the `self`"},{"line_number":326,"context_line":"URL when it\u0027s asked for it. Most services will reply with their"},{"line_number":327,"context_line":"current micro-version and URI to this micro-version in reply."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"If you are to use uWSGI rewrites like shown above, you will result in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"68822251_9de156ab","line":326,"range":{"start_line":326,"start_character":26,"end_line":326,"end_character":27},"updated":"2024-12-31 00:09:39.000000000","message":"```suggestion\nURL when it\u0027s asked for. Most services will reply with their\n```","commit_id":"92a4d9606ec771a7900f07d368af2a369cb8ded7"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"537c7fac1613ac4fddfb50757dff6d376693ada8","unresolved":false,"context_lines":[{"line_number":323,"context_line":"But this approach is not correct and will result in issues in some clients"},{"line_number":324,"context_line":"or use cases, despite the service appearing completely functional."},{"line_number":325,"context_line":"The problem with approach above is related to how services return the `self`"},{"line_number":326,"context_line":"URL when it\u0027s asked for it. Most services will reply with their"},{"line_number":327,"context_line":"current micro-version and URI to this micro-version in reply."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"If you are to use uWSGI rewrites like shown above, you will result in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"242038d7_27996c48","line":326,"range":{"start_line":326,"start_character":26,"end_line":326,"end_character":27},"in_reply_to":"68822251_9de156ab","updated":"2025-01-06 11:30:47.000000000","message":"Done","commit_id":"92a4d9606ec771a7900f07d368af2a369cb8ded7"}]}
