)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"51327aefcecdddb86b94df5c8c111fedb3e3818d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2015-04-15 22:32:51 +0000"},{"line_number":4,"context_line":"Commit:     Carl Baldwin \u003ccarl.baldwin@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-26 16:13:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove hack for sending gratuitous arp from fip ns"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"I just saw this note toward bottom of the lartc [1] page:  \"On Linux"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3afb71cf_18a7f550","line":6,"updated":"2015-06-04 21:15:19.000000000","message":"I had a private conversation with Carl about this which I\u0027d like to echo here: It seems like ip_nonlocal_bind has been around for a while so we shouldn\u0027t have compatibility issue with the more traditional distros. Additionally, we can\u0027t really test this change with our current tests as it involves checking for traffic on the underlay network, so I asked Carl to double and triple check that the GARPs were indeed being sent out.","commit_id":"eac9fb143cf3e6f4dd2b3413f81dab92d42354ca"}],"neutron/agent/l3/dvr_fip_ns.py":[{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"ae3ff8710f3e0dc8a044bf7e4ca08da263347d56","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":128,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027,"},{"line_number":129,"context_line":"                                  \u0027-w\u0027,"},{"line_number":130,"context_line":"                                  \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027])"},{"line_number":131,"context_line":"        if self.use_ipv6:"},{"line_number":132,"context_line":"            ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027,"},{"line_number":133,"context_line":"                                      \u0027net.ipv6.conf.all.forwarding\u003d1\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5aa745d1_122b3aed","line":130,"updated":"2015-04-15 22:37:12.000000000","message":"It looks like this is actually a global option which must be set outside of the namespace.  A quick search turned up this [1] but who knows when this will be baked in to the kernels.\n\n[1] http://www.spinics.net/lists/linux-sctp/msg03710.html","commit_id":"c9e555944045bef638c90e13e1b801f7df14e77a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e7e2bc966d210ae66a74ebc8462281cc3d381396","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        ip_wrapper_root.netns.execute([\u0027sysctl\u0027,"},{"line_number":127,"context_line":"                                       \u0027-w\u0027,"},{"line_number":128,"context_line":"                                       \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027],"},{"line_number":129,"context_line":"                                      run_as_root\u003dTrue)"},{"line_number":130,"context_line":"        ip_wrapper \u003d ip_wrapper_root.ensure_namespace(self.get_name())"},{"line_number":131,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":132,"context_line":"        if self.use_ipv6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ab451fb_1f034711","line":129,"updated":"2015-04-16 20:53:09.000000000","message":"Shouldn\u0027t this be later, say, two lines down?  The namespace might not exist yet, right?","commit_id":"ce6c354c350c8893965a68e30633c77ac9733079"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"dcc0f06a19191a3b49800fbb481da70402e195c8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        ip_wrapper_root.netns.execute([\u0027sysctl\u0027,"},{"line_number":127,"context_line":"                                       \u0027-w\u0027,"},{"line_number":128,"context_line":"                                       \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027],"},{"line_number":129,"context_line":"                                      run_as_root\u003dTrue)"},{"line_number":130,"context_line":"        ip_wrapper \u003d ip_wrapper_root.ensure_namespace(self.get_name())"},{"line_number":131,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":132,"context_line":"        if self.use_ipv6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ab451fb_f18c4a37","line":129,"in_reply_to":"3ab451fb_1f034711","updated":"2015-04-17 00:10:21.000000000","message":"The setting is global!  It can\u0027t be set per namespace.","commit_id":"ce6c354c350c8893965a68e30633c77ac9733079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6a2caba750b523728a4c2ff5140c27ddb44c46c4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        ip_wrapper_root.netns.execute([\u0027sysctl\u0027,"},{"line_number":127,"context_line":"                                       \u0027-w\u0027,"},{"line_number":128,"context_line":"                                       \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027],"},{"line_number":129,"context_line":"                                      run_as_root\u003dTrue)"},{"line_number":130,"context_line":"        ip_wrapper \u003d ip_wrapper_root.ensure_namespace(self.get_name())"},{"line_number":131,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":132,"context_line":"        if self.use_ipv6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ab451fb_696ef9ca","line":129,"in_reply_to":"3ab451fb_a65e6ee7","updated":"2015-04-17 15:40:41.000000000","message":"In this case it would be two changes, haven\u0027t looked at other places:\n\nfrom neutron.agent.linux import utils as linux_utils\n\nlinux_utils.execute([sysctl...], run_as_root\u003dTrue)\n\nip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dself.get_name(), ensure\u003dTrue)\n\nThat would trigger the init of ipwrapper to make sure the namespace was there (with a code change in the __init__() of course)\n\nIt could be that having an IPWrapper.execute() (no netns) is another change, but it\u0027s just there to call linux_utils.execute() - it keeps the single interface and might make sense if all the call sites are doing similar things.","commit_id":"ce6c354c350c8893965a68e30633c77ac9733079"},{"author":{"_account_id":7448,"name":"Carl Baldwin","email":"carl@ecbaldwin.net","username":"carl-baldwin"},"change_message_id":"423ee0336358136a49fc6303cef05925d7165d2b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        ip_wrapper_root.netns.execute([\u0027sysctl\u0027,"},{"line_number":127,"context_line":"                                       \u0027-w\u0027,"},{"line_number":128,"context_line":"                                       \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027],"},{"line_number":129,"context_line":"                                      run_as_root\u003dTrue)"},{"line_number":130,"context_line":"        ip_wrapper \u003d ip_wrapper_root.ensure_namespace(self.get_name())"},{"line_number":131,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":132,"context_line":"        if self.use_ipv6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ab451fb_a65e6ee7","line":129,"in_reply_to":"3ab451fb_d98174fd","updated":"2015-04-17 15:17:39.000000000","message":"You make a good point.  It is a bit funny.  I wonder if netns is the wrong name for it. It is written to run commands both inside a named namespace and in the default unnamed namespace.\n\nI tend to think of the \"root namespace\" as just another network namespace, just an unnamed one.  I do like that running commands uses the same interface for both.  So, I\u0027m not sure I would change the structure of the code.  How would you change it?","commit_id":"ce6c354c350c8893965a68e30633c77ac9733079"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7d44b9d6b6d27d481721f2ded78eba7be97d1173","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        ip_wrapper_root.netns.execute([\u0027sysctl\u0027,"},{"line_number":127,"context_line":"                                       \u0027-w\u0027,"},{"line_number":128,"context_line":"                                       \u0027net.ipv4.ip_nonlocal_bind\u003d1\u0027],"},{"line_number":129,"context_line":"                                      run_as_root\u003dTrue)"},{"line_number":130,"context_line":"        ip_wrapper \u003d ip_wrapper_root.ensure_namespace(self.get_name())"},{"line_number":131,"context_line":"        ip_wrapper.netns.execute([\u0027sysctl\u0027, \u0027-w\u0027, \u0027net.ipv4.ip_forward\u003d1\u0027])"},{"line_number":132,"context_line":"        if self.use_ipv6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ab451fb_d98174fd","line":129,"in_reply_to":"3ab451fb_f18c4a37","updated":"2015-04-17 02:40:11.000000000","message":"Oh, I now see that wasn\u0027t done in the initial ip_lib.IPWrapper() init.  Am I the only one confused by there being a .netns. in this method (that has nothing to do with a namespace), and the .ensure_namespace() call that *is* creating one (and returning a new instance) ?\n\nI might have to jump back into ip_lib because that is just going to bug me :)","commit_id":"ce6c354c350c8893965a68e30633c77ac9733079"}]}
