)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a19389d8596a5ac08eed91d445af5226bac23fc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8f2bc35b_d7b8bf20","updated":"2026-01-13 16:59:06.000000000","message":"one open question","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"8dc5f2d7f2b237828191410a03cd02350024dd5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ff07e25f_4a70fc5a","updated":"2026-01-13 15:25:07.000000000","message":"recheck a known qemu-img bug\n\n```\nStderr: \u0027qemu-img: /opt/stack/data/cinder/conversion/tmpo_46vqht.luks: error while converting luks: Unable to get accurate CPU usage\\n\u0027\n```","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d98f2d8033ac25b034bd77cc1447a2e845d27f50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5c6d2ff2_60617b05","updated":"2026-01-16 17:34:19.000000000","message":"couple of questions","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0d48beb7287382ea2be68a07c7dbc84a8dfc6ed1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0ce2afcf_d1fcf8c4","updated":"2026-01-15 12:59:35.000000000","message":"recheck \"error while converting luks: Unable to get accurate CPU usage\"","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d7e2dcd78d2af16d6aca5a2b7cc6112a528f9079","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"233a45ca_61640f0d","updated":"2026-01-14 15:41:00.000000000","message":"recheck `Kernel panic - not syncing: Attempted to kill init`","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"919eb20aba5fd1ae600f41335bb5bbdb10d53921","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"caca898a_804a04f6","updated":"2026-01-15 09:09:49.000000000","message":"thanks for the fixes","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"6341107c451c55aa97eb62019f994c42ca18ad37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4eba15be_9f0748b3","updated":"2026-02-02 15:12:34.000000000","message":"This patch looks good to me.\nTBH, I have not more to say about it.","commit_id":"232843b77f596b8fd2d228baefc058a1a6039669"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"043c5f32a376ab9fc3c523ea971cf8b2e14951c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"a8d8839c_f6ac1759","updated":"2026-02-23 14:38:02.000000000","message":"Set again +1","commit_id":"3136d594a40aa2fd5e5ce3a47d25d761d31aaaa9"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8587e675d4650e80f1e2b37d3f26b6135c93e05d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"332942b5_c63be67f","updated":"2026-02-23 17:22:59.000000000","message":"restating my +2 again, additional test FTW.","commit_id":"3136d594a40aa2fd5e5ce3a47d25d761d31aaaa9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a9e4ca9646017876fee3204ce156461f49c92d71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5863f1dd_53fe1438","updated":"2026-02-24 17:24:01.000000000","message":"still good","commit_id":"3136d594a40aa2fd5e5ce3a47d25d761d31aaaa9"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a19389d8596a5ac08eed91d445af5226bac23fc5","unresolved":true,"context_lines":[{"line_number":3131,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_CODE.fd\u0027, obj.os_loader)"},{"line_number":3132,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3133,"context_line":"        self.assertTrue(obj.os_loader_readonly)"},{"line_number":3134,"context_line":"        self.assertFalse(obj.os_loader_secure)"},{"line_number":3135,"context_line":"        self.assertFalse(obj.os_loader_stateless)"},{"line_number":3136,"context_line":"        self.assertEqual(\u0027/var/lib/libvirt/qemu/nvram/instance.fd\u0027,"},{"line_number":3137,"context_line":"                         obj.os_nvram)"},{"line_number":3138,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_VARS.fd\u0027, obj.os_nvram_template)"}],"source_content_type":"text/x-python","patch_set":8,"id":"b9306b28_06d98aca","line":3135,"range":{"start_line":3134,"start_character":0,"end_line":3135,"end_character":49},"updated":"2026-01-13 16:59:06.000000000","message":"shouldn\u0027t these elements be None ? I don\u0027t see them in the xmldoc above.","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"79d4e153b96b1993be611649d2b665da308f77b4","unresolved":false,"context_lines":[{"line_number":3131,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_CODE.fd\u0027, obj.os_loader)"},{"line_number":3132,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3133,"context_line":"        self.assertTrue(obj.os_loader_readonly)"},{"line_number":3134,"context_line":"        self.assertFalse(obj.os_loader_secure)"},{"line_number":3135,"context_line":"        self.assertFalse(obj.os_loader_stateless)"},{"line_number":3136,"context_line":"        self.assertEqual(\u0027/var/lib/libvirt/qemu/nvram/instance.fd\u0027,"},{"line_number":3137,"context_line":"                         obj.os_nvram)"},{"line_number":3138,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_VARS.fd\u0027, obj.os_nvram_template)"}],"source_content_type":"text/x-python","patch_set":8,"id":"0a3d095e_017c03a2","line":3135,"range":{"start_line":3134,"start_character":0,"end_line":3135,"end_character":49},"in_reply_to":"7f987f5d_b5f2a63d","updated":"2026-01-13 17:47:22.000000000","message":"Done","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"032cbf4f70367ad1c34adf37ce7608835e4ad46f","unresolved":true,"context_lines":[{"line_number":3131,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_CODE.fd\u0027, obj.os_loader)"},{"line_number":3132,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3133,"context_line":"        self.assertTrue(obj.os_loader_readonly)"},{"line_number":3134,"context_line":"        self.assertFalse(obj.os_loader_secure)"},{"line_number":3135,"context_line":"        self.assertFalse(obj.os_loader_stateless)"},{"line_number":3136,"context_line":"        self.assertEqual(\u0027/var/lib/libvirt/qemu/nvram/instance.fd\u0027,"},{"line_number":3137,"context_line":"                         obj.os_nvram)"},{"line_number":3138,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_VARS.fd\u0027, obj.os_nvram_template)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f987f5d_b5f2a63d","line":3135,"range":{"start_line":3134,"start_character":0,"end_line":3135,"end_character":49},"in_reply_to":"b9306b28_06d98aca","updated":"2026-01-13 17:05:33.000000000","message":"Oh yes. You are correct. I\u0027ll fix this.","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"032cbf4f70367ad1c34adf37ce7608835e4ad46f","unresolved":true,"context_lines":[{"line_number":3165,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3166,"context_line":"        self.assertTrue(obj.os_loader_readonly)"},{"line_number":3167,"context_line":"        self.assertTrue(obj.os_loader_secure)"},{"line_number":3168,"context_line":"        self.assertFalse(obj.os_loader_stateless)"},{"line_number":3169,"context_line":"        self.assertEqual(\u0027/var/lib/libvirt/qemu/nvram/instance.fd\u0027,"},{"line_number":3170,"context_line":"                         obj.os_nvram)"},{"line_number":3171,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_VARS.secboot.fd\u0027, obj.os_nvram_template)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f625084_dc68d8d2","line":3168,"range":{"start_line":3168,"start_character":8,"end_line":3168,"end_character":49},"updated":"2026-01-13 17:05:33.000000000","message":"and this also needs to be None...","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"79d4e153b96b1993be611649d2b665da308f77b4","unresolved":false,"context_lines":[{"line_number":3165,"context_line":"        self.assertEqual(\u0027pflash\u0027, obj.os_loader_type)"},{"line_number":3166,"context_line":"        self.assertTrue(obj.os_loader_readonly)"},{"line_number":3167,"context_line":"        self.assertTrue(obj.os_loader_secure)"},{"line_number":3168,"context_line":"        self.assertFalse(obj.os_loader_stateless)"},{"line_number":3169,"context_line":"        self.assertEqual(\u0027/var/lib/libvirt/qemu/nvram/instance.fd\u0027,"},{"line_number":3170,"context_line":"                         obj.os_nvram)"},{"line_number":3171,"context_line":"        self.assertEqual(\u0027/tmp/OVMF_VARS.secboot.fd\u0027, obj.os_nvram_template)"}],"source_content_type":"text/x-python","patch_set":8,"id":"4b4fc8bd_76b0e082","line":3168,"range":{"start_line":3168,"start_character":8,"end_line":3168,"end_character":49},"in_reply_to":"9f625084_dc68d8d2","updated":"2026-01-13 17:47:22.000000000","message":"Done","commit_id":"7c4052eb2e5940e531f57f117dedfd900eb31c8e"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d98f2d8033ac25b034bd77cc1447a2e845d27f50","unresolved":true,"context_lines":[{"line_number":3179,"context_line":"            self.os_loader_secure is not None or"},{"line_number":3180,"context_line":"            self.os_loader_stateless is not None"},{"line_number":3181,"context_line":"        ):"},{"line_number":3182,"context_line":"            loader \u003d self._text_node(\"loader\", self.os_loader)"},{"line_number":3183,"context_line":"            if self.os_loader_type is not None:"},{"line_number":3184,"context_line":"                loader.set(\"type\", self.os_loader_type)"},{"line_number":3185,"context_line":"            if self.os_loader_readonly is not None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"b8efe1db_a41c0c07","line":3182,"updated":"2026-01-16 17:34:19.000000000","message":"Does this work when os_loader is None? The above condition allows such situation if other fields are set.","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7ec7394bead975ae908f4639569b0a5ca52e8606","unresolved":false,"context_lines":[{"line_number":3179,"context_line":"            self.os_loader_secure is not None or"},{"line_number":3180,"context_line":"            self.os_loader_stateless is not None"},{"line_number":3181,"context_line":"        ):"},{"line_number":3182,"context_line":"            loader \u003d self._text_node(\"loader\", self.os_loader)"},{"line_number":3183,"context_line":"            if self.os_loader_type is not None:"},{"line_number":3184,"context_line":"                loader.set(\"type\", self.os_loader_type)"},{"line_number":3185,"context_line":"            if self.os_loader_readonly is not None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"685f53fd_9e2ce460","line":3182,"in_reply_to":"8e2cb675_cbb2000d","updated":"2026-01-17 18:06:32.000000000","message":"Acknowledged","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"08d7d3289a2aec08c3f55e6478ff351772a3b66e","unresolved":true,"context_lines":[{"line_number":3179,"context_line":"            self.os_loader_secure is not None or"},{"line_number":3180,"context_line":"            self.os_loader_stateless is not None"},{"line_number":3181,"context_line":"        ):"},{"line_number":3182,"context_line":"            loader \u003d self._text_node(\"loader\", self.os_loader)"},{"line_number":3183,"context_line":"            if self.os_loader_type is not None:"},{"line_number":3184,"context_line":"                loader.set(\"type\", self.os_loader_type)"},{"line_number":3185,"context_line":"            if self.os_loader_readonly is not None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"8e2cb675_cbb2000d","line":3182,"in_reply_to":"b8efe1db_a41c0c07","updated":"2026-01-17 15:18:11.000000000","message":"os_loader is the flag to enable auto selection (if it\u0027s set to \u0027efi\u0027 then libvirt attempts to select a firmware). It\u0027s not required if you give full elements such as code path or var path.\n\nCurrent nova fills the full elements for UEFI boot thus it does not set os_loader. (The os_loader has been implemented but has not been used)","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d98f2d8033ac25b034bd77cc1447a2e845d27f50","unresolved":true,"context_lines":[{"line_number":3320,"context_line":"                self.os_kernel \u003d c.text"},{"line_number":3321,"context_line":"            elif c.tag \u003d\u003d \u0027loader\u0027:"},{"line_number":3322,"context_line":"                self.os_loader \u003d c.text"},{"line_number":3323,"context_line":"                self.os_loader_type \u003d c.get(\u0027type\u0027)"},{"line_number":3324,"context_line":"                if c.get(\u0027readonly\u0027):"},{"line_number":3325,"context_line":"                    self.os_loader_readonly \u003d (c.get(\u0027readonly\u0027) \u003d\u003d \u0027yes\u0027)"},{"line_number":3326,"context_line":"                if c.get(\u0027secure\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"74c6b726_d29b46b2","line":3323,"updated":"2026-01-16 17:34:19.000000000","message":"This assumes type is always there, but above we only set it conditionally. Does libvirt adds this by default?","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7ec7394bead975ae908f4639569b0a5ca52e8606","unresolved":false,"context_lines":[{"line_number":3320,"context_line":"                self.os_kernel \u003d c.text"},{"line_number":3321,"context_line":"            elif c.tag \u003d\u003d \u0027loader\u0027:"},{"line_number":3322,"context_line":"                self.os_loader \u003d c.text"},{"line_number":3323,"context_line":"                self.os_loader_type \u003d c.get(\u0027type\u0027)"},{"line_number":3324,"context_line":"                if c.get(\u0027readonly\u0027):"},{"line_number":3325,"context_line":"                    self.os_loader_readonly \u003d (c.get(\u0027readonly\u0027) \u003d\u003d \u0027yes\u0027)"},{"line_number":3326,"context_line":"                if c.get(\u0027secure\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3207d868_7702ff5c","line":3323,"in_reply_to":"0244daaa_f3236503","updated":"2026-01-17 18:06:32.000000000","message":"Ahh I see now. Thanks.","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"08d7d3289a2aec08c3f55e6478ff351772a3b66e","unresolved":true,"context_lines":[{"line_number":3320,"context_line":"                self.os_kernel \u003d c.text"},{"line_number":3321,"context_line":"            elif c.tag \u003d\u003d \u0027loader\u0027:"},{"line_number":3322,"context_line":"                self.os_loader \u003d c.text"},{"line_number":3323,"context_line":"                self.os_loader_type \u003d c.get(\u0027type\u0027)"},{"line_number":3324,"context_line":"                if c.get(\u0027readonly\u0027):"},{"line_number":3325,"context_line":"                    self.os_loader_readonly \u003d (c.get(\u0027readonly\u0027) \u003d\u003d \u0027yes\u0027)"},{"line_number":3326,"context_line":"                if c.get(\u0027secure\u0027):"}],"source_content_type":"text/x-python","patch_set":9,"id":"0244daaa_f3236503","line":3323,"in_reply_to":"74c6b726_d29b46b2","updated":"2026-01-17 15:18:11.000000000","message":"Because the default value of os_loader_type is None, this is exactly equivalent to\n\n```\nif c.get(\u0027type\u0027):\n    self.os_loader_type \u003d c.get(\u0027type\u0027)\n```\n\n\nI thought this if block is just redundant and omitted it.","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d98f2d8033ac25b034bd77cc1447a2e845d27f50","unresolved":true,"context_lines":[{"line_number":7136,"context_line":""},{"line_number":7137,"context_line":"                guest.os_loader \u003d loader"},{"line_number":7138,"context_line":"                guest.os_loader_type \u003d \u0027pflash\u0027"},{"line_number":7139,"context_line":"                guest.os_loader_readonly \u003d True"},{"line_number":7140,"context_line":"                if hw_firmware_stateless:"},{"line_number":7141,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7142,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ea7bcfcf_48cccce7","line":7139,"updated":"2026-01-16 17:34:19.000000000","message":"Does libvirt defaults readonly to True today? If not then is this changing the behavior of the virt driver?","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c22b7bd0ae174ebd2ca2758fd77289e51023463e","unresolved":false,"context_lines":[{"line_number":7136,"context_line":""},{"line_number":7137,"context_line":"                guest.os_loader \u003d loader"},{"line_number":7138,"context_line":"                guest.os_loader_type \u003d \u0027pflash\u0027"},{"line_number":7139,"context_line":"                guest.os_loader_readonly \u003d True"},{"line_number":7140,"context_line":"                if hw_firmware_stateless:"},{"line_number":7141,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7142,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"a162e2db_6d07b68a","line":7139,"in_reply_to":"ea2350dc_38ecb4df","updated":"2026-01-19 12:34:03.000000000","message":"Thanks for the link, so we just move the setting of read-only here. Cool with me.","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"85cc4f6f609c1bd1c96d9f38c815310d712ca7dc","unresolved":true,"context_lines":[{"line_number":7136,"context_line":""},{"line_number":7137,"context_line":"                guest.os_loader \u003d loader"},{"line_number":7138,"context_line":"                guest.os_loader_type \u003d \u0027pflash\u0027"},{"line_number":7139,"context_line":"                guest.os_loader_readonly \u003d True"},{"line_number":7140,"context_line":"                if hw_firmware_stateless:"},{"line_number":7141,"context_line":"                    guest.os_loader_stateless \u003d True"},{"line_number":7142,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"ea2350dc_38ecb4df","line":7139,"in_reply_to":"ea7bcfcf_48cccce7","updated":"2026-01-18 10:25:29.000000000","message":"\u003e Does libvirt defaults readonly to True today?\n\nNo. readonly defaults to absent to leave the decision to qemu, and I think qemu\u0027s default is False.\n\n\u003e If not then is this changing the behavior of the virt driver?\n\nNo, but this is the change to keep the behavior. It is required because now readonly flag is independent from type flag[1]. Previously the readonly flag was set to True implicitly when os_loader_type is set, and this simulates the same behavior.\n\n[1] https://review.opendev.org/c/openstack/nova/+/969086/9/nova/virt/libvirt/config.py#3185","commit_id":"1d795e724bef03501ab42930ee6878419d13c8e6"}]}
