)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b690b5f9ab86e4b1631fe1f1648bb2ec25765950","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"37e4ed7f_3b5a564d","updated":"2023-05-30 22:17:58.000000000","message":"I think the code works, just hard to review IMO. I\u0027ll come back to this tomorrow to change my vote if someone else reviews, just wanted to make sure I didn\u0027t miss anything.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0836171cd907afbbb3abd95fc362ac787818d9e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"691dc955_7b56e0ba","updated":"2023-05-30 13:24:51.000000000","message":"recheck ft","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2b3ccfae0842338b23d8d6490e799945b1daf461","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c19b9878_0623887f","updated":"2023-05-31 21:45:48.000000000","message":"I created a change to fix some of the mess, just didn\u0027t want to hold this up unnecessarily.\n\nhttps://review.opendev.org/c/openstack/neutron/+/884950","commit_id":"ac24dbed1c57a92741a9f2a637e7f8026e265d38"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"70ca732fc0749273cee75f4e6354d60d5018eb74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0e7b0987_48c70b3a","updated":"2023-06-02 07:45:37.000000000","message":"recheck neutron-fullstack-with-uwsgi","commit_id":"ac24dbed1c57a92741a9f2a637e7f8026e265d38"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"73f7cc7fdd5252db0dcc4b1223fa52754baf0e0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8d854601_31370d86","in_reply_to":"3ca49e03_7b08dc9b","updated":"2023-06-01 14:10:01.000000000","message":"I\u0027ll just rebase mine if that happens, no big deal, just wanted to have a starting point","commit_id":"ac24dbed1c57a92741a9f2a637e7f8026e265d38"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"27efda6f36475790b5ed3b595ea3f693a5217446","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3ca49e03_7b08dc9b","in_reply_to":"c19b9878_0623887f","updated":"2023-06-01 09:06:14.000000000","message":"Thanks. I\u0027m still changing this code in this bug patches series. I hope this patch doesn\u0027t clash with the upper patches.","commit_id":"ac24dbed1c57a92741a9f2a637e7f8026e265d38"}],"neutron/common/ovn/utils.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4ead0bb85d697a93bbd3c8d15e0bdbb7699b7c20","unresolved":true,"context_lines":[{"line_number":910,"context_line":"    :return: (tuple, three strings) (1) the virtual type (\u0027\u0027 if not virtual),"},{"line_number":911,"context_line":"             (2) the virtual IP address and (3) the virtual parents"},{"line_number":912,"context_line":"    \"\"\""},{"line_number":913,"context_line":"    _type, virtual_ip, virtual_parents \u003d \u0027\u0027, None, None"},{"line_number":914,"context_line":"    if not subnets:"},{"line_number":915,"context_line":"        return _type, virtual_ip, virtual_parents"},{"line_number":916,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7db91657_bb4b08fe","line":913,"range":{"start_line":913,"start_character":4,"end_line":913,"end_character":9},"updated":"2023-05-08 14:07:19.000000000","message":"I realize using _type is fine, but it\u0027s highlighted in blue in my review, so seems the tools are flagging it somehow? Maybe using port_type would fix that.","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bb644b84dd6adbd3124186dc06b7fbc76afb4a30","unresolved":false,"context_lines":[{"line_number":910,"context_line":"    :return: (tuple, three strings) (1) the virtual type (\u0027\u0027 if not virtual),"},{"line_number":911,"context_line":"             (2) the virtual IP address and (3) the virtual parents"},{"line_number":912,"context_line":"    \"\"\""},{"line_number":913,"context_line":"    _type, virtual_ip, virtual_parents \u003d \u0027\u0027, None, None"},{"line_number":914,"context_line":"    if not subnets:"},{"line_number":915,"context_line":"        return _type, virtual_ip, virtual_parents"},{"line_number":916,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"4a2a9f8c_2063e055","line":913,"range":{"start_line":913,"start_character":4,"end_line":913,"end_character":9},"in_reply_to":"7db91657_bb4b08fe","updated":"2023-05-11 15:31:28.000000000","message":"Done","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b690b5f9ab86e4b1631fe1f1648bb2ec25765950","unresolved":true,"context_lines":[{"line_number":989,"context_line":"    if not subnets:"},{"line_number":990,"context_line":"        return port_type, virtual_ip, virtual_parents"},{"line_number":991,"context_line":""},{"line_number":992,"context_line":"    subnets_by_id \u003d {subnet[\u0027id\u0027]: subnet for subnet in subnets}"},{"line_number":993,"context_line":"    for fixed_ip in fixed_ips:"},{"line_number":994,"context_line":"        subnet_id \u003d fixed_ip.get(\u0027subnet_id\u0027)"},{"line_number":995,"context_line":"        subnet \u003d subnets_by_id.get(subnet_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d6a597f9_b5a75f81","line":992,"updated":"2023-05-30 22:17:58.000000000","message":"The value in this key:value is not really necessary, below loop only cares that the subnet ID is present, so could just be a list.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3492fda598e7cf81125ee905e199418011bb9e2f","unresolved":false,"context_lines":[{"line_number":989,"context_line":"    if not subnets:"},{"line_number":990,"context_line":"        return port_type, virtual_ip, virtual_parents"},{"line_number":991,"context_line":""},{"line_number":992,"context_line":"    subnets_by_id \u003d {subnet[\u0027id\u0027]: subnet for subnet in subnets}"},{"line_number":993,"context_line":"    for fixed_ip in fixed_ips:"},{"line_number":994,"context_line":"        subnet_id \u003d fixed_ip.get(\u0027subnet_id\u0027)"},{"line_number":995,"context_line":"        subnet \u003d subnets_by_id.get(subnet_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"49a394f3_f9e1b7a0","line":992,"in_reply_to":"d6a597f9_b5a75f81","updated":"2023-05-31 16:04:26.000000000","message":"Right, I\u0027ll make a set.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4ead0bb85d697a93bbd3c8d15e0bdbb7699b7c20","unresolved":true,"context_lines":[{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"},{"line_number":313,"context_line":"            _type, virtual_ip, virtual_parents \u003d ("},{"line_number":314,"context_line":"                utils.get_port_type_virtual_and_parents("},{"line_number":315,"context_line":"                    subnets, ip_subnets, port[\u0027network_id\u0027], port[\u0027id\u0027],"},{"line_number":316,"context_line":"                    self._nb_idl))"}],"source_content_type":"text/x-python","patch_set":1,"id":"e171bd12_687c088a","line":313,"range":{"start_line":313,"start_character":12,"end_line":313,"end_character":17},"updated":"2023-05-08 14:07:19.000000000","message":"This could be port_type since it\u0027s being returned by the caller as ovn_const.LSP_TYPE_VIRTUAL in some cases, then eliminate L318.","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bb644b84dd6adbd3124186dc06b7fbc76afb4a30","unresolved":false,"context_lines":[{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"},{"line_number":313,"context_line":"            _type, virtual_ip, virtual_parents \u003d ("},{"line_number":314,"context_line":"                utils.get_port_type_virtual_and_parents("},{"line_number":315,"context_line":"                    subnets, ip_subnets, port[\u0027network_id\u0027], port[\u0027id\u0027],"},{"line_number":316,"context_line":"                    self._nb_idl))"}],"source_content_type":"text/x-python","patch_set":1,"id":"61f3d80d_d8138957","line":313,"range":{"start_line":313,"start_character":12,"end_line":313,"end_character":17},"in_reply_to":"e171bd12_687c088a","updated":"2023-05-11 15:31:28.000000000","message":"Done","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b690b5f9ab86e4b1631fe1f1648bb2ec25765950","unresolved":true,"context_lines":[{"line_number":299,"context_line":"            tag \u003d bp_info.bp_param.get(\u0027tag\u0027, [])"},{"line_number":300,"context_line":"            address \u003d port[\u0027mac_address\u0027]"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"            ip_subnets \u003d port.get(\u0027fixed_ips\u0027, [])"},{"line_number":303,"context_line":"            subnet_ids \u003d ["},{"line_number":304,"context_line":"                ip[\u0027subnet_id\u0027]"},{"line_number":305,"context_line":"                for ip in ip_subnets"}],"source_content_type":"text/x-python","patch_set":4,"id":"fabbe6fd_4149952b","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":22},"updated":"2023-05-30 22:17:58.000000000","message":"nit: this is a really terrible name for this variable, something like port_fixed_ips would be better. Only complaining since it makes the review harder to follow both here and in the utils code where the name changes to fixed_ips. Maybe I\u0027ll propose as a follow-up.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"de072e4e7410cd13a631b034c39d63d5e6e69ff5","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            tag \u003d bp_info.bp_param.get(\u0027tag\u0027, [])"},{"line_number":300,"context_line":"            address \u003d port[\u0027mac_address\u0027]"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"            ip_subnets \u003d port.get(\u0027fixed_ips\u0027, [])"},{"line_number":303,"context_line":"            subnet_ids \u003d ["},{"line_number":304,"context_line":"                ip[\u0027subnet_id\u0027]"},{"line_number":305,"context_line":"                for ip in ip_subnets"}],"source_content_type":"text/x-python","patch_set":4,"id":"3be7a6ec_c95b6f3c","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":22},"in_reply_to":"24a272ad_503030fc","updated":"2023-05-31 16:58:41.000000000","message":"Agreed, I\u0027ll even do the follow-up :)","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3492fda598e7cf81125ee905e199418011bb9e2f","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            tag \u003d bp_info.bp_param.get(\u0027tag\u0027, [])"},{"line_number":300,"context_line":"            address \u003d port[\u0027mac_address\u0027]"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"            ip_subnets \u003d port.get(\u0027fixed_ips\u0027, [])"},{"line_number":303,"context_line":"            subnet_ids \u003d ["},{"line_number":304,"context_line":"                ip[\u0027subnet_id\u0027]"},{"line_number":305,"context_line":"                for ip in ip_subnets"}],"source_content_type":"text/x-python","patch_set":4,"id":"24a272ad_503030fc","line":302,"range":{"start_line":302,"start_character":12,"end_line":302,"end_character":22},"in_reply_to":"fabbe6fd_4149952b","updated":"2023-05-31 16:04:26.000000000","message":"Right, I agree with you. But I prefer to make this change in a follow up patch.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b690b5f9ab86e4b1631fe1f1648bb2ec25765950","unresolved":true,"context_lines":[{"line_number":306,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":307,"context_line":"            ]"},{"line_number":308,"context_line":"            subnets \u003d self._plugin.get_subnets("},{"line_number":309,"context_line":"                context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"}],"source_content_type":"text/x-python","patch_set":4,"id":"28a6e490_7ea57d2f","line":309,"updated":"2023-05-30 22:17:58.000000000","message":"Just commenting to myself out loud - there is the chance \u0027subnets\u0027 here does not contain all subnet_ids we asked for, which is why subsequent checks are done below.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3492fda598e7cf81125ee905e199418011bb9e2f","unresolved":false,"context_lines":[{"line_number":306,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":307,"context_line":"            ]"},{"line_number":308,"context_line":"            subnets \u003d self._plugin.get_subnets("},{"line_number":309,"context_line":"                context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"}],"source_content_type":"text/x-python","patch_set":4,"id":"e834f16d_a2305a4c","line":309,"in_reply_to":"28a6e490_7ea57d2f","updated":"2023-05-31 16:04:26.000000000","message":"No, these are subnets from the port fixed IPs. These subnets *must* exist.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"de072e4e7410cd13a631b034c39d63d5e6e69ff5","unresolved":false,"context_lines":[{"line_number":306,"context_line":"                if \u0027subnet_id\u0027 in ip"},{"line_number":307,"context_line":"            ]"},{"line_number":308,"context_line":"            subnets \u003d self._plugin.get_subnets("},{"line_number":309,"context_line":"                context, filters\u003d{\u0027id\u0027: subnet_ids})"},{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b2854b5_d06f3f7b","line":309,"in_reply_to":"e834f16d_a2305a4c","updated":"2023-05-31 16:58:41.000000000","message":"Ok, after thinking some more you\u0027re right. It now makes the code on L329 seem odd then since it should never trigger an IndexError. But we can figure that out later.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b690b5f9ab86e4b1631fe1f1648bb2ec25765950","unresolved":true,"context_lines":[{"line_number":328,"context_line":"                    try:"},{"line_number":329,"context_line":"                        subnet \u003d ["},{"line_number":330,"context_line":"                            sub"},{"line_number":331,"context_line":"                            for sub in subnets"},{"line_number":332,"context_line":"                            if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":333,"context_line":"                        ][0]"},{"line_number":334,"context_line":"                    except IndexError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9942f1d2_3d581de4","line":331,"updated":"2023-05-30 22:17:58.000000000","message":"\u0027subnets\u0027 is iterated here and in the utils code, technically we could have build a dict, passed it, and used it in both places.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3492fda598e7cf81125ee905e199418011bb9e2f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                    try:"},{"line_number":329,"context_line":"                        subnet \u003d ["},{"line_number":330,"context_line":"                            sub"},{"line_number":331,"context_line":"                            for sub in subnets"},{"line_number":332,"context_line":"                            if sub[\"id\"] \u003d\u003d ip[\"subnet_id\"]"},{"line_number":333,"context_line":"                        ][0]"},{"line_number":334,"context_line":"                    except IndexError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"aff1b885_381eda47","line":331,"in_reply_to":"9942f1d2_3d581de4","updated":"2023-05-31 16:04:26.000000000","message":"First I would like to decouple the code, needed for other tasks. I know we are iterating several times over the subnets, but this is a very quick operation.\n\nThis code must be optimized but in follow up patches.","commit_id":"1694172778bbc387e0880a2e57053b4b224c7c09"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"de072e4e7410cd13a631b034c39d63d5e6e69ff5","unresolved":true,"context_lines":[{"line_number":310,"context_line":"            address4_scope_id, address6_scope_id \u003d ("},{"line_number":311,"context_line":"                utils.get_subnets_address_scopes(context, subnets, ip_subnets,"},{"line_number":312,"context_line":"                                                 self._plugin))"},{"line_number":313,"context_line":"            p_type, virtual_ip, virtual_parents \u003d ("},{"line_number":314,"context_line":"                utils.get_port_type_virtual_and_parents("},{"line_number":315,"context_line":"                    subnets, ip_subnets, port[\u0027network_id\u0027], port[\u0027id\u0027],"},{"line_number":316,"context_line":"                    self._nb_idl))"},{"line_number":317,"context_line":"            if p_type:"},{"line_number":318,"context_line":"                port_type \u003d ovn_const.LSP_TYPE_VIRTUAL"},{"line_number":319,"context_line":"                options[ovn_const.LSP_OPTIONS_VIRTUAL_IP_KEY] \u003d virtual_ip"},{"line_number":320,"context_line":"                options[ovn_const.LSP_OPTIONS_VIRTUAL_PARENTS_KEY] \u003d ("},{"line_number":321,"context_line":"                    virtual_parents)"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"            if subnets:"},{"line_number":324,"context_line":"                for ip in ip_subnets:"}],"source_content_type":"text/x-python","patch_set":5,"id":"0e5f7177_3a34d1b0","line":321,"range":{"start_line":313,"start_character":12,"end_line":321,"end_character":36},"updated":"2023-05-31 16:58:41.000000000","message":"Technically this could all live under the \u0027if subnets\u0027 check since p_type will only be valid if there is a subnet list passed.","commit_id":"ac24dbed1c57a92741a9f2a637e7f8026e265d38"}],"neutron/tests/unit/common/ovn/test_utils.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4ead0bb85d697a93bbd3c8d15e0bdbb7699b7c20","unresolved":true,"context_lines":[{"line_number":1010,"context_line":"    def test_no_subnets(self):"},{"line_number":1011,"context_line":"        subnets \u003d []"},{"line_number":1012,"context_line":"        fixed_ips \u003d []"},{"line_number":1013,"context_line":"        _type, virtual_ip, virtual_parents \u003d ("},{"line_number":1014,"context_line":"            utils.get_port_type_virtual_and_parents(subnets, fixed_ips, \u0027net1\u0027,"},{"line_number":1015,"context_line":"                                                    \u0027port1\u0027, mock.ANY))"},{"line_number":1016,"context_line":"        self.assertEqual((\u0027\u0027, None, None),"}],"source_content_type":"text/x-python","patch_set":1,"id":"e65ce1ac_71835ed8","line":1013,"range":{"start_line":1013,"start_character":8,"end_line":1013,"end_character":13},"updated":"2023-05-08 14:07:19.000000000","message":"same here","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bb644b84dd6adbd3124186dc06b7fbc76afb4a30","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"    def test_no_subnets(self):"},{"line_number":1011,"context_line":"        subnets \u003d []"},{"line_number":1012,"context_line":"        fixed_ips \u003d []"},{"line_number":1013,"context_line":"        _type, virtual_ip, virtual_parents \u003d ("},{"line_number":1014,"context_line":"            utils.get_port_type_virtual_and_parents(subnets, fixed_ips, \u0027net1\u0027,"},{"line_number":1015,"context_line":"                                                    \u0027port1\u0027, mock.ANY))"},{"line_number":1016,"context_line":"        self.assertEqual((\u0027\u0027, None, None),"}],"source_content_type":"text/x-python","patch_set":1,"id":"02707191_11dd8759","line":1013,"range":{"start_line":1013,"start_character":8,"end_line":1013,"end_character":13},"in_reply_to":"e65ce1ac_71835ed8","updated":"2023-05-11 15:31:28.000000000","message":"Done","commit_id":"81b6243a7e58e5e254978cf271c83958249afbc3"}]}
