)]}'
{"neutron/plugins/ml2/drivers/ovn/agent/neutron_agent.py":[{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"a2751e75305111598b22591cfc6e528458c54d19","unresolved":true,"context_lines":[{"line_number":200,"context_line":"    def update(self, agent_type, row, updated_at\u003dNone, clear_down\u003dFalse):"},{"line_number":201,"context_line":"        cls \u003d NeutronAgent.types[agent_type]"},{"line_number":202,"context_line":"        is_gw_option_present \u003d (\u0027enable-chassis-as-gw\u0027 in"},{"line_number":203,"context_line":"                row.external_ids.get(\u0027ovn-cms-options\u0027, []))"},{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            # pylint: disable\u003dunidiomatic-typecheck"},{"line_number":206,"context_line":"            agent \u003d self.agents[cls.id_from_chassis_private(row)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"18e84351_43557dc2","line":203,"range":{"start_line":203,"start_character":16,"end_line":203,"end_character":32},"updated":"2021-07-12 02:04:13.000000000","message":"We should deal with the new version of ovn supporting Chassis_Private.","commit_id":"8107f7e746eef1dab453c1344372edf8f9b09218"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"f7654e7b287aacb1e7c98f43f2ddba44b933cf3b","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    def update(self, agent_type, row, updated_at\u003dNone, clear_down\u003dFalse):"},{"line_number":201,"context_line":"        cls \u003d NeutronAgent.types[agent_type]"},{"line_number":202,"context_line":"        is_gw_option_present \u003d (\u0027enable-chassis-as-gw\u0027 in"},{"line_number":203,"context_line":"                row.external_ids.get(\u0027ovn-cms-options\u0027, []))"},{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            # pylint: disable\u003dunidiomatic-typecheck"},{"line_number":206,"context_line":"            agent \u003d self.agents[cls.id_from_chassis_private(row)]"}],"source_content_type":"text/x-python","patch_set":1,"id":"206ebc00_b01a18db","line":203,"range":{"start_line":203,"start_character":16,"end_line":203,"end_character":32},"in_reply_to":"18e84351_43557dc2","updated":"2021-07-12 15:59:31.000000000","message":"True! Fixed this too.","commit_id":"8107f7e746eef1dab453c1344372edf8f9b09218"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"a2751e75305111598b22591cfc6e528458c54d19","unresolved":true,"context_lines":[{"line_number":202,"context_line":"        is_gw_option_present \u003d (\u0027enable-chassis-as-gw\u0027 in"},{"line_number":203,"context_line":"                row.external_ids.get(\u0027ovn-cms-options\u0027, []))"},{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            # pylint: disable\u003dunidiomatic-typecheck"},{"line_number":206,"context_line":"            agent \u003d self.agents[cls.id_from_chassis_private(row)]"},{"line_number":207,"context_line":"            # Create a new agent with the right class if the agent_type changed"},{"line_number":208,"context_line":"            if (is_gw_option_present and type(agent) is ControllerAgent) or ("},{"line_number":209,"context_line":"                    type(agent) is ControllerGatewayAgent and not"},{"line_number":210,"context_line":"                    is_gw_option_present):"},{"line_number":211,"context_line":"                agent \u003d NeutronAgent.from_type(agent_type, row, self.driver,"},{"line_number":212,"context_line":"                                           updated_at\u003dupdated_at)"},{"line_number":213,"context_line":"                self.agents[agent.agent_id] \u003d agent"},{"line_number":214,"context_line":"            else:"},{"line_number":215,"context_line":"                agent.update(row, updated_at\u003dupdated_at, clear_down\u003dclear_down)"},{"line_number":216,"context_line":"        except KeyError:"},{"line_number":217,"context_line":"            agent \u003d NeutronAgent.from_type(agent_type, row, self.driver,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8c59755c_89c70991","line":214,"range":{"start_line":205,"start_character":12,"end_line":214,"end_character":17},"updated":"2021-07-12 02:04:13.000000000","message":"is it possible to update the class of the instance directly? self.__class__ \u003d ControllerGatewayAgent","commit_id":"8107f7e746eef1dab453c1344372edf8f9b09218"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"f7654e7b287aacb1e7c98f43f2ddba44b933cf3b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        is_gw_option_present \u003d (\u0027enable-chassis-as-gw\u0027 in"},{"line_number":203,"context_line":"                row.external_ids.get(\u0027ovn-cms-options\u0027, []))"},{"line_number":204,"context_line":"        try:"},{"line_number":205,"context_line":"            # pylint: disable\u003dunidiomatic-typecheck"},{"line_number":206,"context_line":"            agent \u003d self.agents[cls.id_from_chassis_private(row)]"},{"line_number":207,"context_line":"            # Create a new agent with the right class if the agent_type changed"},{"line_number":208,"context_line":"            if (is_gw_option_present and type(agent) is ControllerAgent) or ("},{"line_number":209,"context_line":"                    type(agent) is ControllerGatewayAgent and not"},{"line_number":210,"context_line":"                    is_gw_option_present):"},{"line_number":211,"context_line":"                agent \u003d NeutronAgent.from_type(agent_type, row, self.driver,"},{"line_number":212,"context_line":"                                           updated_at\u003dupdated_at)"},{"line_number":213,"context_line":"                self.agents[agent.agent_id] \u003d agent"},{"line_number":214,"context_line":"            else:"},{"line_number":215,"context_line":"                agent.update(row, updated_at\u003dupdated_at, clear_down\u003dclear_down)"},{"line_number":216,"context_line":"        except KeyError:"},{"line_number":217,"context_line":"            agent \u003d NeutronAgent.from_type(agent_type, row, self.driver,"}],"source_content_type":"text/x-python","patch_set":1,"id":"b145c3fc_3d7d92bd","line":214,"range":{"start_line":205,"start_character":12,"end_line":214,"end_character":17},"in_reply_to":"8c59755c_89c70991","updated":"2021-07-12 15:59:31.000000000","message":"You are right about this, I have fixed it on the new version of the patch. Thanks a lot!","commit_id":"8107f7e746eef1dab453c1344372edf8f9b09218"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"43606d7f4031e00a788dbc411368e4f93b4768c3","unresolved":true,"context_lines":[{"line_number":143,"context_line":"    def update(self, chassis_private, updated_at\u003dNone, clear_down\u003dFalse):"},{"line_number":144,"context_line":"        super().update(chassis_private, updated_at, clear_down)"},{"line_number":145,"context_line":"        external_ids \u003d self.chassis_from_private(chassis_private).external_ids"},{"line_number":146,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in external_ids.get(\u0027ovn-cms-options\u0027, []):"},{"line_number":147,"context_line":"            self.__class__ \u003d ControllerGatewayAgent"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class ControllerGatewayAgent(ControllerAgent):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ad2f84f3_369b9035","line":147,"range":{"start_line":146,"start_character":8,"end_line":147,"end_character":1},"updated":"2021-07-29 09:21:01.000000000","message":"And doing this in the ABC \"NeutronAgent\" class? To have all the possible class mutations defined in a single place.","commit_id":"fcdaeeaf1501e4e709a11d983ee3ced182fc2eca"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8012f4472f253e73c2fc4769fd2f3769324f526c","unresolved":true,"context_lines":[{"line_number":144,"context_line":"        super().update(chassis_private, updated_at, clear_down)"},{"line_number":145,"context_line":"        external_ids \u003d self.chassis_from_private(chassis_private).external_ids"},{"line_number":146,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in external_ids.get(\u0027ovn-cms-options\u0027, []):"},{"line_number":147,"context_line":"            self.__class__ \u003d ControllerGatewayAgent"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"class ControllerGatewayAgent(ControllerAgent):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a2a0aa4_14d43a55","line":147,"range":{"start_line":147,"start_character":12,"end_line":147,"end_character":51},"updated":"2021-09-02 17:32:53.000000000","message":"That works because the metaclass is the same and we don\u0027t need to call __init__ or __new__. Anyway, I find this dangerous.","commit_id":"9cffd7b3223c2e8c88129c79aa62c255350c55d4"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"da13b6329483836706bf7542f2a3d34b9080ec51","unresolved":true,"context_lines":[{"line_number":271,"context_line":"        chassis_deleted \u003d (getattr(old, \u0027nb_cfg\u0027, False) and not ("},{"line_number":272,"context_line":"            self.table \u003d\u003d \u0027Chassis_Private\u0027 and not row.chassis))"},{"line_number":273,"context_line":"        if old:"},{"line_number":274,"context_line":"            agent_type_change \u003d row.external_ids.get(\u0027ovn-cms-options\u0027,"},{"line_number":275,"context_line":"                    []) !\u003d old.external_ids.get(\u0027ovn-cms-options\u0027, [])"},{"line_number":276,"context_line":"        else:"},{"line_number":277,"context_line":"            agent_type_change \u003d False"}],"source_content_type":"text/x-python","patch_set":3,"id":"61fbc27b_faf95b49","line":274,"range":{"start_line":274,"start_character":32,"end_line":274,"end_character":49},"updated":"2021-07-12 16:07:09.000000000","message":"Do external_ids from row and old variables here also need to be treated according to the new support of Chassis_Private?","commit_id":"6527ece7bcf303212a646ecf3624999aba387ef6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"43606d7f4031e00a788dbc411368e4f93b4768c3","unresolved":true,"context_lines":[{"line_number":272,"context_line":"            self.table \u003d\u003d \u0027Chassis_Private\u0027 and not row.chassis))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        if self.table \u003d\u003d \u0027Chassis_Private\u0027:"},{"line_number":275,"context_line":"            chassis_row \u003d n_agent.NeutronAgent.chassis_from_private(row)"},{"line_number":276,"context_line":"        else:"},{"line_number":277,"context_line":"            chassis_row \u003d row"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"4aa413e6_14d52923","line":275,"updated":"2021-07-29 09:21:01.000000000","message":"This check (kind of) is done in \"chassis_from_private\". You just need to call the method.","commit_id":"fcdaeeaf1501e4e709a11d983ee3ced182fc2eca"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"82fa35d18273d9ac1b7b1555db8f80b315e4e4cc","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            self.table \u003d\u003d \u0027Chassis_Private\u0027 and not row.chassis))"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        if self.table \u003d\u003d \u0027Chassis_Private\u0027:"},{"line_number":275,"context_line":"            chassis_row \u003d n_agent.NeutronAgent.chassis_from_private(row)"},{"line_number":276,"context_line":"        else:"},{"line_number":277,"context_line":"            chassis_row \u003d row"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ab5cffe_258b770f","line":275,"in_reply_to":"4aa413e6_14d52923","updated":"2021-07-30 15:43:22.000000000","message":"Done","commit_id":"fcdaeeaf1501e4e709a11d983ee3ced182fc2eca"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"43606d7f4031e00a788dbc411368e4f93b4768c3","unresolved":true,"context_lines":[{"line_number":277,"context_line":"            chassis_row \u003d row"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        if old:"},{"line_number":280,"context_line":"            if not getattr(old, \u0027external_ids\u0027, False):"},{"line_number":281,"context_line":"                return False"},{"line_number":282,"context_line":"            else:"},{"line_number":283,"context_line":"                agent_type_change \u003d chassis_row.external_ids.get("}],"source_content_type":"text/x-python","patch_set":5,"id":"31feadbf_3805bd73","line":280,"range":{"start_line":280,"start_character":12,"end_line":280,"end_character":55},"updated":"2021-07-29 09:21:01.000000000","message":"When this could happen? \"old\" is a chassis register, right?","commit_id":"fcdaeeaf1501e4e709a11d983ee3ced182fc2eca"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"82fa35d18273d9ac1b7b1555db8f80b315e4e4cc","unresolved":true,"context_lines":[{"line_number":277,"context_line":"            chassis_row \u003d row"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        if old:"},{"line_number":280,"context_line":"            if not getattr(old, \u0027external_ids\u0027, False):"},{"line_number":281,"context_line":"                return False"},{"line_number":282,"context_line":"            else:"},{"line_number":283,"context_line":"                agent_type_change \u003d chassis_row.external_ids.get("}],"source_content_type":"text/x-python","patch_set":5,"id":"8da2cec0_5c0b4cac","line":280,"range":{"start_line":280,"start_character":12,"end_line":280,"end_character":55},"in_reply_to":"31feadbf_3805bd73","updated":"2021-07-30 15:43:22.000000000","message":"I\u0027m not sure of the reason behind this but in this version and also the newest version of the patch there are old instances that don\u0027t have the external_ids attribute.\n\nThe error is:\nAttributeError: Row instance has no attribute \u0027external_ids\u0027","commit_id":"fcdaeeaf1501e4e709a11d983ee3ced182fc2eca"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"2baebafda753ea7962d9314c7ec657da075f29f7","unresolved":true,"context_lines":[{"line_number":277,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"},{"line_number":281,"context_line":"    \"\"\"Chassis Agent class change event\"\"\""},{"line_number":282,"context_line":"    events \u003d (BaseEvent.ROW_UPDATE,)"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bb156e3b_3c2b6551","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":48},"updated":"2021-07-31 02:26:29.000000000","message":"should all processes be handled, add class property Global \u003d True?","commit_id":"337a52a5de87930b382baded9087fac7b9dcd79c"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"da68466bc6e5c6a44cc05a5fe711724cd80617f6","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"},{"line_number":281,"context_line":"    \"\"\"Chassis Agent class change event\"\"\""},{"line_number":282,"context_line":"    events \u003d (BaseEvent.ROW_UPDATE,)"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba322f56_0f0e077a","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":48},"in_reply_to":"bb156e3b_3c2b6551","updated":"2021-08-02 09:09:12.000000000","message":"You are right, thanks!","commit_id":"337a52a5de87930b382baded9087fac7b9dcd79c"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"2baebafda753ea7962d9314c7ec657da075f29f7","unresolved":true,"context_lines":[{"line_number":683,"context_line":"            ChassisAgentDeleteEvent(self.driver),"},{"line_number":684,"context_line":"            ChassisAgentDownEvent(self.driver),"},{"line_number":685,"context_line":"            ChassisAgentWriteEvent(self.driver),"},{"line_number":686,"context_line":"            ChassisAgentTypeChangeEvent(self.driver),"},{"line_number":687,"context_line":"            ChassisMetadataAgentWriteEvent(self.driver)])"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"55d0730c_7d369def","line":686,"range":{"start_line":686,"start_character":12,"end_line":686,"end_character":53},"updated":"2021-07-31 02:26:29.000000000","message":"Will it conflict with the handling of ChassisAgentWriteEvent when using a lower version?","commit_id":"337a52a5de87930b382baded9087fac7b9dcd79c"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"da68466bc6e5c6a44cc05a5fe711724cd80617f6","unresolved":true,"context_lines":[{"line_number":683,"context_line":"            ChassisAgentDeleteEvent(self.driver),"},{"line_number":684,"context_line":"            ChassisAgentDownEvent(self.driver),"},{"line_number":685,"context_line":"            ChassisAgentWriteEvent(self.driver),"},{"line_number":686,"context_line":"            ChassisAgentTypeChangeEvent(self.driver),"},{"line_number":687,"context_line":"            ChassisMetadataAgentWriteEvent(self.driver)])"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"56a1dc59_d2fb9c00","line":686,"range":{"start_line":686,"start_character":12,"end_line":686,"end_character":53},"in_reply_to":"55d0730c_7d369def","updated":"2021-08-02 09:09:12.000000000","message":"It has not conflicted when testing the code using OVN 20.03. After all, with the current code ChassisAgentWriteEvent doesn\u0027t get triggered in older versions when the Agent Type changes. Anyway I\u0027m happy to change this to something better if you provide more information!","commit_id":"337a52a5de87930b382baded9087fac7b9dcd79c"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"4896a48055b937df34248cb4388616b31109f333","unresolved":true,"context_lines":[{"line_number":273,"context_line":"            (self.table \u003d\u003d \u0027Chassis_Private\u0027 and not row.chassis))"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def run(self, event, row, old):"},{"line_number":276,"context_line":"        n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,"},{"line_number":277,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"}],"source_content_type":"text/x-python","patch_set":7,"id":"13088755_a4ca750d","line":277,"range":{"start_line":276,"start_character":8,"end_line":277,"end_character":72},"updated":"2021-08-27 00:26:29.000000000","message":"If table Chassis_Privite exists, Line 276: row is Chassis_Private, Line 294: row is Chassis, What kind of objects are handled by AgentCache?","commit_id":"c8fc4c7271b747a266f754a968e750e38bb239f0"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"5b2edf479464c42ed0542915adb2362697315b14","unresolved":true,"context_lines":[{"line_number":273,"context_line":"            (self.table \u003d\u003d \u0027Chassis_Private\u0027 and not row.chassis))"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def run(self, event, row, old):"},{"line_number":276,"context_line":"        n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,"},{"line_number":277,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fbaf4f32_ab54fb4d","line":277,"range":{"start_line":276,"start_character":8,"end_line":277,"end_character":72},"in_reply_to":"13088755_a4ca750d","updated":"2021-08-27 10:55:24.000000000","message":"The update method of AgentCache takes row and uses it to make a NeutronAgent update, which now takes chassis_private (although it also supports chassis as backwards compatibility). The problem to use Chassis_Private is that the change of the external_ids is made on the Chassis table and not the Chassis_Private one, so this method on 277 never gets called when the Neutron Agent type changes.\n\nThis is because the parameter \u0027ovn-cms-options\u0027 is stored in Chassis external_ids, not in the Chassis_Private external_ids, so that\u0027s why the event won\u0027t ever get triggered if I use the Chassis_Private table.","commit_id":"c8fc4c7271b747a266f754a968e750e38bb239f0"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"1f36f693ecbc85d2c18e36c690afc83fad8a799d","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        return agent_type_change"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def run(self, event, row, old):"},{"line_number":294,"context_line":"        n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,"},{"line_number":295,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"class ChassisMetadataAgentWriteEvent(ChassisAgentEvent):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fb367323_4fc8de68","line":295,"range":{"start_line":294,"start_character":8,"end_line":295,"end_character":72},"updated":"2021-08-16 00:25:04.000000000","message":"If table Chassis_Privite exists, AgentCache stores Chassis_Private object, row is the Chassis object, right?","commit_id":"c8fc4c7271b747a266f754a968e750e38bb239f0"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"9f03c265ed8d74c4a5825ae4fc1ae1ae3668b21d","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        return agent_type_change"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def run(self, event, row, old):"},{"line_number":294,"context_line":"        n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,"},{"line_number":295,"context_line":"                                    clear_down\u003devent \u003d\u003d self.ROW_CREATE)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"class ChassisMetadataAgentWriteEvent(ChassisAgentEvent):"}],"source_content_type":"text/x-python","patch_set":7,"id":"4ddbdfca_0f788c3e","line":295,"range":{"start_line":294,"start_character":8,"end_line":295,"end_character":72},"in_reply_to":"fb367323_4fc8de68","updated":"2021-08-24 10:26:35.000000000","message":"I\u0027m not sure if I understand the question. Yes, row class is Chassis in this case. (ovs.db.custom_index.Chassis)","commit_id":"c8fc4c7271b747a266f754a968e750e38bb239f0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8012f4472f253e73c2fc4769fd2f3769324f526c","unresolved":true,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"},{"line_number":281,"context_line":"    \"\"\"Chassis Agent class change event\"\"\""},{"line_number":282,"context_line":"    GLOBAL \u003d True"},{"line_number":283,"context_line":"    events \u003d (BaseEvent.ROW_UPDATE,)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def match_fn(self, event, row, old\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7661163a_c67340a1","line":282,"range":{"start_line":282,"start_character":4,"end_line":282,"end_character":17},"updated":"2021-09-02 17:32:53.000000000","message":"What is this variable? I don\u0027t find any reference.","commit_id":"9cffd7b3223c2e8c88129c79aa62c255350c55d4"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"416dc00d3d556e46e700bb6270332f05ce1e45a7","unresolved":true,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"},{"line_number":281,"context_line":"    \"\"\"Chassis Agent class change event\"\"\""},{"line_number":282,"context_line":"    GLOBAL \u003d True"},{"line_number":283,"context_line":"    events \u003d (BaseEvent.ROW_UPDATE,)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def match_fn(self, event, row, old\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"e00f7519_085104c3","line":282,"range":{"start_line":282,"start_character":4,"end_line":282,"end_character":17},"in_reply_to":"7661163a_c67340a1","updated":"2021-09-07 15:38:58.000000000","message":"I added it after reading the note in line L218. It is used to make this event get processed by every node instead of picking one of the HashRing nodes. I think this is needed because the agent cache is local to every node. It is used in the function matching_events in OvnDbNotifyHandler (Lines 491-495)","commit_id":"9cffd7b3223c2e8c88129c79aa62c255350c55d4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bc144e510544331cd893d84d5e29489f3c30225d","unresolved":true,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"class ChassisAgentTypeChangeEvent(ChassisEvent):"},{"line_number":281,"context_line":"    \"\"\"Chassis Agent class change event\"\"\""},{"line_number":282,"context_line":"    GLOBAL \u003d True"},{"line_number":283,"context_line":"    events \u003d (BaseEvent.ROW_UPDATE,)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def match_fn(self, event, row, old\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"2b7d8d0c_f398348d","line":282,"range":{"start_line":282,"start_character":4,"end_line":282,"end_character":17},"in_reply_to":"e00f7519_085104c3","updated":"2021-09-07 17:00:38.000000000","message":"Ahhh I didn\u0027t know that. Good to learn this.\n\nAnd yes, the cache singleton is local to every process so we need to process the event it in all of them.","commit_id":"9cffd7b3223c2e8c88129c79aa62c255350c55d4"}]}
