)]}'
{"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d7f2a9209725b6a6f1c102185badfd2f1805230d","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"            new_method \u003d types.MethodType(new_fn, self._plugin)"},{"line_number":1146,"context_line":"            try:"},{"line_number":1147,"context_line":"                return new_method(*args, _driver\u003dself, **kwargs)"},{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_04d37c61","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":44},"updated":"2020-09-10 05:18:47.000000000","message":"a bit weird to see agent specific exception in a quite generic function","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9a7e19176e666545df670df8e5e6d73df4233d60","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"            new_method \u003d types.MethodType(new_fn, self._plugin)"},{"line_number":1146,"context_line":"            try:"},{"line_number":1147,"context_line":"                return new_method(*args, _driver\u003dself, **kwargs)"},{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7b465223","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":44},"in_reply_to":"9f560f44_04d37c61","updated":"2020-09-10 07:53:24.000000000","message":"good catch, maybe just neutron_lib.exceptions.NotFound would do it?","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b8dc2a42e33b97f38c555685f84a15385f759c0b","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"            new_method \u003d types.MethodType(new_fn, self._plugin)"},{"line_number":1146,"context_line":"            try:"},{"line_number":1147,"context_line":"                return new_method(*args, _driver\u003dself, **kwargs)"},{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_bd78dac0","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":44},"in_reply_to":"9f560f44_7b465223","updated":"2020-09-10 13:21:43.000000000","message":"Fair. Originally these patch_plugin methods were just for agent code, but like all useful things, they are now used for things the author didn\u0027t think about. :)","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"0f2e4b81ad6d0879f3e7c73b85b4b24723b27e06","unresolved":false,"context_lines":[{"line_number":1145,"context_line":"            new_method \u003d types.MethodType(new_fn, self._plugin)"},{"line_number":1146,"context_line":"            try:"},{"line_number":1147,"context_line":"                return new_method(*args, _driver\u003dself, **kwargs)"},{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_c1620c3e","line":1148,"range":{"start_line":1148,"start_character":19,"end_line":1148,"end_character":44},"in_reply_to":"9f560f44_bd78dac0","updated":"2020-09-10 13:35:06.000000000","message":"Since AgentNotFound inherits from NotFound, I\u0027ll just catch NotFound here and keep raising AgentNotFound in the agent method.","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d7f2a9209725b6a6f1c102185badfd2f1805230d","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"    def ping_all_chassis(self):"},{"line_number":1154,"context_line":"        \"\"\"Update NB_Global.nb_cfg so that Chassis.nb_cfg will increment"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_84c66c99","line":1151,"range":{"start_line":1151,"start_character":8,"end_line":1151,"end_character":78},"updated":"2020-09-10 05:18:47.000000000","message":"such hacks may cause bugs indeed..","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"b8dc2a42e33b97f38c555685f84a15385f759c0b","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            except n_exc.agent.AgentNotFound:"},{"line_number":1149,"context_line":"                return old_method(*args, **kwargs)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"        setattr(self._plugin, method_name, types.MethodType(fn, self._plugin))"},{"line_number":1152,"context_line":""},{"line_number":1153,"context_line":"    def ping_all_chassis(self):"},{"line_number":1154,"context_line":"        \"\"\"Update NB_Global.nb_cfg so that Chassis.nb_cfg will increment"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e12110a0","line":1151,"range":{"start_line":1151,"start_character":8,"end_line":1151,"end_character":78},"in_reply_to":"9f560f44_84c66c99","updated":"2020-09-10 13:21:43.000000000","message":"Yeah, I\u0027d never argue that this isn\u0027t a giant hack. We just don\u0027t use any of the RPC stuff which the agent extension seemed pretty heavily tied to and this is what we came up with. I\u0027d much prefer that there was an official way to do the same thing w/o the use of RPC (or the Neutron DB, really).","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9a7e19176e666545df670df8e5e6d73df4233d60","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                 \u0027host\u0027: self.host, \u0027topic\u0027: \u0027test_topic\u0027}"},{"line_number":756,"context_line":"        self.plugin.create_or_update_agent(self.context, agent)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def get_agent(self, _type):"},{"line_number":759,"context_line":"        return next(a for a in self.plugin.get_agents(self.context)"},{"line_number":760,"context_line":"                    if a[\u0027agent_type\u0027] \u003d\u003d _type)"},{"line_number":761,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_1b6116aa","line":758,"range":{"start_line":758,"start_character":24,"end_line":758,"end_character":29},"updated":"2020-09-10 07:53:24.000000000","message":"supernit: It\u0027s usually type_ as leading underscore means sort of private :)","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"0bd7fccd2381322c9e205b9cc2d81284f6b6927c","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                 \u0027host\u0027: self.host, \u0027topic\u0027: \u0027test_topic\u0027}"},{"line_number":756,"context_line":"        self.plugin.create_or_update_agent(self.context, agent)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def get_agent(self, _type):"},{"line_number":759,"context_line":"        return next(a for a in self.plugin.get_agents(self.context)"},{"line_number":760,"context_line":"                    if a[\u0027agent_type\u0027] \u003d\u003d _type)"},{"line_number":761,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_e1b75084","line":758,"range":{"start_line":758,"start_character":24,"end_line":758,"end_character":29},"in_reply_to":"9f560f44_1b6116aa","updated":"2020-09-10 13:43:02.000000000","message":"indeed. I\u0027ll just use agent_type since I have lots of room. :)","commit_id":"4293150030f716d1d86ae2c83bf364972883a380"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"601a4cda91b68fbe8148abc136221b4b83f7b65b","unresolved":false,"context_lines":[{"line_number":756,"context_line":"        self.plugin.create_or_update_agent(self.context, agent)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def get_agent(self, agent_type):"},{"line_number":759,"context_line":"        return next(a for a in self.plugin.get_agents(self.context)"},{"line_number":760,"context_line":"                    if a[\u0027agent_type\u0027] \u003d\u003d agent_type)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_agent_show(self):"},{"line_number":763,"context_line":"        for agent_type in (\u0027test\u0027, ovn_const.OVN_CONTROLLER_AGENT):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_2bb75523","line":760,"range":{"start_line":759,"start_character":20,"end_line":760,"end_character":52},"updated":"2020-09-11 04:24:07.000000000","message":"nit: can use filters in get_agents()","commit_id":"64101580b412a925afaab71ce3b9aa091380b40e"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"eb89966ef5d05fb719cc2e10d459ac1588e9e555","unresolved":false,"context_lines":[{"line_number":756,"context_line":"        self.plugin.create_or_update_agent(self.context, agent)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    def get_agent(self, agent_type):"},{"line_number":759,"context_line":"        return next(a for a in self.plugin.get_agents(self.context)"},{"line_number":760,"context_line":"                    if a[\u0027agent_type\u0027] \u003d\u003d agent_type)"},{"line_number":761,"context_line":""},{"line_number":762,"context_line":"    def test_agent_show(self):"},{"line_number":763,"context_line":"        for agent_type in (\u0027test\u0027, ovn_const.OVN_CONTROLLER_AGENT):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_2e10aca8","line":760,"range":{"start_line":759,"start_character":20,"end_line":760,"end_character":52},"in_reply_to":"9f560f44_2bb75523","updated":"2020-09-16 15:49:21.000000000","message":"done","commit_id":"64101580b412a925afaab71ce3b9aa091380b40e"}]}
