)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ccba2f1cc8a87bf3a5ce65574533f0dece975780","unresolved":true,"context_lines":[{"line_number":14,"context_line":"I logged migrate_vif_by_mac for the failing VM [1]"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://paste.opendev.org/show/809689/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ie3129ee395427337e9abcef2f938012608f643e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fcd26ade_5972ebf6","line":17,"updated":"2021-09-30 11:39:26.000000000","message":"could you please file a bug in https://bugs.launchpad.net/nova/ so we can track this?\n\nThe please add the following to the commit message so the fix is connected to the bug.\n\nCloses-Bug: #\u003cbugid\u003e","commit_id":"951fbf89ef0ba76dc0ccab2cce759bf4586241e2"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0768e6dc49d18644c6891d45847e1520c48ef53f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"I logged migrate_vif_by_mac for the failing VM [1]"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://paste.opendev.org/show/809689/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: Ie3129ee395427337e9abcef2f938012608f643e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"0ff08b85_2b9adc40","line":17,"in_reply_to":"fcd26ade_5972ebf6","updated":"2021-09-30 13:07:29.000000000","message":"Done","commit_id":"951fbf89ef0ba76dc0ccab2cce759bf4586241e2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"02ae42c4a531b4f959d818e39176a72d237022bd","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron can report ports to have MAC addresses"},{"line_number":10,"context_line":"in upper case when they\u0027re created like that. In the meanwhile"},{"line_number":11,"context_line":"libvirt configuration file always stores MAC in lower case"},{"line_number":12,"context_line":"which leads to KeyError while trying to retrieve migrate_vif."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"I logged migrate_vif_by_mac for the failing VM [1]"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1b759883_a31aef43","line":11,"range":{"start_line":11,"start_character":48,"end_line":11,"end_character":53},"updated":"2021-10-07 10:28:42.000000000","message":"not you are making the values upper case in the code i think you should be making them lower cases instead","commit_id":"9aab8f02f56244bc8494f8a0b9a12ff874da0e1d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8781fbe621193c819e004b8ac491af8dfa75ffc4","unresolved":true,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"I logged migrate_vif_by_mac for the failing VM [1]"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1] https://paste.opendev.org/show/809689/"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1945646"},{"line_number":19,"context_line":"Change-Id: Ie3129ee395427337e9abcef2f938012608f643e1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9b7a399c_132811ed","line":16,"updated":"2021-10-07 14:14:57.000000000","message":"nit: It this paste a permanent URL? Or will it get cleaned up after 30 days? In the latter case, someone looking at this commit in two months will get a 404. And the traceback in that paste is in the bug report in any case, so I\u0027d just remove this paste link.","commit_id":"ae6f8ba380a9a5e459015b0bc9dcdf08fbcf2ee6"}],"nova/virt/libvirt/migration.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ccba2f1cc8a87bf3a5ce65574533f0dece975780","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        mac \u003d mac if mac is not None else {}"},{"line_number":347,"context_line":"        mac_addr \u003d mac.get(\u0027address\u0027)"},{"line_number":348,"context_line":"        if mac_addr:"},{"line_number":349,"context_line":"            migrate_vif \u003d migrate_vif_by_mac[mac_addr.upper()]"},{"line_number":350,"context_line":"            vif \u003d migrate_vif.get_dest_vif()"},{"line_number":351,"context_line":"            # get_vif_config is a partial function of"},{"line_number":352,"context_line":"            # nova.virt.libvirt.vif.LibvirtGenericVIFDriver.get_config"}],"source_content_type":"text/x-python","patch_set":2,"id":"15ab6c20_4ed2efaa","line":349,"updated":"2021-09-30 11:39:26.000000000","message":"OK as far as I see this is not changing any stored data but only upper the MAC for comparison.","commit_id":"951fbf89ef0ba76dc0ccab2cce759bf4586241e2"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0768e6dc49d18644c6891d45847e1520c48ef53f","unresolved":false,"context_lines":[{"line_number":346,"context_line":"        mac \u003d mac if mac is not None else {}"},{"line_number":347,"context_line":"        mac_addr \u003d mac.get(\u0027address\u0027)"},{"line_number":348,"context_line":"        if mac_addr:"},{"line_number":349,"context_line":"            migrate_vif \u003d migrate_vif_by_mac[mac_addr.upper()]"},{"line_number":350,"context_line":"            vif \u003d migrate_vif.get_dest_vif()"},{"line_number":351,"context_line":"            # get_vif_config is a partial function of"},{"line_number":352,"context_line":"            # nova.virt.libvirt.vif.LibvirtGenericVIFDriver.get_config"}],"source_content_type":"text/x-python","patch_set":2,"id":"3d2c3249_932e4ea4","line":349,"in_reply_to":"15ab6c20_4ed2efaa","updated":"2021-09-30 13:07:29.000000000","message":"Yep, this change is only to compare same things and eliminate scenarios when they could be different for $reasons","commit_id":"951fbf89ef0ba76dc0ccab2cce759bf4586241e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08c8fb0ff43981889c775f54a0292b25f205dfc1","unresolved":true,"context_lines":[{"line_number":339,"context_line":"    instance_uuid \u003d xml_doc.findtext(\u0027uuid\u0027)"},{"line_number":340,"context_line":"    parser \u003d etree.XMLParser(remove_blank_text\u003dTrue)"},{"line_number":341,"context_line":"    interface_nodes \u003d xml_doc.findall(\u0027./devices/interface\u0027)"},{"line_number":342,"context_line":"    migrate_vif_by_mac \u003d {(vif.source_vif[\u0027address\u0027]).upper(): vif"},{"line_number":343,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":344,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":345,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b079b542_d8b7a292","line":342,"updated":"2021-10-04 10:02:57.000000000","message":"Could we get a comment here explaining why we\u0027re converting it to upper case? Ditto for below.","commit_id":"5755d9e9c1da7dc5f7e91b868d2e93e082314a98"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"08c8fb0ff43981889c775f54a0292b25f205dfc1","unresolved":true,"context_lines":[{"line_number":339,"context_line":"    instance_uuid \u003d xml_doc.findtext(\u0027uuid\u0027)"},{"line_number":340,"context_line":"    parser \u003d etree.XMLParser(remove_blank_text\u003dTrue)"},{"line_number":341,"context_line":"    interface_nodes \u003d xml_doc.findall(\u0027./devices/interface\u0027)"},{"line_number":342,"context_line":"    migrate_vif_by_mac \u003d {(vif.source_vif[\u0027address\u0027]).upper(): vif"},{"line_number":343,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":344,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":345,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3d20d9f2_e64d9738","line":342,"range":{"start_line":342,"start_character":52,"end_line":342,"end_character":53},"updated":"2021-10-04 10:02:57.000000000","message":"nit: the brackets aren\u0027t necessary","commit_id":"5755d9e9c1da7dc5f7e91b868d2e93e082314a98"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05f22905fefea8155842a0c97f54844908547054","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    instance_uuid \u003d xml_doc.findtext(\u0027uuid\u0027)"},{"line_number":340,"context_line":"    parser \u003d etree.XMLParser(remove_blank_text\u003dTrue)"},{"line_number":341,"context_line":"    interface_nodes \u003d xml_doc.findall(\u0027./devices/interface\u0027)"},{"line_number":342,"context_line":"    migrate_vif_by_mac \u003d {(vif.source_vif[\u0027address\u0027]).upper(): vif"},{"line_number":343,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":344,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":345,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"62c30eb3_08a2e354","line":342,"range":{"start_line":342,"start_character":52,"end_line":342,"end_character":53},"in_reply_to":"3d20d9f2_e64d9738","updated":"2021-10-07 09:07:01.000000000","message":"Done","commit_id":"5755d9e9c1da7dc5f7e91b868d2e93e082314a98"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05f22905fefea8155842a0c97f54844908547054","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    instance_uuid \u003d xml_doc.findtext(\u0027uuid\u0027)"},{"line_number":340,"context_line":"    parser \u003d etree.XMLParser(remove_blank_text\u003dTrue)"},{"line_number":341,"context_line":"    interface_nodes \u003d xml_doc.findall(\u0027./devices/interface\u0027)"},{"line_number":342,"context_line":"    migrate_vif_by_mac \u003d {(vif.source_vif[\u0027address\u0027]).upper(): vif"},{"line_number":343,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":344,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":345,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1e65d3b9_e2489a04","line":342,"in_reply_to":"b079b542_d8b7a292","updated":"2021-10-07 09:07:01.000000000","message":"Done","commit_id":"5755d9e9c1da7dc5f7e91b868d2e93e082314a98"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0ddd0fa5affd7b1840394aa6b489da38d8a9bea","unresolved":true,"context_lines":[{"line_number":340,"context_line":"    parser \u003d etree.XMLParser(remove_blank_text\u003dTrue)"},{"line_number":341,"context_line":"    interface_nodes \u003d xml_doc.findall(\u0027./devices/interface\u0027)"},{"line_number":342,"context_line":"    # MAC address stored for port in neutron DB and in domain XML"},{"line_number":343,"context_line":"    # might be in defferent cases, so to harmonize that"},{"line_number":344,"context_line":"    # we convert MAC to upper case for dict key."},{"line_number":345,"context_line":"    migrate_vif_by_mac \u003d {vif.source_vif[\u0027address\u0027].upper(): vif"},{"line_number":346,"context_line":"                          for vif in migrate_data.vifs}"}],"source_content_type":"text/x-python","patch_set":7,"id":"f9b924fc_087609ed","line":343,"range":{"start_line":343,"start_character":18,"end_line":343,"end_character":27},"updated":"2021-10-07 09:35:26.000000000","message":"different","commit_id":"5f888de50febb9db706ed8d15e5a4cee16b4c435"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0ddd0fa5affd7b1840394aa6b489da38d8a9bea","unresolved":true,"context_lines":[{"line_number":350,"context_line":"        mac_addr \u003d mac.get(\u0027address\u0027)"},{"line_number":351,"context_line":"        if mac_addr:"},{"line_number":352,"context_line":"            # MAC address stored for port in neutron DB and in domain"},{"line_number":353,"context_line":"            # XML might be in defferent cases, so to harmonize that"},{"line_number":354,"context_line":"            # we convert MAC to upper case for dict key."},{"line_number":355,"context_line":"            migrate_vif \u003d migrate_vif_by_mac[mac_addr.upper()]"},{"line_number":356,"context_line":"            vif \u003d migrate_vif.get_dest_vif()"}],"source_content_type":"text/x-python","patch_set":7,"id":"f24145c1_2811d44b","line":353,"range":{"start_line":353,"start_character":30,"end_line":353,"end_character":39},"updated":"2021-10-07 09:35:26.000000000","message":"different","commit_id":"5f888de50febb9db706ed8d15e5a4cee16b4c435"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"02ae42c4a531b4f959d818e39176a72d237022bd","unresolved":true,"context_lines":[{"line_number":342,"context_line":"    # MAC address stored for port in neutron DB and in domain XML"},{"line_number":343,"context_line":"    # might be in different cases, so to harmonize that"},{"line_number":344,"context_line":"    # we convert MAC to upper case for dict key."},{"line_number":345,"context_line":"    migrate_vif_by_mac \u003d {vif.source_vif[\u0027address\u0027].upper(): vif"},{"line_number":346,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":347,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":348,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"aef44ce1_6435bd25","line":345,"range":{"start_line":345,"start_character":52,"end_line":345,"end_character":57},"updated":"2021-10-07 10:28:42.000000000","message":"i think you should actully be inverting this and using lowercase not upper case to normalises.\n\nas you noted in the comint libvirt is useing lower case and neutron will use lower case if it generates the mac.\nit will only be upper case if the mac was propvided by the user.\n\nlower case is a more common way to serialise mac adressis in other usages also.","commit_id":"9aab8f02f56244bc8494f8a0b9a12ff874da0e1d"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"69e2322bebffbd518b63d471039fea9659963027","unresolved":true,"context_lines":[{"line_number":342,"context_line":"    # MAC address stored for port in neutron DB and in domain XML"},{"line_number":343,"context_line":"    # might be in different cases, so to harmonize that"},{"line_number":344,"context_line":"    # we convert MAC to upper case for dict key."},{"line_number":345,"context_line":"    migrate_vif_by_mac \u003d {vif.source_vif[\u0027address\u0027].upper(): vif"},{"line_number":346,"context_line":"                          for vif in migrate_data.vifs}"},{"line_number":347,"context_line":"    for interface_dev in interface_nodes:"},{"line_number":348,"context_line":"        mac \u003d interface_dev.find(\u0027mac\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"196cfb8a_55206b20","line":345,"range":{"start_line":345,"start_character":52,"end_line":345,"end_character":57},"in_reply_to":"aef44ce1_6435bd25","updated":"2021-10-07 11:15:00.000000000","message":"So the thing is that all unit tests of nova has assumption of mac being in upper case. I didn\u0027t want to change that behaviour tbh but I can do that if you think it makes difference. As lower() was first thing I did as well until realized I would need to adjust unit tests to fit my patch which felt wrong...","commit_id":"9aab8f02f56244bc8494f8a0b9a12ff874da0e1d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"8781fbe621193c819e004b8ac491af8dfa75ffc4","unresolved":true,"context_lines":[{"line_number":352,"context_line":"            # MAC address stored for port in neutron DB and in domain"},{"line_number":353,"context_line":"            # XML might be in different cases, so to harmonize that"},{"line_number":354,"context_line":"            # we convert MAC to lower case for dict key."},{"line_number":355,"context_line":"            migrate_vif \u003d migrate_vif_by_mac[mac_addr.lower()]"},{"line_number":356,"context_line":"            vif \u003d migrate_vif.get_dest_vif()"},{"line_number":357,"context_line":"            # get_vif_config is a partial function of"},{"line_number":358,"context_line":"            # nova.virt.libvirt.vif.LibvirtGenericVIFDriver.get_config"}],"source_content_type":"text/x-python","patch_set":10,"id":"c3134e79_28ac8679","line":355,"updated":"2021-10-07 14:14:57.000000000","message":"I\u0027m being fastidious here because it took me an annoyingly non-trivial amount of time to grok all of this, but isn\u0027t this normalization technically not necessary? It\u0027s the MAC we get from the libvirt XML, which is guaranteed to be lower case. All we need to do is normalize the mac from Neutron (aka what we have in migrate_data.vifs) to lower case. In fact, your unit test still passes if you remove this. Can we at least have a comment explaining that we\u0027re normalizing the libvirt XML MAC address, which is just to be extra safe?","commit_id":"ae6f8ba380a9a5e459015b0bc9dcdf08fbcf2ee6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"72b76b6124dc6c56701236fd301c2ed0a4bff243","unresolved":true,"context_lines":[{"line_number":352,"context_line":"            # MAC address stored for port in neutron DB and in domain"},{"line_number":353,"context_line":"            # XML might be in different cases, so to harmonize that"},{"line_number":354,"context_line":"            # we convert MAC to lower case for dict key."},{"line_number":355,"context_line":"            migrate_vif \u003d migrate_vif_by_mac[mac_addr.lower()]"},{"line_number":356,"context_line":"            vif \u003d migrate_vif.get_dest_vif()"},{"line_number":357,"context_line":"            # get_vif_config is a partial function of"},{"line_number":358,"context_line":"            # nova.virt.libvirt.vif.LibvirtGenericVIFDriver.get_config"}],"source_content_type":"text/x-python","patch_set":10,"id":"c4a34e28_36abb99e","line":355,"in_reply_to":"c3134e79_28ac8679","updated":"2021-10-08 09:16:32.000000000","message":"Yeah, I agree that I added lower here just in case to be extra safe, as for some reason thought, that libvirt started normalizing macs starting from some version only. But it feels I was wrong. But anyway, I\u0027d rather leave it as is ad adjusted comment only.","commit_id":"ae6f8ba380a9a5e459015b0bc9dcdf08fbcf2ee6"}]}
