)]}'
{"neutron/agent/linux/interface.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a8282a26f55da6c387b87de89f0712bcfb2dabc0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if self.conf.network_device_mtu:"},{"line_number":56,"context_line":"            self.validate_network_device_mtu()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def validate_network_device_mtu(self):"},{"line_number":59,"context_line":"        if (ipv6_utils.is_enabled() and"},{"line_number":60,"context_line":"            self.conf.network_device_mtu \u003c n_const.IPV6_MIN_MTU):"},{"line_number":61,"context_line":"            LOG.error(_LE(\"IPv6 protocol requires an MTU greater than \""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_033469db","line":58,"updated":"2015-08-20 20:20:31.000000000","message":"This will be called every time an interface is instantiated, which seems wasteful for what is basically a static check.  Is there nowhere we can put this so that it\u0027s only done once?  More of a nit I guess since the L3NATAgent class does a similar thing, so maybe this just needs an \u0027_\u0027 in front.","commit_id":"3414bbd89d529d42324fbc75ead464b6c746d99e"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"ccbf9405b7e3bc9b8ffed6c52f5f52f5fc9cbd1b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        if self.conf.network_device_mtu:"},{"line_number":56,"context_line":"            self.validate_network_device_mtu()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def validate_network_device_mtu(self):"},{"line_number":59,"context_line":"        if (ipv6_utils.is_enabled() and"},{"line_number":60,"context_line":"            self.conf.network_device_mtu \u003c n_const.IPV6_MIN_MTU):"},{"line_number":61,"context_line":"            LOG.error(_LE(\"IPv6 protocol requires an MTU greater than \""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_74e4ecaa","line":58,"in_reply_to":"fa1b9901_033469db","updated":"2015-08-21 07:10:23.000000000","message":"Done","commit_id":"3414bbd89d529d42324fbc75ead464b6c746d99e"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a8282a26f55da6c387b87de89f0712bcfb2dabc0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def validate_network_device_mtu(self):"},{"line_number":59,"context_line":"        if (ipv6_utils.is_enabled() and"},{"line_number":60,"context_line":"            self.conf.network_device_mtu \u003c n_const.IPV6_MIN_MTU):"},{"line_number":61,"context_line":"            LOG.error(_LE(\"IPv6 protocol requires an MTU greater than \""},{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_687664d8","line":61,"updated":"2015-08-20 20:20:31.000000000","message":"nit: \u0027greater\u0027 is not correct as 1280 is valid, perhaps \"IPv6 protocol requires a minimum MTU of...\"","commit_id":"3414bbd89d529d42324fbc75ead464b6c746d99e"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"ccbf9405b7e3bc9b8ffed6c52f5f52f5fc9cbd1b","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def validate_network_device_mtu(self):"},{"line_number":59,"context_line":"        if (ipv6_utils.is_enabled() and"},{"line_number":60,"context_line":"            self.conf.network_device_mtu \u003c n_const.IPV6_MIN_MTU):"},{"line_number":61,"context_line":"            LOG.error(_LE(\"IPv6 protocol requires an MTU greater than \""},{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_34f1946b","line":61,"in_reply_to":"fa1b9901_687664d8","updated":"2015-08-21 07:10:23.000000000","message":"Sure, thanks.","commit_id":"3414bbd89d529d42324fbc75ead464b6c746d99e"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a1807c203a83aac36e387adac05191c49fd859d6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"},{"line_number":65,"context_line":"            raise SystemExit(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def init_l3(self, device_name, ip_cidrs, namespace\u003dNone,"},{"line_number":68,"context_line":"                preserve_ips\u003d[], gateway_ips\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_fca2e599","line":65,"updated":"2015-08-23 00:54:07.000000000","message":"I am a little worried that some deployers will unexpectedly see their agents fail to restart when upgrading, because:\n\n- They have IPv6 enabled (and most do because it takes some effort to disable it) but don\u0027t really care about it for now.\n\n- They have some MTU\u003c1280 configured for some reason and it worked for IPv4 which is what they care about.\n\nThis patch blocks their deployment until they either increase the MTU config or disable IPv6. Maybe it would be better to just log this error, adding that IPv6 interfaces are not going to work with their current settings?","commit_id":"9750ab79c67f0f5b24cbbb9b7f2c499d4b911283"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"41db779ffb2b098ec01ec701f25bf45ef303082b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"},{"line_number":65,"context_line":"            raise SystemExit(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def init_l3(self, device_name, ip_cidrs, namespace\u003dNone,"},{"line_number":68,"context_line":"                preserve_ips\u003d[], gateway_ips\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_d3da67e9","line":65,"in_reply_to":"fa1b9901_6aeb63b1","updated":"2015-08-23 19:11:02.000000000","message":"I realize my concern is far-fetched. I can\u0027t think why anyone would want to configure such a low MTU.","commit_id":"9750ab79c67f0f5b24cbbb9b7f2c499d4b911283"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f2c8f6ae81ad9175010df00a9d48e3e2a5af8dd4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"},{"line_number":65,"context_line":"            raise SystemExit(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def init_l3(self, device_name, ip_cidrs, namespace\u003dNone,"},{"line_number":68,"context_line":"                preserve_ips\u003d[], gateway_ips\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_3f4b8fb2","line":65,"in_reply_to":"fa1b9901_d3da67e9","updated":"2015-08-26 16:26:01.000000000","message":"If it\u0027s any consolation, the lowest I\u0027ve seen a customer set the mtu value is 1400, and it was only because it was a nice round number :)  1450 is probably much more common.\n\nIn our production deployment we \"raise the bridge\" by setting the data plane device MTU to 9K, allowing for a \"normal\" 1500 bytes from VMs, which is probably more common when you have a multi-NIC config.","commit_id":"9750ab79c67f0f5b24cbbb9b7f2c499d4b911283"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"9a919aa0649ed242d0e092683ac6545078b9c343","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                          \"%(min_mtu)s, while the configured value is \""},{"line_number":63,"context_line":"                          \"%(current_mtu)s\"), {\u0027min_mtu\u0027: n_const.IPV6_MIN_MTU,"},{"line_number":64,"context_line":"                          \u0027current_mtu\u0027: self.conf.network_device_mtu})"},{"line_number":65,"context_line":"            raise SystemExit(1)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def init_l3(self, device_name, ip_cidrs, namespace\u003dNone,"},{"line_number":68,"context_line":"                preserve_ips\u003d[], gateway_ips\u003dNone,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_6aeb63b1","line":65,"in_reply_to":"fa1b9901_fca2e599","updated":"2015-08-23 05:50:19.000000000","message":"@Henry, most likely people may use an MTU slightly less than 1500 bytes (but not less than 1280) to take into account the additional headers added by OVS. I do not think that they may be using an MTU less than 1280. Do you see any specific use case where people would use such values?\n\nOTOH, in patchset 1 [*], I was simply logging instead of exiting and moved to this approach (which kind of makes sense) based on the review comments. \nCan you please take a look at patchset1[*] for the discussion that happened.\n\n[*] https://review.openstack.org/#/c/208435/1/neutron/agent/linux/ip_lib.py","commit_id":"9750ab79c67f0f5b24cbbb9b7f2c499d4b911283"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"0e2f38c7985017fca2d26ef4b5aab1b5a269eae0","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        try:"},{"line_number":422,"context_line":"            self._as_root([net.version], tuple(args))"},{"line_number":423,"context_line":"        except RuntimeError as rte:"},{"line_number":424,"context_line":"            if \"No buffer space available\" in str(rte) and net.version \u003d\u003d 6:"},{"line_number":425,"context_line":"                msg \u003d (_LE(\"IPv6 protocol requires an MTU greater than 1280\""},{"line_number":426,"context_line":"                           \" bytes on the interface %s\") % self.name)"},{"line_number":427,"context_line":"                raise exceptions.NotSupported(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_d3811891","line":424,"updated":"2015-08-04 06:24:29.000000000","message":"@Brian, one possible improvement in this approach is to check the MTU of the interface to confirm that its less than 1280 bytes before giving out the MTU error message.\n\nOr the other option, as you mentioned, is to return an error in the file [1] when the configured value is \u003c 1280 bytes.\n\nLet me know your thoughts.","commit_id":"18090d92d4680d0423a888dc73617d387e45b9b3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"640ed7544399061802b554990fed08d511eeb180","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        try:"},{"line_number":422,"context_line":"            self._as_root([net.version], tuple(args))"},{"line_number":423,"context_line":"        except RuntimeError as rte:"},{"line_number":424,"context_line":"            if \"No buffer space available\" in str(rte) and net.version \u003d\u003d 6:"},{"line_number":425,"context_line":"                msg \u003d (_LE(\"IPv6 protocol requires an MTU greater than 1280\""},{"line_number":426,"context_line":"                           \" bytes on the interface %s\") % self.name)"},{"line_number":427,"context_line":"                raise exceptions.NotSupported(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_ba82e150","line":424,"in_reply_to":"1a4dcd0f_be7e8cac","updated":"2015-08-11 03:07:45.000000000","message":"IMO, I think we should error if MTU \u003c 1280, since if we allow otherwise we can\u0027t support IPv6, which is pretty much enabled by default.","commit_id":"18090d92d4680d0423a888dc73617d387e45b9b3"},{"author":{"_account_id":10257,"name":"Sridhar Gaddam","email":"sgaddam@redhat.com","username":"sridhargaddam"},"change_message_id":"04163e7de25b5636053df7afb76d7feecb2eccbb","unresolved":false,"context_lines":[{"line_number":421,"context_line":"        try:"},{"line_number":422,"context_line":"            self._as_root([net.version], tuple(args))"},{"line_number":423,"context_line":"        except RuntimeError as rte:"},{"line_number":424,"context_line":"            if \"No buffer space available\" in str(rte) and net.version \u003d\u003d 6:"},{"line_number":425,"context_line":"                msg \u003d (_LE(\"IPv6 protocol requires an MTU greater than 1280\""},{"line_number":426,"context_line":"                           \" bytes on the interface %s\") % self.name)"},{"line_number":427,"context_line":"                raise exceptions.NotSupported(msg\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_be7e8cac","line":424,"in_reply_to":"1a4dcd0f_d3811891","updated":"2015-08-04 08:49:39.000000000","message":"[1] https://github.com/openstack/neutron/blob/master/neutron/agent/linux/interface.py#L40","commit_id":"18090d92d4680d0423a888dc73617d387e45b9b3"}]}
