)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"2ddd740c35de3086237d4bdfd1ad7c9409e3a078","unresolved":false,"context_lines":[{"line_number":12,"context_line":"port. This causes inconsistencies (while configuring anti-spoofing rules)"},{"line_number":13,"context_line":"for external controllers (like OpenDaylight) as the dhcp port info"},{"line_number":14,"context_line":"in controller does not match with the dhcp port info in Neutron db."},{"line_number":15,"context_line":"This patch addressess this issue by sending an ML2 port_update notification"},{"line_number":16,"context_line":"when the dhcp port is updated with IPv6 auto address."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1536998"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_c00d7b3f","line":15,"updated":"2016-02-04 08:17:30.000000000","message":"+1. This is a bit misleading because it\u0027s just a regular core plugin port_update call. It\u0027s not a notification in the context of notification mechanisms available in Neutron (callbacks, AMQP messages).","commit_id":"e4f5dd04c73c051e14750a9648a425085ebc8e4c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a70e1299fbb51e6a92d75004fa751934429ba5f0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"port. This causes inconsistencies (while configuring anti-spoofing rules)"},{"line_number":13,"context_line":"for external controllers (like OpenDaylight) as the dhcp port info"},{"line_number":14,"context_line":"in controller does not match with the dhcp port info in Neutron db."},{"line_number":15,"context_line":"This patch addressess this issue by sending an ML2 port_update notification"},{"line_number":16,"context_line":"when the dhcp port is updated with IPv6 auto address."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1536998"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_d29c9e6b","line":15,"range":{"start_line":15,"start_character":33,"end_line":15,"end_character":62},"updated":"2016-02-03 14:32:58.000000000","message":"Nit: by having the plugin send a port_update","commit_id":"e4f5dd04c73c051e14750a9648a425085ebc8e4c"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"99f3db7480212fc43811d29a7896be21d8729c12","unresolved":false,"context_lines":[{"line_number":12,"context_line":"port. This causes inconsistencies (while configuring anti-spoofing rules)"},{"line_number":13,"context_line":"for external controllers (like OpenDaylight) as the dhcp port info"},{"line_number":14,"context_line":"in controller does not match with the dhcp port info in Neutron db."},{"line_number":15,"context_line":"This patch addressess this issue by sending an ML2 port_update notification"},{"line_number":16,"context_line":"when the dhcp port is updated with IPv6 auto address."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1536998"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a5ae5dd_db9fae4e","line":15,"in_reply_to":"5a5ae5dd_c00d7b3f","updated":"2016-02-04 08:27:51.000000000","message":"Sure @Henry and @Kevin, thanks. Updated the commit message in patchset#3.","commit_id":"e4f5dd04c73c051e14750a9648a425085ebc8e4c"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"4a2f5a296edbb48a60e4fccbb7de1a9f3d0a46ac","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                subnet, ipam_subnet)"},{"line_number":588,"context_line":"            for port_id in updated_ports:"},{"line_number":589,"context_line":"                port_info \u003d {\u0027port\u0027: {\u0027id\u0027: port_id}}"},{"line_number":590,"context_line":"                plugin.update_port(context, port_id, port_info)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        return self._make_subnet_dict(subnet, context\u003dcontext)"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_df483030","line":590,"updated":"2016-02-03 11:03:16.000000000","message":"no, I understand the issue. What I\u0027m saying is call \u0027self.update_port\u0027. Don\u0027t ask for the core plugin from the neutron manager because we are the core plugin in this context.","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"f5419bd5c2e8f216f0edde06274517bc8748d8fa","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                subnet, ipam_subnet)"},{"line_number":588,"context_line":"            for port_id in updated_ports:"},{"line_number":589,"context_line":"                port_info \u003d {\u0027port\u0027: {\u0027id\u0027: port_id}}"},{"line_number":590,"context_line":"                plugin.update_port(context, port_id, port_info)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        return self._make_subnet_dict(subnet, context\u003dcontext)"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_48b9e92d","line":590,"updated":"2016-02-03 10:24:19.000000000","message":"we are the plugin! self.update_port","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"630dd721e6e808df2fc6b62c45fcc72d4de5fbb9","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                subnet, ipam_subnet)"},{"line_number":588,"context_line":"            for port_id in updated_ports:"},{"line_number":589,"context_line":"                port_info \u003d {\u0027port\u0027: {\u0027id\u0027: port_id}}"},{"line_number":590,"context_line":"                plugin.update_port(context, port_id, port_info)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        return self._make_subnet_dict(subnet, context\u003dcontext)"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_a8797d31","line":590,"in_reply_to":"5a5ae5dd_48b9e92d","updated":"2016-02-03 10:30:37.000000000","message":"Right Kevin. But self.update_port is never called. \nipam driver is simply updating the dhcp port with the IPv6 auto address in Neutron DB - Please see L421 @https://review.openstack.org/#/c/271223/1/neutron/db/ipam_non_pluggable_backend.py\n\nSteps to reproduce:\n1. Start fresh (i.e., no routers/networks/subnets/ports).\n2. Create a neutron tenant network (say t1)\n3. Create an IPv4 subnet (say s1 with CIDR 10.0.0.0/24) on the network t1.\n4. Create an IPv6 SLAAC subnet (say s2 with 2001:db8::/64) on the network t1.\nAfter step 3 above, as you know, a dhcp port is created with an ip-address of 10.0.0.2\nAfter step 4, the same dhcp port is updated with an IPv6 auto-address. This is updated by the ipam driver. \nHowever, there is no port-update event sent out for external controllers like ODL. \nSo we could see that dhcp port info in ODL controller (i.e., MDSAL) is not updated (i.e., in Sync) with the dhcp port in Neutron db.","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"95e0c91ae1586a0269c1cb00189fe96ea7e26496","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                subnet, ipam_subnet)"},{"line_number":588,"context_line":"            for port_id in updated_ports:"},{"line_number":589,"context_line":"                port_info \u003d {\u0027port\u0027: {\u0027id\u0027: port_id}}"},{"line_number":590,"context_line":"                plugin.update_port(context, port_id, port_info)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        return self._make_subnet_dict(subnet, context\u003dcontext)"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_4b79de92","line":590,"in_reply_to":"5a5ae5dd_bfb0d48c","updated":"2016-02-03 12:32:45.000000000","message":"Ok thanks very much @Kevin and @Ajo for reviewing and providing your comments. I\u0027ll update the patch.","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"},{"author":{"_account_id":8788,"name":"Miguel Angel Ajo","email":"mangelajo@redhat.com","username":"mangelajo"},"change_message_id":"306e704cee1ecd70a7ca5f8bf8eb8a8121ed4acc","unresolved":false,"context_lines":[{"line_number":587,"context_line":"                                subnet, ipam_subnet)"},{"line_number":588,"context_line":"            for port_id in updated_ports:"},{"line_number":589,"context_line":"                port_info \u003d {\u0027port\u0027: {\u0027id\u0027: port_id}}"},{"line_number":590,"context_line":"                plugin.update_port(context, port_id, port_info)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        return self._make_subnet_dict(subnet, context\u003dcontext)"},{"line_number":593,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_bfb0d48c","line":590,"in_reply_to":"5a5ae5dd_df483030","updated":"2016-02-03 11:19:55.000000000","message":"Oh right!!! ;)","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d47556784c81be638819a346f96bec7cb086caba","unresolved":false,"context_lines":[{"line_number":4021,"context_line":"                self.assertEqual(1, len(port[\u0027port\u0027][\u0027fixed_ips\u0027]))"},{"line_number":4022,"context_line":"            else:"},{"line_number":4023,"context_line":"                # Confirm that the port has been updated with an address"},{"line_number":4024,"context_line":"                # from the new auto-address subnet"},{"line_number":4025,"context_line":"                self.assertTrue(mock_updated_port.called)"},{"line_number":4026,"context_line":"                self.assertEqual(port[\u0027port\u0027][\u0027id\u0027],"},{"line_number":4027,"context_line":"                                 mock_updated_port.call_args[0][1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_5fbf60d0","line":4024,"updated":"2016-02-03 11:06:07.000000000","message":"mock_updated_port.assert_called_with(mock.ANY, port[\u0027port\u0027][\u0027id\u0027], mock.ANY)","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"95e0c91ae1586a0269c1cb00189fe96ea7e26496","unresolved":false,"context_lines":[{"line_number":4021,"context_line":"                self.assertEqual(1, len(port[\u0027port\u0027][\u0027fixed_ips\u0027]))"},{"line_number":4022,"context_line":"            else:"},{"line_number":4023,"context_line":"                # Confirm that the port has been updated with an address"},{"line_number":4024,"context_line":"                # from the new auto-address subnet"},{"line_number":4025,"context_line":"                self.assertTrue(mock_updated_port.called)"},{"line_number":4026,"context_line":"                self.assertEqual(port[\u0027port\u0027][\u0027id\u0027],"},{"line_number":4027,"context_line":"                                 mock_updated_port.call_args[0][1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a5ae5dd_cb65cee1","line":4024,"in_reply_to":"5a5ae5dd_5fbf60d0","updated":"2016-02-03 12:32:45.000000000","message":"Done","commit_id":"4535cf837204bedaa82dadefa07093b1f757bdad"}]}
