)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4f2e6acfef8758514031f8c13c26d3b7a4d381b2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When privsep\u0027ing chown calls, this one was missed. Fix that."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"I think this entire method should go away, but it will break at least"},{"line_number":12,"context_line":"one of out tree driver. I\u0027m talking to the powervm guys about a way"},{"line_number":13,"context_line":"forward there."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I8a9bda36728896e60b13c32afda0a7130664cb7b"},{"line_number":16,"context_line":"Closes-Bug: #502017"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f2577a7_8e9f5202","line":13,"range":{"start_line":12,"start_character":24,"end_line":13,"end_character":14},"updated":"2017-09-12 19:18:25.000000000","message":"We\u0027re playing with https://review.openstack.org/#/c/503078/","commit_id":"e43a3d21133422f89f1200bee046be12c9f294d2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e4f492a19700e60410c3120a711b2fb2e1310189","unresolved":false,"context_lines":[{"line_number":13,"context_line":"forward there."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I8a9bda36728896e60b13c32afda0a7130664cb7b"},{"line_number":16,"context_line":"Closes-Bug: #502017"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f2577a7_0e9fe25f","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":19},"updated":"2017-09-12 19:13:54.000000000","message":"1716718","commit_id":"e43a3d21133422f89f1200bee046be12c9f294d2"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"d730a50aea7afeabb13f9ec8c4ffb7d84988e6fd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"forward there."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I8a9bda36728896e60b13c32afda0a7130664cb7b"},{"line_number":16,"context_line":"Closes-Bug: #502017"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f2577a7_24687f1f","line":16,"range":{"start_line":16,"start_character":13,"end_line":16,"end_character":19},"in_reply_to":"5f2577a7_0e9fe25f","updated":"2017-09-12 20:10:02.000000000","message":"Doh.","commit_id":"e43a3d21133422f89f1200bee046be12c9f294d2"}],"nova/tests/unit/test_utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"e4f492a19700e60410c3120a711b2fb2e1310189","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    def test_temporary_chown(self, mock_chown):"},{"line_number":150,"context_line":"        with tempfile.NamedTemporaryFile() as f:"},{"line_number":151,"context_line":"            with utils.temporary_chown(f.name, owner_uid\u003d2):"},{"line_number":152,"context_line":"                mock_chown.assert_has_calls([mock.call(f.name, uid\u003d2)])"},{"line_number":153,"context_line":"                mock_chown.reset()"},{"line_number":154,"context_line":"            mock_chown.assert_has_calls([mock.call(f.name, uid\u003dos.getuid())])"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_get_shortened_ipv6(self):"},{"line_number":157,"context_line":"        self.assertEqual(\"abcd:ef01:2345:6789:abcd:ef01:c0a8:fefe\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5f2577a7_2e1dfe0e","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":77},"updated":"2017-09-12 19:13:54.000000000","message":"It\u0027s pretty trivial here, but...\n\nI believe assert_has_calls only ensures that the ones you specify are in the list of calls (i.e. there could be more).  If instead you were to use assert_called_once_with...","commit_id":"e43a3d21133422f89f1200bee046be12c9f294d2"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"d730a50aea7afeabb13f9ec8c4ffb7d84988e6fd","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    def test_temporary_chown(self, mock_chown):"},{"line_number":150,"context_line":"        with tempfile.NamedTemporaryFile() as f:"},{"line_number":151,"context_line":"            with utils.temporary_chown(f.name, owner_uid\u003d2):"},{"line_number":152,"context_line":"                mock_chown.assert_has_calls([mock.call(f.name, uid\u003d2)])"},{"line_number":153,"context_line":"                mock_chown.reset()"},{"line_number":154,"context_line":"            mock_chown.assert_has_calls([mock.call(f.name, uid\u003dos.getuid())])"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_get_shortened_ipv6(self):"},{"line_number":157,"context_line":"        self.assertEqual(\"abcd:ef01:2345:6789:abcd:ef01:c0a8:fefe\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5f2577a7_c4953be6","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":77},"in_reply_to":"5f2577a7_2e1dfe0e","updated":"2017-09-12 20:10:02.000000000","message":"Done","commit_id":"e43a3d21133422f89f1200bee046be12c9f294d2"}],"nova/utils.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"836b70fa1aa896301de232220196797d1ed5eb17","unresolved":false,"context_lines":[{"line_number":640,"context_line":"# NOTE(mikal): I really wanted this code to go away, but I can\u0027t find a way"},{"line_number":641,"context_line":"# to implement what the callers of this method want with privsep. Basically,"},{"line_number":642,"context_line":"# if we could hand off either a file descriptor or a file like object then"},{"line_number":643,"context_line":"# we could make this go away."},{"line_number":644,"context_line":"@contextlib.contextmanager"},{"line_number":645,"context_line":"def temporary_chown(path, owner_uid\u003dNone):"},{"line_number":646,"context_line":"    \"\"\"Temporarily chown a path."}],"source_content_type":"text/x-python","patch_set":3,"id":"5f2577a7_e86d8a04","line":643,"updated":"2017-09-13 17:08:49.000000000","message":"I think this is because of the dom0 / domU handoff","commit_id":"39c2cceb75265ddf67822ca40d2d69d2e27e3a91"}]}
