)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"3754888cf53077970127277f892bd4efc9991617","unresolved":false,"context_lines":[{"line_number":18,"context_line":"call to iptables-restore."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Icac99eb1d43648c64b6beaee0d6201f990eacb51"},{"line_number":21,"context_line":"Related-bug: #495974"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f4b6375_7ea167a9","line":21,"updated":"2017-10-20 16:27:03.000000000","message":"bug number is wrong","commit_id":"0b6546eab5be91beadaa73c92e9aa99b3580ff67"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e2cc981f0010a7730728b628bfa66f177f75a63b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"call to iptables-restore."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Icac99eb1d43648c64b6beaee0d6201f990eacb51"},{"line_number":21,"context_line":"Related-bug: #495974"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3f4b6375_e4aca836","line":21,"in_reply_to":"3f4b6375_7ea167a9","updated":"2017-10-20 18:04:44.000000000","message":"1712185 is correct, that was the review id, doh","commit_id":"0b6546eab5be91beadaa73c92e9aa99b3580ff67"}],"neutron/agent/linux/iptables_manager.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"08cf992847957a460c572e83ce767d7749934825","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            return error"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def _run_restore(self, args, commands):"},{"line_number":481,"context_line":"            # If we\u0027ve already tried and used -w successfully, don\u0027t"},{"line_number":482,"context_line":"            # run iptables-restore without it."},{"line_number":483,"context_line":"            if self.use_lock:"},{"line_number":484,"context_line":"                return self._run_restore_lock(args, commands, lock\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_cb50d7d7","line":481,"updated":"2017-10-18 19:47:14.000000000","message":"oops, this is over-indented due to copy/paste, will fix","commit_id":"df35727a6e471807f78de6205ed930f8d1136555"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f680fb93ef2475edd9b8b6934bd873f7f55d6169","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        self.namespace \u003d namespace"},{"line_number":310,"context_line":"        self.iptables_apply_deferred \u003d False"},{"line_number":311,"context_line":"        self.wrap_name \u003d binary_name[:16]"},{"line_number":312,"context_line":"        self.use_xtables_lock \u003d False"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        self.ipv4 \u003d {\u0027filter\u0027: IptablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":315,"context_line":"        self.ipv6 \u003d {\u0027filter\u0027: IptablesTable(binary_name\u003dself.wrap_name)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_ceda09e8","line":312,"updated":"2017-10-19 18:41:02.000000000","message":"So this seems to work well in testing, but one thing having this here does is make it so every manager needs to \"learn\" that -w works.  I think having this a global would be better, that way we change all users quickly and eliminate all but one log message about using -w.\n\nThe only downside to that is that unit testing is more difficult since if we run the test that fails first all the other mocks not using -w will fail, it\u0027s a race condition.","commit_id":"b39c6e19c3ac58133e518d86b23cca23e51a6c18"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"8052126396f1cc3a45c2f00abfc8aa99062af410","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# If we\u0027ve already tried and used -w successfully, don\u0027t"},{"line_number":69,"context_line":"# run iptables-restore without it."},{"line_number":70,"context_line":"USE_XTABLES_LOCK \u003d False"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def comment_rule(rule, comment):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_82794830","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":16},"updated":"2017-10-23 09:47:54.000000000","message":"What was the reason of having this a module global var instead of instance attribute? Just to save check in case of multiple iptables managers are used in a single process? Can it be a class attribute then?","commit_id":"ea5517d81d633de495eacd8b13902724faef2283"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"40a05d969f7596c4def61f3bbb29fefb4ceede60","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# If we\u0027ve already tried and used -w successfully, don\u0027t"},{"line_number":69,"context_line":"# run iptables-restore without it."},{"line_number":70,"context_line":"USE_XTABLES_LOCK \u003d False"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def comment_rule(rule, comment):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_f73434fd","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":16},"in_reply_to":"3f4b6375_82794830","updated":"2017-10-23 14:00:47.000000000","message":"Yes, since there is one iptables_manager per namespace, so quite a few on an l3-agent.  I\u0027ll make it a class attribute.","commit_id":"ea5517d81d633de495eacd8b13902724faef2283"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9da6474713f011dd9e4307e92d6e9a06c5ea834f","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        # give agent some time to report back to server"},{"line_number":470,"context_line":"        return str(int(cfg.CONF.AGENT.report_interval / 3.0))"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def _run_restore_lock(self, args, commands, lock\u003dFalse):"},{"line_number":473,"context_line":"        args \u003d args[:]"},{"line_number":474,"context_line":"        if lock:"},{"line_number":475,"context_line":"            args +\u003d [\u0027-w\u0027, self.xlock_wait_time]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_40168bf3","line":472,"updated":"2017-10-24 08:23:00.000000000","message":"name of this method suggest me that restore will be run with \"-w\" always but by default it will run it even without lock :/\nMaybe better would be \"_do_run_restore\"?","commit_id":"8541e5fa57978b9601c7720911885f6bed6ec5e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ad9c3525b718e56c21311e89cd44186e4536d104","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        # give agent some time to report back to server"},{"line_number":470,"context_line":"        return str(int(cfg.CONF.AGENT.report_interval / 3.0))"},{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def _run_restore_lock(self, args, commands, lock\u003dFalse):"},{"line_number":473,"context_line":"        args \u003d args[:]"},{"line_number":474,"context_line":"        if lock:"},{"line_number":475,"context_line":"            args +\u003d [\u0027-w\u0027, self.xlock_wait_time]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_26cf1d2a","line":472,"in_reply_to":"3f4b6375_40168bf3","updated":"2017-10-24 15:04:49.000000000","message":"Done","commit_id":"8541e5fa57978b9601c7720911885f6bed6ec5e8"}],"neutron/tests/unit/agent/linux/test_iptables_manager.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0c5fc4a2c5b54b1c1503b96f43908e8af5559224","unresolved":false,"context_lines":[{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1074,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":1075,"context_line":"        PE_error \u003d linux_utils.ProcessExecutionError("},{"line_number":1076,"context_line":"                       \"\", iptables_manager.XTABLES_RESOURCE_PROBLEM_CODE)"},{"line_number":1077,"context_line":"        self.execute.side_effect \u003d [FILTER_DUMP, PE_error, None,"},{"line_number":1078,"context_line":"                                    FILTER_DUMP, None]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_1d02b2b5","line":1075,"updated":"2017-10-18 20:30:08.000000000","message":"Nit: I suggest to make a separate test method for the -w functionality","commit_id":"dea7f22e98bbb00a69c9954a030549c687e982a0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6c7f179d430915dc9b287f3131e08dae709dd478","unresolved":false,"context_lines":[{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1074,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":1075,"context_line":"        PE_error \u003d linux_utils.ProcessExecutionError("},{"line_number":1076,"context_line":"                       \"\", iptables_manager.XTABLES_RESOURCE_PROBLEM_CODE)"},{"line_number":1077,"context_line":"        self.execute.side_effect \u003d [FILTER_DUMP, PE_error, None,"},{"line_number":1078,"context_line":"                                    FILTER_DUMP, None]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_40c28187","line":1075,"in_reply_to":"3f4b6375_1d02b2b5","updated":"2017-10-18 21:24:06.000000000","message":"Done","commit_id":"dea7f22e98bbb00a69c9954a030549c687e982a0"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6317641524a2f3a14f3dbcf7635f552f36ac28aa","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"        # check that we tried with -w when the first attempt failed"},{"line_number":1047,"context_line":"        self.assertEqual(3, self.execute.call_count)"},{"line_number":1048,"context_line":"        self.execute.assert_has_calls("},{"line_number":1049,"context_line":"            [mock.call([\u0027iptables-save\u0027], run_as_root\u003dTrue),"},{"line_number":1050,"context_line":"             mock.call([\u0027iptables-restore\u0027, \u0027-n\u0027],"},{"line_number":1051,"context_line":"                       process_input\u003dmock.ANY, run_as_root\u003dTrue,"},{"line_number":1052,"context_line":"                       log_fail_as_error\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_076d8631","line":1049,"updated":"2017-10-20 18:48:14.000000000","message":"I am puzzled. How is the change relevant?","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cf26b092c922331e00aef06f4737599fdb98242d","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"        # check that we tried with -w when the first attempt failed"},{"line_number":1047,"context_line":"        self.assertEqual(3, self.execute.call_count)"},{"line_number":1048,"context_line":"        self.execute.assert_has_calls("},{"line_number":1049,"context_line":"            [mock.call([\u0027iptables-save\u0027], run_as_root\u003dTrue),"},{"line_number":1050,"context_line":"             mock.call([\u0027iptables-restore\u0027, \u0027-n\u0027],"},{"line_number":1051,"context_line":"                       process_input\u003dmock.ANY, run_as_root\u003dTrue,"},{"line_number":1052,"context_line":"                       log_fail_as_error\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_722e3644","line":1049,"in_reply_to":"3f4b6375_076d8631","updated":"2017-10-20 20:04:29.000000000","message":"I was seeing random failures in the new test, and being more strict in the call check fixed it.  It could have been related to the change you added for log_fail_as_error and was fixed by a rebase to master.  I\u0027ll remove it.","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"70fba0654bd6589f1907a3a89fa3e88bae684597","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        )"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch(\u0027neutron.agent.linux.iptables_manager.USE_XTABLES_LOCK\u0027, False)"},{"line_number":1073,"context_line":"    def test_iptables_use_xtables_lock(self):"},{"line_number":1074,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1075,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":1076,"context_line":"        # We MUST mock USE_XTABLES_LOCK because it is a global variable"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_18ae0398","line":1073,"updated":"2017-10-20 21:15:59.000000000","message":"shouldn\u0027t the test case receive the mock object when the decorator is used?..","commit_id":"ea5517d81d633de495eacd8b13902724faef2283"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"06c4a17ecb08cfe20d316140155a3875243867d7","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        )"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch(\u0027neutron.agent.linux.iptables_manager.USE_XTABLES_LOCK\u0027, False)"},{"line_number":1073,"context_line":"    def test_iptables_use_xtables_lock(self):"},{"line_number":1074,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1075,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":1076,"context_line":"        # We MUST mock USE_XTABLES_LOCK because it is a global variable"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_d8506b61","line":1073,"in_reply_to":"3f4b6375_18ae0398","updated":"2017-10-20 21:32:00.000000000","message":"I thought so too, but it doesn\u0027t work for a global when you need to set it\u0027s value from what I can tell.","commit_id":"ea5517d81d633de495eacd8b13902724faef2283"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"8052126396f1cc3a45c2f00abfc8aa99062af410","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        )"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch(\u0027neutron.agent.linux.iptables_manager.USE_XTABLES_LOCK\u0027, False)"},{"line_number":1073,"context_line":"    def test_iptables_use_xtables_lock(self):"},{"line_number":1074,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1075,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":1076,"context_line":"        # We MUST mock USE_XTABLES_LOCK because it is a global variable"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_a2e7a412","line":1073,"in_reply_to":"3f4b6375_d8506b61","updated":"2017-10-23 09:47:54.000000000","message":"This is new to me too but it is documented: https://docs.python.org/3/library/unittest.mock.html#patch\n\n\"If patch() is used as a decorator and new is omitted, the created mock is passed in as an extra argument to the decorated function.\"","commit_id":"ea5517d81d633de495eacd8b13902724faef2283"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"98d73373cb5ae40a37f7ba45b917a3eabe174364","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"             mock.call([\u0027iptables-restore\u0027, \u0027-n\u0027, \u0027-w\u0027, \u002710\u0027],"},{"line_number":1103,"context_line":"                       process_input\u003dmock.ANY, run_as_root\u003dTrue)])"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"        # Another instance of the class should behave similarly now"},{"line_number":1106,"context_line":"        iptm \u003d iptables_manager.IptablesManager()"},{"line_number":1107,"context_line":"        iptm._apply_synchronized()"},{"line_number":1108,"context_line":"        self.assertEqual(2, self.execute.call_count)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4b6375_9bc75c97","line":1105,"updated":"2017-10-24 02:07:17.000000000","message":"Without a reset_mock() here i\u0027m not actually verifying the calls below, need to change.","commit_id":"a4d2d9c4e399eccdeaacb0e41785bdd5fdef6a44"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c106108289236cce260e93f1045814bfc846b1bb","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        )"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch("},{"line_number":1073,"context_line":"        \u0027neutron.agent.linux.iptables_manager.IptablesManager.use_table_lock\u0027,"},{"line_number":1074,"context_line":"        False)"},{"line_number":1075,"context_line":"    def test_iptables_use_table_lock(self):"},{"line_number":1076,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1077,"context_line":"        # and it succeeds, the next call will only use -w."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_43a20bff","line":1074,"range":{"start_line":1073,"start_character":0,"end_line":1074,"end_character":14},"updated":"2017-10-24 14:26:06.000000000","message":"I suggest to make a fixture here to set it to False and store whatever is there. Then putting it back.","commit_id":"8541e5fa57978b9601c7720911885f6bed6ec5e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ad9c3525b718e56c21311e89cd44186e4536d104","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        )"},{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"    @mock.patch("},{"line_number":1073,"context_line":"        \u0027neutron.agent.linux.iptables_manager.IptablesManager.use_table_lock\u0027,"},{"line_number":1074,"context_line":"        False)"},{"line_number":1075,"context_line":"    def test_iptables_use_table_lock(self):"},{"line_number":1076,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":1077,"context_line":"        # and it succeeds, the next call will only use -w."}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_e68a25bd","line":1074,"range":{"start_line":1073,"start_character":0,"end_line":1074,"end_character":14},"in_reply_to":"3f4b6375_43a20bff","updated":"2017-10-24 15:04:49.000000000","message":"Done","commit_id":"8541e5fa57978b9601c7720911885f6bed6ec5e8"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9225ddd60abf09a98ecb866bb7fd0fd2fdf56247","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"        self.execute.assert_has_calls("},{"line_number":1111,"context_line":"            [mock.call([\u0027iptables-save\u0027], run_as_root\u003dTrue),"},{"line_number":1112,"context_line":"             mock.call([\u0027iptables-restore\u0027, \u0027-n\u0027, \u0027-w\u0027, \u002710\u0027],"},{"line_number":1113,"context_line":"                       process_input\u003dmock.ANY, run_as_root\u003dTrue)])"},{"line_number":1114,"context_line":""},{"line_number":1115,"context_line":"    def test_get_traffic_counters_chain_notexists(self):"},{"line_number":1116,"context_line":"        with mock.patch.object(iptables_manager, \"LOG\") as log:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f4b6375_db9cb40f","line":1113,"updated":"2017-10-24 02:26:49.000000000","message":"This was failing locally, not exactly sure why yet...","commit_id":"8541e5fa57978b9601c7720911885f6bed6ec5e8"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e71a8495a634252c86f126b1994c1f60a039011b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"#    limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import fixtures"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_fc807448","line":16,"updated":"2017-10-24 15:38:58.000000000","message":"It belongs to L20 as fixtures is 3rd party","commit_id":"df47612ac4d0f84b18c3343abdb6ac271e63853b"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"7462e7ce2d8a96836a5863e5f5bc363a0e863a6a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"#    limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import fixtures"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f4b6375_5c30a89f","line":16,"in_reply_to":"3f4b6375_fc807448","updated":"2017-10-24 15:47:03.000000000","message":"Done","commit_id":"df47612ac4d0f84b18c3343abdb6ac271e63853b"}],"neutron/tests/unit/agent/linux/test_iptables_manager_xtable.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6317641524a2f3a14f3dbcf7635f552f36ac28aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\");"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_8762963d","line":1,"updated":"2017-10-20 18:48:14.000000000","message":"this will fail pep8 because there is no iptables_manager_xtable.py file in the tree.","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6317641524a2f3a14f3dbcf7635f552f36ac28aa","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.tests.unit.agent.linux import test_iptables_manager as tim"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IptablesManagerStateFulTestCase_xtables_lock(base.BaseTestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(IptablesManagerStateFulTestCase_xtables_lock, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_275f6273","line":25,"range":{"start_line":25,"start_character":26,"end_line":25,"end_character":29},"updated":"2017-10-20 18:48:14.000000000","message":"nit: why is F upper-case?","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cf26b092c922331e00aef06f4737599fdb98242d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron.tests.unit.agent.linux import test_iptables_manager as tim"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class IptablesManagerStateFulTestCase_xtables_lock(base.BaseTestCase):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def setUp(self):"},{"line_number":28,"context_line":"        super(IptablesManagerStateFulTestCase_xtables_lock, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_d2928a9f","line":25,"range":{"start_line":25,"start_character":26,"end_line":25,"end_character":29},"in_reply_to":"3f4b6375_275f6273","updated":"2017-10-20 20:04:29.000000000","message":"It was in the original?","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"6317641524a2f3a14f3dbcf7635f552f36ac28aa","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_iptables_use_xtables_lock(self):"},{"line_number":34,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":35,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":36,"context_line":"        # The reason this test lives alone is because it triggers a global"},{"line_number":37,"context_line":"        # variable to change, which can cause the other iptable_manager"},{"line_number":38,"context_line":"        # test cases to randomly fail due to race conditions."},{"line_number":39,"context_line":"        PE_error \u003d linux_utils.ProcessExecutionError("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_a74a32a9","line":36,"updated":"2017-10-20 18:48:14.000000000","message":"all test cases from the same class are executed by the same thread, serially. just make sure that the global value is restored after the test case execution, and it should tackle the issue.","commit_id":"364328321166d5457c7e685298c1c9b613933a73"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"cf26b092c922331e00aef06f4737599fdb98242d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_iptables_use_xtables_lock(self):"},{"line_number":34,"context_line":"        # Under normal operation, if we do call iptables-restore with a -w"},{"line_number":35,"context_line":"        # and it succeeds, the next call will only use -w."},{"line_number":36,"context_line":"        # The reason this test lives alone is because it triggers a global"},{"line_number":37,"context_line":"        # variable to change, which can cause the other iptable_manager"},{"line_number":38,"context_line":"        # test cases to randomly fail due to race conditions."},{"line_number":39,"context_line":"        PE_error \u003d linux_utils.ProcessExecutionError("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_4d2b9f81","line":36,"in_reply_to":"3f4b6375_a74a32a9","updated":"2017-10-20 20:04:29.000000000","message":"Ok, think I have a way to fix this better.","commit_id":"364328321166d5457c7e685298c1c9b613933a73"}]}
