)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c63daed3878e13c21e02a8782ae4a8699ce69369","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In this patch we also move ra_confs to agent/l3/config.py"},{"line_number":14,"context_line":"to avoid mixed usage of cfg.CONF and agent_conf."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially Implements: blueprint mtu-selection-and-advertisement"},{"line_number":17,"context_line":"Closes-Bug: #1495444"},{"line_number":18,"context_line":"Change-Id: I50d40cd3b8eabf1899461a80e729d5bd1e727f28"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a710552_6cf88e7d","line":16,"updated":"2015-12-14 20:31:06.000000000","message":"The hyperlink this creates can\u0027t find the corresponding blueprint, I\u0027d like to see that fixed since I can\u0027t remember if the blueprint was approved yet.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"c2b9191bd3f5ea32c89c488fda473c2d25c20f58","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In this patch we also move ra_confs to agent/l3/config.py"},{"line_number":14,"context_line":"to avoid mixed usage of cfg.CONF and agent_conf."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially Implements: blueprint mtu-selection-and-advertisement"},{"line_number":17,"context_line":"Closes-Bug: #1495444"},{"line_number":18,"context_line":"Change-Id: I50d40cd3b8eabf1899461a80e729d5bd1e727f28"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a710552_c95b9e53","line":16,"in_reply_to":"5a710552_6cf88e7d","updated":"2015-12-15 07:16:13.000000000","message":"It looks like an issue with launchpad as the link[1] seems to be fine. \nEven if I try to manually search for the BP in Launchpad it does not point to the BP. \n[1] https://blueprints.launchpad.net/openstack/?searchtext\u003dmtu-selection-and-advertisement\n\nThe BP is approved and it implements the features in phases. Couple of features (part of BP) were already implemented in Liberty release. This patch has the support for advertising MTU using IPv6 RAs. Please see [2] and [3]\n[2] https://blueprints.launchpad.net/neutron/+spec/mtu-selection-and-advertisement\n[3] https://github.com/openstack/neutron-specs/blob/master/specs/kilo/mtu-selection-and-advertisement.rst","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1c888dd7b92ccc83953960dd7e032c61f1c9d229","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In this patch we also move ra_confs to agent/l3/config.py"},{"line_number":14,"context_line":"to avoid mixed usage of cfg.CONF and agent_conf."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Partially Implements: blueprint mtu-selection-and-advertisement"},{"line_number":17,"context_line":"Closes-Bug: #1495444"},{"line_number":18,"context_line":"Change-Id: I50d40cd3b8eabf1899461a80e729d5bd1e727f28"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a710552_1f83f357","line":16,"in_reply_to":"5a710552_c95b9e53","updated":"2015-12-15 18:00:58.000000000","message":"@Sridhar - thanks for the info, guess it is some issue with launchpad","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"}],"neutron/agent/l3/config.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b04df787e9d9eb6cb6148a2126fd7020bf3c651a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"               help\u003d_(\u0027Iptables mangle mark used to mark ingress from \u0027"},{"line_number":101,"context_line":"                      \u0027external network. This mark will be masked with \u0027"},{"line_number":102,"context_line":"                      \u00270xffff so that only the lower 16 bits will be used.\u0027)),"},{"line_number":103,"context_line":"    cfg.StrOpt(\u0027ra_confs\u0027,"},{"line_number":104,"context_line":"               default\u003d\u0027$state_path/ra\u0027,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Location to store IPv6 RA config files\u0027)),"},{"line_number":106,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_48c3ad89","line":103,"updated":"2016-01-10 15:41:49.000000000","message":"i think that you should do this in a separate patch set.","commit_id":"d5b2e0fbed2620a0066564872808d8e00f4ec04c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ebe185463a93d047bc79e7169d237c641d9080c0","unresolved":false,"context_lines":[{"line_number":100,"context_line":"               help\u003d_(\u0027Iptables mangle mark used to mark ingress from \u0027"},{"line_number":101,"context_line":"                      \u0027external network. This mark will be masked with \u0027"},{"line_number":102,"context_line":"                      \u00270xffff so that only the lower 16 bits will be used.\u0027)),"},{"line_number":103,"context_line":"    cfg.StrOpt(\u0027ra_confs\u0027,"},{"line_number":104,"context_line":"               default\u003d\u0027$state_path/ra\u0027,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Location to store IPv6 RA config files\u0027)),"},{"line_number":106,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_6fded312","line":103,"in_reply_to":"da6ed579_48147bf4","updated":"2016-01-13 17:25:15.000000000","message":"I\u0027m not sure you actually have to do it this way, I have a related patch at https://review.openstack.org/#/c/266613/ that registers RA and PD options correctly in the l3-agent while keeping them in their respective files.","commit_id":"d5b2e0fbed2620a0066564872808d8e00f4ec04c"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"0b2d07aa497c3da30780ff08b79da83f78feee58","unresolved":false,"context_lines":[{"line_number":100,"context_line":"               help\u003d_(\u0027Iptables mangle mark used to mark ingress from \u0027"},{"line_number":101,"context_line":"                      \u0027external network. This mark will be masked with \u0027"},{"line_number":102,"context_line":"                      \u00270xffff so that only the lower 16 bits will be used.\u0027)),"},{"line_number":103,"context_line":"    cfg.StrOpt(\u0027ra_confs\u0027,"},{"line_number":104,"context_line":"               default\u003d\u0027$state_path/ra\u0027,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Location to store IPv6 RA config files\u0027)),"},{"line_number":106,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa69d971_c8647dba","line":103,"in_reply_to":"fa69d971_48c3ad89","updated":"2016-01-10 15:48:40.000000000","message":"Its a small change @gary which was discussed in patchset6. Please take a look at it - https://review.openstack.org/#/c/244722/6/neutron/agent/linux/ra.py","commit_id":"d5b2e0fbed2620a0066564872808d8e00f4ec04c"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a2cb54a75dd0c8eb14bb1f89c51f9c2172f9b321","unresolved":false,"context_lines":[{"line_number":100,"context_line":"               help\u003d_(\u0027Iptables mangle mark used to mark ingress from \u0027"},{"line_number":101,"context_line":"                      \u0027external network. This mark will be masked with \u0027"},{"line_number":102,"context_line":"                      \u00270xffff so that only the lower 16 bits will be used.\u0027)),"},{"line_number":103,"context_line":"    cfg.StrOpt(\u0027ra_confs\u0027,"},{"line_number":104,"context_line":"               default\u003d\u0027$state_path/ra\u0027,"},{"line_number":105,"context_line":"               help\u003d_(\u0027Location to store IPv6 RA config files\u0027)),"},{"line_number":106,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_48147bf4","line":103,"in_reply_to":"fa69d971_c8647dba","updated":"2016-01-12 12:47:30.000000000","message":"I am OK with either split or no split. If you want my opinion I say it\u0027s easier to just go with this one patch.","commit_id":"d5b2e0fbed2620a0066564872808d8e00f4ec04c"}],"neutron/agent/l3/router_info.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bbfdf299f15a132fe4c660282c1d08681c74d8a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\u0027Spawning radvd daemon in router device: %s\u0027, self.router_id)"},{"line_number":365,"context_line":"        if not internal_ports:"},{"line_number":366,"context_line":"            internal_ports \u003d self.internal_ports"},{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_ee55ffc5","line":367,"updated":"2015-11-16 07:39:54.000000000","message":"would it not be worthwhile considering having the mtu on the ports or on a global data structure. having a blocking call operation for each of the internal ports could have some serious performance implications","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"12ca69385fa740a10a3c0a4bbacec07cf7a59e50","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\u0027Spawning radvd daemon in router device: %s\u0027, self.router_id)"},{"line_number":365,"context_line":"        if not internal_ports:"},{"line_number":366,"context_line":"            internal_ports \u003d self.internal_ports"},{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_d27bd28a","line":367,"in_reply_to":"ba8a016a_0d68e6f4","updated":"2015-11-18 14:56:10.000000000","message":"I like the idea.","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"7a1ad72dddeb825ded4e9a802868f5c8fd58f718","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\u0027Spawning radvd daemon in router device: %s\u0027, self.router_id)"},{"line_number":365,"context_line":"        if not internal_ports:"},{"line_number":366,"context_line":"            internal_ports \u003d self.internal_ports"},{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b59dd8bd","line":367,"in_reply_to":"ba8a016a_d27bd28a","updated":"2015-11-18 15:13:20.000000000","message":"thanks for your review comments @Robert.\n\nI\u0027ll update the patch accordingly.","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"4ba20f9276961fe55fea3227d013dc532e6290a1","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        LOG.debug(\u0027Spawning radvd daemon in router device: %s\u0027, self.router_id)"},{"line_number":365,"context_line":"        if not internal_ports:"},{"line_number":366,"context_line":"            internal_ports \u003d self.internal_ports"},{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_0d68e6f4","line":367,"in_reply_to":"da85f559_ee55ffc5","updated":"2015-11-16 12:41:27.000000000","message":"Thanks @gary, I thought about this approach, but had a feeling that people may not like including mtu (part of network dict) along with port info. \nBut, I agree with you that by taking such an approach, we can avoid the additional rpc calls to read the network details and it would be a clean solution. If you think its fine to include network_mtu in port dict, I will update the patch accordingly. Please provide your comments.\n\nJust to be aligned, I\u0027m saying that similar to the way we are populating the subnet info in the ports [1], the idea is to populate the \u0027mtu\u0027 (as network_mtu) info in the port details.\n[1] https://github.com/openstack/neutron/blob/master/neutron/db/l3_db.py#L1219","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8bbfdf299f15a132fe4c660282c1d08681c74d8a","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"},{"line_number":371,"context_line":"                               port[\u0027network_id\u0027])"},{"line_number":372,"context_line":"                    port[\u0027network_mtu\u0027] \u003d net_info[\u0027mtu\u0027]"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_8e5b13f6","line":370,"updated":"2015-11-16 07:39:54.000000000","message":"or at least cache this data so that you will not need to query N times to get the same network information","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"4ba20f9276961fe55fea3227d013dc532e6290a1","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        if self.agent_conf.advertise_mtu:"},{"line_number":368,"context_line":"            for port in internal_ports:"},{"line_number":369,"context_line":"                if self._port_has_ipv6_subnet(port):"},{"line_number":370,"context_line":"                    net_info \u003d self.plugin_rpc.get_network_info(self.context,"},{"line_number":371,"context_line":"                               port[\u0027network_id\u0027])"},{"line_number":372,"context_line":"                    port[\u0027network_mtu\u0027] \u003d net_info[\u0027mtu\u0027]"},{"line_number":373,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_6d7732d5","line":370,"in_reply_to":"da85f559_8e5b13f6","updated":"2015-11-16 12:41:27.000000000","message":"If the above approach is not recommended, I will update the patch to cache the network details.","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"}],"neutron/agent/linux/ra.py":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"12ca69385fa740a10a3c0a4bbacec07cf7a59e50","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   {% if network_mtu %}"},{"line_number":47,"context_line":"   AdvLinkMTU {{network_mtu}};"},{"line_number":48,"context_line":"   {% endif %}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {% if constants.DHCPV6_STATELESS in ra_modes %}"},{"line_number":51,"context_line":"   AdvOtherConfigFlag on;"},{"line_number":52,"context_line":"   {% endif %}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_72c8e6a8","line":49,"updated":"2015-11-18 14:56:10.000000000","message":"I\u0027m not sure. If mtu has been advertised by dhcp, does it still need to be advertised in here?","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"c84dbc56a6015fbbbe2bee6bc1aebf0ce9dbd3b2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   {% if network_mtu %}"},{"line_number":47,"context_line":"   AdvLinkMTU {{network_mtu}};"},{"line_number":48,"context_line":"   {% endif %}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {% if constants.DHCPV6_STATELESS in ra_modes %}"},{"line_number":51,"context_line":"   AdvOtherConfigFlag on;"},{"line_number":52,"context_line":"   {% endif %}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_4613a45b","line":49,"in_reply_to":"ba8a016a_5577ccd2","updated":"2015-11-18 15:45:26.000000000","message":"Not sure I completely understand your comments. https://github.com/openstack/neutron/blob/master/neutron/agent/linux/dhcp.py#L373. MTU is not per subnet. \n\nI think It doesn\u0027t hurt to advertise in both places as long as they are consistent.","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"7a1ad72dddeb825ded4e9a802868f5c8fd58f718","unresolved":false,"context_lines":[{"line_number":46,"context_line":"   {% if network_mtu %}"},{"line_number":47,"context_line":"   AdvLinkMTU {{network_mtu}};"},{"line_number":48,"context_line":"   {% endif %}"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"   {% if constants.DHCPV6_STATELESS in ra_modes %}"},{"line_number":51,"context_line":"   AdvOtherConfigFlag on;"},{"line_number":52,"context_line":"   {% endif %}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_5577ccd2","line":49,"in_reply_to":"ba8a016a_72c8e6a8","updated":"2015-11-18 15:13:20.000000000","message":"Normally it is recommended to advertise the MTU info as part of RAs. MTU info specified in Router Advts is processed by Kernel and does not require any additional packages - It works even on Cirros VM.\n\nOTOH, I don\u0027t think we are advertising the MTU using dnsmasq for IPv6 DHCPv6 subnets.","commit_id":"27eeb7c7e0fc2ed083e1f80f4cf8d541782bbf94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a8ef8d2c2c3163aa687de474a22f979e32b889bd","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    subnet[\u0027ipv6_ra_mode\u0027] \u003d\u003d constants.DHCPV6_STATELESS]"},{"line_number":97,"context_line":"            interface_name \u003d self._dev_name_helper(p[\u0027id\u0027])"},{"line_number":98,"context_line":"            if self.agent_conf.advertise_mtu:"},{"line_number":99,"context_line":"                network_mtu \u003d p.get(\u0027mtu\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            buf.write(\u0027%s\u0027 % CONFIG_TEMPLATE.render("},{"line_number":102,"context_line":"                ra_modes\u003dlist(ra_modes),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_5c4eac3b","line":99,"updated":"2015-11-20 15:09:53.000000000","message":"Consider p.get(\u0027mtu\u0027, 0)","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"e022c50e65e6ce9c5bca2d1a22755e56df3613f1","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    subnet[\u0027ipv6_ra_mode\u0027] \u003d\u003d constants.DHCPV6_STATELESS]"},{"line_number":97,"context_line":"            interface_name \u003d self._dev_name_helper(p[\u0027id\u0027])"},{"line_number":98,"context_line":"            if self.agent_conf.advertise_mtu:"},{"line_number":99,"context_line":"                network_mtu \u003d p.get(\u0027mtu\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            buf.write(\u0027%s\u0027 % CONFIG_TEMPLATE.render("},{"line_number":102,"context_line":"                ra_modes\u003dlist(ra_modes),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_4c17c254","line":99,"in_reply_to":"ba8a016a_5c4eac3b","updated":"2015-11-20 17:56:34.000000000","message":"Done","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"022e4ecafd40a20e28597d0ea25d6d4bba045672","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    subnet[\u0027ipv6_ra_mode\u0027] \u003d\u003d constants.DHCPV6_STATELESS]"},{"line_number":97,"context_line":"            interface_name \u003d self._dev_name_helper(p[\u0027id\u0027])"},{"line_number":98,"context_line":"            if self.agent_conf.advertise_mtu:"},{"line_number":99,"context_line":"                network_mtu \u003d p.get(\u0027mtu\u0027, 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            buf.write(\u0027%s\u0027 % CONFIG_TEMPLATE.render("},{"line_number":102,"context_line":"                ra_modes\u003dlist(ra_modes),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_e7531d6b","line":99,"updated":"2015-11-21 09:47:46.000000000","message":"Don\u0027t you think its better to have another default for the MTU (rather than 0)?\n\nOr state an error otherwise?","commit_id":"aa8cddda66b8d65d5e7e71ae77a86a8623dfe1d9"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"2da893ebb38e738a30e3a08837c92ac01f1c7448","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    subnet[\u0027ipv6_ra_mode\u0027] \u003d\u003d constants.DHCPV6_STATELESS]"},{"line_number":97,"context_line":"            interface_name \u003d self._dev_name_helper(p[\u0027id\u0027])"},{"line_number":98,"context_line":"            if self.agent_conf.advertise_mtu:"},{"line_number":99,"context_line":"                network_mtu \u003d p.get(\u0027mtu\u0027, 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            buf.write(\u0027%s\u0027 % CONFIG_TEMPLATE.render("},{"line_number":102,"context_line":"                ra_modes\u003dlist(ra_modes),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_f2ac328e","line":99,"in_reply_to":"ba8a016a_e7531d6b","updated":"2015-11-22 03:45:07.000000000","message":"@Gal, when MTU is not advertised in RAs, VMs would configure a default value of 1500 bytes.\nWhile using encapsulation, the default value of 1500 bytes will not be the right MTU and this is addressed by the BP (mtu-selection-and-advertisement), where Neutron derives the MTU value based on the following parameters (path_mtu and segment_mtu).\nWhen the above parameters are not configured in the config file, the MTU value for the network would be stored as zero in the db.\nSo, its not an error condition if mtu is zero - its just that user has not configured the path_mtu and segment_mtu in the config file.\nI hope I clarified your concern. If not, please let me know.","commit_id":"aa8cddda66b8d65d5e7e71ae77a86a8623dfe1d9"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"cae29dc115a48e769370780363477ef526573f2f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                    subnet[\u0027ipv6_ra_mode\u0027] \u003d\u003d constants.DHCPV6_STATELESS]"},{"line_number":97,"context_line":"            interface_name \u003d self._dev_name_helper(p[\u0027id\u0027])"},{"line_number":98,"context_line":"            if self.agent_conf.advertise_mtu:"},{"line_number":99,"context_line":"                network_mtu \u003d p.get(\u0027mtu\u0027, 0)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"            buf.write(\u0027%s\u0027 % CONFIG_TEMPLATE.render("},{"line_number":102,"context_line":"                ra_modes\u003dlist(ra_modes),"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba8a016a_38961b95","line":99,"in_reply_to":"ba8a016a_f2ac328e","updated":"2015-11-22 09:37:21.000000000","message":"Yes, thanks","commit_id":"aa8cddda66b8d65d5e7e71ae77a86a8623dfe1d9"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"1875691a5c1196a4a5ae334516ba65aada9631ec","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \"\"\"Manage the data and state of an radvd process.\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, router_id, router_ns, process_monitor, dev_name_helper,"},{"line_number":73,"context_line":"                 agent_conf):"},{"line_number":74,"context_line":"        self._router_id \u003d router_id"},{"line_number":75,"context_line":"        self._router_ns \u003d router_ns"},{"line_number":76,"context_line":"        self.agent_conf \u003d agent_conf"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_e1eaff73","line":73,"updated":"2015-11-23 15:03:01.000000000","message":"with agent_conf added, a cleanup is needed to move ra_confs to agent/l3/config.py. The mixed use of cfg.CONF and agent_conf is not good.","commit_id":"364fd5d6e1a5e9da82aa92aa624a9f9f316d4fdc"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"cadcd2f87a22982533785dccc12120cdcaf8b1c7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \"\"\"Manage the data and state of an radvd process.\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, router_id, router_ns, process_monitor, dev_name_helper,"},{"line_number":73,"context_line":"                 agent_conf):"},{"line_number":74,"context_line":"        self._router_id \u003d router_id"},{"line_number":75,"context_line":"        self._router_ns \u003d router_ns"},{"line_number":76,"context_line":"        self.agent_conf \u003d agent_conf"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_66891a26","line":73,"in_reply_to":"ba8a016a_5337fdaf","updated":"2015-11-24 08:43:10.000000000","message":"Had a look at the changes, there are not many. I\u0027ll update the patch. Thanks @Henry.","commit_id":"364fd5d6e1a5e9da82aa92aa624a9f9f316d4fdc"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"d9bd3ad195336bc04356f3efba227c7a145ec4ea","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \"\"\"Manage the data and state of an radvd process.\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, router_id, router_ns, process_monitor, dev_name_helper,"},{"line_number":73,"context_line":"                 agent_conf):"},{"line_number":74,"context_line":"        self._router_id \u003d router_id"},{"line_number":75,"context_line":"        self._router_ns \u003d router_ns"},{"line_number":76,"context_line":"        self.agent_conf \u003d agent_conf"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_5337fdaf","line":73,"in_reply_to":"ba8a016a_a0fcd13e","updated":"2015-11-24 04:01:00.000000000","message":"How big is the change? If it does not distract too much from the MTU work then it would be nice to make things consistent in one patch.","commit_id":"364fd5d6e1a5e9da82aa92aa624a9f9f316d4fdc"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"34693c89f91f11acd995e9231b959da2b13c9d66","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    \"\"\"Manage the data and state of an radvd process.\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def __init__(self, router_id, router_ns, process_monitor, dev_name_helper,"},{"line_number":73,"context_line":"                 agent_conf):"},{"line_number":74,"context_line":"        self._router_id \u003d router_id"},{"line_number":75,"context_line":"        self._router_ns \u003d router_ns"},{"line_number":76,"context_line":"        self.agent_conf \u003d agent_conf"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_a0fcd13e","line":73,"in_reply_to":"ba8a016a_e1eaff73","updated":"2015-11-24 03:35:25.000000000","message":"I\u0027m fine to do the change by updating this patch or using a follow-on patch. Thanks for reviewing @Robert.","commit_id":"364fd5d6e1a5e9da82aa92aa624a9f9f316d4fdc"},{"author":{"_account_id":4656,"name":"Sean M. Collins","email":"sean@coreitpro.com","username":"scollins"},"change_message_id":"d00e8cb76b7038f1eeb3997eddac0c05028e98bf","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                constants\u003dconstants,"},{"line_number":136,"context_line":"                min_rtr_adv_interval\u003dself._agent_conf.min_rtr_adv_interval,"},{"line_number":137,"context_line":"                max_rtr_adv_interval\u003dself._agent_conf.max_rtr_adv_interval,"},{"line_number":138,"context_line":"                network_mtu\u003dint(network_mtu)))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        common_utils.replace_file(radvd_conf, buf.getvalue())"},{"line_number":141,"context_line":"        return radvd_conf"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a5ae5dd_fef19c01","line":138,"updated":"2016-02-08 16:04:55.000000000","message":"I don\u0027t believe there are any conditions where network_mtu is not an integer already. It\u0027s stored in the DB as an integer. So, let\u0027s get rid of the int() call.","commit_id":"71dbc369dd21b79cd5375f4a2b3368c0e03de995"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"8abbcce5066b0b62ff6ac851a2b0c2f352fc9bfe","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                constants\u003dconstants,"},{"line_number":136,"context_line":"                min_rtr_adv_interval\u003dself._agent_conf.min_rtr_adv_interval,"},{"line_number":137,"context_line":"                max_rtr_adv_interval\u003dself._agent_conf.max_rtr_adv_interval,"},{"line_number":138,"context_line":"                network_mtu\u003dint(network_mtu)))"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        common_utils.replace_file(radvd_conf, buf.getvalue())"},{"line_number":141,"context_line":"        return radvd_conf"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a5ae5dd_7cba6f0c","line":138,"in_reply_to":"5a5ae5dd_fef19c01","updated":"2016-02-09 05:06:02.000000000","message":"@Sean, py34 seems to be unhappy if we do this change (patchset#18). We will need this typecasting to int as jinja2 is treating it as a str.\n\nShall I go ahead and update it. Alternately if you have any suggestion, please let me know.","commit_id":"71dbc369dd21b79cd5375f4a2b3368c0e03de995"}],"neutron/db/l3_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a8ef8d2c2c3163aa687de474a22f979e32b889bd","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"        for port in ports:"},{"line_number":1260,"context_line":"            for network in networks:"},{"line_number":1261,"context_line":"                if port[\u0027network_id\u0027] \u003d\u003d network[\u0027id\u0027]:"},{"line_number":1262,"context_line":"                    port[\u0027mtu\u0027] \u003d network.get(\u0027mtu\u0027)"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"    def _process_floating_ips(self, context, routers_dict, floating_ips):"},{"line_number":1265,"context_line":"        for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_fc63e0ae","line":1262,"updated":"2015-11-20 15:09:53.000000000","message":"Should this be network.get(\u0027mtu\u0027, 0)?","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"e022c50e65e6ce9c5bca2d1a22755e56df3613f1","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"        for port in ports:"},{"line_number":1260,"context_line":"            for network in networks:"},{"line_number":1261,"context_line":"                if port[\u0027network_id\u0027] \u003d\u003d network[\u0027id\u0027]:"},{"line_number":1262,"context_line":"                    port[\u0027mtu\u0027] \u003d network.get(\u0027mtu\u0027)"},{"line_number":1263,"context_line":""},{"line_number":1264,"context_line":"    def _process_floating_ips(self, context, routers_dict, floating_ips):"},{"line_number":1265,"context_line":"        for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_0c11ba5d","line":1262,"in_reply_to":"ba8a016a_fc63e0ae","updated":"2015-11-20 17:56:34.000000000","message":"Done","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1c888dd7b92ccc83953960dd7e032c61f1c9d229","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"        filters \u003d {\u0027network_id\u0027: network_ids}"},{"line_number":1255,"context_line":"        fields \u003d [\u0027id\u0027, \u0027mtu\u0027]"},{"line_number":1256,"context_line":"        networks \u003d self._core_plugin.get_networks(context, filters\u003dfilters,"},{"line_number":1257,"context_line":"                                                  fields\u003dfields)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        for port in self._each_port_having_fixed_ips(ports):"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a710552_d4d1d2ce","line":1257,"updated":"2015-12-15 18:00:58.000000000","message":"So bear with me on this second review...\n\nI\u0027m just trying to make sure we don\u0027t add a potentially long serial search on L1293, where there are a lot of networks and we\u0027re always looking for the last in the list.\n\nIf you instead broke this code out into a method that returned a dict indexed on the network_id:\n\nmtus_by_network \u003d self._get_mtus_by_network_list(context, network_ids)\n\nAnd it looked something like this:\n\ndef _get_mtus_by_network_list(self, context, network_ids):\n    if not network_ids:\n        return {}\n\n    filters \u003d {\u0027network_id\u0027: network_ids}\n    fields \u003d [\u0027id\u0027, \u0027mtu\u0027]\n    network_mtus \u003d self._core_plugin.get_networks(context, filters\u003dfilters,\n                                                                                    fields\u003dfields)\n\n    mtus_by_network \u003d dict((id, network_mtus[id]) for id in network_mtus)\n    return mtus_by_network","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"c24fdca465ab4dc737e9e228328946030c2aa0b0","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"        filters \u003d {\u0027network_id\u0027: network_ids}"},{"line_number":1255,"context_line":"        fields \u003d [\u0027id\u0027, \u0027mtu\u0027]"},{"line_number":1256,"context_line":"        networks \u003d self._core_plugin.get_networks(context, filters\u003dfilters,"},{"line_number":1257,"context_line":"                                                  fields\u003dfields)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        for port in self._each_port_having_fixed_ips(ports):"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_1db2cd4c","line":1257,"in_reply_to":"3a7e1126_8f0b797d","updated":"2015-12-18 18:26:57.000000000","message":"Ok @Brian, I\u0027ll update the patch. Thanks.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8724dd5d417f18c1bb95a673e1a397515a146b92","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"        filters \u003d {\u0027network_id\u0027: network_ids}"},{"line_number":1255,"context_line":"        fields \u003d [\u0027id\u0027, \u0027mtu\u0027]"},{"line_number":1256,"context_line":"        networks \u003d self._core_plugin.get_networks(context, filters\u003dfilters,"},{"line_number":1257,"context_line":"                                                  fields\u003dfields)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        for port in self._each_port_having_fixed_ips(ports):"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_8f0b797d","line":1257,"in_reply_to":"5a710552_92f7bef4","updated":"2015-12-16 21:31:28.000000000","message":"@Sridhar - this is why the loop on L1293 bothers me.\n\n1 port, 1 network: 1 \u0027id\u0027 compare\n10 ports, 10 nets (5 \u0027id\u0027 compares avg per port): 50 compares\n100 ports, 100 nets (50 avg compares): 5000 compares\n\nMaybe I\u0027m over-analyzing this, but speed seems more important than memory to me.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"1aa9573fca54971ac623adc4e0f34a74f00e91c3","unresolved":false,"context_lines":[{"line_number":1254,"context_line":"        filters \u003d {\u0027network_id\u0027: network_ids}"},{"line_number":1255,"context_line":"        fields \u003d [\u0027id\u0027, \u0027mtu\u0027]"},{"line_number":1256,"context_line":"        networks \u003d self._core_plugin.get_networks(context, filters\u003dfilters,"},{"line_number":1257,"context_line":"                                                  fields\u003dfields)"},{"line_number":1258,"context_line":""},{"line_number":1259,"context_line":"        for port in self._each_port_having_fixed_ips(ports):"},{"line_number":1260,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a710552_92f7bef4","line":1257,"in_reply_to":"5a710552_d4d1d2ce","updated":"2015-12-16 07:24:20.000000000","message":"Thanks @Brian. I agree that this is also a possible solution. \n\nIn the new approach we will be constructing a dictionary (i.e., mtus_by_network) from the network_mtus, so we are essentially looping over \"all the networks\" and also it has the added overhead to store this info in memory. OTOH, with the existing implementation (on L1296) when the network is found we simply break and do not loop on the subsequent networks, so it would be more optimal. I\u0027m interested to know your comments about this and fine to modify it if required.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c63daed3878e13c21e02a8782ae4a8699ce69369","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            for network in networks:"},{"line_number":1294,"context_line":"                if port[\u0027network_id\u0027] \u003d\u003d network[\u0027id\u0027]:"},{"line_number":1295,"context_line":"                    port[\u0027mtu\u0027] \u003d network.get(\u0027mtu\u0027, 0)"},{"line_number":1296,"context_line":"                    break"},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"    def _process_floating_ips(self, context, routers_dict, floating_ips):"},{"line_number":1299,"context_line":"        for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a710552_4caa7272","line":1296,"updated":"2015-12-14 20:31:06.000000000","message":"So my only real concern here is that we\u0027re doing the above plugin call, then setting the mtu in the port dict, but do all the callers of _populate_subnets_for_ports() actually do something with that info, or just a subset?  I hate doing work for no reason.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"c2b9191bd3f5ea32c89c488fda473c2d25c20f58","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            for network in networks:"},{"line_number":1294,"context_line":"                if port[\u0027network_id\u0027] \u003d\u003d network[\u0027id\u0027]:"},{"line_number":1295,"context_line":"                    port[\u0027mtu\u0027] \u003d network.get(\u0027mtu\u0027, 0)"},{"line_number":1296,"context_line":"                    break"},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"    def _process_floating_ips(self, context, routers_dict, floating_ips):"},{"line_number":1299,"context_line":"        for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a710552_d15268dd","line":1296,"in_reply_to":"5a710552_4caa7272","updated":"2015-12-15 07:16:13.000000000","message":"IMHO this is much better than making an RPC call from the agent to Neutron server for the MTU info.\nPatchset2 had the implementation where RPC was used from the agent. During review the idea to populate the info as part of port came up with some valid reasoning.\nPlease see [*] for more details. If you have any other suggestion, please let me know. Thanks @Brian.\n[*] https://review.openstack.org/#/c/244722/2/neutron/agent/l3/router_info.py","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1c888dd7b92ccc83953960dd7e032c61f1c9d229","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            for network in networks:"},{"line_number":1294,"context_line":"                if port[\u0027network_id\u0027] \u003d\u003d network[\u0027id\u0027]:"},{"line_number":1295,"context_line":"                    port[\u0027mtu\u0027] \u003d network.get(\u0027mtu\u0027, 0)"},{"line_number":1296,"context_line":"                    break"},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"    def _process_floating_ips(self, context, routers_dict, floating_ips):"},{"line_number":1299,"context_line":"        for floating_ip in floating_ips:"}],"source_content_type":"text/x-python","patch_set":11,"id":"5a710552_54fde238","line":1296,"in_reply_to":"5a710552_d15268dd","updated":"2015-12-15 18:00:58.000000000","message":"Then you could just do a direct assignment here, without the for() loop:\n\nport[\u0027mtu\u0027] \u003d mtus_by_network.get(port[\u0027network_id\u0027], 0)\n\nI\u0027m not saying what\u0027s here is wrong, just want to try and make this better if possible.","commit_id":"f72df0363958578985d95f83c2eb45568aa108c2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9958e2ea71fb96f5b94977a860cf3ad12d6ebbca","unresolved":false,"context_lines":[{"line_number":1372,"context_line":"                               for network in networks)"},{"line_number":1373,"context_line":"        return mtus_by_network"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"    def _populate_subnets_for_ports(self, context, ports):"},{"line_number":1376,"context_line":"        \"\"\"Populate ports with subnets."},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"        These ports already have fixed_ips populated."}],"source_content_type":"text/x-python","patch_set":16,"id":"5a5ae5dd_a9129a60","line":1375,"updated":"2016-02-04 13:39:01.000000000","message":"Doesn\u0027t seem like the name of the method reflects what you do here now (now you populate port with network attributes too).","commit_id":"6712a15e155fa1fa73c0f729eb1b20294a0603bb"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"520f13e792be2b6c691f9e18933a2e5fa6b0b6e1","unresolved":false,"context_lines":[{"line_number":1372,"context_line":"                               for network in networks)"},{"line_number":1373,"context_line":"        return mtus_by_network"},{"line_number":1374,"context_line":""},{"line_number":1375,"context_line":"    def _populate_subnets_for_ports(self, context, ports):"},{"line_number":1376,"context_line":"        \"\"\"Populate ports with subnets."},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"        These ports already have fixed_ips populated."}],"source_content_type":"text/x-python","patch_set":16,"id":"5a5ae5dd_9a727dac","line":1375,"in_reply_to":"5a5ae5dd_a9129a60","updated":"2016-02-04 14:23:51.000000000","message":"Ok @Ihar, I\u0027ll update the patch. Thanks.","commit_id":"6712a15e155fa1fa73c0f729eb1b20294a0603bb"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a8ef8d2c2c3163aa687de474a22f979e32b889bd","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            if router.get(l3_const.SNAT_ROUTER_INTF_KEY):"},{"line_number":535,"context_line":"                ports_to_populate +\u003d router[l3_const.SNAT_ROUTER_INTF_KEY]"},{"line_number":536,"context_line":"        ports_to_populate +\u003d interfaces"},{"line_number":537,"context_line":"        self._populate_subnets_for_ports(context, ports_to_populate)"},{"line_number":538,"context_line":"        self._populate_network_mtu_for_ports(context, ports_to_populate)"},{"line_number":539,"context_line":"        self._process_interfaces(routers_dict, interfaces)"},{"line_number":540,"context_line":"        return list(routers_dict.values())"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_e20a4879","line":537,"updated":"2015-11-20 15:09:53.000000000","message":"could you leverage the method above to do the mtu population?\nit just seems like we are adding in extra complexity here that requires extra loops etc.","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"e022c50e65e6ce9c5bca2d1a22755e56df3613f1","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            if router.get(l3_const.SNAT_ROUTER_INTF_KEY):"},{"line_number":535,"context_line":"                ports_to_populate +\u003d router[l3_const.SNAT_ROUTER_INTF_KEY]"},{"line_number":536,"context_line":"        ports_to_populate +\u003d interfaces"},{"line_number":537,"context_line":"        self._populate_subnets_for_ports(context, ports_to_populate)"},{"line_number":538,"context_line":"        self._populate_network_mtu_for_ports(context, ports_to_populate)"},{"line_number":539,"context_line":"        self._process_interfaces(routers_dict, interfaces)"},{"line_number":540,"context_line":"        return list(routers_dict.values())"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_5f03e20d","line":537,"in_reply_to":"ba8a016a_e20a4879","updated":"2015-11-20 17:56:34.000000000","message":"I\u0027ll update it.","commit_id":"5d887dffcca26d7035aeb98895b9d722e4efe29a"}],"neutron/tests/unit/agent/l3/test_agent.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"197fe055ee0eb45b254d171f52f297f6840ea306","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        return expected_calls"},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"    def _process_router_ipv6_subnet_added(self, router,"},{"line_number":1207,"context_line":"            ipv6_subnet_modes\u003dNone, dns_nameservers\u003dNone, **kwargs):"},{"line_number":1208,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1209,"context_line":"        network_mtu \u003d kwargs.get(\u0027network_mtu\u0027, 0)"},{"line_number":1210,"context_line":"        ri \u003d l3router.RouterInfo(router[\u0027id\u0027], router, **self.ri_kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_c2e86db5","line":1207,"updated":"2016-01-07 08:55:48.000000000","message":"why not maintain convention here and have network_mtu\u003d0 in the signature?","commit_id":"fd626ed763d84581b09a9a82887325b1bf2b7921"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"6252f50b4e6a81a6d9ffe373a6d81c48a4a0f58c","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        return expected_calls"},{"line_number":1205,"context_line":""},{"line_number":1206,"context_line":"    def _process_router_ipv6_subnet_added(self, router,"},{"line_number":1207,"context_line":"            ipv6_subnet_modes\u003dNone, dns_nameservers\u003dNone, **kwargs):"},{"line_number":1208,"context_line":"        agent \u003d l3_agent.L3NATAgent(HOSTNAME, self.conf)"},{"line_number":1209,"context_line":"        network_mtu \u003d kwargs.get(\u0027network_mtu\u0027, 0)"},{"line_number":1210,"context_line":"        ri \u003d l3router.RouterInfo(router[\u0027id\u0027], router, **self.ri_kwargs)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_064127a9","line":1207,"in_reply_to":"fa69d971_c2e86db5","updated":"2016-01-10 14:03:42.000000000","message":"Sure @Kevin, I\u0027ll update it. Thanks for reviewing.","commit_id":"fd626ed763d84581b09a9a82887325b1bf2b7921"}]}
