)]}'
{"neutron/db/l3_db.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"48f6be13c1ed8d2256a6d96d0e5dbc837ce40f61","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                        self._update_fip_assoc,"},{"line_number":1366,"context_line":"                        **assoc_result)"},{"line_number":1367,"context_line":"        if assoc_result[\u0027fixed_ip_address\u0027] and assoc_result[\u0027fixed_port_id\u0027]:"},{"line_number":1368,"context_line":"            logging.INFO(\u0027FIP %(fip_id)s associated. External IP: %(ext_ip)s, \u0027"},{"line_number":1369,"context_line":"                         \u0027fixed IP: %(fixed_ip)s, port: %(port_id)s.\u0027,"},{"line_number":1370,"context_line":"                         {\u0027fip_id\u0027: assoc_result[\u0027floating_ip_id\u0027],"},{"line_number":1371,"context_line":"                          \u0027ext_ip\u0027: assoc_result[\u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_91513410","line":1368,"range":{"start_line":1368,"start_character":26,"end_line":1368,"end_character":29},"updated":"2019-09-03 13:46:51.000000000","message":"nit: Floating IP","commit_id":"23e6e516bfc86e7b1651fad9981576fe52365bfe"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"48f6be13c1ed8d2256a6d96d0e5dbc837ce40f61","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                        self._update_fip_assoc,"},{"line_number":1366,"context_line":"                        **assoc_result)"},{"line_number":1367,"context_line":"        if assoc_result[\u0027fixed_ip_address\u0027] and assoc_result[\u0027fixed_port_id\u0027]:"},{"line_number":1368,"context_line":"            logging.INFO(\u0027FIP %(fip_id)s associated. External IP: %(ext_ip)s, \u0027"},{"line_number":1369,"context_line":"                         \u0027fixed IP: %(fixed_ip)s, port: %(port_id)s.\u0027,"},{"line_number":1370,"context_line":"                         {\u0027fip_id\u0027: assoc_result[\u0027floating_ip_id\u0027],"},{"line_number":1371,"context_line":"                          \u0027ext_ip\u0027: assoc_result[\u0027floating_ip_address\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_7137d8e4","line":1368,"range":{"start_line":1368,"start_character":12,"end_line":1368,"end_character":24},"updated":"2019-09-03 13:46:51.000000000","message":"s/LOG.info","commit_id":"23e6e516bfc86e7b1651fad9981576fe52365bfe"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"21ef4f1b206a0904a21882f5ab27db59aa29ae75","unresolved":false,"context_lines":[{"line_number":71,"context_line":"# Useful to keep the filtering between API and Database."},{"line_number":72,"context_line":"API_TO_DB_COLUMN_MAP \u003d {\u0027port_id\u0027: \u0027fixed_port_id\u0027}"},{"line_number":73,"context_line":"CORE_ROUTER_ATTRS \u003d (\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027admin_state_up\u0027, \u0027status\u0027)"},{"line_number":74,"context_line":"FIP_ASSOC_MSG \u003d (\u0027FIP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, fixed \u0027"},{"line_number":75,"context_line":"                 \u0027IP: %(fixed_ip)s, port: %(port_id)s.\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_9b185ccd","line":74,"range":{"start_line":74,"start_character":18,"end_line":74,"end_character":21},"updated":"2019-09-04 13:59:23.000000000","message":"FIP should be \"Floating IP\", and that fixed_ip and port looks duplicated, port information can be simple choice. \n\nSo finally how about this:\n\"Floating IP %(fip_addr)s %(assoc)s to/from port %(port_id)s.\"","commit_id":"dca69d55d33ed1d850577a5919c5ced11e715ff0"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"21ef4f1b206a0904a21882f5ab27db59aa29ae75","unresolved":false,"context_lines":[{"line_number":71,"context_line":"# Useful to keep the filtering between API and Database."},{"line_number":72,"context_line":"API_TO_DB_COLUMN_MAP \u003d {\u0027port_id\u0027: \u0027fixed_port_id\u0027}"},{"line_number":73,"context_line":"CORE_ROUTER_ATTRS \u003d (\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027admin_state_up\u0027, \u0027status\u0027)"},{"line_number":74,"context_line":"FIP_ASSOC_MSG \u003d (\u0027FIP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, fixed \u0027"},{"line_number":75,"context_line":"                 \u0027IP: %(fixed_ip)s, port: %(port_id)s.\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7b4480b8","line":74,"range":{"start_line":74,"start_character":44,"end_line":74,"end_character":55},"updated":"2019-09-04 13:59:23.000000000","message":"This is not a generic/common name for neutron. And IMO an IP address is enough for such log.","commit_id":"dca69d55d33ed1d850577a5919c5ced11e715ff0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d48e4830406febbbcac9319ad56951d246c53ba5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"# Useful to keep the filtering between API and Database."},{"line_number":72,"context_line":"API_TO_DB_COLUMN_MAP \u003d {\u0027port_id\u0027: \u0027fixed_port_id\u0027}"},{"line_number":73,"context_line":"CORE_ROUTER_ATTRS \u003d (\u0027id\u0027, \u0027name\u0027, \u0027tenant_id\u0027, \u0027admin_state_up\u0027, \u0027status\u0027)"},{"line_number":74,"context_line":"FIP_ASSOC_MSG \u003d (\u0027FIP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, fixed \u0027"},{"line_number":75,"context_line":"                 \u0027IP: %(fixed_ip)s, port: %(port_id)s.\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5eec1228","line":74,"range":{"start_line":74,"start_character":18,"end_line":74,"end_character":21},"in_reply_to":"7faddb67_9b185ccd","updated":"2019-09-04 14:20:26.000000000","message":"Sure, I\u0027ll add the external address and the port_id, removing the internal fixed_ip.\n\nAnd yes, \"Floating IP\" is much better.","commit_id":"dca69d55d33ed1d850577a5919c5ced11e715ff0"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d55aca3d24cf76a585f022dd0b056564b616f291","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"                        self._update_fip_assoc,"},{"line_number":1435,"context_line":"                        **assoc_result)"},{"line_number":1436,"context_line":"        if old_fixed_port_id !\u003d assoc_result[\u0027fixed_port_id\u0027]:"},{"line_number":1437,"context_line":"            assoc \u003d (\u0027associated\u0027 if assoc_result[\u0027fixed_port_id\u0027]"},{"line_number":1438,"context_line":"                     else \u0027disassociated\u0027)"},{"line_number":1439,"context_line":"            port_id \u003d old_fixed_port_id or assoc_result[\u0027fixed_port_id\u0027]"},{"line_number":1440,"context_line":"            LOG.info(FIP_ASSOC_MSG,"},{"line_number":1441,"context_line":"                     {\u0027fip_id\u0027: assoc_result[\u0027floating_ip_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_1fe67817","line":1438,"range":{"start_line":1437,"start_character":12,"end_line":1438,"end_character":42},"updated":"2019-09-05 16:59:55.000000000","message":"Meta-comment: It would really be nice if it were identified more clearly whether we\u0027re dealing with an association or disassociation. There are callback subscribers to the event emitted at L1432 that care and have to deduce this for themselves, roughly duplicating the same kind of logic you have here.","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f68a67b10950fe4efd817918d80343c2043774db","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"                        self._update_fip_assoc,"},{"line_number":1435,"context_line":"                        **assoc_result)"},{"line_number":1436,"context_line":"        if old_fixed_port_id !\u003d assoc_result[\u0027fixed_port_id\u0027]:"},{"line_number":1437,"context_line":"            assoc \u003d (\u0027associated\u0027 if assoc_result[\u0027fixed_port_id\u0027]"},{"line_number":1438,"context_line":"                     else \u0027disassociated\u0027)"},{"line_number":1439,"context_line":"            port_id \u003d old_fixed_port_id or assoc_result[\u0027fixed_port_id\u0027]"},{"line_number":1440,"context_line":"            LOG.info(FIP_ASSOC_MSG,"},{"line_number":1441,"context_line":"                     {\u0027fip_id\u0027: assoc_result[\u0027floating_ip_id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_e1e85d17","line":1438,"range":{"start_line":1437,"start_character":12,"end_line":1438,"end_character":42},"in_reply_to":"7faddb67_1fe67817","updated":"2019-09-09 10:21:57.000000000","message":"You are right on this and this is something that, if I spot out, I try to change.\n\nLet me push a patch on top of this one changing this. I\u0027ll add you as reviewer as soon as I push it.","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"01b570c422e1738159a9bed14f1ceaebb66ddd9e","unresolved":false,"context_lines":[{"line_number":1407,"context_line":"            assoc_result \u003d self._update_fip_assoc("},{"line_number":1408,"context_line":"                context, fip, floatingip_obj,"},{"line_number":1409,"context_line":"                self._core_plugin.get_port(context.elevated(), fip_port_id))"},{"line_number":1410,"context_line":""},{"line_number":1411,"context_line":"            floatingip_obj.update()"},{"line_number":1412,"context_line":"            floatingip_dict \u003d self._make_floatingip_dict(floatingip_obj)"},{"line_number":1413,"context_line":"            if self._is_dns_integration_supported:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5faad753_a62a408d","line":1410,"updated":"2019-09-11 12:50:47.000000000","message":"super nitty nit: not related change :)","commit_id":"791dc24960f2b5e7b4ebd7d27ec8b8a1e3924e8a"}],"neutron/tests/unit/extensions/test_l3.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3628040b5c4198bcae7d87a97cf70dcc6f94907f","unresolved":false,"context_lines":[{"line_number":4558,"context_line":"class L3DBFloatingIpTestCaseLogging(L3BaseForSepTests, L3NatTestCaseMixin):"},{"line_number":4559,"context_line":""},{"line_number":4560,"context_line":"    MSG \u003d (\u0027Floating IP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, \u0027"},{"line_number":4561,"context_line":"           \u0027port: %(port_id)s.\u0027)"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"    def setUp(self, *args, **kwargs):"},{"line_number":4564,"context_line":"        ext_mgr \u003d L3TestExtensionManagerWithDNS()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_f36ba9ec","line":4561,"updated":"2019-09-05 01:26:43.000000000","message":"l3_db is imported above, so you could use the message definition from there","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f68a67b10950fe4efd817918d80343c2043774db","unresolved":false,"context_lines":[{"line_number":4558,"context_line":"class L3DBFloatingIpTestCaseLogging(L3BaseForSepTests, L3NatTestCaseMixin):"},{"line_number":4559,"context_line":""},{"line_number":4560,"context_line":"    MSG \u003d (\u0027Floating IP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, \u0027"},{"line_number":4561,"context_line":"           \u0027port: %(port_id)s.\u0027)"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"    def setUp(self, *args, **kwargs):"},{"line_number":4564,"context_line":"        ext_mgr \u003d L3TestExtensionManagerWithDNS()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_a6d03bcb","line":4561,"in_reply_to":"7faddb67_3fe1f4fc","updated":"2019-09-09 10:21:57.000000000","message":"Done","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d55aca3d24cf76a585f022dd0b056564b616f291","unresolved":false,"context_lines":[{"line_number":4558,"context_line":"class L3DBFloatingIpTestCaseLogging(L3BaseForSepTests, L3NatTestCaseMixin):"},{"line_number":4559,"context_line":""},{"line_number":4560,"context_line":"    MSG \u003d (\u0027Floating IP %(fip_id)s %(assoc)s. External IP: %(ext_ip)s, \u0027"},{"line_number":4561,"context_line":"           \u0027port: %(port_id)s.\u0027)"},{"line_number":4562,"context_line":""},{"line_number":4563,"context_line":"    def setUp(self, *args, **kwargs):"},{"line_number":4564,"context_line":"        ext_mgr \u003d L3TestExtensionManagerWithDNS()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3fe1f4fc","line":4561,"in_reply_to":"7faddb67_f36ba9ec","updated":"2019-09-05 16:59:55.000000000","message":"+1","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3628040b5c4198bcae7d87a97cf70dcc6f94907f","unresolved":false,"context_lines":[{"line_number":4566,"context_line":"        super(L3DBFloatingIpTestCaseLogging, self).setUp(plugin\u003dplugin,"},{"line_number":4567,"context_line":"                                                         ext_mgr\u003dext_mgr)"},{"line_number":4568,"context_line":"        self._mock_log \u003d mock.patch.object(l3_db, \u0027LOG\u0027)"},{"line_number":4569,"context_line":"        self.mock_log \u003d self._mock_log.start()"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"    def test_create_floatingip_event_logging_port_assoc(self):"},{"line_number":4572,"context_line":"        with self.floatingip_with_assoc() as fip:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_935fd53f","line":4569,"updated":"2019-09-05 01:26:43.000000000","message":"nit: this could all be done at once like L4111","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f68a67b10950fe4efd817918d80343c2043774db","unresolved":false,"context_lines":[{"line_number":4566,"context_line":"        super(L3DBFloatingIpTestCaseLogging, self).setUp(plugin\u003dplugin,"},{"line_number":4567,"context_line":"                                                         ext_mgr\u003dext_mgr)"},{"line_number":4568,"context_line":"        self._mock_log \u003d mock.patch.object(l3_db, \u0027LOG\u0027)"},{"line_number":4569,"context_line":"        self.mock_log \u003d self._mock_log.start()"},{"line_number":4570,"context_line":""},{"line_number":4571,"context_line":"    def test_create_floatingip_event_logging_port_assoc(self):"},{"line_number":4572,"context_line":"        with self.floatingip_with_assoc() as fip:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_8685ffaf","line":4569,"in_reply_to":"7faddb67_935fd53f","updated":"2019-09-09 10:21:57.000000000","message":"Done","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3628040b5c4198bcae7d87a97cf70dcc6f94907f","unresolved":false,"context_lines":[{"line_number":4587,"context_line":"                req \u003d self.new_update_request(\u0027floatingips\u0027, data, fip_id)"},{"line_number":4588,"context_line":"                res \u003d req.get_response(self._api_for_resource(\u0027floatingip\u0027))"},{"line_number":4589,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4590,"context_line":"                msg \u003d self.MSG.format(assoc\u003d\u0027associated\u0027)"},{"line_number":4591,"context_line":"                msg_vars \u003d {\u0027fip_id\u0027: fip[\u0027floatingip\u0027][\u0027id\u0027],"},{"line_number":4592,"context_line":"                            \u0027ext_ip\u0027: fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027],"},{"line_number":4593,"context_line":"                            \u0027port_id\u0027: port[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_96e6e315","line":4590,"updated":"2019-09-05 01:26:43.000000000","message":"I don\u0027t understand why you need this with L4594, or at least my local test didn\u0027t :)","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"d55aca3d24cf76a585f022dd0b056564b616f291","unresolved":false,"context_lines":[{"line_number":4587,"context_line":"                req \u003d self.new_update_request(\u0027floatingips\u0027, data, fip_id)"},{"line_number":4588,"context_line":"                res \u003d req.get_response(self._api_for_resource(\u0027floatingip\u0027))"},{"line_number":4589,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4590,"context_line":"                msg \u003d self.MSG.format(assoc\u003d\u0027associated\u0027)"},{"line_number":4591,"context_line":"                msg_vars \u003d {\u0027fip_id\u0027: fip[\u0027floatingip\u0027][\u0027id\u0027],"},{"line_number":4592,"context_line":"                            \u0027ext_ip\u0027: fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027],"},{"line_number":4593,"context_line":"                            \u0027port_id\u0027: port[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_9f890827","line":4590,"in_reply_to":"7faddb67_96e6e315","updated":"2019-09-05 16:59:55.000000000","message":"Don\u0027t we want the same assertions as at L4577 and L4609?","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f68a67b10950fe4efd817918d80343c2043774db","unresolved":false,"context_lines":[{"line_number":4587,"context_line":"                req \u003d self.new_update_request(\u0027floatingips\u0027, data, fip_id)"},{"line_number":4588,"context_line":"                res \u003d req.get_response(self._api_for_resource(\u0027floatingip\u0027))"},{"line_number":4589,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4590,"context_line":"                msg \u003d self.MSG.format(assoc\u003d\u0027associated\u0027)"},{"line_number":4591,"context_line":"                msg_vars \u003d {\u0027fip_id\u0027: fip[\u0027floatingip\u0027][\u0027id\u0027],"},{"line_number":4592,"context_line":"                            \u0027ext_ip\u0027: fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027],"},{"line_number":4593,"context_line":"                            \u0027port_id\u0027: port[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_a66cbb08","line":4590,"in_reply_to":"7faddb67_96e6e315","updated":"2019-09-09 10:21:57.000000000","message":"This is something inherited from a previous MSG string. This must be removed, thanks!","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f68a67b10950fe4efd817918d80343c2043774db","unresolved":false,"context_lines":[{"line_number":4587,"context_line":"                req \u003d self.new_update_request(\u0027floatingips\u0027, data, fip_id)"},{"line_number":4588,"context_line":"                res \u003d req.get_response(self._api_for_resource(\u0027floatingip\u0027))"},{"line_number":4589,"context_line":"                self.assertEqual(200, res.status_code)"},{"line_number":4590,"context_line":"                msg \u003d self.MSG.format(assoc\u003d\u0027associated\u0027)"},{"line_number":4591,"context_line":"                msg_vars \u003d {\u0027fip_id\u0027: fip[\u0027floatingip\u0027][\u0027id\u0027],"},{"line_number":4592,"context_line":"                            \u0027ext_ip\u0027: fip[\u0027floatingip\u0027][\u0027floating_ip_address\u0027],"},{"line_number":4593,"context_line":"                            \u0027port_id\u0027: port[\u0027port\u0027][\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_06682ff3","line":4590,"in_reply_to":"7faddb67_9f890827","updated":"2019-09-09 10:21:57.000000000","message":"Yes, that was something left behind.","commit_id":"4934995302a5f0beb26f13385138e4b49840eef5"}]}
