)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"185696058e2fb4b73807fb7d8d992391327a7368","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"741a32df_85c9c1ef","updated":"2021-10-11 16:27:57.000000000","message":"recheck","commit_id":"39426dbd4d290aa3f651e717cf74c61fb2dba769"}],"ovsdbapp/schema/ovn_ic_northbound/api.py":[{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":24,"context_line":"    \"\"\""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @abc.abstractmethod"},{"line_number":27,"context_line":"    def ts_add(self, switch\u003dNone, may_exist\u003dFalse, **columns):"},{"line_number":28,"context_line":"        \"\"\"Create a transit switch named \u0027switch\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"        :param switch:    The name of the switch"}],"source_content_type":"text/x-python","patch_set":1,"id":"36771bbb_1b57e6a7","line":27,"updated":"2021-09-17 22:31:41.000000000","message":"Shouldn\u0027t `switch` be a positional argument?\novn-ic-nbctl ts-add requires a ts name:\n```\n# ovn-ic-nbctl ts-add\novn-ic-nbctl: \u0027ts-add\u0027 command requires at least 1 arguments\n```","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        :param switch:   The name or uuid of the switch"},{"line_number":43,"context_line":"        :type switch:    string or uuid.UUID"},{"line_number":44,"context_line":"        :type if_exists: If True, don\u0027t fail if the switch doesn\u0027t exist"},{"line_number":45,"context_line":"        :type if_exists: boolean"},{"line_number":46,"context_line":"        :returns:        :class:`Command` with no result"},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"31dcdde8_89722fe8","line":44,"updated":"2021-09-17 22:31:41.000000000","message":"Typo:\n`:type switch:` -\u003e `:param: switch:`","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @abc.abstractmethod"},{"line_number":57,"context_line":"    def ts_get(self, switch):"},{"line_number":58,"context_line":"        \"\"\"Get transit switch for \u0027switch\u0027"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        :returns: :class:`Command` with RowView result"},{"line_number":61,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"e4798385_9eeabb7e","line":58,"updated":"2021-09-17 22:31:41.000000000","message":"Typo: \"by `switch`\".","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"}],"ovsdbapp/schema/ovn_ic_northbound/commands.py":[{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":18,"context_line":"class TsAddCommand(cmd.AddCommand):"},{"line_number":19,"context_line":"    table_name \u003d \u0027Transit_Switch\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def __init__(self, api, switch, may_exist\u003dFalse, **columns):"},{"line_number":22,"context_line":"        super().__init__(api)"},{"line_number":23,"context_line":"        self.switch \u003d switch"},{"line_number":24,"context_line":"        self.columns \u003d columns"}],"source_content_type":"text/x-python","patch_set":1,"id":"e34dce18_e5eff1ac","line":21,"updated":"2021-09-17 22:31:41.000000000","message":"Maybe better to rename `switch` argument to `ts` or `transit_switch`?","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":33,"context_line":"            if self.may_exist:"},{"line_number":34,"context_line":"                self.result \u003d rowview.RowView(sw)"},{"line_number":35,"context_line":"                return"},{"line_number":36,"context_line":"            raise RuntimeError(\"Switch %s exists\" % self.switch)"},{"line_number":37,"context_line":"        sw \u003d txn.insert(self.api.tables[self.table_name])"},{"line_number":38,"context_line":"        sw.name \u003d self.switch"},{"line_number":39,"context_line":"        self.set_columns(sw, **self.columns)"}],"source_content_type":"text/x-python","patch_set":1,"id":"0caa05c6_929d8ede","line":36,"updated":"2021-09-17 22:31:41.000000000","message":"Switch -\u003e Transit Switch","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":53,"context_line":"        except idlutils.RowNotFound as e:"},{"line_number":54,"context_line":"            if self.if_exists:"},{"line_number":55,"context_line":"                return"},{"line_number":56,"context_line":"            msg \u003d \"Logical Switch %s does not exist\" % self.switch"},{"line_number":57,"context_line":"            raise RuntimeError(msg) from e"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"643453fa_6236fbd9","line":56,"updated":"2021-09-17 22:31:41.000000000","message":"Logical Switch -\u003e Transit Switch","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"}],"ovsdbapp/tests/functional/base.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9a0084fb2adf34851c63cd8f4236676d22da894c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    schema_map \u003d {\u0027Open_vSwitch\u0027: ovsvenv.ovs_connection,"},{"line_number":32,"context_line":"                  \u0027OVN_Northbound\u0027: ovsvenv.ovnnb_connection,"},{"line_number":33,"context_line":"                  \u0027OVN_Southbound\u0027: ovsvenv.ovnsb_connection,"},{"line_number":34,"context_line":"                  \u0027OVN_IC_Northbound\u0027: ovsvenv.ovn_icnb_connection}"},{"line_number":35,"context_line":"    ovsvenvlog \u003d None"},{"line_number":36,"context_line":"    if os.getenv(\u0027KEEP_VENV\u0027) and os.getenv(\u0027VIRTUAL_ENV\u0027):"},{"line_number":37,"context_line":"        ovsvenvlog \u003d open(os.path.join(os.getenv(\u0027VIRTUAL_ENV\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba92feff_6811d84b","line":34,"range":{"start_line":34,"start_character":66,"end_line":34,"end_character":67},"updated":"2021-09-28 10:52:56.000000000","message":"nit: please, add a comma at the end just if we need to add more items","commit_id":"9dcfa3805019c0fb9c5d232e05f04cc55500e50e"}],"ovsdbapp/tests/functional/schema/ovn_ic_northbound/test_impl_idl.py":[{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        ts \u003d self._ts_add(name)"},{"line_number":49,"context_line":"        self.assertEqual(name, ts.name)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_ts_add_exists(self):"},{"line_number":52,"context_line":"        name \u003d utils.get_rand_device_name()"},{"line_number":53,"context_line":"        self._ts_add(name)"},{"line_number":54,"context_line":"        cmd \u003d self.api.ts_add(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b3d19601_50c843f1","line":51,"updated":"2021-09-17 22:31:41.000000000","message":"exists -\u003e existing","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        name \u003d utils.get_rand_device_name()"},{"line_number":76,"context_line":"        self._ts_add(name)"},{"line_number":77,"context_line":"        self.api.ts_del(name).execute(check_error\u003dTrue)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_ts_del_no_exist(self):"},{"line_number":80,"context_line":"        name \u003d utils.get_rand_device_name()"},{"line_number":81,"context_line":"        cmd \u003d self.api.ts_del(name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"d48ea7ca_fd56ea12","line":78,"updated":"2021-09-17 22:31:41.000000000","message":"Shouldn\u0027t we check here that the TS was deleted?","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        self._ts_add(name)"},{"line_number":77,"context_line":"        self.api.ts_del(name).execute(check_error\u003dTrue)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_ts_del_no_exist(self):"},{"line_number":80,"context_line":"        name \u003d utils.get_rand_device_name()"},{"line_number":81,"context_line":"        cmd \u003d self.api.ts_del(name)"},{"line_number":82,"context_line":"        self.assertRaises(RuntimeError, cmd.execute, check_error\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7947d6ee_059a7b51","line":79,"updated":"2021-09-17 22:31:41.000000000","message":"no_exist -\u003e not_existing","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"},{"author":{"_account_id":33896,"name":"Vladislav Odintsov","email":"odivlad@gmail.com","username":"odivlad"},"change_message_id":"a33f28e9657c04fca57a77090fb538cfdd51b035","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    def test_ts_del_if_exists(self):"},{"line_number":85,"context_line":"        name \u003d utils.get_rand_device_name()"},{"line_number":86,"context_line":"        self.api.ts_del(name, if_exists\u003dTrue).execute(check_error\u003dTrue)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def test_ts_list(self):"},{"line_number":89,"context_line":"        switches \u003d {self._ts_add(str(i)) for i in range(3)}"},{"line_number":90,"context_line":"        switch_set \u003d set(self.api.ts_list().execute(check_error\u003dTrue))"}],"source_content_type":"text/x-python","patch_set":1,"id":"a50d3690_908e5f04","line":87,"updated":"2021-09-17 22:31:41.000000000","message":"Shouldn\u0027t we check here that the TS was deleted?","commit_id":"6b8dfc5415d0d6f3a00b339756faa77c202b1b39"}],"ovsdbapp/venv.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1d6b5b7449b3c60f99fe88f0321c5815e4397d97","unresolved":true,"context_lines":[{"line_number":178,"context_line":"        return os.path.join(self.ovndir, self.NBSCHEMA)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    @property"},{"line_number":181,"context_line":"    def ovn_icsb_schema(self):"},{"line_number":182,"context_line":"        return os.path.join(self.ovndir, self.IC_SBSCHEMA)"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":5,"id":"3897304d_4f395b8e","line":181,"range":{"start_line":181,"start_character":8,"end_line":181,"end_character":23},"updated":"2021-09-21 13:36:23.000000000","message":"This is out of scope unless you implement the corresponding support for this schema.","commit_id":"8551f6504599707da1ba8a74c4d367969cc45176"}],"releasenotes/notes/ovn-support-ic-northbound.yaml":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9a0084fb2adf34851c63cd8f4236676d22da894c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7873257b_304dd9ca","line":4,"updated":"2021-09-28 10:52:56.000000000","message":"It should contain more info. Something like\n\n---\nfeatures:\n  - |\n    Added support for the \"OVN_IC_Northbound\" schema. The ``OvnIcNbApiIdlImpl`` class provides\n    interaction with \"ovn_ic_nb.db\" and adds support to add, delete and list registers rows of\n    \"Transit_Switch\" table.","commit_id":"9dcfa3805019c0fb9c5d232e05f04cc55500e50e"}]}
