)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bf19a2966efe38e808606494cb37a09d073a8750","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1d0034bc_c1c55ebb","updated":"2023-03-16 11:53:34.000000000","message":"ping folks","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"}],"ovsdbapp/schema/open_vswitch/api.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"345dd3a12df763552b5a0dafb45229ab0bfb1fcf","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        :param may_exist: Do not fail if the port already exists"},{"line_number":182,"context_line":"        :type may_exist:  bool"},{"line_number":183,"context_line":"        :param may_exist: Do not fail if the port already exists"},{"line_number":184,"context_line":"        :type may_exist:  bool"},{"line_number":185,"context_line":"        :param interface_attrs: Additional parameters to be set in the"},{"line_number":186,"context_line":"                          \"Interface\" register (not the \"Port\" register) that"},{"line_number":187,"context_line":"                          is created along with the \"Port\" one"}],"source_content_type":"text/x-python","patch_set":1,"id":"bb334d3a_cea16407","line":184,"updated":"2023-02-13 21:43:33.000000000","message":"The above lines are duplicates","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1531e6ce18daf1a701b7a8daaaca94d91b943b4b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        :param may_exist: Do not fail if the port already exists"},{"line_number":182,"context_line":"        :type may_exist:  bool"},{"line_number":183,"context_line":"        :param may_exist: Do not fail if the port already exists"},{"line_number":184,"context_line":"        :type may_exist:  bool"},{"line_number":185,"context_line":"        :param interface_attrs: Additional parameters to be set in the"},{"line_number":186,"context_line":"                          \"Interface\" register (not the \"Port\" register) that"},{"line_number":187,"context_line":"                          is created along with the \"Port\" one"}],"source_content_type":"text/x-python","patch_set":1,"id":"c5fe32e4_c665e5dc","line":184,"in_reply_to":"bb334d3a_cea16407","updated":"2023-02-17 08:55:01.000000000","message":"Done","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"}],"ovsdbapp/schema/open_vswitch/commands.py":[{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"ed5acc38482caf2aaea1c78db8449a398e817354","unresolved":true,"context_lines":[{"line_number":243,"context_line":"        txn.expected_ifaces.add(iface.uuid)"},{"line_number":244,"context_line":"        iface.name \u003d self.port"},{"line_number":245,"context_line":"        for k, v in self.interface_attrs.items():"},{"line_number":246,"context_line":"            setattr(iface, k, v)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        # This is a new port, so it won\u0027t have any existing interfaces"},{"line_number":249,"context_line":"        port.interfaces \u003d [iface]"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1af463e_b6e0fd8c","line":246,"updated":"2023-02-15 15:45:02.000000000","message":"It seems that this method should be used for this case:\nhttps://github.com/openstack/ovsdbapp/blob/5f429b72303abbad7bbd88dfc621166e3faabf90/ovsdbapp/backend/ovs_idl/command.py#L57","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1531e6ce18daf1a701b7a8daaaca94d91b943b4b","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        txn.expected_ifaces.add(iface.uuid)"},{"line_number":244,"context_line":"        iface.name \u003d self.port"},{"line_number":245,"context_line":"        for k, v in self.interface_attrs.items():"},{"line_number":246,"context_line":"            setattr(iface, k, v)"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        # This is a new port, so it won\u0027t have any existing interfaces"},{"line_number":249,"context_line":"        port.interfaces \u003d [iface]"}],"source_content_type":"text/x-python","patch_set":1,"id":"facaf1a0_44fed2d8","line":246,"in_reply_to":"c1af463e_b6e0fd8c","updated":"2023-02-17 08:55:01.000000000","message":"Done","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"}],"ovsdbapp/schema/open_vswitch/impl_idl.py":[{"author":{"_account_id":33871,"name":"Anton Vazhnetsov","display_name":"Anton Vazhnetsov","email":"dragen15051@gmail.com","username":"0x5b"},"change_message_id":"ed5acc38482caf2aaea1c78db8449a398e817354","unresolved":true,"context_lines":[{"line_number":137,"context_line":"    def set_fail_mode(self, bridge, mode):"},{"line_number":138,"context_line":"        return cmd.SetFailModeCommand(self, bridge, mode)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def add_port(self, bridge, port, may_exist\u003dTrue, **interface_attrs):"},{"line_number":141,"context_line":"        return cmd.AddPortCommand(self, bridge, port, may_exist,"},{"line_number":142,"context_line":"                                  **interface_attrs)"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dc21e661_9e9c3b08","line":140,"updated":"2023-02-15 15:45:02.000000000","message":"I think this argument should be called \"columns\" for naming consistency:\nhttps://github.com/openstack/ovsdbapp/blob/5f429b72303abbad7bbd88dfc621166e3faabf90/ovsdbapp/schema/ovn_northbound/impl_idl.py#L29","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1531e6ce18daf1a701b7a8daaaca94d91b943b4b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    def set_fail_mode(self, bridge, mode):"},{"line_number":138,"context_line":"        return cmd.SetFailModeCommand(self, bridge, mode)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def add_port(self, bridge, port, may_exist\u003dTrue, **interface_attrs):"},{"line_number":141,"context_line":"        return cmd.AddPortCommand(self, bridge, port, may_exist,"},{"line_number":142,"context_line":"                                  **interface_attrs)"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"e35aa702_74366d77","line":140,"in_reply_to":"dc21e661_9e9c3b08","updated":"2023-02-17 08:55:01.000000000","message":"In this case I would like to be explicit in the argument name. These attrs are not for the port but for the interface register that is created at the same time.","commit_id":"71208c2d5310525db1b6b2f57c59cea063730343"}],"ovsdbapp/tests/functional/schema/open_vswitch/test_impl_idl.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8d319f630ef9059a13e3b3c79246430d4b2c2805","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        plist_cmd \u003d self.api.list_ports(self.brname)"},{"line_number":103,"context_line":"        ports \u003d plist_cmd.execute(check_error\u003dTrue)"},{"line_number":104,"context_line":"        self.assertIn(pname, ports)"},{"line_number":105,"context_line":"        external_ids \u003d self.api.db_get("},{"line_number":106,"context_line":"            \u0027Interface\u0027, pname, \u0027external_ids\u0027).execute(check_error\u003dTrue)"},{"line_number":107,"context_line":"        self.assertEqual(interface_attrs[\u0027external_ids\u0027], external_ids)"},{"line_number":108,"context_line":"        _type \u003d self.api.db_get("},{"line_number":109,"context_line":"            \u0027Interface\u0027, pname, \u0027type\u0027).execute(check_error\u003dTrue)"},{"line_number":110,"context_line":"        self.assertEqual(interface_attrs[\u0027type\u0027], _type)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_add_port_may_exist_false(self):"},{"line_number":113,"context_line":"        pname \u003d self._test_add_port()"}],"source_content_type":"text/x-python","patch_set":2,"id":"70f58022_fddf284f","line":110,"range":{"start_line":105,"start_character":0,"end_line":110,"end_character":56},"updated":"2023-04-12 15:07:46.000000000","message":"nit, for informational purposes only. This can be done as a single txn if you want with something like:\n```\nwith self.api.transaction(check_error\u003dTrue) as txn:\n    ext_ids \u003d txn.add(self.api.db_get(\u0027Interface\u0027, pname, \u0027external_ids\u0027))\n    type_ \u003d txn.add(self.api.db_get(\u0027Interface\u0027, pname, \u0027type\u0027))\nself.assertEqual(interface_attrs[\u0027external_ids\u0027], ext_ids.result)\nself.assertEqual(interface_attrs[\u0027type\u0027], type_.result)\n```","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4ce5dc555dcb0356ca28fc1d5004f6222c894586","unresolved":true,"context_lines":[{"line_number":102,"context_line":"        plist_cmd \u003d self.api.list_ports(self.brname)"},{"line_number":103,"context_line":"        ports \u003d plist_cmd.execute(check_error\u003dTrue)"},{"line_number":104,"context_line":"        self.assertIn(pname, ports)"},{"line_number":105,"context_line":"        external_ids \u003d self.api.db_get("},{"line_number":106,"context_line":"            \u0027Interface\u0027, pname, \u0027external_ids\u0027).execute(check_error\u003dTrue)"},{"line_number":107,"context_line":"        self.assertEqual(interface_attrs[\u0027external_ids\u0027], external_ids)"},{"line_number":108,"context_line":"        _type \u003d self.api.db_get("},{"line_number":109,"context_line":"            \u0027Interface\u0027, pname, \u0027type\u0027).execute(check_error\u003dTrue)"},{"line_number":110,"context_line":"        self.assertEqual(interface_attrs[\u0027type\u0027], _type)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_add_port_may_exist_false(self):"},{"line_number":113,"context_line":"        pname \u003d self._test_add_port()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7d8398b6_5eb63678","line":110,"range":{"start_line":105,"start_character":0,"end_line":110,"end_character":56},"in_reply_to":"70f58022_fddf284f","updated":"2023-04-12 16:57:51.000000000","message":"right, if I need to respin, I\u0027ll do it","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e7a4b714505361c1cfb0a1858511e7e93f57d437","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        plist_cmd \u003d self.api.list_ports(self.brname)"},{"line_number":103,"context_line":"        ports \u003d plist_cmd.execute(check_error\u003dTrue)"},{"line_number":104,"context_line":"        self.assertIn(pname, ports)"},{"line_number":105,"context_line":"        external_ids \u003d self.api.db_get("},{"line_number":106,"context_line":"            \u0027Interface\u0027, pname, \u0027external_ids\u0027).execute(check_error\u003dTrue)"},{"line_number":107,"context_line":"        self.assertEqual(interface_attrs[\u0027external_ids\u0027], external_ids)"},{"line_number":108,"context_line":"        _type \u003d self.api.db_get("},{"line_number":109,"context_line":"            \u0027Interface\u0027, pname, \u0027type\u0027).execute(check_error\u003dTrue)"},{"line_number":110,"context_line":"        self.assertEqual(interface_attrs[\u0027type\u0027], _type)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_add_port_may_exist_false(self):"},{"line_number":113,"context_line":"        pname \u003d self._test_add_port()"}],"source_content_type":"text/x-python","patch_set":2,"id":"4ff0ce5a_bd1ea493","line":110,"range":{"start_line":105,"start_character":0,"end_line":110,"end_character":56},"in_reply_to":"7d8398b6_5eb63678","updated":"2023-04-14 12:19:45.000000000","message":"Done","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"473eeffee68f5d201ffb41d914ce358e8fbf3343","unresolved":true,"context_lines":[{"line_number":108,"context_line":"        _type \u003d self.api.db_get("},{"line_number":109,"context_line":"            \u0027Interface\u0027, pname, \u0027type\u0027).execute(check_error\u003dTrue)"},{"line_number":110,"context_line":"        self.assertEqual(interface_attrs[\u0027type\u0027], _type)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_add_port_may_exist_false(self):"},{"line_number":113,"context_line":"        pname \u003d self._test_add_port()"},{"line_number":114,"context_line":"        cmd \u003d self.api.add_port(self.brname, pname, may_exist\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3be059ea_af871e26","line":111,"updated":"2023-04-12 17:35:07.000000000","message":"Given that interface_attrs is arbitrary and we don\u0027t guard what\u0027s passed, can you please add a negative test in case a non-existing column is passed?","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e7a4b714505361c1cfb0a1858511e7e93f57d437","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        _type \u003d self.api.db_get("},{"line_number":109,"context_line":"            \u0027Interface\u0027, pname, \u0027type\u0027).execute(check_error\u003dTrue)"},{"line_number":110,"context_line":"        self.assertEqual(interface_attrs[\u0027type\u0027], _type)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def test_add_port_may_exist_false(self):"},{"line_number":113,"context_line":"        pname \u003d self._test_add_port()"},{"line_number":114,"context_line":"        cmd \u003d self.api.add_port(self.brname, pname, may_exist\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":2,"id":"18dbb1c3_cfedadc4","line":111,"in_reply_to":"3be059ea_af871e26","updated":"2023-04-14 12:19:45.000000000","message":"Done","commit_id":"2f1591696019665a0ee6e6bb7afff18edc97e603"}]}
