)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"58126343e4a015469bbf71db652fba12cf1298a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"984149f5_e5f4ed4b","updated":"2023-06-27 13:50:09.000000000","message":"Some nits, but looks fine. Good catch!","commit_id":"7d95a27b9478c595e235019bbd9051aa90ed596e"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"f9e295a9d56e8542dde2c2dfe13097871355b356","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d4e4b273_f8583926","updated":"2023-06-28 12:18:49.000000000","message":"Applied changes suggested by Rodolfo and fixed unit tests","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"e6638b3c065ec4740dd6a38346dd71e19d224d53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"80391e7a_7ca87431","updated":"2023-06-28 15:28:37.000000000","message":"recheck - ci failures seemingly unrelated to patch","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"48e3a86df7770d85a8a66d896eab235f7bb21c4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1d77258b_66953a3a","updated":"2023-06-28 21:16:04.000000000","message":"Is there possibly a unit test we can add for this?","commit_id":"682b1eb264ed7fac468919e47d0eafff0b90b52b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"71449177b382369715a612491f3e89d9d99ac07d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"00b7297f_b1b2283f","in_reply_to":"1d77258b_66953a3a","updated":"2023-06-28 23:29:22.000000000","message":"I\u0027ve added a test but it simply calls the function and doesn\u0027t make any assertions (as I couldn\u0027t really think of much to assert). I can update this patch if you had something in mind though.","commit_id":"682b1eb264ed7fac468919e47d0eafff0b90b52b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"faca7b3ae43176b2e7c73e5160157ba7cd63b66e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a5aa29db_849a302f","updated":"2023-06-29 09:58:23.000000000","message":"Updated patch to improve tests","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"1a0a61a45ea54f60f898fa4452f838387fed8af5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f214d76f_efd8fb7e","updated":"2023-06-29 13:34:18.000000000","message":"recheck neutron-ovs-grenade-multinode : This seemed to fail shutting down Nova which is unrelated to this patch","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"24723fd373ae45160881f47f599bdd1ecf70f051","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c4ef90a9_22176944","updated":"2023-06-30 12:51:18.000000000","message":"Good stuff, thanks!","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f5703bc0b9a353f3c660c124cd89a680e5e2f921","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"85ee380e_fd460836","updated":"2023-06-30 12:53:09.000000000","message":"Please propose backports for this patch. Thanks!","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"1d968b980e3c2e2afa68920e146a1961569b074b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"38bc49a0_bfcc6994","updated":"2023-07-03 10:34:56.000000000","message":"Proposed backports to Antelope, Zed \u0026 Yoga. Should I be backporting this to any of the extended maintenance releases as well?","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"57ddd88ba386307656712c45ba392ab61beab099","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"457fd1e8_754ffef2","updated":"2023-06-29 22:11:47.000000000","message":"Thanks Adam","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2a73975e70494c471b2f6b33c94c2daae792a023","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3c50c50b_fa0feb16","updated":"2023-06-30 21:13:08.000000000","message":"recheck neutron-fullstack-with-uwsgi","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d063eae05fb25bc92b0cbc91fd095e3d25d0750f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"46b0b4e5_e018158d","updated":"2023-07-02 00:39:46.000000000","message":"recheck unrelated failure","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8d8d2be9a3f20f29da88f56b525e2fe3aed8a7d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"97947493_534fdbc2","updated":"2023-06-30 20:04:47.000000000","message":"recheck unrelated failure","commit_id":"c8c74f12e048e7858eee332883dbe7c1dc1d0f0c"}],"neutron/agent/l3/agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"58126343e4a015469bbf71db652fba12cf1298a2","unresolved":true,"context_lines":[{"line_number":476,"context_line":"    def _router_added(self, router_id, router):"},{"line_number":477,"context_line":"        try:"},{"line_number":478,"context_line":"            ri \u003d self._create_router(router_id, router)"},{"line_number":479,"context_line":"        except Exception:"},{"line_number":480,"context_line":"            self.namespaces_manager.ensure_router_cleanup(router_id)"},{"line_number":481,"context_line":"            raise"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a41979c6_07e4385b","line":479,"range":{"start_line":479,"start_character":15,"end_line":479,"end_character":24},"updated":"2023-06-27 13:50:09.000000000","message":"Add a LOG.exception message, similar to L496. In this case, we can specify this is before the initialization. For example, \"Error while instantiating the router %s class\"","commit_id":"7d95a27b9478c595e235019bbd9051aa90ed596e"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"f9e295a9d56e8542dde2c2dfe13097871355b356","unresolved":false,"context_lines":[{"line_number":476,"context_line":"    def _router_added(self, router_id, router):"},{"line_number":477,"context_line":"        try:"},{"line_number":478,"context_line":"            ri \u003d self._create_router(router_id, router)"},{"line_number":479,"context_line":"        except Exception:"},{"line_number":480,"context_line":"            self.namespaces_manager.ensure_router_cleanup(router_id)"},{"line_number":481,"context_line":"            raise"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ce075c51_b9a10e7a","line":479,"range":{"start_line":479,"start_character":15,"end_line":479,"end_character":24},"in_reply_to":"a41979c6_07e4385b","updated":"2023-06-28 12:18:49.000000000","message":"Done","commit_id":"7d95a27b9478c595e235019bbd9051aa90ed596e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"58126343e4a015469bbf71db652fba12cf1298a2","unresolved":true,"context_lines":[{"line_number":478,"context_line":"            ri \u003d self._create_router(router_id, router)"},{"line_number":479,"context_line":"        except Exception:"},{"line_number":480,"context_line":"            self.namespaces_manager.ensure_router_cleanup(router_id)"},{"line_number":481,"context_line":"            raise"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"        registry.publish(resources.ROUTER, events.BEFORE_CREATE, self,"},{"line_number":484,"context_line":"                         payload\u003devents.DBEventPayload("}],"source_content_type":"text/x-python","patch_set":1,"id":"4cad1cfb_b558b454","line":481,"range":{"start_line":481,"start_character":12,"end_line":481,"end_character":17},"updated":"2023-06-27 13:50:09.000000000","message":"Use\n```\n   with excutils.save_and_reraise_exception():\n      self.namespaces_manager.ensure_router_cleanup(router_id)\n```","commit_id":"7d95a27b9478c595e235019bbd9051aa90ed596e"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"f9e295a9d56e8542dde2c2dfe13097871355b356","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            ri \u003d self._create_router(router_id, router)"},{"line_number":479,"context_line":"        except Exception:"},{"line_number":480,"context_line":"            self.namespaces_manager.ensure_router_cleanup(router_id)"},{"line_number":481,"context_line":"            raise"},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"        registry.publish(resources.ROUTER, events.BEFORE_CREATE, self,"},{"line_number":484,"context_line":"                         payload\u003devents.DBEventPayload("}],"source_content_type":"text/x-python","patch_set":1,"id":"faa54720_5d7d0fa5","line":481,"range":{"start_line":481,"start_character":12,"end_line":481,"end_character":17},"in_reply_to":"4cad1cfb_b558b454","updated":"2023-06-28 12:18:49.000000000","message":"Done","commit_id":"7d95a27b9478c595e235019bbd9051aa90ed596e"}],"neutron/agent/l3/dvr_local_router.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"48e3a86df7770d85a8a66d896eab235f7bb21c4f","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        self._pending_arp_set \u003d set()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def initialize(self, process_monitor):"},{"line_number":51,"context_line":"        super(DvrLocalRouter, self).initialize(process_monitor)"},{"line_number":52,"context_line":"        self._load_used_fip_information()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _load_used_fip_information(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"f427c32c_79a6bcb6","line":51,"updated":"2023-06-28 21:16:04.000000000","message":"nit: might as well use the \"new style\" and just do super().initialize(process_monitor)","commit_id":"682b1eb264ed7fac468919e47d0eafff0b90b52b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"71449177b382369715a612491f3e89d9d99ac07d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        self._pending_arp_set \u003d set()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def initialize(self, process_monitor):"},{"line_number":51,"context_line":"        super(DvrLocalRouter, self).initialize(process_monitor)"},{"line_number":52,"context_line":"        self._load_used_fip_information()"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _load_used_fip_information(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"439391e5_1f39e3b9","line":51,"in_reply_to":"f427c32c_79a6bcb6","updated":"2023-06-28 23:29:22.000000000","message":"Done","commit_id":"682b1eb264ed7fac468919e47d0eafff0b90b52b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fb03b034e25fe0abb6f830b74837bf33d6c1d6e3","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        self.fip_ns \u003d None"},{"line_number":48,"context_line":"        self._pending_arp_set \u003d set()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def initialize(self, process_monitor):"},{"line_number":51,"context_line":"        super().initialize(process_monitor)"},{"line_number":52,"context_line":"        self._load_used_fip_information()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"65e02a63_54d7424c","line":50,"updated":"2023-06-29 09:01:04.000000000","message":"Much better approach than the previous PS.","commit_id":"e5cb5f4a3fbf079084b8f716d7cf6254f19342ac"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"faca7b3ae43176b2e7c73e5160157ba7cd63b66e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.fip_ns \u003d None"},{"line_number":48,"context_line":"        self._pending_arp_set \u003d set()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def initialize(self, process_monitor):"},{"line_number":51,"context_line":"        super().initialize(process_monitor)"},{"line_number":52,"context_line":"        self._load_used_fip_information()"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"e0bd624d_b559f283","line":50,"in_reply_to":"65e02a63_54d7424c","updated":"2023-06-29 09:58:23.000000000","message":"Ack","commit_id":"e5cb5f4a3fbf079084b8f716d7cf6254f19342ac"}],"neutron/agent/l3/router_info.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"51e3aba54cd8520c12c2406c8e92a9a2af496a87","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        ns \u003d self.create_router_namespace_object("},{"line_number":141,"context_line":"            router_id, agent_conf, interface_driver, use_ipv6)"},{"line_number":142,"context_line":"        self.router_namespace \u003d ns"},{"line_number":143,"context_line":"        self.router_namespace.create()"},{"line_number":144,"context_line":"        self.ns_name \u003d ns.name"},{"line_number":145,"context_line":"        self.available_mark_ids \u003d set(range(ADDRESS_SCOPE_MARK_ID_MIN,"},{"line_number":146,"context_line":"                                            ADDRESS_SCOPE_MARK_ID_MAX))"}],"source_content_type":"text/x-python","patch_set":2,"id":"752fa359_5aeaa8b8","line":143,"updated":"2023-06-28 16:51:46.000000000","message":"So I\u0027m not sure this is the right thing to do. If we look at the comment in the BaseRouterInfo class initialize() method above it says:\n\n        This differs from __init__ in that this method actually affects the\n        system creating namespaces, starting processes, etc.  The other merely\n        initializes the python object.  This separates in-memory object\n        initialization from methods that actually go do stuff to the system.\n\nAnd looking at one sub-class, HaRouter, shows that in it\u0027s initialize() it might fail early and never call super().initialize(), but we have now already created the namespace. Do we need to clean it up?\n\nSo maybe some more investigation is required.","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"e7c35fd8c150ab8cda2489d5706f23d0cfe81799","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        ns \u003d self.create_router_namespace_object("},{"line_number":141,"context_line":"            router_id, agent_conf, interface_driver, use_ipv6)"},{"line_number":142,"context_line":"        self.router_namespace \u003d ns"},{"line_number":143,"context_line":"        self.router_namespace.create()"},{"line_number":144,"context_line":"        self.ns_name \u003d ns.name"},{"line_number":145,"context_line":"        self.available_mark_ids \u003d set(range(ADDRESS_SCOPE_MARK_ID_MIN,"},{"line_number":146,"context_line":"                                            ADDRESS_SCOPE_MARK_ID_MAX))"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8765294_b054dc1c","line":143,"in_reply_to":"1934113b_e8d7bd44","updated":"2023-06-28 17:00:54.000000000","message":"This is probably a better approach. Let me test that and get back to you.","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"868ca34da221aaadb5ad3ca8532b133692780694","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        ns \u003d self.create_router_namespace_object("},{"line_number":141,"context_line":"            router_id, agent_conf, interface_driver, use_ipv6)"},{"line_number":142,"context_line":"        self.router_namespace \u003d ns"},{"line_number":143,"context_line":"        self.router_namespace.create()"},{"line_number":144,"context_line":"        self.ns_name \u003d ns.name"},{"line_number":145,"context_line":"        self.available_mark_ids \u003d set(range(ADDRESS_SCOPE_MARK_ID_MIN,"},{"line_number":146,"context_line":"                                            ADDRESS_SCOPE_MARK_ID_MAX))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1934113b_e8d7bd44","line":143,"in_reply_to":"752fa359_5aeaa8b8","updated":"2023-06-28 16:58:17.000000000","message":"For example, do we need to add an initialize() in the DvrLocalRouter child class that calls super().initialize() then calls self._load_used_fip_information() ? I haven\u0027t checked it will actually work.","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"096618cc2091457bf0037eed621b39271dd004cb","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        ns \u003d self.create_router_namespace_object("},{"line_number":141,"context_line":"            router_id, agent_conf, interface_driver, use_ipv6)"},{"line_number":142,"context_line":"        self.router_namespace \u003d ns"},{"line_number":143,"context_line":"        self.router_namespace.create()"},{"line_number":144,"context_line":"        self.ns_name \u003d ns.name"},{"line_number":145,"context_line":"        self.available_mark_ids \u003d set(range(ADDRESS_SCOPE_MARK_ID_MIN,"},{"line_number":146,"context_line":"                                            ADDRESS_SCOPE_MARK_ID_MAX))"}],"source_content_type":"text/x-python","patch_set":2,"id":"11747346_eedaf32c","line":143,"in_reply_to":"f8765294_b054dc1c","updated":"2023-06-28 20:33:07.000000000","message":"This seems to work fine, looks more logical imo and is a bit simpler so I\u0027ve updated the patch to do it this way now. Thanks.","commit_id":"bf7ce3c45e29949aaa0119c28211114496123a2b"}],"neutron/tests/unit/agent/l3/test_dvr_local_router.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fb03b034e25fe0abb6f830b74837bf33d6c1d6e3","unresolved":true,"context_lines":[{"line_number":974,"context_line":"        ri1._remove_vip.assert_called_once_with(fip_cidr)"},{"line_number":975,"context_line":"        super_remove_centralized_floatingip.assert_called_once_with(fip_cidr)"},{"line_number":976,"context_line":""},{"line_number":977,"context_line":"    def test_initialize_dvr_local_router(self):"},{"line_number":978,"context_line":"        ri \u003d self._create_router()"},{"line_number":979,"context_line":"        ri.initialize(mock.Mock())"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"be1173dd_be507cab","line":977,"updated":"2023-06-29 09:01:04.000000000","message":"This is not strictly testing that you are actually calling the \"_load_used_fip_information\" from the \"initialize\" method, just after the super().initialize call.","commit_id":"e5cb5f4a3fbf079084b8f716d7cf6254f19342ac"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"faca7b3ae43176b2e7c73e5160157ba7cd63b66e","unresolved":false,"context_lines":[{"line_number":974,"context_line":"        ri1._remove_vip.assert_called_once_with(fip_cidr)"},{"line_number":975,"context_line":"        super_remove_centralized_floatingip.assert_called_once_with(fip_cidr)"},{"line_number":976,"context_line":""},{"line_number":977,"context_line":"    def test_initialize_dvr_local_router(self):"},{"line_number":978,"context_line":"        ri \u003d self._create_router()"},{"line_number":979,"context_line":"        ri.initialize(mock.Mock())"},{"line_number":980,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a63a15c4_70ebf298","line":977,"in_reply_to":"be1173dd_be507cab","updated":"2023-06-29 09:58:23.000000000","message":"Fair point. I\u0027ve updated the tests now to:\n\n- Ensure that _load_used_fip_information and super initialize are both called\n- That _load_used_fip_information is called after the super initialize","commit_id":"e5cb5f4a3fbf079084b8f716d7cf6254f19342ac"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66e3c9376698d4d97330cf3acf575e35288d4aa5","unresolved":true,"context_lines":[{"line_number":975,"context_line":"        super_remove_centralized_floatingip.assert_called_once_with(fip_cidr)"},{"line_number":976,"context_line":""},{"line_number":977,"context_line":"    @mock.patch.object(dvr_router.DvrLocalRouter,"},{"line_number":978,"context_line":"                       \u0027_load_used_fip_information\u0027)"},{"line_number":979,"context_line":"    @mock.patch.object(router_info.RouterInfo, \u0027initialize\u0027)"},{"line_number":980,"context_line":"    def test_initialize_dvr_local_router("},{"line_number":981,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bf8448d8_0f10c1e9","line":978,"updated":"2023-06-29 18:54:49.000000000","message":"This is already mocked for the entire class so shouldn\u0027t be necessary","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"8dccc024614be8ead5646b85f30820adf30e91bd","unresolved":false,"context_lines":[{"line_number":975,"context_line":"        super_remove_centralized_floatingip.assert_called_once_with(fip_cidr)"},{"line_number":976,"context_line":""},{"line_number":977,"context_line":"    @mock.patch.object(dvr_router.DvrLocalRouter,"},{"line_number":978,"context_line":"                       \u0027_load_used_fip_information\u0027)"},{"line_number":979,"context_line":"    @mock.patch.object(router_info.RouterInfo, \u0027initialize\u0027)"},{"line_number":980,"context_line":"    def test_initialize_dvr_local_router("},{"line_number":981,"context_line":"            self,"}],"source_content_type":"text/x-python","patch_set":6,"id":"489158b1_b1c0ec84","line":978,"in_reply_to":"bf8448d8_0f10c1e9","updated":"2023-06-29 20:00:13.000000000","message":"Done","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66e3c9376698d4d97330cf3acf575e35288d4aa5","unresolved":true,"context_lines":[{"line_number":990,"context_line":"        m.attach_mock("},{"line_number":991,"context_line":"            super_initialize,"},{"line_number":992,"context_line":"            \u0027super_initialize\u0027,"},{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"}],"source_content_type":"text/x-python","patch_set":6,"id":"38454445_c42a0fd3","line":993,"updated":"2023-06-29 18:54:49.000000000","message":"Don\u0027t think you need any of the code above","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"8dccc024614be8ead5646b85f30820adf30e91bd","unresolved":false,"context_lines":[{"line_number":990,"context_line":"        m.attach_mock("},{"line_number":991,"context_line":"            super_initialize,"},{"line_number":992,"context_line":"            \u0027super_initialize\u0027,"},{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7e2eda3e_f96f37e3","line":993,"in_reply_to":"38454445_c42a0fd3","updated":"2023-06-29 20:00:13.000000000","message":"Done","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66e3c9376698d4d97330cf3acf575e35288d4aa5","unresolved":true,"context_lines":[{"line_number":992,"context_line":"            \u0027super_initialize\u0027,"},{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        expected_calls \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"701fd203_8ca8d5fd","line":995,"updated":"2023-06-29 18:54:49.000000000","message":"After this you can verify _load_used_fip_information() has not been called:\n\nself.mock_load_fip_p.assert_not_called()","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"8dccc024614be8ead5646b85f30820adf30e91bd","unresolved":false,"context_lines":[{"line_number":992,"context_line":"            \u0027super_initialize\u0027,"},{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        expected_calls \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"3e006818_c28be70c","line":995,"in_reply_to":"701fd203_8ca8d5fd","updated":"2023-06-29 20:00:13.000000000","message":"Done","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66e3c9376698d4d97330cf3acf575e35288d4aa5","unresolved":true,"context_lines":[{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        expected_calls \u003d ["},{"line_number":999,"context_line":"            mock.call.super_initialize(self.process_monitor),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9c0d211a_21bec030","line":996,"updated":"2023-06-29 18:54:49.000000000","message":"Then assert it was called, along with the \"super\" initialize\n\nAlso this test should be added right below test__load_used_fip_information() since it is related to it.","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"8dccc024614be8ead5646b85f30820adf30e91bd","unresolved":false,"context_lines":[{"line_number":993,"context_line":"        )"},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        ri \u003d self._create_router()"},{"line_number":996,"context_line":"        ri.initialize(self.process_monitor)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"        expected_calls \u003d ["},{"line_number":999,"context_line":"            mock.call.super_initialize(self.process_monitor),"}],"source_content_type":"text/x-python","patch_set":6,"id":"33ff13d3_c0302077","line":996,"in_reply_to":"9c0d211a_21bec030","updated":"2023-06-29 20:00:13.000000000","message":"Done","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66e3c9376698d4d97330cf3acf575e35288d4aa5","unresolved":true,"context_lines":[{"line_number":999,"context_line":"            mock.call.super_initialize(self.process_monitor),"},{"line_number":1000,"context_line":"            mock.call.mock_load_used_fip_information(),"},{"line_number":1001,"context_line":"        ]"},{"line_number":1002,"context_line":"        assert m.mock_calls \u003d\u003d expected_calls"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"    def test_initialize_dvr_ha_router_snat_ns_once(self):"},{"line_number":1005,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da7230f3_9608c05b","line":1002,"updated":"2023-06-29 18:54:49.000000000","message":"And this can all go away and replace with just:\n\nsuper_initialize.assert_called_once_with(self.process_monitor)","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"},{"author":{"_account_id":35825,"name":"Adam Oswick","email":"adam@adamoswick.co.uk","username":"adamoswick","status":"GoDaddy"},"change_message_id":"8dccc024614be8ead5646b85f30820adf30e91bd","unresolved":false,"context_lines":[{"line_number":999,"context_line":"            mock.call.super_initialize(self.process_monitor),"},{"line_number":1000,"context_line":"            mock.call.mock_load_used_fip_information(),"},{"line_number":1001,"context_line":"        ]"},{"line_number":1002,"context_line":"        assert m.mock_calls \u003d\u003d expected_calls"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"    def test_initialize_dvr_ha_router_snat_ns_once(self):"},{"line_number":1005,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"}],"source_content_type":"text/x-python","patch_set":6,"id":"881224e4_4df6bd19","line":1002,"in_reply_to":"da7230f3_9608c05b","updated":"2023-06-29 20:00:13.000000000","message":"Done","commit_id":"b870dbc6b7160e6849781b3a26c704d04482cec8"}]}
