)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"911247d8c62d22e9e58120c09cbeffd5946e8a24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d7cceee0_c9ab2a8b","updated":"2024-01-30 15:36:42.000000000","message":"Maybe we should do the check for `_address_scope_allowed` also in the match_fn methods of `LogicalSwitchPortSubnetAttachEvent` and `LogicalSwitchPortSubnetDetachEvent`, since the information is already available in the port/row\n?\n\ne.g.\n```\nclass LogicalSwitchPortSubnetAttachEvent(base_watcher.LSPChassisEvent):\n    def match_fn(self, event, row, old):\n        ...\n            address_scopes \u003d driver_utils.get_addr_scopes(row)\n            if self.agent._address_scope_allowed(\n                row.external_ids.get(constants.OVN_CIDRS_EXT_ID_KEY,\n                                     \"\").split(), address_scopes) is False:\n                return False\n\n        ...\n```\n\nThat would prevent calling the run methods if the address scope is not allowed anyway.","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"62a522b07a37dd5679a7817fedda24b24024616c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"96b7574f_47dfdee1","updated":"2024-02-02 10:18:37.000000000","message":"Seems it needs a rebase. Also I\u0027m not 100% sure the return should be done in all cases","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"96ac0e7f52e3d97446ba6a91560103eee10a9794","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a4b5d86b_bf28384b","in_reply_to":"96b7574f_47dfdee1","updated":"2024-02-02 10:24:38.000000000","message":"Yes, i knew the PF merge would complicate things 😊, i will rebase my other changes as well.","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"dd0da7a35f39c0d0de275cfc0d2b3610ecda964c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3a79197d_d074be23","in_reply_to":"b938fc10_bc0ed18a","updated":"2024-03-01 11:01:25.000000000","message":"Decided not to do it, because it has not much added value here.","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"f3554270c65381e9b25b424cdd00901e3bd6a406","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b938fc10_bc0ed18a","in_reply_to":"d7cceee0_c9ab2a8b","updated":"2024-01-30 15:41:12.000000000","message":"What do you think @ltomasbo?","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ca3c12fa1b32956698c9264ef89bdfd2f9aa4997","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"846ed1bd_181311e9","updated":"2024-02-22 08:50:11.000000000","message":"adding -1 for discussions. Perhaps we need to better state (on the code) what returning True/False means for those functions","commit_id":"fe7ff278df8b10ac1985b02114330d8bec425875"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c4ce9a643a09f59de6c982853c0653e638332494","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"27aedf4d_e99340e7","updated":"2024-02-29 07:26:21.000000000","message":"couple of nits, looks good to me","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"}],"ovn_bgp_agent/drivers/openstack/nb_ovn_bgp_driver.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"62a522b07a37dd5679a7817fedda24b24024616c","unresolved":true,"context_lines":[{"line_number":734,"context_line":"                    continue"},{"line_number":735,"context_line":"            if not self._address_scope_allowed(ip,"},{"line_number":736,"context_line":"                                               subnet_info[\u0027address_scopes\u0027]):"},{"line_number":737,"context_line":"                # The configured address scope does not match with our config,"},{"line_number":738,"context_line":"                # so prevent this lrp to expose anything"},{"line_number":739,"context_line":"                return False"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            try:"},{"line_number":742,"context_line":"                if wire_utils.wire_lrp_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"7d00a5ea_5ff21530","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":28},"updated":"2024-02-02 10:18:37.000000000","message":"what if you have dual stack and one of the subnet IPs is included into the address scope?","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"96ac0e7f52e3d97446ba6a91560103eee10a9794","unresolved":true,"context_lines":[{"line_number":734,"context_line":"                    continue"},{"line_number":735,"context_line":"            if not self._address_scope_allowed(ip,"},{"line_number":736,"context_line":"                                               subnet_info[\u0027address_scopes\u0027]):"},{"line_number":737,"context_line":"                # The configured address scope does not match with our config,"},{"line_number":738,"context_line":"                # so prevent this lrp to expose anything"},{"line_number":739,"context_line":"                return False"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            try:"},{"line_number":742,"context_line":"                if wire_utils.wire_lrp_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0b143f_0e378b02","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":28},"in_reply_to":"7d00a5ea_5ff21530","updated":"2024-02-02 10:24:38.000000000","message":"Good point, i will look into it, because if none match it would not return False and it would not fail in _expose_remote_ip.","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"32fecf659fa363a87b384452abdded456904816f","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                    continue"},{"line_number":735,"context_line":"            if not self._address_scope_allowed(ip,"},{"line_number":736,"context_line":"                                               subnet_info[\u0027address_scopes\u0027]):"},{"line_number":737,"context_line":"                # The configured address scope does not match with our config,"},{"line_number":738,"context_line":"                # so prevent this lrp to expose anything"},{"line_number":739,"context_line":"                return False"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            try:"},{"line_number":742,"context_line":"                if wire_utils.wire_lrp_port("}],"source_content_type":"text/x-python","patch_set":2,"id":"4d16412d_9b8ffefc","line":739,"range":{"start_line":737,"start_character":0,"end_line":739,"end_character":28},"in_reply_to":"ff0b143f_0e378b02","updated":"2024-02-22 14:42:36.000000000","message":"Done","commit_id":"56f3429148ad52f127cb6edcde4f2099f885b8a0"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"ca3c12fa1b32956698c9264ef89bdfd2f9aa4997","unresolved":true,"context_lines":[{"line_number":778,"context_line":"                success \u003d False"},{"line_number":779,"context_line":"        return address_scope_allowed and success"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def _withdraw_router_lsp(self, ips, subnet_info, cr_lrp_info):"},{"line_number":782,"context_line":"        if not self._expose_tenant_networks:"},{"line_number":783,"context_line":"            return True"},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f7e0ad17_2381d6ce","line":781,"range":{"start_line":781,"start_character":8,"end_line":781,"end_character":28},"updated":"2024-02-22 08:50:11.000000000","message":"I have a question here, same for the previous one. I think my initial thought here was that we only return false if we attempted to expose it and failed while doing so. But it it was not allowed to be exposed due to configuration, that was \"business as usual\", basically saying that False means we were not able of doing what we needed to do. While True means we did what was configured to  be done.\n\nIn here now there is a mix... and not exposing tenant by configuration return True (which I think it is right), but not exposing the IP due to configuration saying that should not be expose, return False (which I think is wrong as it is not failing to expose it, it is just not configured to do so)","commit_id":"fe7ff278df8b10ac1985b02114330d8bec425875"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"32fecf659fa363a87b384452abdded456904816f","unresolved":false,"context_lines":[{"line_number":778,"context_line":"                success \u003d False"},{"line_number":779,"context_line":"        return address_scope_allowed and success"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":"    def _withdraw_router_lsp(self, ips, subnet_info, cr_lrp_info):"},{"line_number":782,"context_line":"        if not self._expose_tenant_networks:"},{"line_number":783,"context_line":"            return True"},{"line_number":784,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"8d6b3274_bb2f1785","line":781,"range":{"start_line":781,"start_character":8,"end_line":781,"end_character":28},"in_reply_to":"f7e0ad17_2381d6ce","updated":"2024-02-22 14:42:36.000000000","message":"I\u0027ve tried to clearify this by raising exceptions for certain error situations.","commit_id":"fe7ff278df8b10ac1985b02114330d8bec425875"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c4ce9a643a09f59de6c982853c0653e638332494","unresolved":true,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":729,"context_line":"        for port in ports:"},{"line_number":730,"context_line":"            ips \u003d self._ips_in_address_scope(port.addresses[0].split(\u0027 \u0027)[1:],"},{"line_number":731,"context_line":"                                             subnet_info[\u0027address_scopes\u0027])"},{"line_number":732,"context_line":"            if not ips:"},{"line_number":733,"context_line":"                # All ip\u0027s have been removed due to address scope requirement"},{"line_number":734,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"e0974310_d458e602","line":731,"range":{"start_line":730,"start_character":0,"end_line":731,"end_character":75},"updated":"2024-02-29 07:26:21.000000000","message":"why you need to check this again? in case there is two subnet in the same network and one is allowed and the other not? Perhaps worth a note","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"aee11c5d1d4b0a716a4012edfbf1872e7fd57583","unresolved":true,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":729,"context_line":"        for port in ports:"},{"line_number":730,"context_line":"            ips \u003d self._ips_in_address_scope(port.addresses[0].split(\u0027 \u0027)[1:],"},{"line_number":731,"context_line":"                                             subnet_info[\u0027address_scopes\u0027])"},{"line_number":732,"context_line":"            if not ips:"},{"line_number":733,"context_line":"                # All ip\u0027s have been removed due to address scope requirement"},{"line_number":734,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"cdab33f5_bc968137","line":731,"range":{"start_line":730,"start_character":0,"end_line":731,"end_character":75},"in_reply_to":"c5c29e09_94a70d3e","updated":"2024-02-29 08:02:46.000000000","message":"if they are dual-stack, I think thre is 2 router lsp ports (one for ipv4 and one for ipv6 (only the cr-lrp is dual stack). But, I think you may be right for ipv6 multiprefix, in that case there may be multiple ipv6 ips in the port, belonging to different subnets.\n\nSo, perhaps just leave a comment about why we need to recheck this if it was already checked in line 717","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"dd0da7a35f39c0d0de275cfc0d2b3610ecda964c","unresolved":false,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":729,"context_line":"        for port in ports:"},{"line_number":730,"context_line":"            ips \u003d self._ips_in_address_scope(port.addresses[0].split(\u0027 \u0027)[1:],"},{"line_number":731,"context_line":"                                             subnet_info[\u0027address_scopes\u0027])"},{"line_number":732,"context_line":"            if not ips:"},{"line_number":733,"context_line":"                # All ip\u0027s have been removed due to address scope requirement"},{"line_number":734,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"0160db35_17a7257c","line":731,"range":{"start_line":730,"start_character":0,"end_line":731,"end_character":75},"in_reply_to":"cdab33f5_bc968137","updated":"2024-03-01 11:01:25.000000000","message":"Done","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"faa5218c306115a0c05bb61d7e8e6b38eac764d1","unresolved":true,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":729,"context_line":"        for port in ports:"},{"line_number":730,"context_line":"            ips \u003d self._ips_in_address_scope(port.addresses[0].split(\u0027 \u0027)[1:],"},{"line_number":731,"context_line":"                                             subnet_info[\u0027address_scopes\u0027])"},{"line_number":732,"context_line":"            if not ips:"},{"line_number":733,"context_line":"                # All ip\u0027s have been removed due to address scope requirement"},{"line_number":734,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"c5c29e09_94a70d3e","line":731,"range":{"start_line":730,"start_character":0,"end_line":731,"end_character":75},"in_reply_to":"e0974310_d458e602","updated":"2024-02-29 07:59:40.000000000","message":"Well, in theory, these ports can be dual-stack, so only ipv6 (for example) should be exposed then.","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c4ce9a643a09f59de6c982853c0653e638332494","unresolved":true,"context_lines":[{"line_number":854,"context_line":"            except Exception as e:"},{"line_number":855,"context_line":"                raise exceptions.WireFailure(cidr\u003dip, message\u003dstr(e)) from e"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        return True"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def _withdraw_router_lsp(self, ips, subnet_info, cr_lrp_info):"},{"line_number":860,"context_line":"        \u0027\u0027\u0027Withdraw the tenant router ip address (cidr) for given router"}],"source_content_type":"text/x-python","patch_set":6,"id":"2b266758_e7465a8b","line":857,"range":{"start_line":857,"start_character":15,"end_line":857,"end_character":19},"updated":"2024-02-29 07:26:21.000000000","message":"given the exceptions now... do we even need to return True? just returning without exception will work, right? (in all the returns in this function)","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"faa5218c306115a0c05bb61d7e8e6b38eac764d1","unresolved":true,"context_lines":[{"line_number":854,"context_line":"            except Exception as e:"},{"line_number":855,"context_line":"                raise exceptions.WireFailure(cidr\u003dip, message\u003dstr(e)) from e"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        return True"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def _withdraw_router_lsp(self, ips, subnet_info, cr_lrp_info):"},{"line_number":860,"context_line":"        \u0027\u0027\u0027Withdraw the tenant router ip address (cidr) for given router"}],"source_content_type":"text/x-python","patch_set":6,"id":"5cdfacb1_8c6ef41c","line":857,"range":{"start_line":857,"start_character":15,"end_line":857,"end_character":19},"in_reply_to":"2b266758_e7465a8b","updated":"2024-02-29 07:59:40.000000000","message":"This was mostly to keep all unit tests intact O:)","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"dd0da7a35f39c0d0de275cfc0d2b3610ecda964c","unresolved":false,"context_lines":[{"line_number":854,"context_line":"            except Exception as e:"},{"line_number":855,"context_line":"                raise exceptions.WireFailure(cidr\u003dip, message\u003dstr(e)) from e"},{"line_number":856,"context_line":""},{"line_number":857,"context_line":"        return True"},{"line_number":858,"context_line":""},{"line_number":859,"context_line":"    def _withdraw_router_lsp(self, ips, subnet_info, cr_lrp_info):"},{"line_number":860,"context_line":"        \u0027\u0027\u0027Withdraw the tenant router ip address (cidr) for given router"}],"source_content_type":"text/x-python","patch_set":6,"id":"4e6eaada_5e945457","line":857,"range":{"start_line":857,"start_character":15,"end_line":857,"end_character":19},"in_reply_to":"5cdfacb1_8c6ef41c","updated":"2024-03-01 11:01:25.000000000","message":"Done","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"c4ce9a643a09f59de6c982853c0653e638332494","unresolved":true,"context_lines":[{"line_number":923,"context_line":"            # Router port for subnet already cleanup"},{"line_number":924,"context_line":"            pass"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        return True"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    @lockutils.synchronized(\u0027nbbgp\u0027)"},{"line_number":929,"context_line":"    def expose_ovn_lb_vip(self, lb):"}],"source_content_type":"text/x-python","patch_set":6,"id":"b50a1893_4bd204a8","line":926,"range":{"start_line":926,"start_character":6,"end_line":926,"end_character":19},"updated":"2024-02-29 07:26:21.000000000","message":"same as before","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"dd0da7a35f39c0d0de275cfc0d2b3610ecda964c","unresolved":false,"context_lines":[{"line_number":923,"context_line":"            # Router port for subnet already cleanup"},{"line_number":924,"context_line":"            pass"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        return True"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    @lockutils.synchronized(\u0027nbbgp\u0027)"},{"line_number":929,"context_line":"    def expose_ovn_lb_vip(self, lb):"}],"source_content_type":"text/x-python","patch_set":6,"id":"2ce1289c_6679a630","line":926,"range":{"start_line":926,"start_character":6,"end_line":926,"end_character":19},"in_reply_to":"100c594b_abfdfa56","updated":"2024-03-01 11:01:25.000000000","message":"Done","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"aee11c5d1d4b0a716a4012edfbf1872e7fd57583","unresolved":true,"context_lines":[{"line_number":923,"context_line":"            # Router port for subnet already cleanup"},{"line_number":924,"context_line":"            pass"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        return True"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    @lockutils.synchronized(\u0027nbbgp\u0027)"},{"line_number":929,"context_line":"    def expose_ovn_lb_vip(self, lb):"}],"source_content_type":"text/x-python","patch_set":6,"id":"100c594b_abfdfa56","line":926,"range":{"start_line":926,"start_character":6,"end_line":926,"end_character":19},"in_reply_to":"2b20eee2_021ebbea","updated":"2024-02-29 08:02:46.000000000","message":"fair enough","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"faa5218c306115a0c05bb61d7e8e6b38eac764d1","unresolved":true,"context_lines":[{"line_number":923,"context_line":"            # Router port for subnet already cleanup"},{"line_number":924,"context_line":"            pass"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":"        return True"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"    @lockutils.synchronized(\u0027nbbgp\u0027)"},{"line_number":929,"context_line":"    def expose_ovn_lb_vip(self, lb):"}],"source_content_type":"text/x-python","patch_set":6,"id":"2b20eee2_021ebbea","line":926,"range":{"start_line":926,"start_character":6,"end_line":926,"end_character":19},"in_reply_to":"b50a1893_4bd204a8","updated":"2024-02-29 07:59:40.000000000","message":"This was mostly to keep all unit tests intact O:)","commit_id":"f61bdb0f982db564d74ccda57d43bc3a97d64d65"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"dc5743edd1bf8ee82b4306e11d7530756be69787","unresolved":true,"context_lines":[{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":779,"context_line":"        for port in ports:"},{"line_number":780,"context_line":"            ips \u003d port.addresses[0].split(\u0027 \u0027)[1:]"},{"line_number":781,"context_line":"            mac \u003d port.addresses[0].strip().split(\u0027 \u0027)[0]"},{"line_number":782,"context_line":"            ips_info \u003d {"},{"line_number":783,"context_line":"                \u0027mac\u0027: mac,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a64ee42a_5f9e770a","line":780,"range":{"start_line":780,"start_character":0,"end_line":780,"end_character":50},"updated":"2024-03-01 14:10:24.000000000","message":"do you also need to check here if they belong to the address_scope? or better not too in case the address scope gets modified?","commit_id":"22ac0386f5d71acd9696665094ddf858b05f0bf8"},{"author":{"_account_id":25468,"name":"Michel Nederlof","email":"michel@nederlof.info","username":"pellucid"},"change_message_id":"94a242811f99e720cab2c62089009e6a9eebce73","unresolved":true,"context_lines":[{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        ports \u003d self.nb_idl.get_active_lsp(subnet_info[\u0027network\u0027])"},{"line_number":779,"context_line":"        for port in ports:"},{"line_number":780,"context_line":"            ips \u003d port.addresses[0].split(\u0027 \u0027)[1:]"},{"line_number":781,"context_line":"            mac \u003d port.addresses[0].strip().split(\u0027 \u0027)[0]"},{"line_number":782,"context_line":"            ips_info \u003d {"},{"line_number":783,"context_line":"                \u0027mac\u0027: mac,"}],"source_content_type":"text/x-python","patch_set":7,"id":"046c1b2a_daeaaa49","line":780,"range":{"start_line":780,"start_character":0,"end_line":780,"end_character":50},"in_reply_to":"a64ee42a_5f9e770a","updated":"2024-03-01 14:58:09.000000000","message":"i made an assumption that removing ip\u0027s that have not been exposed would not raise any issues. so removing too much of them would not cause an issue.","commit_id":"22ac0386f5d71acd9696665094ddf858b05f0bf8"}]}
