)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":25666,"name":"Stuart Grace","email":"stuart.grace@bbc.co.uk","username":"stuartgrace"},"change_message_id":"8b8cdb77c5f5fbf5f98e6a65be44f141e86862b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c1da392d_3d789a69","updated":"2023-04-17 09:59:03.000000000","message":"This looks really useful.","commit_id":"d6c86d502532ef7dfb398f06987b79888e31b83b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"07bc7462c966eac74eec575a2c4fb1a57b396af3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"93c9f61b_1ea40d2f","updated":"2023-05-25 21:15:05.000000000","message":"Will leave it in WIP until implement some more strucutre to cover all usecases at least in os_tempest role.","commit_id":"d6c86d502532ef7dfb398f06987b79888e31b83b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e652c35fd53eb6e6cef04a6876e5307f5f98d2ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"39df99ce_22993485","updated":"2023-07-28 10:58:34.000000000","message":"recheck debian intermittent","commit_id":"86917f42521ee62a431f50abc3a4798d8fd3a7b9"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"4cab1df4a200c0fb57311c070fe434b49eecca6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"029e3ff3_ebfcee82","updated":"2023-10-17 11:54:38.000000000","message":"recheck - functional jobs should be fixed now","commit_id":"f0d51b55a964c428f4609ca40b1044a5e91804bc"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"76ccdaa707b50f49ae93e1fcc86b2237975891b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"4fc0e9e2_e85840e9","updated":"2023-10-20 14:47:34.000000000","message":"recheck rocky","commit_id":"423a3712c0745604659016d9ff9a23be06005166"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ce38959f129fb5054c04ff49466b9ce508940ad2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"c895c973_755a73b0","updated":"2024-01-22 16:43:32.000000000","message":"\u0027comment\u0027 is always required for keypair currently \n\nfatal: [aio1_utility_container-c2e85341]: FAILED! \u003d\u003e {\"msg\": \"The task includes an option with an undefined variable. The error was: \u0027dict object\u0027 has no attribute \u0027comment\u0027. \u0027dict object\u0027 has no attribute \u0027comment\u0027\\n\\nThe error appears to be in \u0027/etc/ansible/ansible_collections/openstack/osa/roles/openstack_resources/tasks/keypairs.yml\u0027: line 28, column 3, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n\\n- name: \\\"Import generated keypair to openstack: {{ keypair[\u0027name\u0027] }}\\\"\\n  ^ here\\nWe could be wrong, but this one looks like it might be an issue with\\nmissing quotes. Always quote template expression brackets when they\\nstart a value. For instance:\\n\\n    with_items:\\n      - {{ foo }}\\n\\nShould be written as:\\n\\n    with_items:\\n      - \\\"{{ foo }}\\\"\\n\"}","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"add5450b88be9f160444587f0af06bf1ccb73d18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"8cc292f0_819a2422","updated":"2024-01-23 13:42:43.000000000","message":"Images download concerns were not addressed","commit_id":"6be847c815aec6d18a4a42457ce8f1dbef634b99"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d978d9fd1d22be24d3c91ed6e577fcf5826db85c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"fb247eff_cd33db0e","updated":"2024-01-23 14:03:59.000000000","message":"Smth worth covering -\u003e https://paste.opendev.org/show/bK6J7pAzt0BSJlS2Wlpk/","commit_id":"4a0574965a2d5c1b33dc07e973fb161ac85b96f8"},{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"8dac0acd9690d2744313bd76be9b876a0eda2f3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"782e3054_a21d2f88","updated":"2024-01-30 13:40:42.000000000","message":"lets move forward and iterate this if needed - i\u0027ve tested a bunch of it in the magnum-capi patches","commit_id":"e78b1fa8b8b376f182d05a2250fd7979eae81e64"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"19d84e938a6d08c839c8e32ebd287a985a404eab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"8bffbeff_017e70f9","updated":"2024-02-01 16:37:44.000000000","message":"recheck functional jammy","commit_id":"e78b1fa8b8b376f182d05a2250fd7979eae81e64"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ada728e52b24dd9a7004bdcf10b86bcd584e39a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"599579d2_8307dfca","updated":"2024-01-26 08:55:42.000000000","message":"recheck rocky","commit_id":"e78b1fa8b8b376f182d05a2250fd7979eae81e64"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"5ffc5134cb091a1e7987e1cbbf04c6ddd8137e6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"02b2bb01_0b45d3f1","updated":"2024-01-26 13:33:52.000000000","message":"recheck rocky\n\nProblem: problem with installed package systemd-devel-252-18.el9.0.1.rocky.x86_64\\n  - package systemd-devel-252-18.el9.0.1.rocky.x86_64 from @System requires systemd-pam \u003d 252-18.el9.0.1.rocky, but none of the providers can be installed","commit_id":"e78b1fa8b8b376f182d05a2250fd7979eae81e64"}],"roles/openstack_resources/tasks/coe.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"360f2b1c37aedac23a3e0ef92529c785554ab4aa","unresolved":true,"context_lines":[{"line_number":52,"context_line":"      state: \"{{ template[\u0027state\u0027] | default(\u0027present\u0027) }}\""},{"line_number":53,"context_line":"  register: _coe_cluster_templates"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"- name: Creating subnets for each network"},{"line_number":56,"context_line":"  ansible.builtin.include_tasks:"},{"line_number":57,"context_line":"    file: coe_cluster.yml"},{"line_number":58,"context_line":"  loop: \"{{ openstack_resources_coe[\u0027templates\u0027] | default([]) }}\""}],"source_content_type":"text/x-yaml","patch_set":33,"id":"07bf467d_119eb1fb","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"updated":"2024-01-18 17:41:34.000000000","message":"this is not correct name","commit_id":"798d93468697631cd4b02fee872b775450008a8a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2af6125e984c49a25f85365f14d1fe654f2bfa5b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"      state: \"{{ template[\u0027state\u0027] | default(\u0027present\u0027) }}\""},{"line_number":53,"context_line":"  register: _coe_cluster_templates"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"- name: Creating subnets for each network"},{"line_number":56,"context_line":"  ansible.builtin.include_tasks:"},{"line_number":57,"context_line":"    file: coe_cluster.yml"},{"line_number":58,"context_line":"  loop: \"{{ openstack_resources_coe[\u0027templates\u0027] | default([]) }}\""}],"source_content_type":"text/x-yaml","patch_set":33,"id":"005545f3_408ac841","line":55,"range":{"start_line":55,"start_character":0,"end_line":55,"end_character":41},"in_reply_to":"07bf467d_119eb1fb","updated":"2024-01-18 17:59:23.000000000","message":"Done","commit_id":"798d93468697631cd4b02fee872b775450008a8a"}],"roles/openstack_resources/tasks/coe_cluster.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ae1627a78c3051565bcc752c7f67e0bb1d15d01a","unresolved":true,"context_lines":[{"line_number":36,"context_line":"  vars:"},{"line_number":37,"context_line":"    template_uuid: \u003e-"},{"line_number":38,"context_line":"      {{ _coe_cluster_templates[\u0027results\u0027] | selectattr("},{"line_number":39,"context_line":"          \u0027cluster_template.name\u0027, \u0027eq\u0027, item[\u0027name\u0027]) | map(attribute\u003d\u0027cluster_template.id\u0027) | list | first"},{"line_number":40,"context_line":"      }}"},{"line_number":41,"context_line":"    loop_label:"},{"line_number":42,"context_line":"      name: \"{{ cluster[\u0027name\u0027] }}\""}],"source_content_type":"text/x-yaml","patch_set":36,"id":"96bf164c_8013d683","line":39,"range":{"start_line":39,"start_character":41,"end_line":39,"end_character":45},"updated":"2024-01-23 09:13:40.000000000","message":"this should be either `cluster` or `template` i think","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"c68e27199f3327db82374947504c5675f458325b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  vars:"},{"line_number":37,"context_line":"    template_uuid: \u003e-"},{"line_number":38,"context_line":"      {{ _coe_cluster_templates[\u0027results\u0027] | selectattr("},{"line_number":39,"context_line":"          \u0027cluster_template.name\u0027, \u0027eq\u0027, item[\u0027name\u0027]) | map(attribute\u003d\u0027cluster_template.id\u0027) | list | first"},{"line_number":40,"context_line":"      }}"},{"line_number":41,"context_line":"    loop_label:"},{"line_number":42,"context_line":"      name: \"{{ cluster[\u0027name\u0027] }}\""}],"source_content_type":"text/x-yaml","patch_set":36,"id":"3eac6e1e_e5131518","line":39,"range":{"start_line":39,"start_character":41,"end_line":39,"end_character":45},"in_reply_to":"96bf164c_8013d683","updated":"2024-01-23 13:43:31.000000000","message":"Done","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"}],"roles/openstack_resources/tasks/compute_flavors_access.yml":[{"author":{"_account_id":13095,"name":"Marc Gariépy","email":"gariepy.marc@gmail.com","username":"mgariepy"},"change_message_id":"97c04653aaedc3cc669565588e809aabcb4f0d66","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(noonedeadpunk): module compute_flavor_access must be used since version 2.0.0 of collection"},{"line_number":17,"context_line":"- name: Adding access for flavor {{ flavor_name }} to projects"},{"line_number":18,"context_line":"  openstack.cloud.project_access:"},{"line_number":19,"context_line":"    cloud: \"{{ openstack_cloud_name }}\""},{"line_number":20,"context_line":"    resource_type: nova_flavor"},{"line_number":21,"context_line":"    resource_name: \"{{ flavor_name }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"71ff8eb7_da5fe41c","line":18,"updated":"2023-07-25 18:00:27.000000000","message":"please add the domain","commit_id":"9709ca6169c1c825c76f8e75729bec7a8b53e779"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1d2b3de7e969a6f39ac14d324e7bc567d5fd5cad","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(noonedeadpunk): module compute_flavor_access must be used since version 2.0.0 of collection"},{"line_number":17,"context_line":"- name: Adding access for flavor {{ flavor_name }} to projects"},{"line_number":18,"context_line":"  openstack.cloud.project_access:"},{"line_number":19,"context_line":"    cloud: \"{{ openstack_cloud_name }}\""},{"line_number":20,"context_line":"    resource_type: nova_flavor"},{"line_number":21,"context_line":"    resource_name: \"{{ flavor_name }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"d6dded7e_8a09df5f","line":18,"in_reply_to":"45e9b5e1_cf0f6956","updated":"2023-08-17 09:38:56.000000000","message":"Done","commit_id":"9709ca6169c1c825c76f8e75729bec7a8b53e779"},{"author":{"_account_id":13095,"name":"Marc Gariépy","email":"gariepy.marc@gmail.com","username":"mgariepy"},"change_message_id":"c482cf386e1b08bcbcd88e19f96d5812df7dbb95","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(noonedeadpunk): module compute_flavor_access must be used since version 2.0.0 of collection"},{"line_number":17,"context_line":"- name: Adding access for flavor {{ flavor_name }} to projects"},{"line_number":18,"context_line":"  openstack.cloud.project_access:"},{"line_number":19,"context_line":"    cloud: \"{{ openstack_cloud_name }}\""},{"line_number":20,"context_line":"    resource_type: nova_flavor"},{"line_number":21,"context_line":"    resource_name: \"{{ flavor_name }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"76ab6e04_ddf844b4","line":18,"in_reply_to":"71ff8eb7_da5fe41c","updated":"2023-07-25 18:02:56.000000000","message":"openstack.cloud.compute_flavor_access is probably the module you want \nplease add the project_domain :D \nproject_domain","commit_id":"9709ca6169c1c825c76f8e75729bec7a8b53e779"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"2f0b4d658b3a43f0b34d9cf5116c58c4ecbceeeb","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(noonedeadpunk): module compute_flavor_access must be used since version 2.0.0 of collection"},{"line_number":17,"context_line":"- name: Adding access for flavor {{ flavor_name }} to projects"},{"line_number":18,"context_line":"  openstack.cloud.project_access:"},{"line_number":19,"context_line":"    cloud: \"{{ openstack_cloud_name }}\""},{"line_number":20,"context_line":"    resource_type: nova_flavor"},{"line_number":21,"context_line":"    resource_name: \"{{ flavor_name }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"45e9b5e1_cf0f6956","line":18,"in_reply_to":"76ab6e04_ddf844b4","updated":"2023-07-26 06:17:25.000000000","message":"Ah, yes, I wrote that literally in the NOTE 😊","commit_id":"9709ca6169c1c825c76f8e75729bec7a8b53e779"}],"roles/openstack_resources/tasks/image_upload.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"b8a64bd57507351ebcdb3fa62a44a352100b061f","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":36,"id":"4ee19754_c8e86345","line":1,"updated":"2024-01-22 17:04:21.000000000","message":"image download / upload can be extremely long and this is not particularly idempotent - it would be great to have a fall-through if an image with the correct name/checksum is already in glance, though that would make updating properties more difficult i guess","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"}],"roles/openstack_resources/tasks/keypairs.yml":[{"author":{"_account_id":25023,"name":"Jonathan Rosser","email":"jonathan.rosser@rd.bbc.co.uk","username":"jrosser"},"change_message_id":"ce38959f129fb5054c04ff49466b9ce508940ad2","unresolved":true,"context_lines":[{"line_number":36,"context_line":"      {{"},{"line_number":37,"context_line":"        (keypair[\u0027state\u0027] | default(\u0027present\u0027) \u003d\u003d \u0027present\u0027) | ternary("},{"line_number":38,"context_line":"          generated_keypair[\u0027public_key\u0027] + ("},{"line_number":39,"context_line":"            (\u0027comment\u0027 in keypair) | ternary(\u0027 \u0027 ~ keypair[\u0027comment\u0027], \u0027\u0027)"},{"line_number":40,"context_line":"          ), omit)"},{"line_number":41,"context_line":"      }}"}],"source_content_type":"text/x-yaml","patch_set":36,"id":"7c514721_5f84d8e9","line":39,"range":{"start_line":39,"start_character":51,"end_line":39,"end_character":69},"updated":"2024-01-22 16:43:32.000000000","message":"both possibilites for ternary() are always evaluated, so if you want to allow comment to be optional then another level of variable indirection will be needed, or confusingly, a default(\u0027\u0027) added","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"6d1dae52e0b0d7a4aa871f42a45cf914eec4fb5e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      {{"},{"line_number":37,"context_line":"        (keypair[\u0027state\u0027] | default(\u0027present\u0027) \u003d\u003d \u0027present\u0027) | ternary("},{"line_number":38,"context_line":"          generated_keypair[\u0027public_key\u0027] + ("},{"line_number":39,"context_line":"            (\u0027comment\u0027 in keypair) | ternary(\u0027 \u0027 ~ keypair[\u0027comment\u0027], \u0027\u0027)"},{"line_number":40,"context_line":"          ), omit)"},{"line_number":41,"context_line":"      }}"}],"source_content_type":"text/x-yaml","patch_set":36,"id":"aefc643e_e9462b45","line":39,"range":{"start_line":39,"start_character":51,"end_line":39,"end_character":69},"in_reply_to":"7c514721_5f84d8e9","updated":"2024-01-23 14:01:23.000000000","message":"Done","commit_id":"54063ac9b1cff2b8847e3c9ab7fe16b1f3d2ef4f"}]}
