)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"93315f5f530e017482607e4ca822ee2b964a3808","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"d25700b9_4608c220","updated":"2025-06-05 10:25:16.000000000","message":"-1 for posterity","commit_id":"2c5afdd303fcba953bfa6eafece885c142b91174"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"4ccde16d80a7ce3e20b1dad6b76bc70e0dd856f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"a115cff9_a08858cc","updated":"2025-09-02 09:57:04.000000000","message":"lgtm, but not sure about backporting. you do need to choose an option though before approving","commit_id":"7035e11d8c7c9a928ce5ef7ac4e3d3ff2f4cda44"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"143b322dd4cb6b2d72114621a250d7b063ae1960","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"9a5e2e3e_2b042725","in_reply_to":"a115cff9_a08858cc","updated":"2025-09-02 10:01:19.000000000","message":"I\u0027d say it should be cleanly backportable - we can debate on the backport","commit_id":"7035e11d8c7c9a928ce5ef7ac4e3d3ff2f4cda44"}],"ansible/roles/nova-cell/tasks/version-check.yml":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2d87b02d10f09de3f225f47b5db3319b9a377645","unresolved":true,"context_lines":[{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"},{"line_number":17,"context_line":"          changed_when: false"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"d8a8ea90_b9345ab0","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":102},"updated":"2025-02-27 16:59:14.000000000","message":"Nice, I didn\u0027t realise you could use this. I always used virsh version.","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"f8391509cb060d785359abe27cea1b7ec7720cd8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"},{"line_number":17,"context_line":"          changed_when: false"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"a97c426e_fffdeee2","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":102},"in_reply_to":"d8a8ea90_b9345ab0","updated":"2025-02-27 17:04:45.000000000","message":"Acknowledged","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":34212,"name":"Matt Anson","email":"matta@stackhpc.com","username":"m-anson","status":"StackHPC"},"change_message_id":"2546749fb4df5b9392ad318f862af8aad0118ef1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"},{"line_number":17,"context_line":"          changed_when: false"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3c6faf2c_bcdad2f7","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":102},"in_reply_to":"d8a8ea90_b9345ab0","updated":"2025-02-27 17:06:22.000000000","message":"virsh version would work nicely too, good option if this doesn\u0027t work on something that isn\u0027t Ubuntu or Rocky.","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"93315f5f530e017482607e4ca822ee2b964a3808","unresolved":true,"context_lines":[{"line_number":10,"context_line":"      register: container_facts"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f313c1c_d5acf2ad","line":13,"updated":"2025-06-05 10:25:16.000000000","message":"Why not use https://docs.ansible.com/ansible/latest/collections/community/libvirt/virt_module.html?","commit_id":"2c5afdd303fcba953bfa6eafece885c142b91174"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"ccf6ede7437782e5c7c7a5aaca4a3d3369543563","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      register: container_facts"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"fc6b1251_4beceba9","line":13,"in_reply_to":"57424673_33cac4c6","updated":"2025-08-11 09:17:30.000000000","message":"Well, let\u0027s leave it as it is I guess.","commit_id":"2c5afdd303fcba953bfa6eafece885c142b91174"},{"author":{"_account_id":14200,"name":"Maksim Malchuk","email":"maksim.malchuk@gmail.com","username":"mmalchuk"},"change_message_id":"dcc225cd27a897cb77348bc0126ffa61afb6b432","unresolved":true,"context_lines":[{"line_number":10,"context_line":"      register: container_facts"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"57424673_33cac4c6","line":13,"in_reply_to":"7f6937f9_aba31e96","updated":"2025-08-08 17:31:53.000000000","message":"If we don\u0027t like \"docker exec...\" and don\u0027t have a option in virt_module ansible module, we can use the package facts to get the version. Any suggestions?","commit_id":"2c5afdd303fcba953bfa6eafece885c142b91174"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"a6b9daa2381ec1797b75b48fc9b40e56732ac7fa","unresolved":true,"context_lines":[{"line_number":10,"context_line":"      register: container_facts"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    - block:"},{"line_number":13,"context_line":"        - name: Get current Libvirt version"},{"line_number":14,"context_line":"          become: true"},{"line_number":15,"context_line":"          command: \"{{ kolla_container_engine }} exec {{ service.container_name }} libvirtd --version\""},{"line_number":16,"context_line":"          register: libvirt_version_current"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7f6937f9_aba31e96","line":13,"in_reply_to":"9f313c1c_d5acf2ad","updated":"2025-08-08 13:02:02.000000000","message":"I don\u0027t see an option to run arbitrary virsh command there:\nhttps://github.com/ansible-collections/community.libvirt/blob/main/plugins/modules/virt.py#L183-L184","commit_id":"2c5afdd303fcba953bfa6eafece885c142b91174"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"ccf6ede7437782e5c7c7a5aaca4a3d3369543563","unresolved":true,"context_lines":[{"line_number":47,"context_line":"            success_msg: \u003e"},{"line_number":48,"context_line":"              Libvirt version check successful. Version {{ new_version }} \u003e\u003d {{ current_version }}."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"      when: container_facts.containers[service.container_name] is defined"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  delegate_to: \"{{ groups[service.group] | first }}\""},{"line_number":53,"context_line":"  run_once: true"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"66fe6efe_ca5175f9","line":50,"updated":"2025-08-11 09:17:30.000000000","message":"and is running?","commit_id":"eb6468d993201f2f8222f06f21247d54941c3ce8"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"69ce0af3b8d0a0687a02977341c0507357f26210","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            success_msg: \u003e"},{"line_number":48,"context_line":"              Libvirt version check successful. Version {{ new_version }} \u003e\u003d {{ current_version }}."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"      when: container_facts.containers[service.container_name] is defined"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  delegate_to: \"{{ groups[service.group] | first }}\""},{"line_number":53,"context_line":"  run_once: true"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"6caa39ff_5a500e52","line":50,"in_reply_to":"66fe6efe_ca5175f9","updated":"2025-08-11 11:04:39.000000000","message":"Done","commit_id":"eb6468d993201f2f8222f06f21247d54941c3ce8"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"ccf6ede7437782e5c7c7a5aaca4a3d3369543563","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"      when: container_facts.containers[service.container_name] is defined"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  delegate_to: \"{{ groups[service.group] | first }}\""},{"line_number":53,"context_line":"  run_once: true"},{"line_number":54,"context_line":"  tags: nova-libvirt-version-check"},{"line_number":55,"context_line":"  when: enable_nova_libvirt_container"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7b35114b_f810207f","line":52,"updated":"2025-08-11 09:17:30.000000000","message":"And what if I have 300 hypervisors, and 150 of them have a newer version and it fails because we downgrade?","commit_id":"eb6468d993201f2f8222f06f21247d54941c3ce8"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"4cea88cc104411d15b00ad6764aac9c2d3b8f63c","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"      when: container_facts.containers[service.container_name] is defined"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  delegate_to: \"{{ groups[service.group] | first }}\""},{"line_number":53,"context_line":"  run_once: true"},{"line_number":54,"context_line":"  tags: nova-libvirt-version-check"},{"line_number":55,"context_line":"  when: enable_nova_libvirt_container"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fc522607_d21a99b2","line":52,"in_reply_to":"7b35114b_f810207f","updated":"2025-08-11 14:22:05.000000000","message":"Done\n\nhowever now we will be running on all hypervisors","commit_id":"eb6468d993201f2f8222f06f21247d54941c3ce8"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"54d96861d01268376670f267193c8af7de60db71","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"      when: container_facts.containers[service.container_name] is defined"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"  delegate_to: \"{{ groups[service.group] | first }}\""},{"line_number":53,"context_line":"  run_once: true"},{"line_number":54,"context_line":"  tags: nova-libvirt-version-check"},{"line_number":55,"context_line":"  when: enable_nova_libvirt_container"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9f1c066d_ab72b28b","line":52,"in_reply_to":"fc522607_d21a99b2","updated":"2025-08-11 14:22:11.000000000","message":"Done","commit_id":"eb6468d993201f2f8222f06f21247d54941c3ce8"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"21ebd051d9d748e4cf7ae8e2d3b00c256d87f28d","unresolved":true,"context_lines":[{"line_number":91,"context_line":"      when: item.stdout is defined"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"  tags: nova-libvirt-version-check"},{"line_number":94,"context_line":"  when: enable_nova_libvirt_container"},{"line_number":95,"context_line":"  vars:"},{"line_number":96,"context_line":"    service_name: \"nova-libvirt\""},{"line_number":97,"context_line":"    service: \"{{ nova_cell_services[service_name] }}\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"4ebbc719_578bbd21","line":94,"updated":"2025-08-21 11:05:52.000000000","message":"```suggestion\n  when: enable_nova_libvirt_container | bool\n```","commit_id":"a09f2470bf8281c1dbc39302c1371f5b4c226551"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"823144fb0184ec5780816ac74db57d19e620e7a4","unresolved":false,"context_lines":[{"line_number":91,"context_line":"      when: item.stdout is defined"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"  tags: nova-libvirt-version-check"},{"line_number":94,"context_line":"  when: enable_nova_libvirt_container"},{"line_number":95,"context_line":"  vars:"},{"line_number":96,"context_line":"    service_name: \"nova-libvirt\""},{"line_number":97,"context_line":"    service: \"{{ nova_cell_services[service_name] }}\""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"2f33760a_cf1c5c12","line":94,"in_reply_to":"4ebbc719_578bbd21","updated":"2025-08-21 11:44:41.000000000","message":"Fix applied.","commit_id":"a09f2470bf8281c1dbc39302c1371f5b4c226551"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"4a030ee57d2637bc5f5f448abe5b3ff344dd3acc","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    - name: Resolve target nova_libvirt image digest"},{"line_number":31,"context_line":"      become: true"},{"line_number":32,"context_line":"      command: \"{{ kolla_container_engine }} image inspect --format \u0027{{ \u0027{{.Id}}\u0027 }}\u0027 {{ service.image }}\""},{"line_number":33,"context_line":"      register: nova_libvirt_target_image"},{"line_number":34,"context_line":"      changed_when: false"},{"line_number":35,"context_line":"      run_once: true"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"836782b0_9aa2feaa","line":32,"updated":"2025-08-21 11:57:23.000000000","message":"Why not docker_image_info?","commit_id":"538771ac3428437a697ac4ba2cc0e1d0541d97fa"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"32b5a0404db88338f5aca3ad820ac3b6452db2a6","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    - name: Resolve target nova_libvirt image digest"},{"line_number":31,"context_line":"      become: true"},{"line_number":32,"context_line":"      command: \"{{ kolla_container_engine }} image inspect --format \u0027{{ \u0027{{.Id}}\u0027 }}\u0027 {{ service.image }}\""},{"line_number":33,"context_line":"      register: nova_libvirt_target_image"},{"line_number":34,"context_line":"      changed_when: false"},{"line_number":35,"context_line":"      run_once: true"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"7450fac3_1a6db336","line":32,"in_reply_to":"836782b0_9aa2feaa","updated":"2025-08-22 15:17:03.000000000","message":"Done","commit_id":"538771ac3428437a697ac4ba2cc0e1d0541d97fa"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"e53f9d22af0f8f99dc6d051821ae11ff7f334678","unresolved":true,"context_lines":[{"line_number":74,"context_line":"          version {{ current_version }} to version {{ new_version }}. If you\u0027re absolutely certain"},{"line_number":75,"context_line":"          that you want to do this, please skip the tag `nova-libvirt-version-check`."},{"line_number":76,"context_line":"        success_msg: \u003e"},{"line_number":77,"context_line":"          Libvirt version check successful. Version {{ new_version }} \u003e\u003d {{ current_version }}."},{"line_number":78,"context_line":"      run_once: true"},{"line_number":79,"context_line":"      loop: \"{{ libvirt_version_current_results.results }}\""},{"line_number":80,"context_line":"      loop_control:"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"4d4be298_15d7c8ec","line":77,"range":{"start_line":77,"start_character":44,"end_line":77,"end_character":95},"updated":"2025-08-25 12:37:57.000000000","message":"If you\u0027re persistent on this spam, we should at least point out which is new version and which one is current, after it templates out it\u0027s unclear.","commit_id":"6ae6eafb6c45cb361999b1c7df8a5b64e6101baf"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"dc491a6fd775a5007fd0f86e736607b1870b3b0a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"          version {{ current_version }} to version {{ new_version }}. If you\u0027re absolutely certain"},{"line_number":75,"context_line":"          that you want to do this, please skip the tag `nova-libvirt-version-check`."},{"line_number":76,"context_line":"        success_msg: \u003e"},{"line_number":77,"context_line":"          Libvirt version check successful. Version {{ new_version }} \u003e\u003d {{ current_version }}."},{"line_number":78,"context_line":"      run_once: true"},{"line_number":79,"context_line":"      loop: \"{{ libvirt_version_current_results.results }}\""},{"line_number":80,"context_line":"      loop_control:"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"0ab49036_ef9499f5","line":77,"range":{"start_line":77,"start_character":44,"end_line":77,"end_character":95},"in_reply_to":"4d4be298_15d7c8ec","updated":"2025-08-25 12:44:34.000000000","message":"Done","commit_id":"6ae6eafb6c45cb361999b1c7df8a5b64e6101baf"}],"ansible/roles/service-image-info/tasks/main.yml":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d756207dabc4d709c204ba913ee6d4e6f2c6de4d","unresolved":true,"context_lines":[{"line_number":9,"context_line":"        service_image_info: \"{{ docker_image_info }}\""},{"line_number":10,"context_line":"      delegate_facts: true"},{"line_number":11,"context_line":"  become: true"},{"line_number":12,"context_line":"  run_once: \"{{ service_image_info_run_once | bool }}\""},{"line_number":13,"context_line":"  delegate_to: \"{{ service_image_info_delegate_host }}\""},{"line_number":14,"context_line":"  when: kolla_container_engine \u003d\u003d \u0027docker\u0027"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"6e114c03_fcc17201","line":12,"updated":"2025-08-22 15:28:56.000000000","message":"nit: will run_once work in the import_role invocation rather than here? Thinking if we\u0027ll ever have a use case of checking the image info everywhere.\nIt\u0027s fine for this patch, we can solve that when that use case emerges","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"7f72241efef422ea7bcdb92c463da7c5771349eb","unresolved":false,"context_lines":[{"line_number":9,"context_line":"        service_image_info: \"{{ docker_image_info }}\""},{"line_number":10,"context_line":"      delegate_facts: true"},{"line_number":11,"context_line":"  become: true"},{"line_number":12,"context_line":"  run_once: \"{{ service_image_info_run_once | bool }}\""},{"line_number":13,"context_line":"  delegate_to: \"{{ service_image_info_delegate_host }}\""},{"line_number":14,"context_line":"  when: kolla_container_engine \u003d\u003d \u0027docker\u0027"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"12f80f99_fb59daa5","line":12,"in_reply_to":"1aa95767_10ca242d","updated":"2025-08-25 11:59:13.000000000","message":"Done","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"8a54c3f1f989df2dd89bc7ab7071c2e25da81cb0","unresolved":true,"context_lines":[{"line_number":9,"context_line":"        service_image_info: \"{{ docker_image_info }}\""},{"line_number":10,"context_line":"      delegate_facts: true"},{"line_number":11,"context_line":"  become: true"},{"line_number":12,"context_line":"  run_once: \"{{ service_image_info_run_once | bool }}\""},{"line_number":13,"context_line":"  delegate_to: \"{{ service_image_info_delegate_host }}\""},{"line_number":14,"context_line":"  when: kolla_container_engine \u003d\u003d \u0027docker\u0027"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"dd1a12ab_236bcc15","line":12,"in_reply_to":"6e114c03_fcc17201","updated":"2025-08-22 15:56:25.000000000","message":"I think resolving shared fact across the cloud should be run once in play, if somebody wants to be otherwise there is toggle: service_image_info_run_once.","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"728181768558950035ae9a174f046695253c141f","unresolved":true,"context_lines":[{"line_number":9,"context_line":"        service_image_info: \"{{ docker_image_info }}\""},{"line_number":10,"context_line":"      delegate_facts: true"},{"line_number":11,"context_line":"  become: true"},{"line_number":12,"context_line":"  run_once: \"{{ service_image_info_run_once | bool }}\""},{"line_number":13,"context_line":"  delegate_to: \"{{ service_image_info_delegate_host }}\""},{"line_number":14,"context_line":"  when: kolla_container_engine \u003d\u003d \u0027docker\u0027"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"1aa95767_10ca242d","line":12,"in_reply_to":"dd1a12ab_236bcc15","updated":"2025-08-22 16:21:35.000000000","message":"but I\u0027m happy to change my approach if needed","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"}],"releasenotes/notes/libvirt-catch-downgrade-d297347d745211f0.yaml":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"2d87b02d10f09de3f225f47b5db3319b9a377645","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a check to stop deploying/upgrading the nova_libvirt containers if it"},{"line_number":5,"context_line":"    will result in downgrading the version of Libvirt running."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"45bb6afd_e8b24a1c","line":5,"updated":"2025-02-27 16:59:14.000000000","message":"Please add new line at end of file.","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":34212,"name":"Matt Anson","email":"matta@stackhpc.com","username":"m-anson","status":"StackHPC"},"change_message_id":"2546749fb4df5b9392ad318f862af8aad0118ef1","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a check to stop deploying/upgrading the nova_libvirt containers if it"},{"line_number":5,"context_line":"    will result in downgrading the version of Libvirt running."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"40355541_b7010533","line":5,"in_reply_to":"45bb6afd_e8b24a1c","updated":"2025-02-27 17:06:22.000000000","message":"Done","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"f8391509cb060d785359abe27cea1b7ec7720cd8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a check to stop deploying/upgrading the nova_libvirt containers if it"},{"line_number":5,"context_line":"    will result in downgrading the version of Libvirt running."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"f7065457_80cde21e","line":5,"in_reply_to":"45bb6afd_e8b24a1c","updated":"2025-02-27 17:04:45.000000000","message":"Done","commit_id":"097ed028428a3cca0745fa5238bff958e1faf304"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"53a4c7932001296aa376db3ffafd12e2eb4c01a3","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Prevents accidental Libvirt downgrades during deploy and upgrade."},{"line_number":5,"context_line":"    Adds a nova_libvirt version check that resolves the target image"},{"line_number":6,"context_line":"    digest once on the first compute host and runs only on hypervisors"},{"line_number":7,"context_line":"    where the running container digest differs from the target."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"6013633a_bc0e739d","line":4,"updated":"2025-08-22 16:11:34.000000000","message":"Is it worth mentioning that this doesn\u0027t cover libvirt on the host? I suppose it\u0027s easier to accidentally upgrade in that case.","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"31e72c0d020801403fcb31dd561050c2fff6aaee","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Prevents accidental Libvirt downgrades during deploy and upgrade."},{"line_number":5,"context_line":"    Adds a nova_libvirt version check that resolves the target image"},{"line_number":6,"context_line":"    digest once on the first compute host and runs only on hypervisors"},{"line_number":7,"context_line":"    where the running container digest differs from the target."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"d804a915_47baec55","line":4,"in_reply_to":"6013633a_bc0e739d","updated":"2025-08-22 16:20:36.000000000","message":"I think we should deprecate that feature anyways.","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"7f72241efef422ea7bcdb92c463da7c5771349eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Prevents accidental Libvirt downgrades during deploy and upgrade."},{"line_number":5,"context_line":"    Adds a nova_libvirt version check that resolves the target image"},{"line_number":6,"context_line":"    digest once on the first compute host and runs only on hypervisors"},{"line_number":7,"context_line":"    where the running container digest differs from the target."}],"source_content_type":"text/x-yaml","patch_set":29,"id":"b1e64c5b_ce758b7d","line":4,"in_reply_to":"d804a915_47baec55","updated":"2025-08-25 11:59:13.000000000","message":"altered reno","commit_id":"7eeeb1886ad20678b675ba0b3a46f4237c67facc"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"4712f518ab1a8dfbcee62e459e0a3259db3453ea","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    from the target."},{"line_number":9,"context_line":"features:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    Adds a tiny macro role ``service-image-info`` to resolve container image"},{"line_number":12,"context_line":"    info (Docker/Podman) once per service. The nova-libvirt version check now"},{"line_number":13,"context_line":"    uses it to compare running vs target image."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"8b6b3ca4_775e3bd6","line":11,"updated":"2025-08-25 12:38:59.000000000","message":"That is not a feature, nor something users can use - just an implementation detail - I would not mention that in reno.","commit_id":"6ae6eafb6c45cb361999b1c7df8a5b64e6101baf"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"dc491a6fd775a5007fd0f86e736607b1870b3b0a","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    from the target."},{"line_number":9,"context_line":"features:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    Adds a tiny macro role ``service-image-info`` to resolve container image"},{"line_number":12,"context_line":"    info (Docker/Podman) once per service. The nova-libvirt version check now"},{"line_number":13,"context_line":"    uses it to compare running vs target image."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"2e850f43_746f351f","line":11,"in_reply_to":"8b6b3ca4_775e3bd6","updated":"2025-08-25 12:44:34.000000000","message":"Done","commit_id":"6ae6eafb6c45cb361999b1c7df8a5b64e6101baf"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"9a1fc011337aa558811ffa7edfd79e06f6612a43","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Prevents accidental Libvirt downgrades in nova_libvirt container image"},{"line_number":5,"context_line":"    during deploy and upgrade. Adds a nova_libvirt version check that"},{"line_number":6,"context_line":"    resolves the target image digest once on the first compute host"},{"line_number":7,"context_line":"    and runs only on hypervisors where the running container digest differs"},{"line_number":8,"context_line":"    from the target."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"c4d4e727_4c0c5825","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":20},"updated":"2025-08-25 12:52:50.000000000","message":"```suggestion\n    Prevents accidental ``libvirt`` downgrades in ``nova_libvirt`` container\n    image during deploy and upgrade. Adds a ``nova_libvirt`` version check that\n    resolves the target image digest once on the first compute host\n    and runs only on hypervisors where the running container digest differs\n    from the target.\n```","commit_id":"2e932502b91ee532c05790570ea68023f85bec8b"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"1136f94a246962c89ec138535b14dfdd6e0dc61c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Prevents accidental Libvirt downgrades in nova_libvirt container image"},{"line_number":5,"context_line":"    during deploy and upgrade. Adds a nova_libvirt version check that"},{"line_number":6,"context_line":"    resolves the target image digest once on the first compute host"},{"line_number":7,"context_line":"    and runs only on hypervisors where the running container digest differs"},{"line_number":8,"context_line":"    from the target."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"1ce2cc00_0069f9ba","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":20},"in_reply_to":"c4d4e727_4c0c5825","updated":"2025-08-25 12:57:07.000000000","message":"Fix applied.","commit_id":"2e932502b91ee532c05790570ea68023f85bec8b"}]}
