)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"18d9a7eb498e7d5c5f5b881c2b59fa1a85b07970","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move iptables rule fetching and setting to privsep."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rules are fetched, editted, and set. Keep the edit logic in"},{"line_number":10,"context_line":"nova/network, but move the bits requiring evelated permissions"},{"line_number":11,"context_line":"to privsep."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_b3d6b7f1","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":26},"updated":"2019-07-31 22:18:54.000000000","message":"edited","commit_id":"78ab302ca72a85828d141bcc9c892297fbcc7a41"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move iptables rule fetching and setting to privsep."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rules are fetched, editted, and set. Keep the edit logic in"},{"line_number":10,"context_line":"nova/network, but move the bits requiring evelated permissions"},{"line_number":11,"context_line":"to privsep."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_63007c67","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":26},"in_reply_to":"9fdfeff1_b3d6b7f1","updated":"2019-08-16 10:37:02.000000000","message":"Done","commit_id":"78ab302ca72a85828d141bcc9c892297fbcc7a41"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"18d9a7eb498e7d5c5f5b881c2b59fa1a85b07970","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move iptables rule fetching and setting to privsep."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rules are fetched, editted, and set. Keep the edit logic in"},{"line_number":10,"context_line":"nova/network, but move the bits requiring evelated permissions"},{"line_number":11,"context_line":"to privsep."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1f8382c450b95d261f68ec8bae2a2077f9361fe0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_930b738c","line":10,"range":{"start_line":10,"start_character":42,"end_line":10,"end_character":50},"updated":"2019-07-31 22:18:54.000000000","message":"I\u0027m totally going to spell it like this from now on.","commit_id":"78ab302ca72a85828d141bcc9c892297fbcc7a41"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Move iptables rule fetching and setting to privsep."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rules are fetched, editted, and set. Keep the edit logic in"},{"line_number":10,"context_line":"nova/network, but move the bits requiring evelated permissions"},{"line_number":11,"context_line":"to privsep."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1f8382c450b95d261f68ec8bae2a2077f9361fe0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7faddb67_43fb007a","line":10,"range":{"start_line":10,"start_character":42,"end_line":10,"end_character":50},"in_reply_to":"9fdfeff1_930b738c","updated":"2019-08-16 10:37:02.000000000","message":"Done","commit_id":"78ab302ca72a85828d141bcc9c892297fbcc7a41"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move iptables rule fetching and setting to privsep."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Rules are fetched, editted, and set. Keep the edit logic in"},{"line_number":10,"context_line":"nova/network, but move the bits requiring evelated permissions"},{"line_number":11,"context_line":"to privsep."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7faddb67_b66ed8fd","line":9,"range":{"start_line":9,"start_character":19,"end_line":9,"end_character":26},"updated":"2019-08-16 10:37:02.000000000","message":"edited","commit_id":"50cbfa958d670f63410a9adb5617254e05c63453"}],"nova/network/linux_net.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"        for is_ipv4, tables in s:"},{"line_number":369,"context_line":"            if not self.redirect_privsep:"},{"line_number":370,"context_line":"                all_tables, _err \u003d nova.privsep.linux_net.iptables_get_rules("},{"line_number":371,"context_line":"                                       ipv4\u003dis_ipv4)"},{"line_number":372,"context_line":"            else:"},{"line_number":373,"context_line":"                if is_ipv4:"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_d64cb49f","line":370,"range":{"start_line":370,"start_character":28,"end_line":370,"end_character":32},"updated":"2019-08-16 10:37:02.000000000","message":"_","commit_id":"50cbfa958d670f63410a9adb5617254e05c63453"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":368,"context_line":"        for is_ipv4, tables in s:"},{"line_number":369,"context_line":"            if not self.redirect_privsep:"},{"line_number":370,"context_line":"                all_tables, _err \u003d nova.privsep.linux_net.iptables_get_rules("},{"line_number":371,"context_line":"                                       ipv4\u003dis_ipv4)"},{"line_number":372,"context_line":"            else:"},{"line_number":373,"context_line":"                if is_ipv4:"},{"line_number":374,"context_line":"                    cmd \u003d \u0027iptables-save\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_367ae8b9","line":371,"range":{"start_line":371,"start_character":20,"end_line":371,"end_character":39},"updated":"2019-08-16 10:37:02.000000000","message":"nit: weird indentation","commit_id":"50cbfa958d670f63410a9adb5617254e05c63453"}],"nova/privsep/linux_net.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d765fb9e66c5e0b84c1c61b55e04e46f8ad00c31","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                         \u0027id\u0027, vlan_num, check_exit_code\u003d[0, 2, 254])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":273,"context_line":"def iptables_get_rules(ipv4\u003dTrue):"},{"line_number":274,"context_line":"    if ipv4:"},{"line_number":275,"context_line":"        cmd \u003d \u0027iptables\u0027"},{"line_number":276,"context_line":"    else:"},{"line_number":277,"context_line":"        cmd \u003d \u0027ip6tables\u0027"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    return processutils.execute(\u0027%s-save\u0027 % cmd, \u0027-c\u0027, attempts\u003d5)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"@nova.privsep.sys_admin_pctxt.entrypoint"},{"line_number":283,"context_line":"def iptables_set_rules(rules, ipv4\u003dTrue):"},{"line_number":284,"context_line":"    if ipv4:"},{"line_number":285,"context_line":"        cmd \u003d \u0027iptables\u0027"},{"line_number":286,"context_line":"    else:"},{"line_number":287,"context_line":"        cmd \u003d \u0027ip6tables\u0027"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    processutils.execute(\u0027%s-restore\u0027 % cmd, \u0027-c\u0027,"},{"line_number":290,"context_line":"                         process_input\u003dsix.b(\u0027\\n\u0027.join(rules)),"},{"line_number":291,"context_line":"                         attempts\u003d5)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_5660c401","line":291,"range":{"start_line":272,"start_character":0,"end_line":291,"end_character":36},"updated":"2019-08-16 10:37:02.000000000","message":"Any reason we didn\u0027t just add \u0027ip6tables_get_rules\u0027 and \u0027ip6tables_set_rules\u0027 too instead of the parameter?","commit_id":"50cbfa958d670f63410a9adb5617254e05c63453"}],"nova/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fdd4180ce88a1b406186c8c1ac11282f237ae971","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # NOTE(mikal): we don\u0027t have root to manipulate iptables, so just"},{"line_number":100,"context_line":"        # zero that bit out."},{"line_number":101,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":102,"context_line":"            \u0027nova.network.linux_net.IptablesManager._apply\u0027,"},{"line_number":103,"context_line":"            lambda _: None))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        with mock.patch(\u0027nova.context.get_admin_context\u0027,"},{"line_number":106,"context_line":"                        return_value\u003dself.ctxt):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7faddb67_d0132d00","line":103,"range":{"start_line":101,"start_character":0,"end_line":103,"end_character":28},"updated":"2019-08-16 19:31:14.000000000","message":"nit: this could be spelled\n\n self.useFixture(fixtures.MockPatch(\n     \u0027nova.network.linux_net.IptablesManager._apply\u0027))","commit_id":"54bf4694b9057264ebf49a299478b4fd325fafb7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d4c34be3c0427617509bdcb861b6b5c09bef34c5","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        # NOTE(mikal): we don\u0027t have root to manipulate iptables, so just"},{"line_number":100,"context_line":"        # zero that bit out."},{"line_number":101,"context_line":"        self.useFixture(fixtures.MonkeyPatch("},{"line_number":102,"context_line":"            \u0027nova.network.linux_net.IptablesManager._apply\u0027,"},{"line_number":103,"context_line":"            lambda _: None))"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        with mock.patch(\u0027nova.context.get_admin_context\u0027,"},{"line_number":106,"context_line":"                        return_value\u003dself.ctxt):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7faddb67_72b11301","line":103,"range":{"start_line":101,"start_character":0,"end_line":103,"end_character":28},"in_reply_to":"7faddb67_d0132d00","updated":"2019-08-19 14:05:09.000000000","message":"This is addressed in a follow-up https://review.opendev.org/#/c/677210/","commit_id":"54bf4694b9057264ebf49a299478b4fd325fafb7"}],"nova/tests/unit/network/test_linux_net.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"18d9a7eb498e7d5c5f5b881c2b59fa1a85b07970","unresolved":false,"context_lines":[{"line_number":823,"context_line":"                   \u0027bridge_interface\u0027: iface}"},{"line_number":824,"context_line":"        driver.plug(network, \u0027fakemac\u0027)"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"        expected \u003d ["},{"line_number":827,"context_line":"            (\u0027iptables-save\u0027, \u0027-c\u0027),"},{"line_number":828,"context_line":"            (\u0027iptables-restore\u0027, \u0027-c\u0027),"},{"line_number":829,"context_line":"            (\u0027ip6tables-save\u0027, \u0027-c\u0027),"},{"line_number":830,"context_line":"            (\u0027ip6tables-restore\u0027, \u0027-c\u0027),"},{"line_number":831,"context_line":"        ]"},{"line_number":832,"context_line":"        self.assertEqual(expected, executes)"},{"line_number":833,"context_line":"        mock_modify_ebtables.assert_has_calls(["},{"line_number":834,"context_line":"            mock.call(\u0027filter\u0027,"},{"line_number":835,"context_line":"                      [\u0027INPUT\u0027, \u0027-p\u0027, \u0027ARP\u0027, \u0027-i\u0027, iface, \u0027--arp-ip-dst\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_8e2b5fe9","side":"PARENT","line":832,"range":{"start_line":826,"start_character":0,"end_line":832,"end_character":44},"updated":"2019-07-31 22:18:54.000000000","message":"this","commit_id":"bfc4260fe37768bda7e42b7ddc10a6dbd2f5df98"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0e27fafaa9c87162a38e75cba27390e003278c04","unresolved":false,"context_lines":[{"line_number":823,"context_line":"                   \u0027bridge_interface\u0027: iface}"},{"line_number":824,"context_line":"        driver.plug(network, \u0027fakemac\u0027)"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"        expected \u003d ["},{"line_number":827,"context_line":"            (\u0027iptables-save\u0027, \u0027-c\u0027),"},{"line_number":828,"context_line":"            (\u0027iptables-restore\u0027, \u0027-c\u0027),"},{"line_number":829,"context_line":"            (\u0027ip6tables-save\u0027, \u0027-c\u0027),"},{"line_number":830,"context_line":"            (\u0027ip6tables-restore\u0027, \u0027-c\u0027),"},{"line_number":831,"context_line":"        ]"},{"line_number":832,"context_line":"        self.assertEqual(expected, executes)"},{"line_number":833,"context_line":"        mock_modify_ebtables.assert_has_calls(["},{"line_number":834,"context_line":"            mock.call(\u0027filter\u0027,"},{"line_number":835,"context_line":"                      [\u0027INPUT\u0027, \u0027-p\u0027, \u0027ARP\u0027, \u0027-i\u0027, iface, \u0027--arp-ip-dst\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_a9f1326d","side":"PARENT","line":832,"range":{"start_line":826,"start_character":0,"end_line":832,"end_character":44},"in_reply_to":"7faddb67_8e2b5fe9","updated":"2019-08-06 07:21:52.000000000","message":"These lines are covered in line 868-873 in the new code.","commit_id":"bfc4260fe37768bda7e42b7ddc10a6dbd2f5df98"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0e27fafaa9c87162a38e75cba27390e003278c04","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                   \u0027bridge_interface\u0027: iface}"},{"line_number":866,"context_line":"        driver.plug(network, \u0027fakemac\u0027)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        mock_iptables_get_rules.assert_has_calls(["},{"line_number":869,"context_line":"            mock.call(ipv4\u003dTrue),"},{"line_number":870,"context_line":"            mock.call(ipv4\u003dFalse)])"},{"line_number":871,"context_line":"        mock_iptables_set_rules.assert_has_calls(["},{"line_number":872,"context_line":"            mock.call(mock.ANY, ipv4\u003dTrue),"},{"line_number":873,"context_line":"            mock.call(mock.ANY, ipv4\u003dFalse)])"},{"line_number":874,"context_line":"        mock_modify_ebtables.assert_has_calls(["},{"line_number":875,"context_line":"            mock.call(\u0027filter\u0027,"},{"line_number":876,"context_line":"                      [\u0027INPUT\u0027, \u0027-p\u0027, \u0027ARP\u0027, \u0027-i\u0027, iface, \u0027--arp-ip-dst\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_c9f4ae5d","line":873,"range":{"start_line":868,"start_character":0,"end_line":873,"end_character":45},"updated":"2019-08-06 07:21:52.000000000","message":"Here","commit_id":"bbe2a32b578306d9630353c342173cf5d2c84378"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d4c34be3c0427617509bdcb861b6b5c09bef34c5","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                   \u0027bridge_interface\u0027: iface}"},{"line_number":866,"context_line":"        driver.plug(network, \u0027fakemac\u0027)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        mock_iptables_get_rules.assert_has_calls(["},{"line_number":869,"context_line":"            mock.call(ipv4\u003dTrue),"},{"line_number":870,"context_line":"            mock.call(ipv4\u003dFalse)])"},{"line_number":871,"context_line":"        mock_iptables_set_rules.assert_has_calls(["},{"line_number":872,"context_line":"            mock.call(mock.ANY, ipv4\u003dTrue),"},{"line_number":873,"context_line":"            mock.call(mock.ANY, ipv4\u003dFalse)])"},{"line_number":874,"context_line":"        mock_modify_ebtables.assert_has_calls(["},{"line_number":875,"context_line":"            mock.call(\u0027filter\u0027,"},{"line_number":876,"context_line":"                      [\u0027INPUT\u0027, \u0027-p\u0027, \u0027ARP\u0027, \u0027-i\u0027, iface, \u0027--arp-ip-dst\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_e302130c","line":873,"range":{"start_line":868,"start_character":0,"end_line":873,"end_character":45},"in_reply_to":"7faddb67_903295a6","updated":"2019-08-19 14:05:09.000000000","message":"Addressed in a follow-up https://review.opendev.org/#/c/677210/","commit_id":"bbe2a32b578306d9630353c342173cf5d2c84378"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fdd4180ce88a1b406186c8c1ac11282f237ae971","unresolved":false,"context_lines":[{"line_number":865,"context_line":"                   \u0027bridge_interface\u0027: iface}"},{"line_number":866,"context_line":"        driver.plug(network, \u0027fakemac\u0027)"},{"line_number":867,"context_line":""},{"line_number":868,"context_line":"        mock_iptables_get_rules.assert_has_calls(["},{"line_number":869,"context_line":"            mock.call(ipv4\u003dTrue),"},{"line_number":870,"context_line":"            mock.call(ipv4\u003dFalse)])"},{"line_number":871,"context_line":"        mock_iptables_set_rules.assert_has_calls(["},{"line_number":872,"context_line":"            mock.call(mock.ANY, ipv4\u003dTrue),"},{"line_number":873,"context_line":"            mock.call(mock.ANY, ipv4\u003dFalse)])"},{"line_number":874,"context_line":"        mock_modify_ebtables.assert_has_calls(["},{"line_number":875,"context_line":"            mock.call(\u0027filter\u0027,"},{"line_number":876,"context_line":"                      [\u0027INPUT\u0027, \u0027-p\u0027, \u0027ARP\u0027, \u0027-i\u0027, iface, \u0027--arp-ip-dst\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"7faddb67_903295a6","line":873,"range":{"start_line":868,"start_character":0,"end_line":873,"end_character":45},"in_reply_to":"7faddb67_c9f4ae5d","updated":"2019-08-16 19:31:14.000000000","message":"No, this asserts that we called the privsep method. It doesn\u0027t assert that ip[6]tables-{save|restore} -c was invoked.","commit_id":"bbe2a32b578306d9630353c342173cf5d2c84378"}]}
