)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"2899ca606ebee259719428072a9843bda618c541","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"27d618a6_9e6560ed","updated":"2026-03-18 18:56:01.000000000","message":"So many +1s, let’s merge it","commit_id":"cd7e86503020f653369258c7b450ae9f1b7c0074"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"1c321adc1da2d1900c8d13fc08f8c18fa8831b45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ff785811_23d1f330","updated":"2026-03-18 08:58:25.000000000","message":"before change:\n\nnova-cell : Get container facts 124.51s\nnova-cell : Get current Libvirt version 61.80s\nnova-cell : Check that the new Libvirt version is \u003e\u003d current 41.62s\n\nafter change:\n\nnova-cell : Get container facts 14.04s\nnova-cell : Get current Libvirt version 5s\nnova-cell : Check that the new Libvirt version is \u003e\u003d current 4s","commit_id":"cd7e86503020f653369258c7b450ae9f1b7c0074"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"924eaaaf0f66b04ac40dea1d13118d7a012ef4f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a23a31bd_d9ccfa1d","in_reply_to":"ff785811_23d1f330","updated":"2026-03-18 08:59:03.000000000","message":"88 hypervisors in inventory","commit_id":"cd7e86503020f653369258c7b450ae9f1b7c0074"}],"ansible/roles/nova-cell/tasks/version-check.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"dd31e44601bd811d2b9169efe4e3301a48ad7d30","unresolved":true,"context_lines":[{"line_number":56,"context_line":"      changed_when: false"},{"line_number":57,"context_line":"      when:"},{"line_number":58,"context_line":"        - container_facts_per_host is not skipped"},{"line_number":59,"context_line":"        - container_facts_per_host.containers[service.container_name] is defined"},{"line_number":60,"context_line":"        - (hostvars[groups[service.group] | first].service_image_info.images | default([]) | length) \u003e 0"},{"line_number":61,"context_line":"        - container_facts_per_host.containers[service.container_name].Image"},{"line_number":62,"context_line":"          !\u003d hostvars[groups[service.group] | first].service_image_info.images[0].Id"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"77913e89_a63e0137","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":13},"updated":"2026-03-18 10:16:49.000000000","message":"when:\n         - container_facts_per_host is not skipped\n         - container_facts_per_host.containers[service.container_name] is defined\n         # Ensure container is active to avoid \u0027exec\u0027 failures on stopped containers\n         - container_facts_per_host.containers[service.container_name].State.Running | bool\n         - (hostvars[groups[service.group] | first].service_image_info.images | default([]) | length) \u003e 0\n         - container_facts_per_host.containers[service.container_name].Image\n            !\u003d hostvars[groups[service.group] | first].service_image_info.images[0].Id\n\n\n? \n\nIn the current version of the patch, the .State.Running | bool condition was removed. I suggest re-incorporating this line from the original task. Without this check, if the nova_libvirt container exists on a compute node but is in a non-running state (e.g., Exited, Paused, or Crashed), the ansible.builtin.command will attempt to run anyway. This will result in a fatal task error because you cannot execute commands inside a stopped container.","commit_id":"cd7e86503020f653369258c7b450ae9f1b7c0074"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"aa024ce7af14fc289fa16881103ce9f14bacb30f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"      changed_when: false"},{"line_number":57,"context_line":"      when:"},{"line_number":58,"context_line":"        - container_facts_per_host is not skipped"},{"line_number":59,"context_line":"        - container_facts_per_host.containers[service.container_name] is defined"},{"line_number":60,"context_line":"        - (hostvars[groups[service.group] | first].service_image_info.images | default([]) | length) \u003e 0"},{"line_number":61,"context_line":"        - container_facts_per_host.containers[service.container_name].Image"},{"line_number":62,"context_line":"          !\u003d hostvars[groups[service.group] | first].service_image_info.images[0].Id"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"60fa1047_62161307","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":13},"in_reply_to":"77913e89_a63e0137","updated":"2026-03-18 10:24:02.000000000","message":"kolla_container_facts is called with action: get_containers, and in this mode it only returns running containers unless get_all_containers is set to true. We do not set get_all_containers in this task. The module documents this in ansible/library/kolla_container_facts.py, and the implementation uses containers.list(all\u003dFalse) by default.\n\nThat means a stopped nova_libvirt container will not appear in container_facts_per_host.containers at all, so this guard already prevents the exec:\n\n  - container_facts_per_host.containers[service.container_name] is defined","commit_id":"cd7e86503020f653369258c7b450ae9f1b7c0074"}]}
