)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"975e9c16fc75ec7614a107ca5c4a2a4084ca65ed","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DVR: Add action specific functions for arp_entry_update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Update_arp_entry_for_dvr_service_port takes in an"},{"line_number":10,"context_line":"argument for \u0027add\u0027 or \u0027del\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da6ed579_4c6c999c","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"updated":"2016-01-12 10:02:33.000000000","message":"So what is wrong with it?","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"80b232c46a2fcc7c4fda93c916d8a20785237810","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DVR: Add action specific functions for arp_entry_update"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Update_arp_entry_for_dvr_service_port takes in an"},{"line_number":10,"context_line":"argument for \u0027add\u0027 or \u0027del\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da6ed579_cd1707a2","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":28},"in_reply_to":"da6ed579_4c6c999c","updated":"2016-01-12 18:10:42.000000000","message":"This patch was based on the discussion that happened in the patch shown below.\n[1]https://review.openstack.org/#/c/263772/","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"975e9c16fc75ec7614a107ca5c4a2a4084ca65ed","unresolved":false,"context_lines":[{"line_number":10,"context_line":"argument for \u0027add\u0027 or \u0027del\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"},{"line_number":14,"context_line":"in the action argument."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I377591074d70ae81d4c46e990dc1ff106192ef69"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da6ed579_cc0e49e5","line":14,"range":{"start_line":13,"start_character":34,"end_line":14,"end_character":22},"updated":"2016-01-12 10:02:33.000000000","message":"What is the benefit?","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"80b232c46a2fcc7c4fda93c916d8a20785237810","unresolved":false,"context_lines":[{"line_number":10,"context_line":"argument for \u0027add\u0027 or \u0027del\u0027."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"},{"line_number":14,"context_line":"in the action argument."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I377591074d70ae81d4c46e990dc1ff106192ef69"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"da6ed579_0d1e7fba","line":14,"range":{"start_line":13,"start_character":34,"end_line":14,"end_character":22},"in_reply_to":"da6ed579_cc0e49e5","updated":"2016-01-12 18:10:42.000000000","message":"See the comment by carl_baldwin on the above patch.","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"ee153e521d7438a0dc5f531425f112b224df1b30","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"},{"line_number":14,"context_line":"in the action argument."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I377591074d70ae81d4c46e990dc1ff106192ef69"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a68dd71_38de276e","line":14,"updated":"2016-01-21 04:38:07.000000000","message":"please mention the motivation of the change in the commit message.","commit_id":"0ecc8bef015c100be6b76b8ddafca4ac0ea940ee"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"009652a0d5ad17aec0e228aabe0e100989fa328e","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"},{"line_number":14,"context_line":"in the action argument."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I377591074d70ae81d4c46e990dc1ff106192ef69"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a68dd71_de38ea3f","line":14,"in_reply_to":"9a68dd71_38de276e","updated":"2016-01-21 19:23:51.000000000","message":"Hi Yamamoto there was a comment by Carl_baldwin on the recent bug fix patch that lead to this new patch.\n\n\"I really despise the pattern of passing a string (action) to a method to choose method behaviors\". \n\n- Instead of making too many changes to that back and keeping it simple for backporting we added a new patch to address the refactor.\n\nHope this helps.","commit_id":"0ecc8bef015c100be6b76b8ddafca4ac0ea940ee"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7af4cda375523c12b401e168e7b6922c3483a3f1","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch will provide two separate functions to"},{"line_number":13,"context_line":"update and delete the arp entries instead of passing"},{"line_number":14,"context_line":"in the action argument."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Co-Authored-By: John Schwarz \u003cjschwarz@redhat.com\u003e"},{"line_number":17,"context_line":"Change-Id: I377591074d70ae81d4c46e990dc1ff106192ef69"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a68dd71_d9e8f212","line":14,"in_reply_to":"9a68dd71_de38ea3f","updated":"2016-01-22 04:14:26.000000000","message":"ok, it seems like a matter of taste and i don\u0027t have a strong preference on either styles.\n(thus i\u0027m removing my vote)\n\ni still think it\u0027s better to mention it in the commit message though.\n\ndo you have any plan to make these functions more different?  in that case this change can make sense.","commit_id":"0ecc8bef015c100be6b76b8ddafca4ac0ea940ee"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"641a4c86b6b02323d2507f8a82cdc29f84a20a9e","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            self._populate_subnets_for_ports(context, port_list)"},{"line_number":685,"context_line":"        return port_list"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def _should_update_arp_entry_for_dvr_service_port("},{"line_number":688,"context_line":"        self, port_dict):"},{"line_number":689,"context_line":"        # Check this is a valid VM or service port"},{"line_number":690,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_02a3609e","line":687,"updated":"2016-01-13 22:19:51.000000000","message":"nit: I think this can fit in one line too.","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5e920ad50a21dad4af731d6efec309798b1b400e","unresolved":false,"context_lines":[{"line_number":708,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def update_arp_entry_for_dvr_service_port("},{"line_number":711,"context_line":"            self, context, port_dict):"},{"line_number":712,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        When a dvr service port goes up, look for the DVR router on"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_9ffa4b42","line":711,"updated":"2016-01-13 21:59:13.000000000","message":"nit: this can fit on one line","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5e920ad50a21dad4af731d6efec309798b1b400e","unresolved":false,"context_lines":[{"line_number":721,"context_line":"            context, port_dict, self.l3_rpc_notifier.add_arp_entry)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def delete_arp_entry_for_dvr_service_port("},{"line_number":724,"context_line":"            self, context, port_dict):"},{"line_number":725,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        When a dvr service port goes down, look for the DVR"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_7f9c370f","line":724,"updated":"2016-01-13 21:59:13.000000000","message":"ditto","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"975e9c16fc75ec7614a107ca5c4a2a4084ca65ed","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                                 \u0027subnet_id\u0027: subnet}"},{"line_number":708,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def update_arp_entry_for_dvr_service_port("},{"line_number":711,"context_line":"            self, context, port_dict):"},{"line_number":712,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        When a dvr service port goes up, look for the DVR router on"},{"line_number":715,"context_line":"        the port\u0027s subnet, and send the ARP details to all"},{"line_number":716,"context_line":"        L3 agents hosting the router to add it."},{"line_number":717,"context_line":"        \"\"\""},{"line_number":718,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":719,"context_line":"            return"},{"line_number":720,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":721,"context_line":"            context, port_dict, self.l3_rpc_notifier.add_arp_entry)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def delete_arp_entry_for_dvr_service_port("},{"line_number":724,"context_line":"            self, context, port_dict):"},{"line_number":725,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        When a dvr service port goes down, look for the DVR"},{"line_number":728,"context_line":"        router on the port\u0027s subnet, and send the ARP details to all"},{"line_number":729,"context_line":"        L3 agents hosting the router to delete it."},{"line_number":730,"context_line":"        \"\"\""},{"line_number":731,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":732,"context_line":"            return"},{"line_number":733,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":734,"context_line":"            context, port_dict, self.l3_rpc_notifier.del_arp_entry)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":737,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_0cd3013a","line":734,"range":{"start_line":710,"start_character":4,"end_line":734,"end_character":67},"updated":"2016-01-12 10:02:33.000000000","message":"Not happy with code duplication here","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"80b232c46a2fcc7c4fda93c916d8a20785237810","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                                 \u0027subnet_id\u0027: subnet}"},{"line_number":708,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def update_arp_entry_for_dvr_service_port("},{"line_number":711,"context_line":"            self, context, port_dict):"},{"line_number":712,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        When a dvr service port goes up, look for the DVR router on"},{"line_number":715,"context_line":"        the port\u0027s subnet, and send the ARP details to all"},{"line_number":716,"context_line":"        L3 agents hosting the router to add it."},{"line_number":717,"context_line":"        \"\"\""},{"line_number":718,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":719,"context_line":"            return"},{"line_number":720,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":721,"context_line":"            context, port_dict, self.l3_rpc_notifier.add_arp_entry)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def delete_arp_entry_for_dvr_service_port("},{"line_number":724,"context_line":"            self, context, port_dict):"},{"line_number":725,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        When a dvr service port goes down, look for the DVR"},{"line_number":728,"context_line":"        router on the port\u0027s subnet, and send the ARP details to all"},{"line_number":729,"context_line":"        L3 agents hosting the router to delete it."},{"line_number":730,"context_line":"        \"\"\""},{"line_number":731,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":732,"context_line":"            return"},{"line_number":733,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":734,"context_line":"            context, port_dict, self.l3_rpc_notifier.del_arp_entry)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":737,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_2d8a63c0","line":734,"range":{"start_line":710,"start_character":4,"end_line":734,"end_character":67},"in_reply_to":"da6ed579_0cd3013a","updated":"2016-01-12 18:10:42.000000000","message":"Again it is based on the comment posted on the patch.\nhttps://review.openstack.org/#/c/263772/","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"30d8015572e7940da11f3fa578b12b9dd2fbfca4","unresolved":false,"context_lines":[{"line_number":707,"context_line":"                                 \u0027subnet_id\u0027: subnet}"},{"line_number":708,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"    def update_arp_entry_for_dvr_service_port("},{"line_number":711,"context_line":"            self, context, port_dict):"},{"line_number":712,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        When a dvr service port goes up, look for the DVR router on"},{"line_number":715,"context_line":"        the port\u0027s subnet, and send the ARP details to all"},{"line_number":716,"context_line":"        L3 agents hosting the router to add it."},{"line_number":717,"context_line":"        \"\"\""},{"line_number":718,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":719,"context_line":"            return"},{"line_number":720,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":721,"context_line":"            context, port_dict, self.l3_rpc_notifier.add_arp_entry)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    def delete_arp_entry_for_dvr_service_port("},{"line_number":724,"context_line":"            self, context, port_dict):"},{"line_number":725,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":726,"context_line":""},{"line_number":727,"context_line":"        When a dvr service port goes down, look for the DVR"},{"line_number":728,"context_line":"        router on the port\u0027s subnet, and send the ARP details to all"},{"line_number":729,"context_line":"        L3 agents hosting the router to delete it."},{"line_number":730,"context_line":"        \"\"\""},{"line_number":731,"context_line":"        if not self._should_update_arp_entry_for_dvr_service_port(port_dict):"},{"line_number":732,"context_line":"            return"},{"line_number":733,"context_line":"        self.generate_arp_table_and_notify_agent("},{"line_number":734,"context_line":"            context, port_dict, self.l3_rpc_notifier.del_arp_entry)"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":737,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_db59ca5b","line":734,"range":{"start_line":710,"start_character":4,"end_line":734,"end_character":67},"in_reply_to":"da6ed579_2d8a63c0","updated":"2016-01-13 16:14:26.000000000","message":"ok I can live with it","commit_id":"db0bf2b554f64215c144db4c79df780326213a7b"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c2450d1502665d7ce564cc7453462ff57d929b18","unresolved":false,"context_lines":[{"line_number":716,"context_line":"            self._generate_arp_table_and_notify_agent("},{"line_number":717,"context_line":"                context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":718,"context_line":"                self.l3_rpc_notifier.add_arp_entry)"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def delete_arp_entry_for_dvr_service_port(self, context, port_dict):"},{"line_number":721,"context_line":"        \"\"\"Notify L3 agents of ARP table entry for dvr service port."},{"line_number":722,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5a5ae5dd_899c4b5e","line":719,"updated":"2016-02-05 10:35:46.000000000","message":"this is a lot of code duplication when the only difference is the self.l3_rpc_notifier param\n\n\ndef update_arp_entry_for_dvr_service_port(self, context, port_dict):\n    self._change_arp_entry_for_dvr_service_port(self.l3_rpc_notifier.add_arp_entry, context, port_dict)\n\ndef delete_arp_entry_for_dvr_service_port(self, context, port_dict):\n    self._change_arp_entry_for_dvr_service_port(self.l3_rpc_notifier.del_arp_entry, context, port_dict)\n\ndef _change_arp_entry_for_dvr_service_port(self, method, context, port_dict):\n    if not self._should_update...\n       return\n    changed_fixed_ips \u003d ...\n    for fixed_ip in change...\n        self._generate_arp_table_and_notify_agent(\n            context, fixed_ip, port_dict[\u0027mac_address\u0027], method)","commit_id":"0ecc8bef015c100be6b76b8ddafca4ac0ea940ee"}]}
