)]}'
{"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"2dd23621cf58505c7c8a05c6fae46eac7fdc3e19","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":718,"context_line":"                    return"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def _should_update_dvr_vmarp(self, port_dict):"},{"line_number":721,"context_line":"        \"\"\"True if port_dict describes a valid VM or service port.\"\"\""},{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_4c9ac46f","line":720,"range":{"start_line":720,"start_character":8,"end_line":720,"end_character":32},"updated":"2016-01-05 18:17:40.000000000","message":"Thank you, thank you for this refactor.  I really despise the pattern of passing a string (action) to a method to choose method behaviors.  It really should be done this way.\n\nHowever, would you consider refactoring first and then fixing the problem to help reviewers?  [1]\n\n [1] http://docs.openstack.org/developer/neutron/devref/effective_neutron.html#scoping-your-patch-appropriately","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4164e12a09389c02057323033fe22eb6d3e39c24","unresolved":false,"context_lines":[{"line_number":717,"context_line":"                    notifier(context, router_id, arp_table)"},{"line_number":718,"context_line":"                    return"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def _should_update_dvr_vmarp(self, port_dict):"},{"line_number":721,"context_line":"        \"\"\"True if port_dict describes a valid VM or service port.\"\"\""},{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_1cf7055a","line":720,"range":{"start_line":720,"start_character":8,"end_line":720,"end_character":32},"in_reply_to":"fa69d971_4c9ac46f","updated":"2016-01-06 08:43:36.000000000","message":"Sure thing, Carl.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"2761a6969fda2827eb56128f58c7f7484361f11a","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_aca8208d","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"updated":"2016-01-05 18:15:48.000000000","message":"Instead of calling dvr_vmarp_table_add and dvr_vmarp_table_del from the scheduler we can still maintain the update function call and here in the update we can call individual local functions such as _dvr_vmarp_table_add and _dvr_vmarp_table_del.\n\nThis would introduce less change externally.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4164e12a09389c02057323033fe22eb6d3e39c24","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_1c2aa590","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"in_reply_to":"fa69d971_0cbdacb6","updated":"2016-01-06 08:43:36.000000000","message":"To make sure the change is more isolated I\u0027ll move this to a different patch. I do however think that this change is worthwhile as it makes the code clearer with relatively small cost (there are only 4 calls to the existing dir_vmarp_table_update function, so only 4 calls need changing).","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"9a86bc96e477da30cc70c45e12949d0b82286ff6","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_d3a61aad","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"in_reply_to":"fa69d971_1c2aa590","updated":"2016-01-06 21:32:49.000000000","message":"John when you come up with a new patch to address the split, just make use of this patch.\nI will add you as a co-author.\n\nYou can rebase your changes to that patch.\nhttps://review.openstack.org/#/c/264356/","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"7b92909e6cd128393afff88b1715a8aad7d1c5ee","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_d25586fa","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"in_reply_to":"fa69d971_9dfc1a73","updated":"2016-01-07 17:55:16.000000000","message":"In this case it depends on what patches get merged first. \nAll the related patches will be merged in master and this issue you have just verified in the master branch, so I thought it is better to align with this. This would reduce the number of patches that you will be updated based on merge conflicts that would arise if any of the patches merges first. This is my thoughts.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"2dd23621cf58505c7c8a05c6fae46eac7fdc3e19","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_0cbdacb6","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"in_reply_to":"fa69d971_aca8208d","updated":"2016-01-05 18:17:40.000000000","message":"I agree about minimizing the change but I really like the refactor.  See my comment on L720 (which I made before refreshing and seeing this comment here.)","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"fc000f19497899272fffacf32caf3e4b8280d4e2","unresolved":false,"context_lines":[{"line_number":722,"context_line":"        return (n_utils.is_dvr_serviced(port_dict[\u0027device_owner\u0027]) and"},{"line_number":723,"context_line":"                port_dict[\u0027fixed_ips\u0027])"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def dvr_vmarp_table_add(self, context, orig_port_dict, port_dict):"},{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9dfc1a73","line":725,"range":{"start_line":725,"start_character":2,"end_line":725,"end_character":4},"in_reply_to":"fa69d971_d3a61aad","updated":"2016-01-07 11:32:32.000000000","message":"I am unsure if this is a good idea, since if this fix is something we wish to backport all the way back to stable/kilo, we probably don\u0027t want to backport 5 patches (4 of the link\u0027s dependencies plus this). In this case, 1 \u003e 5.\n\nThe original bug report was for stable/kilo (and the issue was found to also exist in master). If we are not going to backport this to stable/kilo then I\u0027m fine with rebasing on top of Swami\u0027s patches, but if we are it seems like a lot of work can be avoided when backporting by keeping the patches separate. What do you guys think?","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"9d4f57def475af133a125845a3b884eee47c90e9","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        if orig_port_dict:"},{"line_number":730,"context_line":"            changed_fixed_ips \u003d ["},{"line_number":731,"context_line":"                fixed_ip for fixed_ip in port_dict[\u0027fixed_ips\u0027]"},{"line_number":732,"context_line":"                if fixed_ip not in orig_port_dict[\u0027fixed_ips\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_5ec343ed","line":729,"range":{"start_line":729,"start_character":25,"end_line":729,"end_character":26},"updated":"2016-01-05 22:33:38.000000000","message":"This check you can still make it in the calling function, where you are checking for condition to see if the fixed_ips have changed from original_port and the current_port.\nYou don\u0027t need to duplicate it.\nIn that case you can also restrict passing the \"orig_port_dict\" in here.\nJust pass \"port_dict\" based on the condition.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"0af73f1c02926aa16ed29ddfbf4130bacd9e9655","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        if orig_port_dict:"},{"line_number":730,"context_line":"            changed_fixed_ips \u003d ["},{"line_number":731,"context_line":"                fixed_ip for fixed_ip in port_dict[\u0027fixed_ips\u0027]"},{"line_number":732,"context_line":"                if fixed_ip not in orig_port_dict[\u0027fixed_ips\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_295de614","line":729,"range":{"start_line":729,"start_character":25,"end_line":729,"end_character":26},"in_reply_to":"fa69d971_37fd42b4","updated":"2016-01-06 09:05:28.000000000","message":"Also, I think that the resulting code of the whole \"make a copy of the port_dict but remove all but one fixed_ips\" will probably be messier than this \u0027if\u0027 block here. I might be wrong, though.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4164e12a09389c02057323033fe22eb6d3e39c24","unresolved":false,"context_lines":[{"line_number":726,"context_line":"        if not self._should_update_dvr_vmarp(port_dict):"},{"line_number":727,"context_line":"            return"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        if orig_port_dict:"},{"line_number":730,"context_line":"            changed_fixed_ips \u003d ["},{"line_number":731,"context_line":"                fixed_ip for fixed_ip in port_dict[\u0027fixed_ips\u0027]"},{"line_number":732,"context_line":"                if fixed_ip not in orig_port_dict[\u0027fixed_ips\u0027]]"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_37fd42b4","line":729,"range":{"start_line":729,"start_character":25,"end_line":729,"end_character":26},"in_reply_to":"fa69d971_5ec343ed","updated":"2016-01-06 08:43:36.000000000","message":"I thought about this but I think it makes the code a lot more ambiguous. The reason is that, for me, there is only one port_dict that describes the port throughout the entire port-update logic, and it is updated and relied upon to be consistent throughout.\nWhile doing this change in the calling function(s) sure is easy, it would mean that we\u0027ll be forced to create new \u0027fake\u0027 port_dicts - \u0027fake\u0027 in that the \u0027fixed_ips\u0027 field is not full, but a partial subset. This will in turn mean that further down the line devs will have to be aware that port_dict[\u0027fixed_ips\u0027] might be not full, where, and why.\nThis can quite easily lead to wrong code introductions depending on, for example, using port_dict[\u0027fixed_ips\u0027][0], since \"there is only one\".\nWhile the argument that \"this will only occur in functions involving \u0027dir_vmarp_table_add\u0027, this is a slippery slope I do not like at all.","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"cdf63022090b69d611376eb47e58f3b308f4e79c","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_76153047","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"updated":"2016-01-14 07:54:28.000000000","message":"This can be easier to read:\n\n if action \u003d\u003d \u0027add\u0027:\n   notifier \u003d self.l3_rpc_notifier.add_arp_entry\n elif action \u003d\u003d \u0027del\u0027:\n   notifier \u003d self.l3_rpc_notifier.del_arp_entry\n self._generate_arp_table_and_notify_agent(...)","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a00364e3d34f8936d292165acbd83079b3d3b380","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_40990b7b","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"in_reply_to":"da6ed579_2262ed3e","updated":"2016-01-14 23:25:00.000000000","message":"Done","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"dd0777930ddef58e597c59563121c4414fc1592b","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_f8ad6b84","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"in_reply_to":"da6ed579_6d4d443d","updated":"2016-01-14 16:50:14.000000000","message":"but the follow-up won\u0027t be backported, right? Anyway definitely not a blocker. Can be fixed if respin is needed","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0ee5b5a8dd96d857f71494fbaa8b3235b9f068a8","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_6d4d443d","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"in_reply_to":"da6ed579_76153047","updated":"2016-01-14 14:30:19.000000000","message":"The follow-on change in:\n\nhttps://review.openstack.org/#/c/264356/6/neutron/db/l3_dvr_db.py\n\nRemoves the \"add\" and \"del\" so let\u0027s just leave this alone for that change.","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"856a01604a7552300a37c6ad1ab82af8e1417d19","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_af4d663f","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"in_reply_to":"da6ed579_f8ad6b84","updated":"2016-01-14 17:15:37.000000000","message":"I agree with Oleg - it simply looks better...","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"5f965e05b58028263e3784a3c0fd68780d913cee","unresolved":false,"context_lines":[{"line_number":717,"context_line":"            return"},{"line_number":718,"context_line":"        changed_fixed_ips \u003d port_dict[\u0027fixed_ips\u0027]"},{"line_number":719,"context_line":"        for fixed_ip in changed_fixed_ips:"},{"line_number":720,"context_line":"            if action \u003d\u003d \"add\":"},{"line_number":721,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":722,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":723,"context_line":"                    self.l3_rpc_notifier.add_arp_entry)"},{"line_number":724,"context_line":"            elif action \u003d\u003d \"del\":"},{"line_number":725,"context_line":"                self._generate_arp_table_and_notify_agent("},{"line_number":726,"context_line":"                    context, fixed_ip, port_dict[\u0027mac_address\u0027],"},{"line_number":727,"context_line":"                    self.l3_rpc_notifier.del_arp_entry)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"    def delete_csnat_router_interface_ports(self, context,"},{"line_number":730,"context_line":"                                            router, subnet_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6ed579_2262ed3e","line":727,"range":{"start_line":720,"start_character":12,"end_line":727,"end_character":55},"in_reply_to":"da6ed579_f8ad6b84","updated":"2016-01-14 17:39:57.000000000","message":"I don\u0027t think we need to backport the follow on change for this bug.","commit_id":"0ac05d03c3f1c8d0c9a98c1237e67bcadf6ceb4a"}],"neutron/db/l3_dvrscheduler_db.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"2dd23621cf58505c7c8a05c6fae46eac7fdc3e19","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            service_constants.L3_ROUTER_NAT)"},{"line_number":468,"context_line":"        context \u003d kwargs[\u0027context\u0027]"},{"line_number":469,"context_line":"        l3plugin.dvr_update_router_addvm(context, port)"},{"line_number":470,"context_line":"        l3plugin.dvr_vmarp_table_add(context, None, port)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"def _notify_port_delete(event, resource, trigger, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_cc84740c","line":470,"range":{"start_line":470,"start_character":17,"end_line":470,"end_character":36},"updated":"2016-01-05 18:17:40.000000000","message":"Yay!","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"4164e12a09389c02057323033fe22eb6d3e39c24","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            service_constants.L3_ROUTER_NAT)"},{"line_number":468,"context_line":"        context \u003d kwargs[\u0027context\u0027]"},{"line_number":469,"context_line":"        l3plugin.dvr_update_router_addvm(context, port)"},{"line_number":470,"context_line":"        l3plugin.dvr_vmarp_table_add(context, None, port)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"def _notify_port_delete(event, resource, trigger, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_17fefead","line":470,"range":{"start_line":470,"start_character":17,"end_line":470,"end_character":36},"in_reply_to":"fa69d971_4c72c412","updated":"2016-01-06 08:43:36.000000000","message":":\u003e","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"},{"author":{"_account_id":7016,"name":"Swaminathan Vasudevan","email":"swvasude@cisco.com","username":"souminathan"},"change_message_id":"d59c5aa8cdc7de1901746913811bcefb6c0c0675","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            service_constants.L3_ROUTER_NAT)"},{"line_number":468,"context_line":"        context \u003d kwargs[\u0027context\u0027]"},{"line_number":469,"context_line":"        l3plugin.dvr_update_router_addvm(context, port)"},{"line_number":470,"context_line":"        l3plugin.dvr_vmarp_table_add(context, None, port)"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"def _notify_port_delete(event, resource, trigger, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_4c72c412","line":470,"range":{"start_line":470,"start_character":17,"end_line":470,"end_character":36},"in_reply_to":"fa69d971_cc84740c","updated":"2016-01-05 18:22:12.000000000","message":"Got it!","commit_id":"972f3804e106e595409b3d650601f1c4c1bbaffd"}]}
