)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c3907e6b3497e648af34e941eaba63f68547622e","unresolved":true,"context_lines":[{"line_number":9,"context_line":"If an \"ovn-controller\" ends not gracefully, the node \"Chassis\" and"},{"line_number":10,"context_line":"\"Chassis_Private\" registers will remain in the OVN SB database."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"If the \"Chassis\" register is deleted, the \"Chassis_Private.chassis\""},{"line_number":13,"context_line":"column will be []. In this case, Neutron needs to delete the"},{"line_number":14,"context_line":"corresponding OVN agents (controller and metadata) from the OVN"},{"line_number":15,"context_line":"\"AgentCache\" instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"f7aabf75_4bfd28e6","line":12,"updated":"2021-11-19 14:32:50.000000000","message":"Neutron *shouldn\u0027t* be deleting agents when the chassis disappears. Not until after the agent_down_time hits. The implementation makes sure that when a Chassis is deleted (usually by ovn-controller), it marks the agent down instead of removing it from the list, since ovn-controller could just be restarting.","commit_id":"faefe0755ced7fc955f1f8a47e28289610e14f9c"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2bac4d759349974dc335de2d5bb7aef31aa3a7e0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"If an \"ovn-controller\" ends not gracefully, the node \"Chassis\" and"},{"line_number":10,"context_line":"\"Chassis_Private\" registers will remain in the OVN SB database."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"If the \"Chassis\" register is deleted, the \"Chassis_Private.chassis\""},{"line_number":13,"context_line":"column will be []. In this case, Neutron needs to delete the"},{"line_number":14,"context_line":"corresponding OVN agents (controller and metadata) from the OVN"},{"line_number":15,"context_line":"\"AgentCache\" instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"d820e897_8e47c541","line":12,"in_reply_to":"f7aabf75_4bfd28e6","updated":"2022-04-20 19:08:35.000000000","message":"Done","commit_id":"faefe0755ced7fc955f1f8a47e28289610e14f9c"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6a428fcca65f4ab9f4b7a08e67df43135cbf26ae","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If the \"Chassis\" register is deleted first, Neutron must be aware"},{"line_number":16,"context_line":"of this event and set the OVN agents related to this host to down."},{"line_number":17,"context_line":"This patch creates a new event in \"SB_Global\", called \"chassis_delete\"."},{"line_number":18,"context_line":"All workers will receive the event of the \"Chassis\" register deletion"},{"line_number":19,"context_line":"and will set the OVN related agents to down (not alive)."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"If the \"Chassis\" register is created again (the OVN controller is"},{"line_number":22,"context_line":"restarted, for example), the event is also attended and an event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"e7217635_4629792a","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":56},"updated":"2022-04-20 19:06:23.000000000","message":"I think this and below needs to be updated to match the current patch\u0027s behavior.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bbcc6c07cae52a983006e082efb62e289c2cd6e4","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"If the \"Chassis\" register is deleted first, Neutron must be aware"},{"line_number":16,"context_line":"of this event and set the OVN agents related to this host to down."},{"line_number":17,"context_line":"This patch creates a new event in \"SB_Global\", called \"chassis_delete\"."},{"line_number":18,"context_line":"All workers will receive the event of the \"Chassis\" register deletion"},{"line_number":19,"context_line":"and will set the OVN related agents to down (not alive)."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"If the \"Chassis\" register is created again (the OVN controller is"},{"line_number":22,"context_line":"restarted, for example), the event is also attended and an event"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"387f1b54_b5cb263b","line":19,"range":{"start_line":17,"start_character":0,"end_line":19,"end_character":56},"in_reply_to":"e7217635_4629792a","updated":"2022-04-21 08:51:37.000000000","message":"Ups, this is from previous PS.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"68095d6fd188d6e84d9ba2772cfcdeb25e6f65fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"26b0b11a_b1ab31c4","updated":"2021-11-19 10:06:04.000000000","message":"recheck","commit_id":"faefe0755ced7fc955f1f8a47e28289610e14f9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e4a495f9f83d1b85395f145e69dfaa76cdd56656","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ab9ecc36_f7c909b2","updated":"2021-11-19 12:54:09.000000000","message":"recheck","commit_id":"faefe0755ced7fc955f1f8a47e28289610e14f9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1290cb2d2bea154ad48313e1cb930028ef9d3dd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e9fdf24c_49f4180e","updated":"2021-11-19 12:16:04.000000000","message":"recheck","commit_id":"faefe0755ced7fc955f1f8a47e28289610e14f9c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4cdcf9a929c334cf9b445ff896c8e810e9d2b9f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6d5de960_e217528a","updated":"2021-11-23 14:16:14.000000000","message":"ON HOLD: the aim of [1] is to substitute the AgentCache (per worker) by a DB agents table update. Still under progress.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/818850","commit_id":"2c15c8681d065affb47cb9cf1795bd7cee21acd0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6a428fcca65f4ab9f4b7a08e67df43135cbf26ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a5a6568a_802b5f0f","updated":"2022-04-20 19:06:23.000000000","message":"-1 only for the commit message, otherwise I think this looks good!","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"326afbe8886cd89c9aea6445b0997f1da1e506ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d0921e42_e46b81f0","updated":"2022-04-20 18:22:52.000000000","message":"Still going through and doing some manual tests, just had an observation/question.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"50ac6375497193e179b21b1cb65fa5ff9caed868","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"23216b07_d591e5f8","updated":"2022-04-19 10:53:34.000000000","message":"recheck","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"f3bb520abf63b777ab57803263790708f3885378","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f79174aa_15f47a38","updated":"2022-04-21 13:54:55.000000000","message":"nice, thanks!","commit_id":"f1a5511e9094d6aae7a61cd858c59c706033ca95"}],"neutron/plugins/ml2/drivers/ovn/agent/neutron_agent.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"79ef9d407119f28ae8c637cd128f4796671a77e9","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            return chassis_private"},{"line_number":57,"context_line":"        except IndexError:"},{"line_number":58,"context_line":"            # Chassis register has been deleted but not Chassis_Private."},{"line_number":59,"context_line":"            return DeletedChassis"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def is_chassis_deleted(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"a60ef7d5_baf2fd11","line":59,"updated":"2022-04-20 18:56:26.000000000","message":"Maybe it\u0027s just a matter of preference but I recommend to raise a custom exception here and catch it around L63 as using class as a placeholder doesn\u0027t seem right. Also the class attributes from L27-L29 are not used and seem to be there just to mimic chassis attributes and are not used anywhere.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bbcc6c07cae52a983006e082efb62e289c2cd6e4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return chassis_private"},{"line_number":57,"context_line":"        except IndexError:"},{"line_number":58,"context_line":"            # Chassis register has been deleted but not Chassis_Private."},{"line_number":59,"context_line":"            return DeletedChassis"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def is_chassis_deleted(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"d5969303_8eaafa56","line":59,"in_reply_to":"04c79306_31f5530d","updated":"2022-04-21 08:51:37.000000000","message":"I think Terry has replied to Jakub\u0027s question. We need this chassis-like object for the \"as_dict\" method.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6a428fcca65f4ab9f4b7a08e67df43135cbf26ae","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return chassis_private"},{"line_number":57,"context_line":"        except IndexError:"},{"line_number":58,"context_line":"            # Chassis register has been deleted but not Chassis_Private."},{"line_number":59,"context_line":"            return DeletedChassis"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def is_chassis_deleted(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"04c79306_31f5530d","line":59,"in_reply_to":"a60ef7d5_baf2fd11","updated":"2022-04-20 19:06:23.000000000","message":"The class attributes are used in as_dict() so that we can display the chassis.hostname, and bridge mappings, etc. We need to have a \"chassis-like\" object for that returned here.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"809457183ab74ef8ae2f674b5eb854e8b8099791","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return chassis_private"},{"line_number":57,"context_line":"        except IndexError:"},{"line_number":58,"context_line":"            # Chassis register has been deleted but not Chassis_Private."},{"line_number":59,"context_line":"            return DeletedChassis"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    @property"},{"line_number":62,"context_line":"    def is_chassis_deleted(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"6979fa0c_6516f84d","line":59,"in_reply_to":"d5969303_8eaafa56","updated":"2022-04-21 16:51:59.000000000","message":"I see, thanks for the explanation.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"326afbe8886cd89c9aea6445b0997f1da1e506ab","unresolved":true,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @property"},{"line_number":90,"context_line":"    def alive(self):"},{"line_number":91,"context_line":"        if self.set_down or self.is_chassis_deleted:"},{"line_number":92,"context_line":"            return False"},{"line_number":93,"context_line":"        # TODO(twilson) Determine if we can go back to just checking:"},{"line_number":94,"context_line":"        # if self.driver.nb_ovn.nb_global.nb_cfg \u003d\u003d self.nb_cfg:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fd0d0f53_a02e23c9","line":91,"range":{"start_line":91,"start_character":28,"end_line":91,"end_character":51},"updated":"2022-04-20 18:22:52.000000000","message":"I think this makes sense. One could make the argument that the existing code should also check the updated_at/agent_down_time and only return False if agent_down_time seconds have elapsed. But we know for a fact that the agent is down. I guess it just depends whether we want to report an agent as down if it hasn\u0027t technically been down \"long enough\".\n\nThe agent_down_time option states: \"Seconds to regard the agent is down; should be at least twice report_interval, to be sure the agent is down for good.\"\n\nI don\u0027t have a strong opinion here. What do you think?","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bbcc6c07cae52a983006e082efb62e289c2cd6e4","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @property"},{"line_number":90,"context_line":"    def alive(self):"},{"line_number":91,"context_line":"        if self.set_down or self.is_chassis_deleted:"},{"line_number":92,"context_line":"            return False"},{"line_number":93,"context_line":"        # TODO(twilson) Determine if we can go back to just checking:"},{"line_number":94,"context_line":"        # if self.driver.nb_ovn.nb_global.nb_cfg \u003d\u003d self.nb_cfg:"}],"source_content_type":"text/x-python","patch_set":6,"id":"10fed1cb_5ee2b011","line":91,"range":{"start_line":91,"start_character":28,"end_line":91,"end_character":51},"in_reply_to":"fd0d0f53_a02e23c9","updated":"2022-04-21 08:51:37.000000000","message":"Yeah and now I remember we had this conversation. You are right: we know for sure the chassis (only the chassis register) has been deleted but we should wait for \"agent_down_time\".\n\nIn any case, we\u0027ll continue printing the \u0027(\"Chassis\" register deleted)\u0027 message because we don\u0027t have this information.","commit_id":"415eba656cc8fcc9787ea5963143523731d06ae9"}]}
