)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c045ca0f1418660f276a6a3e335078a99976fa21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cedc8aca_65b35da9","updated":"2026-01-28 18:50:04.000000000","message":"This patchset is the original patchset that merged. I will apply the fix to this next to make the fix easier to review.","commit_id":"5c3d644672f858ca6d887f5ba984d5a4ad5a6bf1"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6bc47ad10f473aa96d71e2ae9a9d58fdff87e196","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"73e014f2_7f4efcaa","updated":"2026-01-28 19:25:08.000000000","message":"Now, doing the diff between patchset 1 and 2 should show the fix to the original patch.","commit_id":"043f752fa24264f8aa0c1ac00f4f17ffc7d443d8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3d08029d7ca88229a7e6b10c3461cd1cf592dfc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6aeb17c7_118a90d7","updated":"2026-01-29 18:43:44.000000000","message":"After talking to Terry, we can merge this to fix the tests with the original revert and the comments will be done in a followup","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3d18e074_204d429f","updated":"2026-01-28 23:40:46.000000000","message":"I still need to finish reading OvsOvnVenvFixture - I think the ProcessFixture abstraction would make sense.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b91f7310_9ef8319c","updated":"2026-01-29 19:07:35.000000000","message":"The items I marked resolved here should be part of https://review.opendev.org/c/openstack/ovsdbapp/+/975198","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9a69fc6c_a4cdcc04","in_reply_to":"6aeb17c7_118a90d7","updated":"2026-01-29 19:07:35.000000000","message":"https://review.opendev.org/c/openstack/ovsdbapp/+/975198 is a start at the improvements.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"}],"ovsdbapp/tests/functional/base.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3d08029d7ca88229a7e6b10c3461cd1cf592dfc1","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @classmethod"},{"line_number":73,"context_line":"    def tearDownClass(cls):"},{"line_number":74,"context_line":"        if cls._teardown:"},{"line_number":75,"context_line":"            return"},{"line_number":76,"context_line":"        cls._teardown \u003d True"},{"line_number":77,"context_line":"        for conn in cls._connections.values():"},{"line_number":78,"context_line":"            conn.stop()"},{"line_number":79,"context_line":"        cls.ovsvenv.cleanUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"cddb56e1_ae8f63d6","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":28},"updated":"2026-01-29 18:43:44.000000000","message":"shouldn\u0027t the logic be flipped? if teardown is set to False then we shouldn\u0027t tear it down?","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d5e9ddfcb87dcdc0d6377affa81e2701ddfdd793","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @classmethod"},{"line_number":73,"context_line":"    def tearDownClass(cls):"},{"line_number":74,"context_line":"        if cls._teardown:"},{"line_number":75,"context_line":"            return"},{"line_number":76,"context_line":"        cls._teardown \u003d True"},{"line_number":77,"context_line":"        for conn in cls._connections.values():"},{"line_number":78,"context_line":"            conn.stop()"},{"line_number":79,"context_line":"        cls.ovsvenv.cleanUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"c5790aa2_7519bbc8","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":28},"in_reply_to":"a7a2ceea_9d7d9eac","updated":"2026-02-04 19:29:57.000000000","message":"Done in follow-up.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    @classmethod"},{"line_number":73,"context_line":"    def tearDownClass(cls):"},{"line_number":74,"context_line":"        if cls._teardown:"},{"line_number":75,"context_line":"            return"},{"line_number":76,"context_line":"        cls._teardown \u003d True"},{"line_number":77,"context_line":"        for conn in cls._connections.values():"},{"line_number":78,"context_line":"            conn.stop()"},{"line_number":79,"context_line":"        cls.ovsvenv.cleanUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"a7a2ceea_9d7d9eac","line":76,"range":{"start_line":74,"start_character":0,"end_line":76,"end_character":28},"in_reply_to":"cddb56e1_ae8f63d6","updated":"2026-01-29 19:07:35.000000000","message":"This was here to guard against an atexit() that made sure we cleaned up if someone ctrl-c\u0027d out of the tests worked w/o failing in the normal case where the class is torn down at successfuly completing. Could be renamed \"teardown_started\" or something if we need, but I should at least add the atexit() call back that somehow disappeared.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"}],"ovsdbapp/venv.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def kill_pid(pidfile):"},{"line_number":36,"context_line":"    \"\"\"Kill process using PID from pidfile, handling common exceptions.\"\"\""},{"line_number":37,"context_line":"    try:"},{"line_number":38,"context_line":"        os.kill(get_pid(pidfile), signal.SIGTERM)"},{"line_number":39,"context_line":"    except (FileNotFoundError, ProcessLookupError):"}],"source_content_type":"text/x-python","patch_set":3,"id":"8286bf36_f432bf6f","line":36,"updated":"2026-01-28 23:40:46.000000000","message":"nit: I\u0027d delete this docstring as it\u0027s obvious from the code what\u0027s happening there.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def kill_pid(pidfile):"},{"line_number":36,"context_line":"    \"\"\"Kill process using PID from pidfile, handling common exceptions.\"\"\""},{"line_number":37,"context_line":"    try:"},{"line_number":38,"context_line":"        os.kill(get_pid(pidfile), signal.SIGTERM)"},{"line_number":39,"context_line":"    except (FileNotFoundError, ProcessLookupError):"}],"source_content_type":"text/x-python","patch_set":3,"id":"04097a7d_b186c1f0","line":36,"in_reply_to":"8286bf36_f432bf6f","updated":"2026-01-29 19:07:35.000000000","message":"Done","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":35,"context_line":"def kill_pid(pidfile):"},{"line_number":36,"context_line":"    \"\"\"Kill process using PID from pidfile, handling common exceptions.\"\"\""},{"line_number":37,"context_line":"    try:"},{"line_number":38,"context_line":"        os.kill(get_pid(pidfile), signal.SIGTERM)"},{"line_number":39,"context_line":"    except (FileNotFoundError, ProcessLookupError):"},{"line_number":40,"context_line":"        pass  # Process already stopped or pidfile doesn\u0027t exist"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"e384a154_8981a23f","line":38,"updated":"2026-01-28 23:40:46.000000000","message":"A thought for discussion: this is typically called during cleanup phase where we no longer care about the spawned processes - is there a benefit to gracefully terminate the processes, which may not result in process exiting vs SIGKILL that would terminate the process reliably?","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":true,"context_lines":[{"line_number":35,"context_line":"def kill_pid(pidfile):"},{"line_number":36,"context_line":"    \"\"\"Kill process using PID from pidfile, handling common exceptions.\"\"\""},{"line_number":37,"context_line":"    try:"},{"line_number":38,"context_line":"        os.kill(get_pid(pidfile), signal.SIGTERM)"},{"line_number":39,"context_line":"    except (FileNotFoundError, ProcessLookupError):"},{"line_number":40,"context_line":"        pass  # Process already stopped or pidfile doesn\u0027t exist"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"854c253e_f7ba2369","line":38,"in_reply_to":"e384a154_8981a23f","updated":"2026-01-29 19:07:35.000000000","message":"In general, I just think about things like cleaning up pidfiles, flushing logs, finishing writes to the db, etc. making sure everything looks nice/is usable in the case that we are doing KEEPVENV\u003d1. (Though I\u0027m sure that the vast majority of the time it would be fine with SIGKILL as well.)","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":93,"context_line":"        return venv"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class OvsdbServerFixture(fixtures.Fixture):"},{"line_number":97,"context_line":"    def __init__(self, venv, name, schema_filename, ovsdir\u003dNone, *args):"},{"line_number":98,"context_line":"        super().__init__()"},{"line_number":99,"context_line":"        self.venv \u003d venv"}],"source_content_type":"text/x-python","patch_set":3,"id":"c1d39736_bd86e40b","line":96,"range":{"start_line":96,"start_character":34,"end_line":96,"end_character":41},"updated":"2026-01-28 23:40:46.000000000","message":"There are some common properties in the fixtures below, would it make sense to have a superclass\n```\nclass ProcessFixture(fixtures.Fixture):\n    def __init__(self, venv, name):\n        self.venv \u003d venv\n        self.name \u003d name\n        \n    def _setUp(self):\n        super()._setUp()\n        self.addCleanup(self.deactivate)\n        self.prestart()\n        self.start()\n\n    @property\n    def pidfile(self):\n        return os.path.join(self.venv.venvdir, f\"{self.name}.pid\")\n        \n    @property\n    def pid_from_pidfile(self):\n        with open(self.pidfile) as f:\n            return int(f.read().strip())\n\n    @property\n    def logfile(self):\n        return os.path.join(self.venv.venvdir, f\"{self.name}.log\")\n        \n    def deactivate(self):\n        try:\n            os.kill(self.pid_from_pidfile), signal.SIGTERM)\n        except (FileNotFoundError, ProcessLookupError):\n            pass  # Process already stopped or pidfile doesn\u0027t exist\n        \n    def prestart(self):\n        pass\n        \n    def start(self):\n        pass\n        \n        \nclass VswitchdFixture(ProcessFixture):\n    def __init__(self, venv, ovsdb_server, dummy\u003dDUMMY_OVERRIDE_ALL):\n        super().__init__(venv, name\u003d\u0027ovs-vswitchd\u0027)\n        ...\n```\n\nthis would make classes like OvnControllerFixture very small and reuse a lot of code.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        return venv"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class OvsdbServerFixture(fixtures.Fixture):"},{"line_number":97,"context_line":"    def __init__(self, venv, name, schema_filename, ovsdir\u003dNone, *args):"},{"line_number":98,"context_line":"        super().__init__()"},{"line_number":99,"context_line":"        self.venv \u003d venv"}],"source_content_type":"text/x-python","patch_set":3,"id":"426d3c8c_d1d81016","line":96,"range":{"start_line":96,"start_character":34,"end_line":96,"end_character":41},"in_reply_to":"c1d39736_bd86e40b","updated":"2026-01-29 19:07:35.000000000","message":"Added here https://review.opendev.org/c/openstack/ovsdbapp/+/975198","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":300,"context_line":"            self.venv \u003d VenvFixture(**kwargs)"},{"line_number":301,"context_line":"        elif isinstance(venv, str):"},{"line_number":302,"context_line":"            # Handle backward compatibility of first arg being venvdir"},{"line_number":303,"context_line":"            self.venv \u003d VenvFixture(venvdir\u003dvenv, **kwargs)"},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            self._setup_venv \u003d False"},{"line_number":306,"context_line":"            self.venv \u003d venv"}],"source_content_type":"text/x-python","patch_set":3,"id":"b9b4641d_61d3fa67","line":303,"updated":"2026-01-28 23:40:46.000000000","message":"Do we want to print or log some annoying message about deprecation of the venvdir?","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":true,"context_lines":[{"line_number":300,"context_line":"            self.venv \u003d VenvFixture(**kwargs)"},{"line_number":301,"context_line":"        elif isinstance(venv, str):"},{"line_number":302,"context_line":"            # Handle backward compatibility of first arg being venvdir"},{"line_number":303,"context_line":"            self.venv \u003d VenvFixture(venvdir\u003dvenv, **kwargs)"},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            self._setup_venv \u003d False"},{"line_number":306,"context_line":"            self.venv \u003d venv"}],"source_content_type":"text/x-python","patch_set":3,"id":"e998cd4e_bdd20db4","line":303,"in_reply_to":"b9b4641d_61d3fa67","updated":"2026-01-29 19:07:35.000000000","message":"Will do.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d5e9ddfcb87dcdc0d6377affa81e2701ddfdd793","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            self.venv \u003d VenvFixture(**kwargs)"},{"line_number":301,"context_line":"        elif isinstance(venv, str):"},{"line_number":302,"context_line":"            # Handle backward compatibility of first arg being venvdir"},{"line_number":303,"context_line":"            self.venv \u003d VenvFixture(venvdir\u003dvenv, **kwargs)"},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            self._setup_venv \u003d False"},{"line_number":306,"context_line":"            self.venv \u003d venv"}],"source_content_type":"text/x-python","patch_set":3,"id":"60c5ee36_5c613b87","line":303,"in_reply_to":"e998cd4e_bdd20db4","updated":"2026-02-04 19:29:57.000000000","message":"Honestly, I\u0027m not sure if this behavior will ever be removed anyway. Will consider in the follow-up patch.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":337,"context_line":"                                self.OVS_SCHEMA)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def call(self, *args, **kwargs):"},{"line_number":340,"context_line":"        # For backwards compatibility"},{"line_number":341,"context_line":"        return self.venv.call(*args, **kwargs)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c093a7f_619da10f","line":340,"updated":"2026-01-28 23:40:46.000000000","message":"Annoying log? :)","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":true,"context_lines":[{"line_number":337,"context_line":"                                self.OVS_SCHEMA)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def call(self, *args, **kwargs):"},{"line_number":340,"context_line":"        # For backwards compatibility"},{"line_number":341,"context_line":"        return self.venv.call(*args, **kwargs)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"be371cb3_a7faa6e2","line":340,"in_reply_to":"6c093a7f_619da10f","updated":"2026-01-29 19:07:35.000000000","message":"If I do a ProcessFixture and move call() to it, then I guess this would come back to fully supported.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d5e9ddfcb87dcdc0d6377affa81e2701ddfdd793","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                                self.OVS_SCHEMA)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def call(self, *args, **kwargs):"},{"line_number":340,"context_line":"        # For backwards compatibility"},{"line_number":341,"context_line":"        return self.venv.call(*args, **kwargs)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _setUp(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f380f0bd_8e1e01aa","line":340,"in_reply_to":"be371cb3_a7faa6e2","updated":"2026-02-04 19:29:57.000000000","message":"Same as above on possibly not deprecating. If I do, it\u0027ll be in a follow-up patch.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":340,"context_line":"        # For backwards compatibility"},{"line_number":341,"context_line":"        return self.venv.call(*args, **kwargs)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _setUp(self):"},{"line_number":344,"context_line":"        super()._setUp()"},{"line_number":345,"context_line":"        if self._setup_venv:"},{"line_number":346,"context_line":"            self.useFixture(self.venv)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9051b102_7e95f746","line":343,"updated":"2026-01-28 23:40:46.000000000","message":"I don\u0027t know if it\u0027s just me but I find it more readable if _setUp() follows the __init__() as the setup is called by the useFixture which makes it \"almost\" at the instantiation part.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"4dcd1a0198cc3d4a90f17cab4c9b8a5b2d8e3073","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        # For backwards compatibility"},{"line_number":341,"context_line":"        return self.venv.call(*args, **kwargs)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def _setUp(self):"},{"line_number":344,"context_line":"        super()._setUp()"},{"line_number":345,"context_line":"        if self._setup_venv:"},{"line_number":346,"context_line":"            self.useFixture(self.venv)"}],"source_content_type":"text/x-python","patch_set":3,"id":"6d9f1e4f_725ba95d","line":343,"in_reply_to":"9051b102_7e95f746","updated":"2026-01-30 14:30:48.000000000","message":"Done","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6d49857aa113c003e73de1c318bfc008a069c4c2","unresolved":true,"context_lines":[{"line_number":353,"context_line":"        self.venv.call(["},{"line_number":354,"context_line":"            \"ovs-vsctl\","},{"line_number":355,"context_line":"            \"--no-wait\","},{"line_number":356,"context_line":"            f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":357,"context_line":"            \"--\","},{"line_number":358,"context_line":"            \"init\"])"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"aac536ac_429bb0e6","line":356,"range":{"start_line":356,"start_character":20,"end_line":356,"end_character":48},"updated":"2026-01-28 23:40:46.000000000","message":"nit: `self.ovs_connection`","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        self.venv.call(["},{"line_number":354,"context_line":"            \"ovs-vsctl\","},{"line_number":355,"context_line":"            \"--no-wait\","},{"line_number":356,"context_line":"            f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":357,"context_line":"            \"--\","},{"line_number":358,"context_line":"            \"init\"])"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7528a2f8_cc228bad","line":356,"range":{"start_line":356,"start_character":20,"end_line":356,"end_character":48},"in_reply_to":"aac536ac_429bb0e6","updated":"2026-01-29 19:07:35.000000000","message":"Done","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3d08029d7ca88229a7e6b10c3461cd1cf592dfc1","unresolved":true,"context_lines":[{"line_number":416,"context_line":"            self.venv, self.ovnnb_connection, self.ovnsb_connection))"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        self.controller \u003d self.useFixture(OvnControllerFixture(self.venv))"},{"line_number":419,"context_line":"        super()._setUp()"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def init_processes(self):"},{"line_number":422,"context_line":"        super().init_processes()"}],"source_content_type":"text/x-python","patch_set":3,"id":"351f1fda_c05ca642","line":419,"updated":"2026-01-29 18:43:44.000000000","message":"The ovn-controller connects to the vswitchd - should we setup OVS first?","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":true,"context_lines":[{"line_number":416,"context_line":"            self.venv, self.ovnnb_connection, self.ovnsb_connection))"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        self.controller \u003d self.useFixture(OvnControllerFixture(self.venv))"},{"line_number":419,"context_line":"        super()._setUp()"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def init_processes(self):"},{"line_number":422,"context_line":"        super().init_processes()"}],"source_content_type":"text/x-python","patch_set":3,"id":"aa6b76b2_c02311b4","line":419,"in_reply_to":"351f1fda_c05ca642","updated":"2026-01-29 19:07:35.000000000","message":"Definitely worth checking into.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d5e9ddfcb87dcdc0d6377affa81e2701ddfdd793","unresolved":false,"context_lines":[{"line_number":416,"context_line":"            self.venv, self.ovnnb_connection, self.ovnsb_connection))"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        self.controller \u003d self.useFixture(OvnControllerFixture(self.venv))"},{"line_number":419,"context_line":"        super()._setUp()"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def init_processes(self):"},{"line_number":422,"context_line":"        super().init_processes()"}],"source_content_type":"text/x-python","patch_set":3,"id":"90c38fc8_1c5255df","line":419,"in_reply_to":"aa6b76b2_c02311b4","updated":"2026-02-04 19:29:57.000000000","message":"Resolving this in the follow up patch as well.","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3d08029d7ca88229a7e6b10c3461cd1cf592dfc1","unresolved":true,"context_lines":[{"line_number":424,"context_line":"        self.venv.call([\"ovn-sbctl\", \"init\"])"},{"line_number":425,"context_line":"        if self.add_chassis:"},{"line_number":426,"context_line":"            self.venv.call(["},{"line_number":427,"context_line":"                \"ovs-vsctl\", f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":428,"context_line":"                \"set\", \"open\", \".\","},{"line_number":429,"context_line":"                \"external_ids:system-id\u003d56b18105-5706-46ef-80c4-ff20979ab068\","},{"line_number":430,"context_line":"                \"external_ids:hostname\u003dsandbox\","}],"source_content_type":"text/x-python","patch_set":3,"id":"29ef851b_2d9c8cfd","line":427,"range":{"start_line":427,"start_character":42,"end_line":427,"end_character":65},"updated":"2026-01-29 18:43:44.000000000","message":"self.ovs_connection","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        self.venv.call([\"ovn-sbctl\", \"init\"])"},{"line_number":425,"context_line":"        if self.add_chassis:"},{"line_number":426,"context_line":"            self.venv.call(["},{"line_number":427,"context_line":"                \"ovs-vsctl\", f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":428,"context_line":"                \"set\", \"open\", \".\","},{"line_number":429,"context_line":"                \"external_ids:system-id\u003d56b18105-5706-46ef-80c4-ff20979ab068\","},{"line_number":430,"context_line":"                \"external_ids:hostname\u003dsandbox\","}],"source_content_type":"text/x-python","patch_set":3,"id":"a6eccd6e_a69e9dd8","line":427,"range":{"start_line":427,"start_character":42,"end_line":427,"end_character":65},"in_reply_to":"29ef851b_2d9c8cfd","updated":"2026-01-29 19:07:35.000000000","message":"Done","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"3d08029d7ca88229a7e6b10c3461cd1cf592dfc1","unresolved":true,"context_lines":[{"line_number":432,"context_line":"                \"external_ids:ovn-encap-ip\u003d127.0.0.1\"])"},{"line_number":433,"context_line":"        # TODO(twilson) SSL stuff"},{"line_number":434,"context_line":"        self.venv.call(["},{"line_number":435,"context_line":"            \"ovs-vsctl\", f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":436,"context_line":"            \"set\", \"open\", \".\","},{"line_number":437,"context_line":"            \"external_ids:ovn-remote\u003d\" + self.ovnsb_connection])"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"913cd9b0_55037cc8","line":435,"range":{"start_line":435,"start_character":38,"end_line":435,"end_character":61},"updated":"2026-01-29 18:43:44.000000000","message":"ditto","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e5e081816332501d90664d58440220a148b143bb","unresolved":false,"context_lines":[{"line_number":432,"context_line":"                \"external_ids:ovn-encap-ip\u003d127.0.0.1\"])"},{"line_number":433,"context_line":"        # TODO(twilson) SSL stuff"},{"line_number":434,"context_line":"        self.venv.call(["},{"line_number":435,"context_line":"            \"ovs-vsctl\", f\"--db\u003d{self.ovsdb_server.connection}\","},{"line_number":436,"context_line":"            \"set\", \"open\", \".\","},{"line_number":437,"context_line":"            \"external_ids:ovn-remote\u003d\" + self.ovnsb_connection])"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fd19dae5_d3fecd4c","line":435,"range":{"start_line":435,"start_character":38,"end_line":435,"end_character":61},"in_reply_to":"913cd9b0_55037cc8","updated":"2026-01-29 19:07:35.000000000","message":"Done","commit_id":"f34e599aedd1dcc2bf014b8bac95f0f5c6ce83e0"}]}
