)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e5450e90d1c4863c686b18c48ed2957a733dce3d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ce8348c7_e415c4b7","updated":"2023-11-15 11:09:11.000000000","message":"Easy peas","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"72f2df748b28fe03aac99cee624759f28cff5608","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c4574400_762ed747","updated":"2023-11-15 08:40:17.000000000","message":"Looks good","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fd1dd733df3c0f7545b44ea65cb8a92a2ad679e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"dc24a511_c9889578","updated":"2023-11-15 13:32:16.000000000","message":"i don\u0027t really see a need to hold this on the rest of the series since the code is not used and does not impact any exsiting logic so this is easy to merge early.","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bf7c521c3a34f07b389c5448d0f50db1dcb021bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7dfcbf20_98d85e40","updated":"2023-11-21 08:39:08.000000000","message":"recheck\ntest_rebuild_volume_backed_server failed in tempest-integrated-compute-enforce-scope-new-defaults","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e07a35697c0affd91e3b22470cbcc0ba9b396d11","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cc4d409a_8b61e31f","updated":"2023-11-16 09:57:32.000000000","message":"recheck \n* nova-lvm failed in `tempest.api.compute.images.test_images.ImagesTestJSON.test_create_server_from_snapshot[id-f3cac456-e3fe-4183-a7a7-a59f7f017088]` with API read timeout.\n* nova-next failed sshing into a cirros guest, that guest got a strange IP (169.254.251.97)","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d185674c55cff8f7e5948d89db4920118fe867f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9e11691e_563e8bad","updated":"2023-11-16 14:32:54.000000000","message":"recheck BFV rebuild failed to rebuild volume before timeout (unrelated)","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fd77fcdcfb6e879e2fac3e92ff063d7aa8404956","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0e56f7ee_4f3e86b0","updated":"2023-11-17 21:41:12.000000000","message":"recheck another cinder grenade fail","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e6739ba53edb607ebe75d64accec708833981f84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dd4e1f9a_c29dc4b4","updated":"2023-11-28 22:28:12.000000000","message":"recheck at least on case of a known issue in glance where we try to move from saving to saving","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b5c9b9d6ac308e08bab62fee97a08072ca3af3fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c431ec45_6fa7a3bd","updated":"2023-11-16 17:09:02.000000000","message":"recheck cinder failed in early grenade (again)","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"548d95bb965ae6d3628d11f3707b498c04142ec1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e3c3e1c3_a7fa349d","updated":"2023-11-17 14:26:24.000000000","message":"recheck cinder grenade failure *again*","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"682f54000d216c33d229df01a331ff4caf0375c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"751dc90f_75e59299","updated":"2023-11-15 17:39:46.000000000","message":"recheck grenade failed in old side, unrelated","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"470f192efaacaec52675e2cc59e5efa0d1c0d33a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"52462b2b_2b31b7b0","updated":"2023-11-29 06:15:55.000000000","message":"recheck not many jobs are running right now, so may get passed.","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"52b4819af00013820536e6673ac9d32351c7b905","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a8563c13_24858d14","updated":"2023-12-12 10:35:06.000000000","message":"recheck nova-lvm timeout issue","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f8c2c90a7a9d341392b3428fa34cd14125822b5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fba92ffb_bbc23e3e","updated":"2023-11-28 19:36:38.000000000","message":"recheck post failure and fail to delete server after migration","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a60a1b2108ceb25c29fae454bce39769cbbe9f40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"73706ddc_8f99c206","updated":"2023-11-27 19:02:18.000000000","message":"recheck post failure on functional jobs, maybe due to zuul restart in the middle?","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3c79da4fddcc198a49a0063df77bb99c8db3688d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e825e0f6_d3342ad0","updated":"2023-11-17 19:23:45.000000000","message":"recheck probably bug 2043810","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f752bb8fe4997cc7e49d8cd0b8f68233682f3159","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"04943f95_0d9126d4","updated":"2023-11-27 15:18:07.000000000","message":"recheck results expired, but also almost definitely not related","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"06663e68eb001231da32ac03fdab2d7002f4708f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"54eddbf6_8b46e4f3","updated":"2023-11-28 14:42:16.000000000","message":"recheck unrelated volume resize failure","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b685fdb22f5de85b7b3dfb6d0dad78d448c8923c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8e4cac2e_c338d429","updated":"2023-12-08 12:54:14.000000000","message":"recheck, we have merge a few ci stablity fixes over the last few days so lets see if that helps","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"}],"nova/tests/unit/virt/libvirt/test_config.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e0305edf38ba9274b4a9543218ab62bc56282c0a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.assertEqual(\u0027ua-foo\u0027, config.make_libvirt_device_alias(\u0027foo\u0027))"},{"line_number":30,"context_line":"        self.assertEqual(\u0027foo\u0027, config.parse_libvirt_device_alias(\u0027ua-foo\u0027))"},{"line_number":31,"context_line":"        # if the alias is not a user-specified one, it should come back whole"},{"line_number":32,"context_line":"        self.assertEqual(\u0027foo\u0027, config.parse_libvirt_device_alias(\u0027foo\u0027))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class LibvirtConfigBaseTest(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bda0ee53_2edfc2d6","line":32,"updated":"2023-11-15 15:16:28.000000000","message":"++","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"ee112b2248ab4a36f6bc289dee51da6180be56ca","unresolved":true,"context_lines":[{"line_number":1203,"context_line":"        if self.alias:"},{"line_number":1204,"context_line":"            alias \u003d etree.Element(\"alias\")"},{"line_number":1205,"context_line":"            alias.set(\"name\", self.alias)"},{"line_number":1206,"context_line":"            dev.append(alias)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        if self.source_type \u003d\u003d \"file\":"},{"line_number":1209,"context_line":"            dev.append(etree.Element(\"source\", file\u003dself.source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"fd7eb79f_aff3b665","line":1206,"updated":"2023-08-25 16:13:27.000000000","message":"Makes sense.  You may have already noticed, but just posting it here for other reviewers.  Two things:\n\n- These alias names must have \"ua-\" prefix\n- And the names must consist only these characters: [a-zA-Z0-9_-].\n\n(Source: the \"Devices\" documentation here: https://libvirt.org/formatdomain.html#devices)","commit_id":"d7320efb2a1c2c503d80a5b42a4abc595b1f3d8d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"79f4c2c8afdf836694b6c1203b6e1410d830bf3b","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"        if self.alias:"},{"line_number":1204,"context_line":"            alias \u003d etree.Element(\"alias\")"},{"line_number":1205,"context_line":"            alias.set(\"name\", self.alias)"},{"line_number":1206,"context_line":"            dev.append(alias)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        if self.source_type \u003d\u003d \"file\":"},{"line_number":1209,"context_line":"            dev.append(etree.Element(\"source\", file\u003dself.source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"fe32fc9d_0a2cdf27","line":1206,"in_reply_to":"167c34c4_6525e6f1","updated":"2023-08-28 16:12:49.000000000","message":"Ack, thanks","commit_id":"d7320efb2a1c2c503d80a5b42a4abc595b1f3d8d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2c9c00d72c0f7898622803239b865bfb5cbeb7fb","unresolved":true,"context_lines":[{"line_number":1203,"context_line":"        if self.alias:"},{"line_number":1204,"context_line":"            alias \u003d etree.Element(\"alias\")"},{"line_number":1205,"context_line":"            alias.set(\"name\", self.alias)"},{"line_number":1206,"context_line":"            dev.append(alias)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        if self.source_type \u003d\u003d \"file\":"},{"line_number":1209,"context_line":"            dev.append(etree.Element(\"source\", file\u003dself.source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"167c34c4_6525e6f1","line":1206,"in_reply_to":"3e908891_6c3e9b90","updated":"2023-08-28 14:33:52.000000000","message":"\u003e *The identifier has to have \"ua-\" prefix and must be unique within the domain*\n\u003e \n\u003e so if Nova (non-libvirt) is updating/setting this, then it must be startwith \"ua-\" ?\n\nYes, which is why in the next patch I prefix our values with ua-, and note as much in the commit message.","commit_id":"d7320efb2a1c2c503d80a5b42a4abc595b1f3d8d"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"5c685b3fc9ad6fd1f2474a225bc5302e34124f3e","unresolved":true,"context_lines":[{"line_number":1203,"context_line":"        if self.alias:"},{"line_number":1204,"context_line":"            alias \u003d etree.Element(\"alias\")"},{"line_number":1205,"context_line":"            alias.set(\"name\", self.alias)"},{"line_number":1206,"context_line":"            dev.append(alias)"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        if self.source_type \u003d\u003d \"file\":"},{"line_number":1209,"context_line":"            dev.append(etree.Element(\"source\", file\u003dself.source_path))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3e908891_6c3e9b90","line":1206,"in_reply_to":"fd7eb79f_aff3b665","updated":"2023-08-28 13:45:31.000000000","message":"by default there is no \"ua-\" prefix\n```\n    \u003cdisk type\u003d\u0027block\u0027 device\u003d\u0027disk\u0027\u003e\n      ...\n      \u003calias name\u003d\u0027virtio-disk2\u0027/\u003e\n    \u003c/disk\u003e\n    \n    \u003ccontroller type\u003d\u0027usb\u0027 index\u003d\u00270\u0027 model\u003d\u0027none\u0027\u003e\n      \u003calias name\u003d\u0027usb\u0027/\u003e\n    \u003c/controller\u003e\n    \n    \u003ccontroller type\u003d\u0027pci\u0027 index\u003d\u00270\u0027 model\u003d\u0027pci-root\u0027\u003e\n      \u003calias name\u003d\u0027pci.0\u0027/\u003e\n    \u003c/controller\u003e\n    \n    \u003cinterface type\u003d\u0027ethernet\u0027\u003e\n      ...\n      \u003calias name\u003d\u0027net0\u0027/\u003e\n    \u003c/interface\u003e\n```\n*The identifier has to have \"ua-\" prefix and must be unique within the domain*\n\nso if Nova (non-libvirt) is updating/setting this, then it must be startwith \"ua-\" ?","commit_id":"d7320efb2a1c2c503d80a5b42a4abc595b1f3d8d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6fd1dd733df3c0f7545b44ea65cb8a92a2ad679e","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def parse_libvirt_device_alias(alias):"},{"line_number":50,"context_line":"    assert alias.startswith(\u0027ua-\u0027)"},{"line_number":51,"context_line":"    return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"4b25971f_12f9d189","line":50,"updated":"2023-11-15 13:32:16.000000000","message":"i am generally ok with asserts in production code\nbut i know stephenfin did not like this\n\nin my view this just helps catch incorect data in unit tests and its\nnot chanign the runtime behaivor of the production code\n\nso im fine with this\n\nif other disagree we can drop this in one of the followup patches.","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1e82fa2683ef6f01c4ae01e49d5b072d6e59d263","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def parse_libvirt_device_alias(alias):"},{"line_number":50,"context_line":"    assert alias.startswith(\u0027ua-\u0027)"},{"line_number":51,"context_line":"    return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"295153ca_d06439fa","line":50,"in_reply_to":"1e691719_f7369693","updated":"2023-11-15 15:29:13.000000000","message":"Done","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d7347899f5a7f1854f57b9c006a297c92a6a851c","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def parse_libvirt_device_alias(alias):"},{"line_number":50,"context_line":"    assert alias.startswith(\u0027ua-\u0027)"},{"line_number":51,"context_line":"    return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c03d7bc0_18e6192e","line":50,"in_reply_to":"4b25971f_12f9d189","updated":"2023-11-15 14:14:13.000000000","message":"actully im questioning this so i remvoed +w\n\nthis should not fire at runtime but we can have alaise that doen start with ua-\nthat are generated by libvirt correct?\n\nat least based on the unit test xml you produced in one of the later patches\n\u0027qemu-disk1\u0027\n\nso this assert is highly unlikely to cause runtime issues but maybe we are better of not having it\n\ni will leave my +2 as over all i think this patch is fine and we can loop back to this\n\nif others have no issue with this feel free to readd +w","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ce760a96093d2be2e5f461163dc7a1740cd79d80","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def parse_libvirt_device_alias(alias):"},{"line_number":50,"context_line":"    assert alias.startswith(\u0027ua-\u0027)"},{"line_number":51,"context_line":"    return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c6080140_ea144df1","line":50,"in_reply_to":"c03d7bc0_18e6192e","updated":"2023-11-15 14:36:59.000000000","message":"Oh you\u0027re right, I should not have the assert in here because we\u0027ll parse non-user aliases with it at some point. I added this here for consistency checking when I added this helper function to make sure I wasn\u0027t leaking through any that didn\u0027t get ua- prefixed, but I should remove it now. I\u0027ll do that when I respin.\n\nLately I\u0027ve been using asserts to be quick and easy sanity checks on things that should never happen which can make iterating on test-driven code easier sometimes. I usually (intentionally) leave them in when they really can\u0027t fail in production.","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d643caf527b4c98e76e420cd9d4d552d7d1c317b","unresolved":true,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"def parse_libvirt_device_alias(alias):"},{"line_number":50,"context_line":"    assert alias.startswith(\u0027ua-\u0027)"},{"line_number":51,"context_line":"    return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1e691719_f7369693","line":50,"in_reply_to":"c6080140_ea144df1","updated":"2023-11-15 14:50:50.000000000","message":"ya so i often do the same\ni use assert for things that really should always be true\nso i am fine with that pattern and leaving them in when they will\nnever fire in production.","commit_id":"1d0212573baeca4f61622b496028d50069ef86e3"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e0305edf38ba9274b4a9543218ab62bc56282c0a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    if alias.startswith(\u0027ua-\u0027):"},{"line_number":51,"context_line":"        return alias.split(\u0027-\u0027, 1)[1]"},{"line_number":52,"context_line":"    else:"},{"line_number":53,"context_line":"        return alias"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class LibvirtConfigObject(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4099d1_4efc0654","line":53,"updated":"2023-11-15 15:16:28.000000000","message":"okidoki, maybe we should have a docstring, but meh.","commit_id":"74d7b46f5201497c54f959b9915218f6fa93ed24"}]}
