)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"9c7e600615554a0c0c0a94e220570a39be0ac6d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7b53457c_4b0d5a51","updated":"2025-10-02 15:56:13.000000000","message":"recheck","commit_id":"e810ebe65af9a7f926c521f7a353212e3f7acb71"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8e93af0df9988f884e4cc339ea68908755fdcd9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"206c574d_d126db3f","updated":"2025-10-24 07:01:32.000000000","message":"Minor comments","commit_id":"76170f66a33775d05bb41dd04f5995da3bc01fc1"}],"ovsdbapp/venv.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8e93af0df9988f884e4cc339ea68908755fdcd9e","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        if self.remove:"},{"line_number":58,"context_line":"            shutil.rmtree(self.venvdir, ignore_errors\u003dTrue)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _setUp(self):"},{"line_number":61,"context_line":"        self.addCleanup(self.deactivate)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def call(self, cmd, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"8f3170bc_a1adc3a4","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":14},"updated":"2025-10-24 07:01:32.000000000","message":"I think you should call `super()._setUp()` here if this method is also implemented in child classes","commit_id":"76170f66a33775d05bb41dd04f5995da3bc01fc1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad2e54ed6a2a0ccf39e6626ca79823b4b99b7f48","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if self.remove:"},{"line_number":58,"context_line":"            shutil.rmtree(self.venvdir, ignore_errors\u003dTrue)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _setUp(self):"},{"line_number":61,"context_line":"        self.addCleanup(self.deactivate)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def call(self, cmd, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":3,"id":"cd9fb28b_28f9035f","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":14},"in_reply_to":"8f3170bc_a1adc3a4","updated":"2025-11-13 09:53:58.000000000","message":"Done","commit_id":"76170f66a33775d05bb41dd04f5995da3bc01fc1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8e93af0df9988f884e4cc339ea68908755fdcd9e","unresolved":true,"context_lines":[{"line_number":359,"context_line":"    def __init__(self, venv, ovndir\u003dNone, add_chassis\u003dFalse, **kwargs):"},{"line_number":360,"context_line":"        super().__init__(venv, **kwargs)"},{"line_number":361,"context_line":"        self.add_chassis \u003d add_chassis"},{"line_number":362,"context_line":"        self.ovndir \u003d ovndir or ()"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    @property"},{"line_number":365,"context_line":"    def ovnsb_schema(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"6303fc27_759b99e8","line":362,"range":{"start_line":362,"start_character":29,"end_line":362,"end_character":34},"updated":"2025-10-24 07:01:32.000000000","message":"Why `()` by default? If I\u0027m not wrong, if `self.ovndir` is None or `()`, in both cases `ovnsb_schema` and `ovnnb_schema` will fail. Maybe you should first check the value before trying to use it.","commit_id":"76170f66a33775d05bb41dd04f5995da3bc01fc1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad2e54ed6a2a0ccf39e6626ca79823b4b99b7f48","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    def __init__(self, venv, ovndir\u003dNone, add_chassis\u003dFalse, **kwargs):"},{"line_number":360,"context_line":"        super().__init__(venv, **kwargs)"},{"line_number":361,"context_line":"        self.add_chassis \u003d add_chassis"},{"line_number":362,"context_line":"        self.ovndir \u003d ovndir or ()"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    @property"},{"line_number":365,"context_line":"    def ovnsb_schema(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"e1ebcdfa_b6174304","line":362,"range":{"start_line":362,"start_character":29,"end_line":362,"end_character":34},"in_reply_to":"6303fc27_759b99e8","updated":"2025-11-13 09:53:58.000000000","message":"I\u0027m replying myself: `()` is safe in `def schema_path(search_paths, filename)`, when joining the different possible paths. The search for something in `()` is safe (always returns False), but raises an exception with `None`.","commit_id":"76170f66a33775d05bb41dd04f5995da3bc01fc1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"34133a5c9ad819fa00fc2151dc90f6cfef42c03b","unresolved":true,"context_lines":[{"line_number":347,"context_line":"            \"init\"])"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"class OvsOvnVenvFixture(OvsVenvFixture):"},{"line_number":351,"context_line":"    OVN_PATHS \u003d ("},{"line_number":352,"context_line":"        os.path.join(os.path.sep, \u0027usr\u0027, \u0027local\u0027, \u0027share\u0027, \u0027ovn\u0027),"},{"line_number":353,"context_line":"        os.path.join(os.path.sep, \u0027usr\u0027, \u0027share\u0027, \u0027ovn\u0027)) + ("}],"source_content_type":"text/x-python","patch_set":4,"id":"4c819fff_91c07bbc","line":350,"range":{"start_line":350,"start_character":6,"end_line":350,"end_character":23},"updated":"2025-11-20 19:39:18.000000000","message":"I used this OvsOvnVenv at the BGP functional test https://review.opendev.org/c/openstack/neutron/+/959890/14/neutron/tests/functional/services/bgp/__init__.py#54\n\nPrior to this patch the `remove` attribute could be set to delete the venv. Was it removed on purpose and the right thing would be instantiating the venv and then set the attribute of `venv.venv` object?","commit_id":"9c1790796d8094d386257ebd2909186a9d63352c"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d779c01e22b96cffe883eac8fa371e125f891405","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            \"init\"])"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"class OvsOvnVenvFixture(OvsVenvFixture):"},{"line_number":351,"context_line":"    OVN_PATHS \u003d ("},{"line_number":352,"context_line":"        os.path.join(os.path.sep, \u0027usr\u0027, \u0027local\u0027, \u0027share\u0027, \u0027ovn\u0027),"},{"line_number":353,"context_line":"        os.path.join(os.path.sep, \u0027usr\u0027, \u0027share\u0027, \u0027ovn\u0027)) + ("}],"source_content_type":"text/x-python","patch_set":4,"id":"214d1684_c6f1b270","line":350,"range":{"start_line":350,"start_character":6,"end_line":350,"end_character":23},"in_reply_to":"4c819fff_91c07bbc","updated":"2026-01-22 15:26:52.000000000","message":"Done","commit_id":"9c1790796d8094d386257ebd2909186a9d63352c"}]}
