)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"4d539e4c5c704b6d6de4871ba88be73049f62d0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"44ab9c85_6efe4c60","updated":"2022-11-08 13:45:50.000000000","message":"I checked that it was commit 82aabb0 that broke bulk port create with an ipv6 subnet as you suspected.\n\nAlso that the bug is only present when the request does not contain a mac_address.\n\nSo it seems correct to me that the root cause is the wrong order of ip allocation and mac generation. Mac generation should come first, so we have a mac before we allocate v6 addresses even when the user did not supply a mac.\n\nThe patch fixes the bug for me as it is now, but we should have unit tests and the code could be better factored as commented.","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bcaa81fe2e649011d1846aba2837ca6a37dbd61a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"4f92de90_eb69cc15","updated":"2022-11-09 20:12:01.000000000","message":"-1 just to make sure my comment is answered.","commit_id":"76d1872acaa27e81b1998828f32a128cad6ce80e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"308d3620fec0a53021cb277aa33940aa4598e155","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e51efc9c_f62ef352","updated":"2022-11-10 13:36:48.000000000","message":"Please backport this patch once merged. Thanks!","commit_id":"f3a13c30bc8236304d1fabda49206fcf702ab1f1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5a906d5bac783ff8bed953cb709e2f0e297ad4b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e43937f5_3d5fe30a","in_reply_to":"e51efc9c_f62ef352","updated":"2022-11-10 13:45:24.000000000","message":"+1","commit_id":"f3a13c30bc8236304d1fabda49206fcf702ab1f1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0c749b8f2492b7af8e94bedb4497462f6bff3ab4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bc70de3a_b4e09df7","updated":"2022-11-14 10:34:47.000000000","message":"recheck\nneutron-tempest-plugin-openvswitch failed at the image_customization phase","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7d279d0a2d51bf11b20ce3f6a2d0dc765cf89b97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9b8ad9cd_4e54924a","updated":"2022-11-18 21:24:48.000000000","message":"Looks good Lajos, thanks for the update!","commit_id":"96e79b941945f77f9f7460102edd454d38f9e8f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ca81f5af1e62790aba379c3109cfc8eaca27d79e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"56b85dce_5942e44c","updated":"2022-11-23 17:42:09.000000000","message":"-1 just for the NOTE to be added. We should have one single method to sanitize the MAC addresses to avoid https://bugs.launchpad.net/neutron/+bug/1926273. All MACs stored in the DB should have the same format \"xx:xx:xx:xx:xx:xx\" and we should use the same formatter.","commit_id":"731a0c59f9d0bbc88973931a1bd90ef6c88a8f9d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3e5cc48d40152ebdcc84ebf3f9156e99277bbcff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b30eb0a5_76f0bf29","updated":"2022-11-22 08:28:25.000000000","message":"recheck\nHit of https://bugs.launchpad.net/neutron/+bug/1997025","commit_id":"731a0c59f9d0bbc88973931a1bd90ef6c88a8f9d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99f808b891611b5cb575dbd9292973c88f324aa3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1860aabf_e70449d4","updated":"2022-11-23 07:52:46.000000000","message":"recheck fixed live migration issue","commit_id":"731a0c59f9d0bbc88973931a1bd90ef6c88a8f9d"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f1447c827f2670aeac1e18257657793f43aa91b9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0454fc93_8ecd9553","updated":"2022-12-06 13:48:49.000000000","message":"Looking all good.","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"fe36d0fb798b7c9a262a01778ad9efce088d4cb3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e4ce781e_67b2b562","updated":"2022-11-30 20:48:05.000000000","message":"Thanks for all the re-spins Lajos 😊\n\nrecheck\nfullstack failed with https://bugs.launchpad.net/neutron/+bug/1998353\nand functional with https://bugs.launchpad.net/neutron/+bug/1995031","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"95e29ec016dc146c4ec105ab8353eb9b850b3bb0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a0682661_8c1eb6d4","updated":"2022-11-30 16:16:43.000000000","message":"recheck\nfullstack failed with https://bugs.launchpad.net/neutron/+bug/1998353\nand functional with https://bugs.launchpad.net/neutron/+bug/1995031","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7986d4d72b6ff8e9445088a4de92922d9616b7a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d371e51e_023f69be","updated":"2022-12-12 17:39:03.000000000","message":"recheck\ntempest jobs\u0027 timeout was fixed ","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b695d4e042264c4aa808b91475bab8e7bba9f6f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3921373d_5b0c8cd2","updated":"2022-12-02 14:04:17.000000000","message":"recheck fullstack issue fixed","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e1eec9857d4350de7076f9484c28ae9493235977","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4e42717f_910549b4","updated":"2022-12-01 16:48:20.000000000","message":"recheck https://bugs.launchpad.net/neutron/+bug/1998353","commit_id":"f7dd7790f5c6e3149af4680ba521089328d1eb0c"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"4d539e4c5c704b6d6de4871ba88be73049f62d0e","unresolved":true,"context_lines":[{"line_number":1597,"context_line":"        return bound_context.current"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    def allocate_ips_for_ports(self, context, ports):"},{"line_number":1600,"context_line":"        macs \u003d self._generate_macs(len(ports))"},{"line_number":1601,"context_line":"        for port in ports:"},{"line_number":1602,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1603,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9bdb7b19_bb54baab","line":1600,"updated":"2022-11-08 13:45:50.000000000","message":"I see that we need to generate macs before we allocate ips, because allocating v6 ips require macs to be present already. So technically this seems correct, but it\u0027s quite strangely factored that we have all this in a method called allocate_ips_for_ports.","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e621762d59bf27b3b77fcb8157f65c49386d5680","unresolved":true,"context_lines":[{"line_number":1597,"context_line":"        return bound_context.current"},{"line_number":1598,"context_line":""},{"line_number":1599,"context_line":"    def allocate_ips_for_ports(self, context, ports):"},{"line_number":1600,"context_line":"        macs \u003d self._generate_macs(len(ports))"},{"line_number":1601,"context_line":"        for port in ports:"},{"line_number":1602,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1603,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"}],"source_content_type":"text/x-python","patch_set":1,"id":"6692b760_58121d91","line":1600,"in_reply_to":"9bdb7b19_bb54baab","updated":"2022-11-09 16:45:54.000000000","message":"thanks, I added macs to the method\u0027s name","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4b0707d4544694ee8495bc01efcb86e64266c7c1","unresolved":true,"context_lines":[{"line_number":1602,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1603,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"            network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1608,"context_line":"                    const.ATTR_NOT_SPECIFIED)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b2c3273_640c924e","line":1605,"updated":"2022-11-09 15:06:23.000000000","message":"Is this correct? Shouldn\u0027t it be port[\u0027port\u0027].get(\u0027network_id\u0027) ? That seems to be what the previous code was doing. If your change was using None here it could be hiding a failure in _is_mac_in_use().","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e621762d59bf27b3b77fcb8157f65c49386d5680","unresolved":true,"context_lines":[{"line_number":1602,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1603,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"},{"line_number":1604,"context_line":""},{"line_number":1605,"context_line":"            network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1608,"context_line":"                    const.ATTR_NOT_SPECIFIED)"}],"source_content_type":"text/x-python","patch_set":1,"id":"861bdf09_64c18650","line":1605,"in_reply_to":"8b2c3273_640c924e","updated":"2022-11-09 16:45:54.000000000","message":"thanks, good catch","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b27c287ab5ba891aaefac32375dbe2b2b7d345a8","unresolved":true,"context_lines":[{"line_number":1605,"context_line":"            network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1608,"context_line":"                    const.ATTR_NOT_SPECIFIED)"},{"line_number":1609,"context_line":"            if raw_mac_address is const.ATTR_NOT_SPECIFIED:"},{"line_number":1610,"context_line":"                raw_mac_address \u003d macs.pop()"},{"line_number":1611,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"414dc281_a6f4fd87","line":1608,"range":{"start_line":1608,"start_character":20,"end_line":1608,"end_character":45},"updated":"2022-11-07 14:33:34.000000000","message":"nit: this should be aligned","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e621762d59bf27b3b77fcb8157f65c49386d5680","unresolved":false,"context_lines":[{"line_number":1605,"context_line":"            network_id \u003d port.get(\u0027network_id\u0027)"},{"line_number":1606,"context_line":""},{"line_number":1607,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1608,"context_line":"                    const.ATTR_NOT_SPECIFIED)"},{"line_number":1609,"context_line":"            if raw_mac_address is const.ATTR_NOT_SPECIFIED:"},{"line_number":1610,"context_line":"                raw_mac_address \u003d macs.pop()"},{"line_number":1611,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bed150f7_625d7ad1","line":1608,"range":{"start_line":1608,"start_character":20,"end_line":1608,"end_character":45},"in_reply_to":"414dc281_a6f4fd87","updated":"2022-11-09 16:45:54.000000000","message":"Done","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b27c287ab5ba891aaefac32375dbe2b2b7d345a8","unresolved":true,"context_lines":[{"line_number":1611,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"},{"line_number":1612,"context_line":"                raise exc.MacAddressInUse(net_id\u003dnetwork_id,"},{"line_number":1613,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1614,"context_line":"            eui_mac_address \u003d netaddr.EUI(raw_mac_address,"},{"line_number":1615,"context_line":"                                          dialect\u003deui48.mac_unix_expanded)"},{"line_number":1616,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1617,"context_line":""},{"line_number":1618,"context_line":"            # Call IPAM to allocate IP addresses"}],"source_content_type":"text/x-python","patch_set":1,"id":"7235c3a3_b5f25b95","line":1615,"range":{"start_line":1614,"start_character":12,"end_line":1615,"end_character":74},"updated":"2022-11-07 14:33:34.000000000","message":"We have a n-lib method called \"convert_to_sanitized_mac_address\"","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e621762d59bf27b3b77fcb8157f65c49386d5680","unresolved":true,"context_lines":[{"line_number":1611,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"},{"line_number":1612,"context_line":"                raise exc.MacAddressInUse(net_id\u003dnetwork_id,"},{"line_number":1613,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1614,"context_line":"            eui_mac_address \u003d netaddr.EUI(raw_mac_address,"},{"line_number":1615,"context_line":"                                          dialect\u003deui48.mac_unix_expanded)"},{"line_number":1616,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1617,"context_line":""},{"line_number":1618,"context_line":"            # Call IPAM to allocate IP addresses"}],"source_content_type":"text/x-python","patch_set":1,"id":"4170a334_b2564bde","line":1615,"range":{"start_line":1614,"start_character":12,"end_line":1615,"end_character":74},"in_reply_to":"7235c3a3_b5f25b95","updated":"2022-11-09 16:45:54.000000000","message":"thanks, done","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4b0707d4544694ee8495bc01efcb86e64266c7c1","unresolved":true,"context_lines":[{"line_number":1677,"context_line":"                # Ensure that the networks exist."},{"line_number":1678,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1679,"context_line":"                if network_id not in network_cache:"},{"line_number":1680,"context_line":"                    network \u003d self.get_network(context, network_id)"},{"line_number":1681,"context_line":"                    network_cache[network_id] \u003d network"},{"line_number":1682,"context_line":"                else:"},{"line_number":1683,"context_line":"                    network \u003d network_cache[network_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"c6d43576_e6edb53b","line":1680,"updated":"2022-11-09 15:06:23.000000000","message":"So this refactor unfortunately removed this call, which will raise an exception if the network does not exist before we assign a MAC and check for uniqueness on the network. I\u0027m not sure how that will change the API call, but could cause a regression from that perspective.","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e621762d59bf27b3b77fcb8157f65c49386d5680","unresolved":true,"context_lines":[{"line_number":1677,"context_line":"                # Ensure that the networks exist."},{"line_number":1678,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1679,"context_line":"                if network_id not in network_cache:"},{"line_number":1680,"context_line":"                    network \u003d self.get_network(context, network_id)"},{"line_number":1681,"context_line":"                    network_cache[network_id] \u003d network"},{"line_number":1682,"context_line":"                else:"},{"line_number":1683,"context_line":"                    network \u003d network_cache[network_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"dd635623_2486c677","line":1680,"in_reply_to":"c6d43576_e6edb53b","updated":"2022-11-09 16:45:54.000000000","message":"I will check this","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"bcaa81fe2e649011d1846aba2837ca6a37dbd61a","unresolved":true,"context_lines":[{"line_number":1677,"context_line":"                # Ensure that the networks exist."},{"line_number":1678,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1679,"context_line":"                if network_id not in network_cache:"},{"line_number":1680,"context_line":"                    network \u003d self.get_network(context, network_id)"},{"line_number":1681,"context_line":"                    network_cache[network_id] \u003d network"},{"line_number":1682,"context_line":"                else:"},{"line_number":1683,"context_line":"                    network \u003d network_cache[network_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"df8c0ab2_4e62e016","line":1680,"in_reply_to":"dd635623_2486c677","updated":"2022-11-09 20:12:01.000000000","message":"And just as a follow-on, I suppose the above code could use self._get_network() or self._network_exists() since it doesn\u0027t want the dict self.get_network() will return.","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7f3d51433efead59d2b5b093fa16d2ddd56ce3bf","unresolved":true,"context_lines":[{"line_number":1677,"context_line":"                # Ensure that the networks exist."},{"line_number":1678,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1679,"context_line":"                if network_id not in network_cache:"},{"line_number":1680,"context_line":"                    network \u003d self.get_network(context, network_id)"},{"line_number":1681,"context_line":"                    network_cache[network_id] \u003d network"},{"line_number":1682,"context_line":"                else:"},{"line_number":1683,"context_line":"                    network \u003d network_cache[network_id]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc61121c_41197a28","line":1680,"in_reply_to":"df8c0ab2_4e62e016","updated":"2022-11-10 11:25:30.000000000","message":"I chose _get_network as that actually throws NetworkNotFound but _network_exists only returns empty, so I have to do the check, see l1607.\n\nthanks for checking","commit_id":"8167b6b43b76ac51d460780714ecb1949d836540"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a1c08dc0607427e087ef0b2fd9f76f8142e58cc5","unresolved":true,"context_lines":[{"line_number":1605,"context_line":"            # Ensure that the networks exist, _network_exists just returns"},{"line_number":1606,"context_line":"            # empty list, but _get_network raises NetworkNotFound if the"},{"line_number":1607,"context_line":"            # network_id is fake."},{"line_number":1608,"context_line":"            self._get_network(context, network_id)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1611,"context_line":"                                               const.ATTR_NOT_SPECIFIED)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fdd20ddd_07f63710","line":1608,"updated":"2022-11-10 23:47:46.000000000","message":"So just a question on this. If the API call has the same network ID for all the ports, but no MACs we will call this many times. This is why the code below caches the result(s). I think you would want to same something here as well to avoid the extra calls.\n\nNot sure what the best answer is, suppose you could just move the network_cache code here and return (ports, network_cache) to be used later? Didn\u0027t want to complicate things but don\u0027t know how much extra overhead there is with the extra DB calls. I didn\u0027t think about that when I made my suggestion.","commit_id":"f3a13c30bc8236304d1fabda49206fcf702ab1f1"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"665a285b2a1790d26fb62fdce0882011ca51f7f2","unresolved":true,"context_lines":[{"line_number":1605,"context_line":"            # Ensure that the networks exist, _network_exists just returns"},{"line_number":1606,"context_line":"            # empty list, but _get_network raises NetworkNotFound if the"},{"line_number":1607,"context_line":"            # network_id is fake."},{"line_number":1608,"context_line":"            self._get_network(context, network_id)"},{"line_number":1609,"context_line":""},{"line_number":1610,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1611,"context_line":"                                               const.ATTR_NOT_SPECIFIED)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3885bb61_a3beb74c","line":1608,"in_reply_to":"fdd20ddd_07f63710","updated":"2022-11-11 09:04:33.000000000","message":"thanks.\nI moved the cache logic to allocate_macs_and_ips_for_ports, I don\u0027t see that in l1688. can happen that the net_id is not in network_cache","commit_id":"f3a13c30bc8236304d1fabda49206fcf702ab1f1"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2636198015ff67a8661c4a1ac3d1a3e27d67f433","unresolved":true,"context_lines":[{"line_number":1688,"context_line":"                                            **bulk_port_data)"},{"line_number":1689,"context_line":"                db_port_obj.create()"},{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"                # Call IPAM to store allocated IP addresses"},{"line_number":1692,"context_line":"                ipams \u003d port.pop(\"ipams\")"},{"line_number":1693,"context_line":"                self.ipam.store_ip_allocation_for_port("},{"line_number":1694,"context_line":"                    context, ipams, network_id, port)"}],"source_content_type":"text/x-python","patch_set":5,"id":"33063f27_bed43b6a","side":"PARENT","line":1691,"updated":"2022-11-11 15:11:02.000000000","message":"And this should be put back.","commit_id":"da8dfcd613453ae67d951b5f5a309c72147f53b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"439fcecb4e4696120425c446fa7ecad6c6560913","unresolved":false,"context_lines":[{"line_number":1688,"context_line":"                                            **bulk_port_data)"},{"line_number":1689,"context_line":"                db_port_obj.create()"},{"line_number":1690,"context_line":""},{"line_number":1691,"context_line":"                # Call IPAM to store allocated IP addresses"},{"line_number":1692,"context_line":"                ipams \u003d port.pop(\"ipams\")"},{"line_number":1693,"context_line":"                self.ipam.store_ip_allocation_for_port("},{"line_number":1694,"context_line":"                    context, ipams, network_id, port)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0eb827f2_1136270b","side":"PARENT","line":1691,"in_reply_to":"33063f27_bed43b6a","updated":"2022-11-29 20:18:40.000000000","message":"Done","commit_id":"da8dfcd613453ae67d951b5f5a309c72147f53b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2636198015ff67a8661c4a1ac3d1a3e27d67f433","unresolved":true,"context_lines":[{"line_number":1603,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1604,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"},{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"            # Ensure that the networks exist, _network_exists just returns"},{"line_number":1607,"context_line":"            # empty list, but _get_network raises NetworkNotFound if the"},{"line_number":1608,"context_line":"            # network_id is fake."},{"line_number":1609,"context_line":"            network_id \u003d port[\u0027port\u0027].get(\u0027network_id\u0027)"},{"line_number":1610,"context_line":"            if network_id not in network_cache:"},{"line_number":1611,"context_line":"                network \u003d self.get_network(context, network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a4d12fb_a32265fd","line":1608,"range":{"start_line":1606,"start_character":46,"end_line":1608,"end_character":33},"updated":"2022-11-11 15:11:02.000000000","message":"This comment doesn\u0027t apply any more","commit_id":"d1ec24649620aab8977d44cd612a6f4b61c8d6ea"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"718c42dbb8eeabea7d35c701a1b4f8c886c4c564","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"            port[\u0027port\u0027][\u0027id\u0027] \u003d ("},{"line_number":1604,"context_line":"                port[\u0027port\u0027].get(\u0027id\u0027) or uuidutils.generate_uuid())"},{"line_number":1605,"context_line":""},{"line_number":1606,"context_line":"            # Ensure that the networks exist, _network_exists just returns"},{"line_number":1607,"context_line":"            # empty list, but _get_network raises NetworkNotFound if the"},{"line_number":1608,"context_line":"            # network_id is fake."},{"line_number":1609,"context_line":"            network_id \u003d port[\u0027port\u0027].get(\u0027network_id\u0027)"},{"line_number":1610,"context_line":"            if network_id not in network_cache:"},{"line_number":1611,"context_line":"                network \u003d self.get_network(context, network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"eec68bfe_0234604b","line":1608,"range":{"start_line":1606,"start_character":46,"end_line":1608,"end_character":33},"in_reply_to":"7a4d12fb_a32265fd","updated":"2022-11-14 08:51:59.000000000","message":"Done","commit_id":"d1ec24649620aab8977d44cd612a6f4b61c8d6ea"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2636198015ff67a8661c4a1ac3d1a3e27d67f433","unresolved":true,"context_lines":[{"line_number":1683,"context_line":"                    device_owner\u003dpdata.get(\u0027device_owner\u0027),"},{"line_number":1684,"context_line":"                    description\u003dpdata.get(\u0027description\u0027))"},{"line_number":1685,"context_line":""},{"line_number":1686,"context_line":"                # Ensure that the networks exist."},{"line_number":1687,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1688,"context_line":"                network \u003d network_cache[network_id]"},{"line_number":1689,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"93a10fe7_9cb57bb6","line":1686,"range":{"start_line":1686,"start_character":16,"end_line":1686,"end_character":49},"updated":"2022-11-11 15:11:02.000000000","message":"And I guess this doesn\u0027t either","commit_id":"d1ec24649620aab8977d44cd612a6f4b61c8d6ea"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"718c42dbb8eeabea7d35c701a1b4f8c886c4c564","unresolved":false,"context_lines":[{"line_number":1683,"context_line":"                    device_owner\u003dpdata.get(\u0027device_owner\u0027),"},{"line_number":1684,"context_line":"                    description\u003dpdata.get(\u0027description\u0027))"},{"line_number":1685,"context_line":""},{"line_number":1686,"context_line":"                # Ensure that the networks exist."},{"line_number":1687,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1688,"context_line":"                network \u003d network_cache[network_id]"},{"line_number":1689,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"68da2f39_43179c6a","line":1686,"range":{"start_line":1686,"start_character":16,"end_line":1686,"end_character":49},"in_reply_to":"93a10fe7_9cb57bb6","updated":"2022-11-14 08:51:59.000000000","message":"Done","commit_id":"d1ec24649620aab8977d44cd612a6f4b61c8d6ea"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"609edf8301d18af2c7341dc898ddcd899a5f4c11","unresolved":true,"context_lines":[{"line_number":1615,"context_line":"            if raw_mac_address is const.ATTR_NOT_SPECIFIED:"},{"line_number":1616,"context_line":"                raw_mac_address \u003d macs.pop()"},{"line_number":1617,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"},{"line_number":1618,"context_line":"                raise exc.MacAddressInUse(net_id\u003dnetwork_id,"},{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e5996b3_9c52ae05","line":1618,"range":{"start_line":1618,"start_character":26,"end_line":1618,"end_character":41},"updated":"2022-11-14 15:38:39.000000000","message":"This is not a change from as it was before, but it\u0027s weird that the API user may get back MacAddressInUse when he did not specify a MAC, just the random generated MAC happened to be a duplicate.","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ca81f5af1e62790aba379c3109cfc8eaca27d79e","unresolved":false,"context_lines":[{"line_number":1615,"context_line":"            if raw_mac_address is const.ATTR_NOT_SPECIFIED:"},{"line_number":1616,"context_line":"                raw_mac_address \u003d macs.pop()"},{"line_number":1617,"context_line":"            elif self._is_mac_in_use(context, network_id, raw_mac_address):"},{"line_number":1618,"context_line":"                raise exc.MacAddressInUse(net_id\u003dnetwork_id,"},{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"}],"source_content_type":"text/x-python","patch_set":6,"id":"8ea2b8e5_dabbb61e","line":1618,"range":{"start_line":1618,"start_character":26,"end_line":1618,"end_character":41},"in_reply_to":"2e5996b3_9c52ae05","updated":"2022-11-23 17:42:09.000000000","message":"This check is legit but the chances to hit this line are minimal. Of course, as you commented, that would looks weird. But we need to fail in this case.","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"609edf8301d18af2c7341dc898ddcd899a5f4c11","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"eefd3ae3_18e06c3e","line":1622,"updated":"2022-11-14 15:38:39.000000000","message":"This produces a wrong mac format, like: FA-16-3E-34-24-4F\nInstead of this format: fa:16:3e:37:a9:b2","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1bd5a0c886a1337453902c5a7889d458a744d1fb","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1cdb9746_d53fc23b","line":1622,"in_reply_to":"02511bd1_2a2aa958","updated":"2022-11-25 08:49:51.000000000","message":"I added note and TODO","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"f1447c827f2670aeac1e18257657793f43aa91b9","unresolved":false,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac39105_a789e066","line":1622,"in_reply_to":"1cdb9746_d53fc23b","updated":"2022-12-06 13:48:49.000000000","message":"Done","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"b09f08592e46179ee612b4043aa4a74fbdbe0346","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"d15be51d_6e287c2f","line":1622,"in_reply_to":"44e4df48_7ee7f766","updated":"2022-11-15 12:09:34.000000000","message":"I think that would be a good idea.","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ca81f5af1e62790aba379c3109cfc8eaca27d79e","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"02511bd1_2a2aa958","line":1622,"in_reply_to":"67341acb_7efc1fa9","updated":"2022-11-23 17:42:09.000000000","message":"That means we need to fix \"convert_to_sanitized_mac_address\" too. I\u0027ll open a bug for this. But you should add a note here to change this once \"convert_to_sanitized_mac_address\" is fixed.","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"702be8089a3c88e59e0dbd79fb1d0a5cfbacb210","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"67341acb_7efc1fa9","line":1622,"in_reply_to":"74f35e40_ce7db9a6","updated":"2022-11-16 13:41:47.000000000","message":"Actually you didn\u0027t, because convert_to_sanitized_mac_address() should have taken care of this. But that function is kind of buggy, because netaddr.EUI() is kind of buggy - only converts the mac format if the input is a string, but not if the input is a netaddr.EUI() object:\n\n $ python3\n Python 3.10.6 (main, Nov  2 2022, 18:53:38) [GCC 11.3.0] on linux\n Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n \u003e\u003e\u003e from neutron_lib.api import converters\n \u003e\u003e\u003e import netaddr\n \u003e\u003e\u003e from netaddr.strategy import eui48\n \u003e\u003e\u003e converters.convert_to_sanitized_mac_address(\u0027FA-16-3E-34-24-4F\u0027)\n \u0027fa:16:3e:34:24:4f\u0027\n \u003e\u003e\u003e converters.convert_to_sanitized_mac_address(netaddr.EUI(\u0027FA-16-3E-34-24-4F\u0027))\n \u0027FA-16-3E-34-24-4F\u0027\n \u003e\u003e\u003e converters.convert_to_sanitized_mac_address(str(netaddr.EUI(\u0027FA-16-3E-34-24-4F\u0027)))\n \u0027fa:16:3e:34:24:4f\u0027\n \u003e\u003e\u003e converters.convert_to_sanitized_mac_address(netaddr.EUI(\u0027FA-16-3E-34-24-4F\u0027, dialect\u003deui48.mac_unix_expanded))\n \u0027fa:16:3e:34:24:4f\u0027\n \u003e\u003e\u003e netaddr.EUI(\u0027FA-16-3E-34-24-4F\u0027, dialect\u003deui48.mac_unix_expanded)\n EUI(\u0027fa:16:3e:34:24:4f\u0027)\n \u003e\u003e\u003e netaddr.EUI(netaddr.EUI(\u0027FA-16-3E-34-24-4F\u0027), dialect\u003deui48.mac_unix_expanded)\n EUI(\u0027FA-16-3E-34-24-4F\u0027)\n \nFYI: https://github.com/netaddr/netaddr/issues/250","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a86141dbd54f917499a6a5b3c37c12882047319c","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"74f35e40_ce7db9a6","line":1622,"in_reply_to":"d15be51d_6e287c2f","updated":"2022-11-15 13:49:14.000000000","message":"nice.... I check it, thanks, I overlooked it","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ec8bb83a87d5eac0d7410d849232fd1cacdbe96f","unresolved":true,"context_lines":[{"line_number":1619,"context_line":"                                          mac\u003draw_mac_address)"},{"line_number":1620,"context_line":"            eui_mac_address \u003d converters.convert_to_sanitized_mac_address("},{"line_number":1621,"context_line":"                raw_mac_address)"},{"line_number":1622,"context_line":"            port[\u0027port\u0027][\u0027mac_address\u0027] \u003d str(eui_mac_address)"},{"line_number":1623,"context_line":""},{"line_number":1624,"context_line":"            # Call IPAM to allocate IP addresses"},{"line_number":1625,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"44e4df48_7ee7f766","line":1622,"in_reply_to":"eefd3ae3_18e06c3e","updated":"2022-11-14 21:49:37.000000000","message":"Should the test verify this then? Making sure response is \"lower()\"","commit_id":"c0d29b7fe776a6e3df77093f459d3f96ebc0ed17"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c30ed16ef704fbc699680f5218cab0cfc44d7d09","unresolved":true,"context_lines":[{"line_number":973,"context_line":"            if (provider_net.SEGMENTATION_ID in mech_driver.obj."},{"line_number":974,"context_line":"                    provider_network_attribute_updates_supported()):"},{"line_number":975,"context_line":"                if isinstance(mech_driver.obj,"},{"line_number":976,"context_line":"                        mech_agent.AgentMechanismDriverBase):"},{"line_number":977,"context_line":"                    agent_type \u003d mech_driver.obj.agent_type"},{"line_number":978,"context_line":"                    agents \u003d self.get_agents("},{"line_number":979,"context_line":"                        context, filters\u003d{\u0027agent_type\u0027: [agent_type]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"46b35ef7_039db7af","line":976,"updated":"2022-11-16 15:33:34.000000000","message":"This this is un-doing my pylint changes :(","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2c5ddc922478a00772ddd8487adc69e5da8166e3","unresolved":false,"context_lines":[{"line_number":973,"context_line":"            if (provider_net.SEGMENTATION_ID in mech_driver.obj."},{"line_number":974,"context_line":"                    provider_network_attribute_updates_supported()):"},{"line_number":975,"context_line":"                if isinstance(mech_driver.obj,"},{"line_number":976,"context_line":"                        mech_agent.AgentMechanismDriverBase):"},{"line_number":977,"context_line":"                    agent_type \u003d mech_driver.obj.agent_type"},{"line_number":978,"context_line":"                    agents \u003d self.get_agents("},{"line_number":979,"context_line":"                        context, filters\u003d{\u0027agent_type\u0027: [agent_type]})"}],"source_content_type":"text/x-python","patch_set":7,"id":"0b1bba52_4440b12a","line":976,"in_reply_to":"46b35ef7_039db7af","updated":"2022-11-16 16:59:06.000000000","message":"Done","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c30ed16ef704fbc699680f5218cab0cfc44d7d09","unresolved":true,"context_lines":[{"line_number":1996,"context_line":"    def delete_distributed_port_bindings_by_router_id(self, context,"},{"line_number":1997,"context_line":"                                                      router_id):"},{"line_number":1998,"context_line":"        for binding in (context.session.query(models.DistributedPortBinding)."},{"line_number":1999,"context_line":"                filter_by(router_id\u003drouter_id)):"},{"line_number":2000,"context_line":"            db.clear_binding_levels(context, binding.port_id, binding.host)"},{"line_number":2001,"context_line":"            context.session.delete(binding)"},{"line_number":2002,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"49289c42_fcb3984d","line":1999,"updated":"2022-11-16 15:33:34.000000000","message":"This too.\n\nI have one final patch in that series to push, which will also make these failures.","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2c5ddc922478a00772ddd8487adc69e5da8166e3","unresolved":true,"context_lines":[{"line_number":1996,"context_line":"    def delete_distributed_port_bindings_by_router_id(self, context,"},{"line_number":1997,"context_line":"                                                      router_id):"},{"line_number":1998,"context_line":"        for binding in (context.session.query(models.DistributedPortBinding)."},{"line_number":1999,"context_line":"                filter_by(router_id\u003drouter_id)):"},{"line_number":2000,"context_line":"            db.clear_binding_levels(context, binding.port_id, binding.host)"},{"line_number":2001,"context_line":"            context.session.delete(binding)"},{"line_number":2002,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"cd856e06_1ee1a9d7","line":1999,"in_reply_to":"49289c42_fcb3984d","updated":"2022-11-16 16:59:06.000000000","message":"my bad, to be sure I rerun pep8 with modified pylintrc","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"439fcecb4e4696120425c446fa7ecad6c6560913","unresolved":true,"context_lines":[{"line_number":1607,"context_line":"            if network_id not in network_cache:"},{"line_number":1608,"context_line":"                network \u003d self.get_network(context, network_id)"},{"line_number":1609,"context_line":"                network_cache[network_id] \u003d network"},{"line_number":1610,"context_line":"            else:"},{"line_number":1611,"context_line":"                network \u003d network_cache[network_id]"},{"line_number":1612,"context_line":""},{"line_number":1613,"context_line":"            raw_mac_address \u003d port[\u0027port\u0027].get(\u0027mac_address\u0027,"},{"line_number":1614,"context_line":"                                               const.ATTR_NOT_SPECIFIED)"}],"source_content_type":"text/x-python","patch_set":10,"id":"6e57f23f_e73e03ef","line":1611,"range":{"start_line":1610,"start_character":12,"end_line":1611,"end_character":51},"updated":"2022-11-29 20:18:40.000000000","message":"I guess we never use \u0027network\u0027 below, so this else can go away","commit_id":"fa416f0d78e84d89ddbeed684ef1da666d60fe4e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"439fcecb4e4696120425c446fa7ecad6c6560913","unresolved":true,"context_lines":[{"line_number":1686,"context_line":"                    device_owner\u003dpdata.get(\u0027device_owner\u0027),"},{"line_number":1687,"context_line":"                    description\u003dpdata.get(\u0027description\u0027))"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"                network_id \u003d pdata.get(\u0027network_id\u0027)"},{"line_number":1690,"context_line":"                network \u003d network_cache[network_id]"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":"                db_port_obj \u003d ports_obj.Port("}],"source_content_type":"text/x-python","patch_set":10,"id":"30a05a03_ea61a863","line":1689,"range":{"start_line":1689,"start_character":16,"end_line":1689,"end_character":52},"updated":"2022-11-29 20:18:40.000000000","message":"nit: this could be moved around L1670 and network_id could be used below and L1682","commit_id":"fa416f0d78e84d89ddbeed684ef1da666d60fe4e"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c30ed16ef704fbc699680f5218cab0cfc44d7d09","unresolved":true,"context_lines":[{"line_number":1660,"context_line":"                            port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]))"},{"line_number":1661,"context_line":"                self.assertEqual(1, mock_getnet.call_count)"},{"line_number":1662,"context_line":""},{"line_number":1663,"context_line":"    def test_create_ports_bulk_ip_allocation_without_mac_wo_net(self):"},{"line_number":1664,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1665,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1666,"context_line":"        project_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5061fd9b_861fc7c8","line":1663,"range":{"start_line":1663,"start_character":57,"end_line":1663,"end_character":59},"updated":"2022-11-16 15:33:34.000000000","message":"super nit: I guess \u0027wo\u0027 means \u0027without\u0027? Maybe \u0027no\u0027 is better?","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"2c5ddc922478a00772ddd8487adc69e5da8166e3","unresolved":true,"context_lines":[{"line_number":1660,"context_line":"                            port[\u0027fixed_ips\u0027][0][\u0027ip_address\u0027]))"},{"line_number":1661,"context_line":"                self.assertEqual(1, mock_getnet.call_count)"},{"line_number":1662,"context_line":""},{"line_number":1663,"context_line":"    def test_create_ports_bulk_ip_allocation_without_mac_wo_net(self):"},{"line_number":1664,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1665,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1666,"context_line":"        project_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":7,"id":"a32fda98_3b93367a","line":1663,"range":{"start_line":1663,"start_character":57,"end_line":1663,"end_character":59},"in_reply_to":"5061fd9b_861fc7c8","updated":"2022-11-16 16:59:06.000000000","message":"I changed it, no is really better","commit_id":"32d95ea245633f69cf111226e7383dc88b43a61c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7d279d0a2d51bf11b20ce3f6a2d0dc765cf89b97","unresolved":true,"context_lines":[{"line_number":1602,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1603,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1604,"context_line":"        fake_prefix \u003d \u0027fd61:4a5:4e2::/64\u0027"},{"line_number":1605,"context_line":"        fake_gateway \u003d \u0027fd61:4a5:4e2::1\u0027"},{"line_number":1606,"context_line":"        with self.network() as net:"},{"line_number":1607,"context_line":"            with self.subnet(net,"},{"line_number":1608,"context_line":"                             gateway_ip\u003dfake_gateway,"}],"source_content_type":"text/x-python","patch_set":8,"id":"d74cff2f_dbf5d10b","line":1605,"updated":"2022-11-18 21:24:48.000000000","message":"nit: this should use doc prefix, as L1557.\n\n        fake_prefix \u003d \u00272001:db8::/64\u0027\n        fake_gateway \u003d \u0027fe80::1\u0027","commit_id":"96e79b941945f77f9f7460102edd454d38f9e8f0"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"de7afd433fdc61e4f6d16d06ec8ca960fd16bb2f","unresolved":false,"context_lines":[{"line_number":1602,"context_line":"        ctx \u003d context.get_admin_context()"},{"line_number":1603,"context_line":"        plugin \u003d directory.get_plugin()"},{"line_number":1604,"context_line":"        fake_prefix \u003d \u0027fd61:4a5:4e2::/64\u0027"},{"line_number":1605,"context_line":"        fake_gateway \u003d \u0027fd61:4a5:4e2::1\u0027"},{"line_number":1606,"context_line":"        with self.network() as net:"},{"line_number":1607,"context_line":"            with self.subnet(net,"},{"line_number":1608,"context_line":"                             gateway_ip\u003dfake_gateway,"}],"source_content_type":"text/x-python","patch_set":8,"id":"30931706_3a413dd9","line":1605,"in_reply_to":"d74cff2f_dbf5d10b","updated":"2022-11-23 12:55:54.000000000","message":"Done","commit_id":"96e79b941945f77f9f7460102edd454d38f9e8f0"}]}
