)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fc798921604741fcaba2456d9051f9479c812003","unresolved":true,"context_lines":[{"line_number":36,"context_line":"deleted and recreated."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":39,"context_line":"Related-Bug: #2148211"},{"line_number":40,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":41,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"8cf53b6c_531498cb","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":21},"updated":"2026-04-14 07:06:40.000000000","message":"I\u0027m ok with this bug but this should be tracked in another LP bug, the entity is different from the referred one.","commit_id":"e174fb8a9aae5cce211fcfdbb7f03edef7b5c4f6"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"72a905336731749d20394faea1a52eb13ff326ab","unresolved":false,"context_lines":[{"line_number":36,"context_line":"deleted and recreated."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":39,"context_line":"Related-Bug: #2148211"},{"line_number":40,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":41,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5e362951_1f5ca624","line":39,"range":{"start_line":39,"start_character":0,"end_line":39,"end_character":21},"in_reply_to":"8cf53b6c_531498cb","updated":"2026-04-14 13:57:12.000000000","message":"Done","commit_id":"e174fb8a9aae5cce211fcfdbb7f03edef7b5c4f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     ricolin \u003crlin@vexxhost.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-04-21 11:25:44 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN] Mark agents down when Chassis is deleted but Chassis_Private remains"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a Chassis record is deleted in OVN, the Chassis_Private record"},{"line_number":10,"context_line":"is updated with an empty chassis reference rather than being deleted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"c3e2ee95_d4968633","line":7,"updated":"2026-04-21 07:21:05.000000000","message":"The commit message looks very nice. If you used any AI, please use the tag `Assisted-By:` at the end. E.g.:\n```\nAssisted-By: claude-4.6-opus-high\nAssisted-By: Claude composer-1.5\nAssisted-By: Claude (claude-4.5-sonnet)\netc...\n```","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     ricolin \u003crlin@vexxhost.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-04-21 11:25:44 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN] Mark agents down when Chassis is deleted but Chassis_Private remains"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When a Chassis record is deleted in OVN, the Chassis_Private record"},{"line_number":10,"context_line":"is updated with an empty chassis reference rather than being deleted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8a2fc4b6_dc698ec0","line":7,"in_reply_to":"c3e2ee95_d4968633","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":41,"context_line":"Neutron API remains functional even when OVN DB records are in an"},{"line_number":42,"context_line":"inconsistent state."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":45,"context_line":"Related-Bug: #2148211"},{"line_number":46,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":47,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"482658ea_b0d6547a","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":2},"updated":"2026-04-21 07:21:05.000000000","message":"There is no need to make dependencies in the same repository. That is enforced using the git chain. This patch is on top of the referred one so there is no need to add this.","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Neutron API remains functional even when OVN DB records are in an"},{"line_number":42,"context_line":"inconsistent state."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":45,"context_line":"Related-Bug: #2148211"},{"line_number":46,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":47,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"75534319_aeeb538c","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":2},"in_reply_to":"482658ea_b0d6547a","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":42,"context_line":"inconsistent state."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":45,"context_line":"Related-Bug: #2148211"},{"line_number":46,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":47,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"90307e90_cabe079c","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":21},"updated":"2026-04-21 07:21:05.000000000","message":"Closes-Bug: #2148316\nRelated-Bug: #2148211","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"inconsistent state."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Depends-On: https://review.opendev.org/c/openstack/neutron/+/984406"},{"line_number":45,"context_line":"Related-Bug: #2148211"},{"line_number":46,"context_line":"Change-Id: I737b9ee711b1440fc74df81a84108429408ae3b5"},{"line_number":47,"context_line":"Signed-off-by: ricolin \u003crlin@vexxhost.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"e9f10e6e_9415eacf","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":21},"in_reply_to":"90307e90_cabe079c","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fc798921604741fcaba2456d9051f9479c812003","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a1a9714d_1f9e6af4","updated":"2026-04-14 07:06:40.000000000","message":"Please, create a new LP bug.","commit_id":"e174fb8a9aae5cce211fcfdbb7f03edef7b5c4f6"}],"neutron/plugins/ml2/drivers/ovn/agent/neutron_agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":85,"context_line":"            \u0027configurations\u0027: {"},{"line_number":86,"context_line":"                \u0027chassis_name\u0027: self.chassis.name,"},{"line_number":87,"context_line":"                \u0027bridge-mappings\u0027:"},{"line_number":88,"context_line":"                    self.chassis.other_config.get(\u0027ovn-bridge-mappings\u0027, \u0027\u0027)},"},{"line_number":89,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":90,"context_line":"            \u0027agent_type\u0027: self.agent_type,"},{"line_number":91,"context_line":"            \u0027id\u0027: self.agent_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7315437e_507d513a","side":"PARENT","line":88,"range":{"start_line":88,"start_character":20,"end_line":88,"end_character":78},"updated":"2026-04-21 07:21:05.000000000","message":"This retrieval is used in other places in the code. Please define a method similar to `get_ovn_cms_options`, something like `get_ovn_bridge_mappings`, and use it here and in the other places of the code.","commit_id":"720802c8038d4ba0fe85824f437ed630eb184404"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027configurations\u0027: {"},{"line_number":86,"context_line":"                \u0027chassis_name\u0027: self.chassis.name,"},{"line_number":87,"context_line":"                \u0027bridge-mappings\u0027:"},{"line_number":88,"context_line":"                    self.chassis.other_config.get(\u0027ovn-bridge-mappings\u0027, \u0027\u0027)},"},{"line_number":89,"context_line":"            \u0027start_flag\u0027: True,"},{"line_number":90,"context_line":"            \u0027agent_type\u0027: self.agent_type,"},{"line_number":91,"context_line":"            \u0027id\u0027: self.agent_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"477d8b3b_913938e9","side":"PARENT","line":88,"range":{"start_line":88,"start_character":20,"end_line":88,"end_character":78},"in_reply_to":"7315437e_507d513a","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"720802c8038d4ba0fe85824f437ed630eb184404"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":144,"context_line":"    @staticmethod  # it is by default, but this makes pep8 happy"},{"line_number":145,"context_line":"    def __new__(cls, chassis_private, driver):"},{"line_number":146,"context_line":"        _chassis \u003d cls._get_chassis(chassis_private)"},{"line_number":147,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in getattr(_chassis, \u0027other_config\u0027, {}).get("},{"line_number":148,"context_line":"                \u0027ovn-cms-options\u0027, []):"},{"line_number":149,"context_line":"            cls \u003d ControllerGatewayAgent"},{"line_number":150,"context_line":"        return super().__new__(cls)"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"56eebb97_7dbfc488","line":148,"range":{"start_line":147,"start_character":8,"end_line":148,"end_character":39},"updated":"2026-04-21 07:21:05.000000000","message":"Ditto, create something like `get_enable_chassis_as_gw`","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    @staticmethod  # it is by default, but this makes pep8 happy"},{"line_number":145,"context_line":"    def __new__(cls, chassis_private, driver):"},{"line_number":146,"context_line":"        _chassis \u003d cls._get_chassis(chassis_private)"},{"line_number":147,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in getattr(_chassis, \u0027other_config\u0027, {}).get("},{"line_number":148,"context_line":"                \u0027ovn-cms-options\u0027, []):"},{"line_number":149,"context_line":"            cls \u003d ControllerGatewayAgent"},{"line_number":150,"context_line":"        return super().__new__(cls)"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e7e0f112_a8080664","line":148,"range":{"start_line":147,"start_character":8,"end_line":148,"end_character":39},"in_reply_to":"56eebb97_7dbfc488","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def update(self, chassis_private, clear_down\u003dFalse):"},{"line_number":170,"context_line":"        super().update(chassis_private, clear_down)"},{"line_number":171,"context_line":"        other_config \u003d getattr(self.chassis, \u0027other_config\u0027, {})"},{"line_number":172,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in other_config.get("},{"line_number":173,"context_line":"                \u0027ovn-cms-options\u0027, []):"},{"line_number":174,"context_line":"            self.__class__ \u003d ControllerGatewayAgent"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"c8ece795_adbac204","line":173,"range":{"start_line":171,"start_character":8,"end_line":173,"end_character":39},"updated":"2026-04-21 07:21:05.000000000","message":"You have `get_ovn_cms_options`","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def update(self, chassis_private, clear_down\u003dFalse):"},{"line_number":170,"context_line":"        super().update(chassis_private, clear_down)"},{"line_number":171,"context_line":"        other_config \u003d getattr(self.chassis, \u0027other_config\u0027, {})"},{"line_number":172,"context_line":"        if \u0027enable-chassis-as-gw\u0027 in other_config.get("},{"line_number":173,"context_line":"                \u0027ovn-cms-options\u0027, []):"},{"line_number":174,"context_line":"            self.__class__ \u003d ControllerGatewayAgent"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dc2dfbea_357e3b64","line":173,"range":{"start_line":171,"start_character":8,"end_line":173,"end_character":39},"in_reply_to":"c8ece795_adbac204","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def update(self, chassis_private, clear_down\u003dFalse):"},{"line_number":181,"context_line":"        super().update(chassis_private, clear_down)"},{"line_number":182,"context_line":"        if (\u0027enable-chassis-as-gw\u0027 not in"},{"line_number":183,"context_line":"                getattr(self.chassis, \u0027other_config\u0027, {}).get("},{"line_number":184,"context_line":"                    \u0027ovn-cms-options\u0027, [])):"},{"line_number":185,"context_line":"            self.__class__ \u003d ControllerAgent"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"01ea4c6b_b660ce8b","line":184,"range":{"start_line":182,"start_character":8,"end_line":184,"end_character":44},"updated":"2026-04-21 07:21:05.000000000","message":"You have `get_ovn_cms_options`","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def update(self, chassis_private, clear_down\u003dFalse):"},{"line_number":181,"context_line":"        super().update(chassis_private, clear_down)"},{"line_number":182,"context_line":"        if (\u0027enable-chassis-as-gw\u0027 not in"},{"line_number":183,"context_line":"                getattr(self.chassis, \u0027other_config\u0027, {}).get("},{"line_number":184,"context_line":"                    \u0027ovn-cms-options\u0027, [])):"},{"line_number":185,"context_line":"            self.__class__ \u003d ControllerAgent"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e37f9ca7_6feb9216","line":184,"range":{"start_line":182,"start_character":8,"end_line":184,"end_character":44},"in_reply_to":"01ea4c6b_b660ce8b","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":356,"context_line":"        n_agent.AgentCache().delete(row.external_ids[\u0027delete_agent\u0027])"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"class ChassisAgentChassisClearedEvent(ChassisAgentEvent):"},{"line_number":360,"context_line":"    \"\"\"Mark agents as down when Chassis is deleted but Chassis_Private remains."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    When a Chassis record is deleted in OVN, the Chassis_Private record"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fd2aa40_0d18b573","line":359,"range":{"start_line":359,"start_character":6,"end_line":359,"end_character":37},"updated":"2026-04-21 07:21:05.000000000","message":"In order to have less events registered, you can combine `ChassisAgentDownEvent` and this class. This new class will have two events, delete and update.\n\nThe `match_fn` method should discriminate by event type in order to make the filtering. E.g.: if the event is delete, return True always; if is update, implement your current method.","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        n_agent.AgentCache().delete(row.external_ids[\u0027delete_agent\u0027])"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":""},{"line_number":359,"context_line":"class ChassisAgentChassisClearedEvent(ChassisAgentEvent):"},{"line_number":360,"context_line":"    \"\"\"Mark agents as down when Chassis is deleted but Chassis_Private remains."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"    When a Chassis record is deleted in OVN, the Chassis_Private record"}],"source_content_type":"text/x-python","patch_set":6,"id":"a94f86b2_b5bb1563","line":359,"range":{"start_line":359,"start_character":6,"end_line":359,"end_character":37},"in_reply_to":"3fd2aa40_0d18b573","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":true,"context_lines":[{"line_number":383,"context_line":"        # On updates to Chassis_Private because the Chassis has been deleted,"},{"line_number":384,"context_line":"        # don\u0027t update the AgentCache. We use chassis_private.chassis to return"},{"line_number":385,"context_line":"        # data about the agent."},{"line_number":386,"context_line":"        if event \u003d\u003d self.ROW_CREATE:"},{"line_number":387,"context_line":"            return True"},{"line_number":388,"context_line":"        if not row.chassis:"},{"line_number":389,"context_line":"            return False"},{"line_number":390,"context_line":"        # Normal nb_cfg update with chassis present."},{"line_number":391,"context_line":"        if hasattr(old, \u0027nb_cfg\u0027):"},{"line_number":392,"context_line":"            return True"},{"line_number":393,"context_line":"        # Chassis reference restored (e.g. ovn-controller reconnected after"},{"line_number":394,"context_line":"        # Chassis was deleted while Chassis_Private remained)."},{"line_number":395,"context_line":"        if hasattr(old, \u0027chassis\u0027) and not old.chassis:"},{"line_number":396,"context_line":"            return True"},{"line_number":397,"context_line":"        return False"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def run(self, event, row, old):"},{"line_number":400,"context_line":"        # Clear down state on initial creation or when chassis reference is"}],"source_content_type":"text/x-python","patch_set":6,"id":"36a3feb1_0bee82e7","line":397,"range":{"start_line":386,"start_character":7,"end_line":397,"end_character":20},"updated":"2026-04-21 07:21:05.000000000","message":"This can be done in one line:\n```\nreturn (event \u003d\u003d self.ROW_CREATE or\n        (row.chassis and (hasattr(old, \u0027nb_cfg\u0027) or\n        (hasattr(old, \u0027chassis\u0027) and not old.chassis))))\n```","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":12404,"name":"Rico Lin","email":"ricolin@ricolky.com","username":"rico.lin"},"change_message_id":"ce804b4786d66231af6d25a5b71c10524dd990f4","unresolved":false,"context_lines":[{"line_number":383,"context_line":"        # On updates to Chassis_Private because the Chassis has been deleted,"},{"line_number":384,"context_line":"        # don\u0027t update the AgentCache. We use chassis_private.chassis to return"},{"line_number":385,"context_line":"        # data about the agent."},{"line_number":386,"context_line":"        if event \u003d\u003d self.ROW_CREATE:"},{"line_number":387,"context_line":"            return True"},{"line_number":388,"context_line":"        if not row.chassis:"},{"line_number":389,"context_line":"            return False"},{"line_number":390,"context_line":"        # Normal nb_cfg update with chassis present."},{"line_number":391,"context_line":"        if hasattr(old, \u0027nb_cfg\u0027):"},{"line_number":392,"context_line":"            return True"},{"line_number":393,"context_line":"        # Chassis reference restored (e.g. ovn-controller reconnected after"},{"line_number":394,"context_line":"        # Chassis was deleted while Chassis_Private remained)."},{"line_number":395,"context_line":"        if hasattr(old, \u0027chassis\u0027) and not old.chassis:"},{"line_number":396,"context_line":"            return True"},{"line_number":397,"context_line":"        return False"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def run(self, event, row, old):"},{"line_number":400,"context_line":"        # Clear down state on initial creation or when chassis reference is"}],"source_content_type":"text/x-python","patch_set":6,"id":"c24eba0b_f35fc9c9","line":397,"range":{"start_line":386,"start_character":7,"end_line":397,"end_character":20},"in_reply_to":"36a3feb1_0bee82e7","updated":"2026-04-21 08:20:14.000000000","message":"Done","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"342a5524982995c30ec51c9b8897ca3d8bf20d89","unresolved":false,"context_lines":[{"line_number":399,"context_line":"    def run(self, event, row, old):"},{"line_number":400,"context_line":"        # Clear down state on initial creation or when chassis reference is"},{"line_number":401,"context_line":"        # restored after being cleared."},{"line_number":402,"context_line":"        chassis_restored \u003d (hasattr(old, \u0027chassis\u0027) and"},{"line_number":403,"context_line":"                            not old.chassis and row.chassis)"},{"line_number":404,"context_line":"        clear_down \u003d event \u003d\u003d self.ROW_CREATE or chassis_restored"},{"line_number":405,"context_line":"        n_agent.AgentCache().update(ovn_const.OVN_CONTROLLER_AGENT, row,"}],"source_content_type":"text/x-python","patch_set":6,"id":"79d5b6b9_51c2775a","line":402,"range":{"start_line":402,"start_character":8,"end_line":402,"end_character":24},"updated":"2026-04-21 07:21:05.000000000","message":"Nice!","commit_id":"c8edb6e175dd377a4e28801f910ca6d17d72fd56"}]}
