)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"42867cc78e8371d8f2f863124b5027ac357f70cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"114850f4_3df98bd1","updated":"2026-01-22 20:37:03.000000000","message":"recheck","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"7c4e520a1e9fa87c9695f6d7fff5066888ab505c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a31613d9_8aab2e42","updated":"2026-01-23 05:56:06.000000000","message":"recheck","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"920bac958201748a2cb711b7dbcbf09ffe14ada7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0c0a25b6_73212464","updated":"2026-01-23 14:32:21.000000000","message":"this looks reasonable to me, I assume you did test that this works when directories are present? just to assure we don\u0027t regress the previous bug again","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"6d0c9b104e36b6492fe531494e56cd7cfbbfae2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"247f560b_477dcc45","updated":"2026-01-27 11:49:03.000000000","message":"recheck","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"43656de40c7e71762d974b8cac7cefa2bf53aa13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9eed82ea_5a3ff12d","updated":"2026-01-27 09:05:39.000000000","message":"recheck","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"61de0284a513c915fc7bfdd5a9bb2c67d8ed2e8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b8e44525_2b14b926","updated":"2026-01-28 07:53:53.000000000","message":"recheck","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"1adfdb8e2b00d8c70ffe50b51358cc1985c5904d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d59efd19_28517bfa","updated":"2026-01-27 06:59:50.000000000","message":"recheck - ansible galaxy was down","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"69b24ae8f91fdc7d667c9c6ad3aa8b269e6cbf0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"42f78fcf_96f0af43","in_reply_to":"99816d40_11d1b00c","updated":"2026-01-28 08:30:20.000000000","message":"yeah, that\u0027s explains a lot, I have just downloaded logs to dig there :) Thanks for this fix","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"c067f8c8d455dd75b04d34b2a92b765cd7964b67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"99816d40_11d1b00c","in_reply_to":"b8e44525_2b14b926","updated":"2026-01-28 08:10:06.000000000","message":"It looks like you\u0027re hitting some roadblocks here. After a quick look, I think you need to rebase your commit. It seems Selenium is exposing port 4444/tcp, but the test is trying to run on 4500. I actually pushed a fix for this exact port conflict recently: https://review.opendev.org/c/openstack/kolla-ansible/+/973967","commit_id":"a067fb7da8f6f865b7a381a2428db066b40c44be"}],"ansible/roles/keystone/tasks/config-federation-oidc.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"bb94d4cef507c72d11193bf00fcf62cc53f8adb4","unresolved":true,"context_lines":[{"line_number":79,"context_line":"  vars:"},{"line_number":80,"context_line":"    keystone: \"{{ keystone_services[\u0027keystone\u0027] }}\""},{"line_number":81,"context_line":"  become: true"},{"line_number":82,"context_line":"  template:"},{"line_number":83,"context_line":"    src: \"{{ item.path }}\""},{"line_number":84,"context_line":"    dest: \"{{ keystone_host_federation_oidc_attribute_mappings_folder }}/{{ item.path | basename }}\""},{"line_number":85,"context_line":"    mode: \"0660\""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"b09afd65_cece46e5","line":82,"updated":"2026-01-22 18:06:02.000000000","message":"Since we are switching from copy to template, any existing mapping JSON files containing characters like {{ or {% (which are common in regex patterns) will now be parsed by Ansible. users might need to wrap such sections in {% raw %} ... {% endraw %} tags. I dont know this is good","commit_id":"88ce3cc9a1f0466a314012b37a54732b99abcbb7"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"655f16fd4f291776244ce951615b78d7d937fa0e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  vars:"},{"line_number":80,"context_line":"    keystone: \"{{ keystone_services[\u0027keystone\u0027] }}\""},{"line_number":81,"context_line":"  become: true"},{"line_number":82,"context_line":"  template:"},{"line_number":83,"context_line":"    src: \"{{ item.path }}\""},{"line_number":84,"context_line":"    dest: \"{{ keystone_host_federation_oidc_attribute_mappings_folder }}/{{ item.path | basename }}\""},{"line_number":85,"context_line":"    mode: \"0660\""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"36da0d99_822b0c39","line":82,"in_reply_to":"370b32ab_5f24639d","updated":"2026-01-22 18:28:45.000000000","message":"Acknowledged","commit_id":"88ce3cc9a1f0466a314012b37a54732b99abcbb7"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"668adba1c76baf1e44ff0952c89cb7aca2d91dbf","unresolved":true,"context_lines":[{"line_number":79,"context_line":"  vars:"},{"line_number":80,"context_line":"    keystone: \"{{ keystone_services[\u0027keystone\u0027] }}\""},{"line_number":81,"context_line":"  become: true"},{"line_number":82,"context_line":"  template:"},{"line_number":83,"context_line":"    src: \"{{ item.path }}\""},{"line_number":84,"context_line":"    dest: \"{{ keystone_host_federation_oidc_attribute_mappings_folder }}/{{ item.path | basename }}\""},{"line_number":85,"context_line":"    mode: \"0660\""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"370b32ab_5f24639d","line":82,"in_reply_to":"b09afd65_cece46e5","updated":"2026-01-22 18:10:55.000000000","message":"Good catch, actually I\u0027m thinking about dropping copy -\u003e template transition for mappings here.","commit_id":"88ce3cc9a1f0466a314012b37a54732b99abcbb7"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"920bac958201748a2cb711b7dbcbf09ffe14ada7","unresolved":true,"context_lines":[{"line_number":33,"context_line":"    paths: \"{{ item.metadata_folder }}\""},{"line_number":34,"context_line":"    patterns: \"*\""},{"line_number":35,"context_line":"    file_type: file"},{"line_number":36,"context_line":"  register: oidc_metadata_found"},{"line_number":37,"context_line":"  delegate_to: localhost"},{"line_number":38,"context_line":"  run_once: true"},{"line_number":39,"context_line":"  loop: \"{{ keystone_identity_providers }}\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"f108b2e2_fabee1bd","line":36,"updated":"2026-01-23 14:32:21.000000000","message":"I know this will look clumsy, but can you prefix the var name with `keystone_host_federation_` too like we do above to avoid conflicts?","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"c6676e260b459c9828419f837a3fb5eac67f4fd6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    paths: \"{{ item.metadata_folder }}\""},{"line_number":34,"context_line":"    patterns: \"*\""},{"line_number":35,"context_line":"    file_type: file"},{"line_number":36,"context_line":"  register: oidc_metadata_found"},{"line_number":37,"context_line":"  delegate_to: localhost"},{"line_number":38,"context_line":"  run_once: true"},{"line_number":39,"context_line":"  loop: \"{{ keystone_identity_providers }}\""}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7b622450_f2107aed","line":36,"in_reply_to":"f108b2e2_fabee1bd","updated":"2026-01-26 10:50:56.000000000","message":"Done","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"f509cd0f39f00ae29d7dd72a5621e7945c2d05dd","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"4615edee_4f888293","line":48,"updated":"2026-01-23 14:34:57.000000000","message":"actually I think using `basename` might give the wrong path if we have `item.path\u003dmetadata_folder/subdir/file`? then dest would not include the subdir?","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"519057c7fd14d8c9cf788edd90e8a2454b0ff5a4","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5a60ef78_43b3842f","line":48,"in_reply_to":"13ca7436_1c7138d5","updated":"2026-01-26 10:52:31.000000000","message":"if we would like to keep config with the docs, I could disable te recurse search in \"find\" task","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"f7ea17b8bc40330a98890cfe46ae59e996bdc9e4","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"13ca7436_1c7138d5","line":48,"in_reply_to":"4615edee_4f888293","updated":"2026-01-26 10:50:17.000000000","message":"According to docs, there\u0027s no place for subdirs [1], it should be directly files:\n\"Path to the folder containing all of the identity provider metadata as JSON files.\"\n\n\n[1] https://docs.openstack.org/kolla-ansible/latest/reference/shared-services/keystone-guide.html#metadata-folder","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"a0d9b95b343870f5ce6b27cc3eb3de6e0b2884bc","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"46c0d00c_1ae898f5","line":48,"in_reply_to":"5a60ef78_43b3842f","updated":"2026-01-26 11:08:05.000000000","message":"I believe setting recurse: no addresses frickler\u0027s concern. It ensures a flat file structure as per documentation, making the use of basename safe and predictable\n\npatterns: \"*.json\"\nfile_type: file\nrecurse: no","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"a1c8fc97eaaaca70a0f7e25e3bdc6c6b5f3465d2","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8fc31321_1ff64bcc","line":48,"in_reply_to":"5a60ef78_43b3842f","updated":"2026-01-26 11:09:27.000000000","message":"ok, maybe I was reading this comment wrongly https://bugs.launchpad.net/kolla-ansible/+bug/2097005/comments/2\nbut making somehow sure that input and output paths match would still be good anyway","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"4ec2c1ab750eca9f32edf3de9567faffc1e47a07","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"f675a41b_072ab734","line":48,"in_reply_to":"8fc31321_1ff64bcc","updated":"2026-01-26 11:12:50.000000000","message":"Regarding that comment, it\u0027s totally true, and that\u0027s why I needed to add separate task here before templating. I\u0027ll set the `recurse` to `false` here; `patterns` cannot be narrowed down, we expect data to be in `json` format, not `.json` extension.","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"6200f8db522e4a5c210e5cf7989e788ad83e3404","unresolved":true,"context_lines":[{"line_number":45,"context_line":"  become: true"},{"line_number":46,"context_line":"  template:"},{"line_number":47,"context_line":"    src: \"{{ item.path }}\""},{"line_number":48,"context_line":"    dest: \"{{ keystone_host_federation_oidc_metadata_folder }}/{{ item.path | basename }}\""},{"line_number":49,"context_line":"    mode: \"0660\""},{"line_number":50,"context_line":"  loop: \"{{ oidc_metadata_found.results | selectattr(\u0027files\u0027, \u0027defined\u0027) | map(attribute\u003d\u0027files\u0027) | flatten }}\""},{"line_number":51,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"358ebffe_8fd8f3f0","line":48,"in_reply_to":"f675a41b_072ab734","updated":"2026-01-28 19:55:44.000000000","message":"@frickler@offenerstapel.de it should be fine now","commit_id":"8dbc9ec806de57dc6e2b8079fcccbdd6437e2270"}]}
