)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0057d8a42b161edeee31517659475490a18a8c67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"51e03738_7bb77009","updated":"2026-05-21 13:24:41.000000000","message":"some early easy feedback :)","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"6d1222e1048f869037ab2603684ff13c62d90983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4c7f45eb_a910aaac","updated":"2026-05-26 09:21:45.000000000","message":"If we are going to run it e.g. in functional tests, I think it should be added to the bindep.txt file: https://github.com/openstack/neutron/blob/master/bindep.txt\nAnd maybe also should be installed by the configured_for_func_testing.sh script: https://github.com/openstack/neutron/blob/master/tools/configure_for_func_testing.sh","commit_id":"5789d3b679c7feb0a19ae0763a571643bb7f3288"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"02373b5b9125637c208d3637bc0b6995214ed3f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"faf52b6f_bea6cf0c","in_reply_to":"4c7f45eb_a910aaac","updated":"2026-05-26 09:45:36.000000000","message":"Now I see that it is added to the configure_for_func_testing.sh in the follow up patch https://review.opendev.org/c/openstack/neutron/+/988158 but I think that adding it to bindep.txt still makes sense","commit_id":"5789d3b679c7feb0a19ae0763a571643bb7f3288"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"13a8b1ab87ce30ac753f9ca17a7f80aaf44ac0f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"812cccab_b6ec4f29","in_reply_to":"faf52b6f_bea6cf0c","updated":"2026-05-28 07:06:56.000000000","message":"as Miro is off this week, I just added \"frr\" to bindep.txt file","commit_id":"5789d3b679c7feb0a19ae0763a571643bb7f3288"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"38a061b3fe38ba43e1da2db784702750b4f613b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"986eae27_b57af713","updated":"2026-06-02 07:19:32.000000000","message":"recheck neutron-functional","commit_id":"af5880c4c907786617c3823bc9b68db008c7b2f5"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"d21d15690e8b7dd6f0aefd8a5c83ad9f330b39c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b121a6b1_7efe79f5","updated":"2026-06-02 01:30:10.000000000","message":"recheck unrelated failure in neutron-ovs-tempest-multinode-full","commit_id":"af5880c4c907786617c3823bc9b68db008c7b2f5"}],"neutron/tests/common/net_helpers.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0057d8a42b161edeee31517659475490a18a8c67","unresolved":true,"context_lines":[{"line_number":1158,"context_line":"            self._state_dir \u003d self.FRR_STATE_DIR_BASE"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"    def _setUp(self):"},{"line_number":1161,"context_line":"        self._create_config()"},{"line_number":1162,"context_line":"        self._start_frr()"},{"line_number":1163,"context_line":"        self.addCleanup(self._stop_frr)"},{"line_number":1164,"context_line":"        self.addCleanup(self._remove_config)"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def _write_file(self, path, content):"},{"line_number":1167,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027w\u0027) as tmp:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f676522_f089eb75","line":1164,"range":{"start_line":1161,"start_character":0,"end_line":1164,"end_character":44},"updated":"2026-05-21 13:24:41.000000000","message":"It\u0027s better to register the cleanup methods first and then make those methods account for that the setup portion was not called yet. For example - in case _start_frr() blows, the config won\u0027t get removed.","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"a0d161ea1f5d5bcdf5fc2c9d8ff2b3f5a7bd32d9","unresolved":false,"context_lines":[{"line_number":1158,"context_line":"            self._state_dir \u003d self.FRR_STATE_DIR_BASE"},{"line_number":1159,"context_line":""},{"line_number":1160,"context_line":"    def _setUp(self):"},{"line_number":1161,"context_line":"        self._create_config()"},{"line_number":1162,"context_line":"        self._start_frr()"},{"line_number":1163,"context_line":"        self.addCleanup(self._stop_frr)"},{"line_number":1164,"context_line":"        self.addCleanup(self._remove_config)"},{"line_number":1165,"context_line":""},{"line_number":1166,"context_line":"    def _write_file(self, path, content):"},{"line_number":1167,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027w\u0027) as tmp:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4f81ba3f_5d566253","line":1164,"range":{"start_line":1161,"start_character":0,"end_line":1164,"end_character":44},"in_reply_to":"3f676522_f089eb75","updated":"2026-05-21 19:46:41.000000000","message":"Done","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0057d8a42b161edeee31517659475490a18a8c67","unresolved":true,"context_lines":[{"line_number":1210,"context_line":"            cmd.append(self.namespace)"},{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            utils.execute(cmd, run_as_root\u003dTrue)"},{"line_number":1213,"context_line":"        except Exception:"},{"line_number":1214,"context_line":"            LOG.exception(\"Failed to stop FRR in namespace %s\","},{"line_number":1215,"context_line":"                          self.namespace)"},{"line_number":1216,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b0ab395e_c43d7d7d","line":1213,"updated":"2026-05-21 13:24:41.000000000","message":"Maybe a RuntimeError would be better to log and if it\u0027s something else then just let it blow.","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"a0d161ea1f5d5bcdf5fc2c9d8ff2b3f5a7bd32d9","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"            cmd.append(self.namespace)"},{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            utils.execute(cmd, run_as_root\u003dTrue)"},{"line_number":1213,"context_line":"        except Exception:"},{"line_number":1214,"context_line":"            LOG.exception(\"Failed to stop FRR in namespace %s\","},{"line_number":1215,"context_line":"                          self.namespace)"},{"line_number":1216,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7c62f7d6_05f1d5fa","line":1213,"in_reply_to":"b0ab395e_c43d7d7d","updated":"2026-05-21 19:46:41.000000000","message":"Done","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0057d8a42b161edeee31517659475490a18a8c67","unresolved":true,"context_lines":[{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            utils.execute(cmd, run_as_root\u003dTrue)"},{"line_number":1213,"context_line":"        except Exception:"},{"line_number":1214,"context_line":"            LOG.exception(\"Failed to stop FRR in namespace %s\","},{"line_number":1215,"context_line":"                          self.namespace)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def _remove_config(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"86d90728_22363339","line":1214,"range":{"start_line":1214,"start_character":16,"end_line":1214,"end_character":25},"updated":"2026-05-21 13:24:41.000000000","message":"LOG.error may make more sense here, we do not need to see the traceback as it\u0027s quite obvious where the exception is coming from.","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"a0d161ea1f5d5bcdf5fc2c9d8ff2b3f5a7bd32d9","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        try:"},{"line_number":1212,"context_line":"            utils.execute(cmd, run_as_root\u003dTrue)"},{"line_number":1213,"context_line":"        except Exception:"},{"line_number":1214,"context_line":"            LOG.exception(\"Failed to stop FRR in namespace %s\","},{"line_number":1215,"context_line":"                          self.namespace)"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":"    def _remove_config(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"c6b3cb71_8bfc47c9","line":1214,"range":{"start_line":1214,"start_character":16,"end_line":1214,"end_character":25},"in_reply_to":"86d90728_22363339","updated":"2026-05-21 19:46:41.000000000","message":"Done","commit_id":"382458606f1ced1a12270381fc5b63c7944f6b47"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f19db2a73ffe99526c5cbb2ac4a20051077907d6","unresolved":true,"context_lines":[{"line_number":1147,"context_line":"        \u0027log timestamp precision 3\\n\u0027"},{"line_number":1148,"context_line":"    )"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    def __init__(self, namespace\u003dNone):"},{"line_number":1151,"context_line":"        super().__init__()"},{"line_number":1152,"context_line":"        self.namespace \u003d namespace"},{"line_number":1153,"context_line":"        if namespace:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9c33c03c_7eb8777b","line":1150,"range":{"start_line":1150,"start_character":23,"end_line":1150,"end_character":37},"updated":"2026-05-22 13:37:36.000000000","message":"pretty much every method has `if self.namespace`. We should either consider to use namespace always, because we want to isolate the frr always.\n\nOr have a separate class for an frr process with namespace and without and override methods instead of asking if there is a namespace whenever a method is called.\n\nI\u0027d lean towards the first option and consider Frr without a namespace as YAGNI.","commit_id":"6b813cf9f29ae996cd055fe8979bb3ab32cb092a"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"23ff6f3d47e94d2f9ad0ca3598172d458affe6ac","unresolved":false,"context_lines":[{"line_number":1147,"context_line":"        \u0027log timestamp precision 3\\n\u0027"},{"line_number":1148,"context_line":"    )"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    def __init__(self, namespace\u003dNone):"},{"line_number":1151,"context_line":"        super().__init__()"},{"line_number":1152,"context_line":"        self.namespace \u003d namespace"},{"line_number":1153,"context_line":"        if namespace:"}],"source_content_type":"text/x-python","patch_set":5,"id":"18b47136_8e86fef1","line":1150,"range":{"start_line":1150,"start_character":23,"end_line":1150,"end_character":37},"in_reply_to":"093ef88f_fd96c4e4","updated":"2026-05-23 01:12:53.000000000","message":"Done","commit_id":"6b813cf9f29ae996cd055fe8979bb3ab32cb092a"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"7c3edb35236d179dfd86d98d2e351b3c24e5644c","unresolved":true,"context_lines":[{"line_number":1147,"context_line":"        \u0027log timestamp precision 3\\n\u0027"},{"line_number":1148,"context_line":"    )"},{"line_number":1149,"context_line":""},{"line_number":1150,"context_line":"    def __init__(self, namespace\u003dNone):"},{"line_number":1151,"context_line":"        super().__init__()"},{"line_number":1152,"context_line":"        self.namespace \u003d namespace"},{"line_number":1153,"context_line":"        if namespace:"}],"source_content_type":"text/x-python","patch_set":5,"id":"093ef88f_fd96c4e4","line":1150,"range":{"start_line":1150,"start_character":23,"end_line":1150,"end_character":37},"in_reply_to":"9c33c03c_7eb8777b","updated":"2026-05-22 13:41:35.000000000","message":"I was on fence with that myself, and also wasn\u0027t sure if running frr in default namespace would be needed. Now that you also mentioned it, I will just remove that option. That is, a namespace is required. Thanks","commit_id":"6b813cf9f29ae996cd055fe8979bb3ab32cb092a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"802389e9f33deb1fac3169d81d763fdd18c95d23","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"        self.port.link.set_up()"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class FrrFixture(fixtures.Fixture):"},{"line_number":1095,"context_line":"    \"\"\"Set up FRR inside a network namespace."},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    Uses the FRR pathspace feature where the namespace name doubles"}],"source_content_type":"text/x-python","patch_set":8,"id":"cbe4bebe_f46703f3","line":1094,"updated":"2026-05-28 18:06:24.000000000","message":"We talked about it over Slack but putting it here for visibility too. I think it would make sense to have a generic Process class that implements the interaction with the system.","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"36857f096b493c9912caab4cbcf45dbc69ec63f6","unresolved":false,"context_lines":[{"line_number":1091,"context_line":"        self.port.link.set_up()"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class FrrFixture(fixtures.Fixture):"},{"line_number":1095,"context_line":"    \"\"\"Set up FRR inside a network namespace."},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    Uses the FRR pathspace feature where the namespace name doubles"}],"source_content_type":"text/x-python","patch_set":8,"id":"87803490_d480b934","line":1094,"in_reply_to":"155485ff_8189443f","updated":"2026-06-01 18:21:26.000000000","message":"I discussed this with Jakub over a chat.\nI agree with the general idea of this feedback, i.e. to implement a ProcessFixture which will handle the process lifecycle(start, stop, kill, etc). Then the FrrFixture can just overwrite the specifics needed for frr. \nSomething like this, https://paste.opendev.org/show/b5bUBUzUYEC2onmwwkrf/\n\nHowever, in FRRFixture we use `frrinit.sh` which has its own logic for managing frr process. E.g. [stop service](https://github.com/FRRouting/frr/blob/master/tools/frrcommon.sh.in#L197-L242). I dont see huge benefits of ProcessFixture for the current implementation of FrrFixture. Thus, I am keeping it as is.","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e02d51abfa8d99e7a4c9e8ae6c91685f85104a5b","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"        self.port.link.set_up()"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class FrrFixture(fixtures.Fixture):"},{"line_number":1095,"context_line":"    \"\"\"Set up FRR inside a network namespace."},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    Uses the FRR pathspace feature where the namespace name doubles"}],"source_content_type":"text/x-python","patch_set":8,"id":"155485ff_8189443f","line":1094,"in_reply_to":"16a4563b_f1645458","updated":"2026-05-29 18:56:54.000000000","message":"This class FrrFixture could be inherited from ProcessFixture (similar to how ovsdbapp deals with processes spawned by fixtures https://opendev.org/openstack/ovsdbapp/src/branch/master/ovsdbapp/venv.py#L83) - that can implement an interface to interact with the system (execute()) and to maintain the process lifecycle (init, start, stop, kill).\n\nThen the FrrFixture can just implement the specifics, like which command to be called on startup and stop and what should be prepared in the init phase.","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9c96774237ee8db3b7c242b809a8bda61a6383ce","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"        self.port.link.set_up()"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class FrrFixture(fixtures.Fixture):"},{"line_number":1095,"context_line":"    \"\"\"Set up FRR inside a network namespace."},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    Uses the FRR pathspace feature where the namespace name doubles"}],"source_content_type":"text/x-python","patch_set":8,"id":"16a4563b_f1645458","line":1094,"in_reply_to":"6e0fa4cf_b78e3876","updated":"2026-05-29 14:08:37.000000000","message":"Are you saying to monitor the processes with a `ProcessManager` class?","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ab0ca7aa3aba23e1c2ae86235bbced63d30e2bc3","unresolved":true,"context_lines":[{"line_number":1091,"context_line":"        self.port.link.set_up()"},{"line_number":1092,"context_line":""},{"line_number":1093,"context_line":""},{"line_number":1094,"context_line":"class FrrFixture(fixtures.Fixture):"},{"line_number":1095,"context_line":"    \"\"\"Set up FRR inside a network namespace."},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"    Uses the FRR pathspace feature where the namespace name doubles"}],"source_content_type":"text/x-python","patch_set":8,"id":"6e0fa4cf_b78e3876","line":1094,"in_reply_to":"cbe4bebe_f46703f3","updated":"2026-05-29 14:07:39.000000000","message":"Sorry, what class are you referring?","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"802389e9f33deb1fac3169d81d763fdd18c95d23","unresolved":true,"context_lines":[{"line_number":1156,"context_line":"        self._create_config()"},{"line_number":1157,"context_line":"        self._start_frr()"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"    def _write_file(self, path, content):"},{"line_number":1160,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027w\u0027) as tmp:"},{"line_number":1161,"context_line":"            tmp.write(content)"},{"line_number":1162,"context_line":"            tmp.flush()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7d1a01f6_98e0b5ae","line":1159,"updated":"2026-05-28 18:06:24.000000000","message":"nit: `@staticmethod`","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"36857f096b493c9912caab4cbcf45dbc69ec63f6","unresolved":false,"context_lines":[{"line_number":1156,"context_line":"        self._create_config()"},{"line_number":1157,"context_line":"        self._start_frr()"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"    def _write_file(self, path, content):"},{"line_number":1160,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027w\u0027) as tmp:"},{"line_number":1161,"context_line":"            tmp.write(content)"},{"line_number":1162,"context_line":"            tmp.flush()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7de36976_56b7e7e8","line":1159,"in_reply_to":"7d1a01f6_98e0b5ae","updated":"2026-06-01 18:21:26.000000000","message":"Done","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"846ff792588e681d0a9b97fc30bf043500d3f603","unresolved":true,"context_lines":[{"line_number":1156,"context_line":"        self._create_config()"},{"line_number":1157,"context_line":"        self._start_frr()"},{"line_number":1158,"context_line":""},{"line_number":1159,"context_line":"    def _write_file(self, path, content):"},{"line_number":1160,"context_line":"        with tempfile.NamedTemporaryFile(mode\u003d\u0027w\u0027) as tmp:"},{"line_number":1161,"context_line":"            tmp.write(content)"},{"line_number":1162,"context_line":"            tmp.flush()"}],"source_content_type":"text/x-python","patch_set":8,"id":"4212ca44_1234f384","line":1159,"in_reply_to":"7de36976_56b7e7e8","updated":"2026-06-02 07:19:03.000000000","message":"This is not done in the last PS","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"70ee9e362ee438c3990bee664994aae6ea19cd84","unresolved":true,"context_lines":[{"line_number":1195,"context_line":"                [self.FRRINIT, \u0027stop\u0027, self.namespace],"},{"line_number":1196,"context_line":"                run_as_root\u003dTrue)"},{"line_number":1197,"context_line":"        except RuntimeError:"},{"line_number":1198,"context_line":"            LOG.error(\"Failed to stop FRR in namespace %s\", self.namespace)"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"    def _remove_config(self):"},{"line_number":1201,"context_line":"        for dir in (self._conf_dir, self._state_dir):"}],"source_content_type":"text/x-python","patch_set":8,"id":"930744e0_769add52","line":1198,"updated":"2026-05-28 18:06:46.000000000","message":"Should we sigkill in such case?","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"36857f096b493c9912caab4cbcf45dbc69ec63f6","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                [self.FRRINIT, \u0027stop\u0027, self.namespace],"},{"line_number":1196,"context_line":"                run_as_root\u003dTrue)"},{"line_number":1197,"context_line":"        except RuntimeError:"},{"line_number":1198,"context_line":"            LOG.error(\"Failed to stop FRR in namespace %s\", self.namespace)"},{"line_number":1199,"context_line":""},{"line_number":1200,"context_line":"    def _remove_config(self):"},{"line_number":1201,"context_line":"        for dir in (self._conf_dir, self._state_dir):"}],"source_content_type":"text/x-python","patch_set":8,"id":"b551750a_70fc9280","line":1198,"in_reply_to":"930744e0_769add52","updated":"2026-06-01 18:21:26.000000000","message":"See my comment about ProcessFixture. In short, the frrcommon.sh will handle killing the process.","commit_id":"29992c5868edb5b6ab0b087b04e66a994d7f4c5c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2fe9a6de25a4a4ce26bd84bec3f7a1c3d7953312","unresolved":true,"context_lines":[{"line_number":1199,"context_line":"            LOG.error(\"Failed to stop FRR in namespace %s\", self.namespace)"},{"line_number":1200,"context_line":""},{"line_number":1201,"context_line":"    def _remove_config(self):"},{"line_number":1202,"context_line":"        for dir in (self._conf_dir, self._state_dir):"},{"line_number":1203,"context_line":"            try:"},{"line_number":1204,"context_line":"                utils.execute("},{"line_number":1205,"context_line":"                    [\u0027rm\u0027, \u0027-rf\u0027, dir], run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"0d72d087_ed9e9612","line":1202,"range":{"start_line":1202,"start_character":12,"end_line":1202,"end_character":15},"updated":"2026-06-02 11:58:25.000000000","message":"nit: shadowing dir","commit_id":"fe3cc88a2bf9075e16ef47d8f0d119c0eff7f748"}]}
