)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4419,"name":"Matthew Sherborne","email":"msherborne+openstack@gmail.com","username":"msherborne+openstack"},"change_message_id":"6b6934e505b95d5f183071dec08d761884b1f1a9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Destroys conntrack table on source host during migration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is needed to be able to migrate instance back to the same host"},{"line_number":10,"context_line":"without dropping active connections."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If8e146e05914e9febd6fc40a1d8085306c1244ea"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAOn%2F%2F06s%3D","line":9,"updated":"2013-04-20 10:31:24.000000000","message":"migrate THE instance","commit_id":"218e93f8caf307a766f29c8be2620f8fe452d36c"}],"etc/nova/rootwrap.d/network.filters":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"41e419c36ff771022c7b8e56fc629bdda757a57c","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# nova/network/linux_net.py: \u0027conntrack\u0027"},{"line_number":81,"context_line":"conntrack: CommandFilter, /sbin/conntrack, root"},{"line_number":82,"context_line":"conntrack_usr: CommandFilter, /usr/sbin/conntrack, root"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAOn%2F%2F00Q%3D","line":82,"updated":"2013-04-20 21:59:39.000000000","message":"Do we need both entries?","commit_id":"218e93f8caf307a766f29c8be2620f8fe452d36c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"ebf3ea350d0d1d8eef510017a1636352d862df97","unresolved":false,"context_lines":[{"line_number":78,"context_line":"sysctl: CommandFilter, /sbin/sysctl, root"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# nova/network/linux_net.py: \u0027conntrack\u0027"},{"line_number":81,"context_line":"conntrack: CommandFilter, /sbin/conntrack, root"},{"line_number":82,"context_line":"conntrack_usr: CommandFilter, /usr/sbin/conntrack, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAOn%2F%2F0o0%3D","line":81,"updated":"2013-04-21 15:56:30.000000000","message":"Do we need both entries?","commit_id":"480d5aeb1a11f898f43faf85148a7d4f878b8067"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"a0acea64a50bf773356158f18077571f74735b27","unresolved":false,"context_lines":[{"line_number":78,"context_line":"sysctl: CommandFilter, /sbin/sysctl, root"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# nova/network/linux_net.py: \u0027conntrack\u0027"},{"line_number":81,"context_line":"conntrack: CommandFilter, /sbin/conntrack, root"},{"line_number":82,"context_line":"conntrack_usr: CommandFilter, /usr/sbin/conntrack, root"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"AAAAOn%2F%2F0oc%3D","line":81,"in_reply_to":"AAAAOn%2F%2F0o0%3D","updated":"2013-04-21 16:29:32.000000000","message":"I\u0027m not sure. Ubuntu uses /usr/sbin/conntrack, I don\u0027t know for others?","commit_id":"480d5aeb1a11f898f43faf85148a7d4f878b8067"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"6c856654aecfdb4261fd4b6c7d2a0ab21ed6f40a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"sysctl: CommandFilter, /sbin/sysctl, root"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"# nova/network/linux_net.py: \u0027conntrack\u0027"},{"line_number":81,"context_line":"conntrack: CommandFilter, conntrack, root"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"AAAAOn%2F%2Fq00%3D","line":81,"updated":"2013-04-29 20:07:23.000000000","message":"Does this add a new dependency to nova? Either way can you explain the answer in the commit msg.","commit_id":"5fb947208e7141e572d7e2e95165c715f23b5fda"}],"nova/network/linux_net.py":[{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"22ade187f01a01c54e982e395233f848e10b073a","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2F0GM%3D","line":774,"updated":"2013-04-22 14:19:57.000000000","message":"i think this might be better as a LOG.exception","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"925d425f281066566f965fef8cdf94cc8351c8d7","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2Fzak%3D","line":774,"in_reply_to":"AAAAOn%2F%2F0GM%3D","updated":"2013-04-22 20:30:02.000000000","message":"I disagree. This is not an error, it\u0027s just a notice to the sysadmin that no conntrack rules were removed. Since it doesn\u0027t impact functionality, I\u0027ve put it in debug.\n\nI see LOG.exception as a logging mechanism for errors. Exception by itself is not an error. Therefore, I really think LOG.debug is more fit than LOG.exception in this context.","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"727168e769f7b938f76b4ae685c292a228a6a374","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzBk%3D","line":774,"in_reply_to":"AAAAOn%2F%2FzCg%3D","updated":"2013-04-22 23:35:41.000000000","message":"Deleting entries for non-existing IP will produce exit code 1, while deleting entries for invalid IP will produce exit code 2. This means this could be rearranged as:\n\n    try:\n        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue,\n                 check_exit_code\u003d[0, 1])\n    except exception.ProcessExecutionError:\n        LOG.exception(_(\u0027Error deleting conntrack entries for %s\u0027), fixed_ip)","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"76fe3e6e3bed07a74a02d0326e4b13e9201a4429","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzCg%3D","line":774,"in_reply_to":"AAAAOn%2F%2FzDY%3D","updated":"2013-04-22 23:27:23.000000000","message":"Bah... Ignore this comment. It\u0027s getting too late over here :)","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"d704603524f33efb8c76c2724fba259d2d412a29","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzDY%3D","line":774,"in_reply_to":"AAAAOn%2F%2FzEM%3D","updated":"2013-04-22 23:15:51.000000000","message":"Ah, actually... I think there is something as \u0027check_exit_code\u003dFalse\u0027. Just take a look at \u0027send_arp_for_ip()\u0027.","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":191,"name":"Trey Morris","email":"trey.morris@rackspace.com","username":"tr3buchet"},"change_message_id":"3f55d4239f8c8e6e4065428bc7a8536f2792594a","unresolved":false,"context_lines":[{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue)"},{"line_number":773,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":774,"context_line":"        LOG.debug(_(\u0027No conntrack entries for %s\u0027), fixed_ip)"},{"line_number":775,"context_line":""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOn%2F%2FzEM%3D","line":774,"in_reply_to":"AAAAOn%2F%2Fzak%3D","updated":"2013-04-22 23:02:17.000000000","message":"agree with ante although the zen of python says never to silence an exception. This function whether it succeeds or not, leaves us in the expected state. I wish we could pass to rootwrap the ability to not raise on a 1 as it\u0027s not useful in this case and wastes time generating an unneeded exception/traceback.","commit_id":"a051566853b732c3e84bdf5f189da71c57a604e0"},{"author":{"_account_id":2583,"name":"Ante Karamatić","email":"ante.karamatic@canonical.com","username":"ivoks"},"change_message_id":"d1e5496d573e873989cd929e3243da4587153487","unresolved":false,"context_lines":[{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue,"},{"line_number":773,"context_line":"                 check_exit_code\u003d[0, 1])"},{"line_number":774,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":775,"context_line":"        LOG.exception(_(\u0027Error deleting conntrack entries for %s\u0027), fixed_ip)"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2Fyy8%3D","line":775,"updated":"2013-04-23 06:32:53.000000000","message":"Some explanation:\n\nIdea is to try deleting conntrack entries. If it succeeds, great. If there are no entries for fixed_ip, still great. If fixed_ip is invalid (example: 10.0.1.0.1), we log the exception, but function does not fail. This function is not critical for migration success - it only makes sure that in certain situations migration doesn\u0027t drop connections.\n\nIf conntrack binary is not available or if it\u0027s misused, in those specific situations, connections will break (for example, dropped ssh connection), but they could be reestablished.","commit_id":"d9648f745e2e992bf8ee7876119ffd3979a4a230"},{"author":{"_account_id":4419,"name":"Matthew Sherborne","email":"msherborne+openstack@gmail.com","username":"msherborne+openstack"},"change_message_id":"1ac1db3de823a079724556c789f2b8849441cbc7","unresolved":false,"context_lines":[{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue,"},{"line_number":773,"context_line":"                 check_exit_code\u003d[0, 1])"},{"line_number":774,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":775,"context_line":"        LOG.exception(_(\u0027Error deleting conntrack entries for %s\u0027), fixed_ip)"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"def initialize_gateway_device(dev, network_ref):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAOn%2F%2Fybc%3D","line":775,"in_reply_to":"AAAAOn%2F%2Fyy8%3D","updated":"2013-04-23 12:39:07.000000000","message":"I\u0027m just writing my own summary here to help my own understanding, and hopefully that of other reviewers.\n\nFrom conntrack manpage:\n\nThe exit code is 0 for correct function. Errors which appear to be caused by invalid command line parameters cause an exit code of 2. Any other errors cause an exit code of 1.\n\n-------\n\nSo as I understand it, we\u0027ll log an exception if:\n\n + conntrack binary is not there\n + conntrack doesn\u0027t understand our parameters\n\nand we\u0027ll ignore it if:\n\n + conntrack entries won\u0027t delete (which\u0027ll mean the user would have to drop connections if they later migrated back to this host?)\n\nSounds good to me :)","commit_id":"d9648f745e2e992bf8ee7876119ffd3979a4a230"},{"author":{"_account_id":1970,"name":"Jacob Wen","email":"wenjianhn@gmail.com","username":"wenjianhn"},"change_message_id":"143598d1dc36349903884c320c64a5b4d052a70a","unresolved":false,"context_lines":[{"line_number":770,"context_line":"def clean_conntrack(fixed_ip):"},{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue,"},{"line_number":773,"context_line":"                 check_exit_code\u003d[0, 1])"},{"line_number":774,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":775,"context_line":"        LOG.exception(_(\u0027Error deleting conntrack entries for %s\u0027), fixed_ip)"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2FszA%3D","line":773,"updated":"2013-04-27 02:51:21.000000000","message":"If an instance on the hostA connects to the migrated instance, we can\u0027t delete this conntrack entry.","commit_id":"5fb947208e7141e572d7e2e95165c715f23b5fda"},{"author":{"_account_id":1970,"name":"Jacob Wen","email":"wenjianhn@gmail.com","username":"wenjianhn"},"change_message_id":"0c3d9370e139502dfd326da0b50ba199107b4bf4","unresolved":false,"context_lines":[{"line_number":770,"context_line":"def clean_conntrack(fixed_ip):"},{"line_number":771,"context_line":"    try:"},{"line_number":772,"context_line":"        _execute(\u0027conntrack\u0027, \u0027-D\u0027, \u0027-r\u0027, fixed_ip, run_as_root\u003dTrue,"},{"line_number":773,"context_line":"                 check_exit_code\u003d[0, 1])"},{"line_number":774,"context_line":"    except exception.ProcessExecutionError:"},{"line_number":775,"context_line":"        LOG.exception(_(\u0027Error deleting conntrack entries for %s\u0027), fixed_ip)"},{"line_number":776,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAOn%2F%2FsK8%3D","line":773,"in_reply_to":"AAAAOn%2F%2FszA%3D","updated":"2013-04-28 14:46:59.000000000","message":"My mistake. No worries. Deleting it is fine.","commit_id":"5fb947208e7141e572d7e2e95165c715f23b5fda"}]}
