)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"20783645639df2254bbfbed23a1bcc959a4a1b35","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Surya Seetharaman \u003csuryaseetharaman.9@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-10-05 13:59:24 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Refactor scatter-gather utility to return exception objects"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Scatter-gather utility returns a raised_exception_sentinel for"},{"line_number":10,"context_line":"all kinds of exceptions that are caught and often times there"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_861c4167","line":7,"updated":"2018-10-05 15:07:41.000000000","message":"Remove WIP","commit_id":"c6e7a284b1a8f76cd92c01f8594386e83cf2249e"}],"nova/api/openstack/compute/console_auth_tokens.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c37d32f16a75a8e4c4e4e8ad58a47ca1df6bf9cd","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            # loop as soon as we find a result because the token is associated"},{"line_number":55,"context_line":"            # with one instance, which can only be in one cell."},{"line_number":56,"context_line":"            for result in results.values():"},{"line_number":57,"context_line":"                if (result is not nova_context.did_not_respond_sentinel and"},{"line_number":58,"context_line":"                        not isinstance(result, Exception)):"},{"line_number":59,"context_line":"                    connect_info \u003d result.to_dict()"},{"line_number":60,"context_line":"                    break"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_c70a8525","line":58,"range":{"start_line":57,"start_character":16,"end_line":58,"end_character":59},"updated":"2018-10-26 12:38:21.000000000","message":"Can\u0027t we use is_cell_failure_sentinel here?","commit_id":"898b0762df22c7273f8eb4b823258420b8e2ecb1"}],"nova/scheduler/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c37d32f16a75a8e4c4e4e8ad58a47ca1df6bf9cd","unresolved":false,"context_lines":[{"line_number":872,"context_line":"                                                     get_hosts_in_cell)"},{"line_number":873,"context_line":"    hosts \u003d []"},{"line_number":874,"context_line":"    for result in results.values():"},{"line_number":875,"context_line":"        # TODO(melwitt): We will need to handle scenarios where an exception"},{"line_number":876,"context_line":"        # is raised while targeting a cell and when a cell does not respond"},{"line_number":877,"context_line":"        # as part of the \"handling of a down cell\" spec:"},{"line_number":878,"context_line":"        # https://blueprints.launchpad.net/nova/+spec/handling-down-cell"},{"line_number":879,"context_line":"        if not nova_context.is_cell_failure_sentinel(result):"},{"line_number":880,"context_line":"            hosts.extend(result)"},{"line_number":881,"context_line":"    return hosts"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_62283f84","line":878,"range":{"start_line":875,"start_character":8,"end_line":878,"end_character":72},"updated":"2018-10-26 12:38:21.000000000","message":"I\u0027m not sure what needs to happen for this TODO...","commit_id":"898b0762df22c7273f8eb4b823258420b8e2ecb1"}],"nova/tests/unit/compute/test_host_api.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"97ba5237217c66b4eb9d56ae77cdd7ad5cf0a3e8","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                                  host\u003d\u0027host-%s\u0027 % uuids.cell1)"},{"line_number":193,"context_line":"        mock_sg.return_value \u003d {"},{"line_number":194,"context_line":"            uuids.cell1: [service],"},{"line_number":195,"context_line":"            uuids.cell2: context.did_not_respond_sentinel"},{"line_number":196,"context_line":"        }"},{"line_number":197,"context_line":"        services \u003d self.host_api.service_get_all(self.ctxt, all_cells\u003dTrue)"},{"line_number":198,"context_line":"        # returns the results from cell1 and ignores cell2."}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_b3ad4084","line":195,"updated":"2018-10-26 20:32:07.000000000","message":"Note: the \"equivalent\" of the previous code here would be to make this some exception object, but I don\u0027t think it matters for the intent of the test.","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"}],"nova/tests/unit/compute/test_multi_cell_list.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"818dcb26b8e594208f12d30b9145ff6d7db3ecac","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        isinstance([x._db_record for x in"},{"line_number":165,"context_line":"                    multi_cell_list.query_wrapper("},{"line_number":166,"context_line":"                        mock.MagicMock(), test)], Exception)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class TestListContext(multi_cell_list.RecordSortContext):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_f3bbb8e0","line":166,"updated":"2018-10-26 20:23:33.000000000","message":"Heh, what\u0027s this? Shouldn\u0027t this be:\n\n self.assertEqual([test.TestingException],\n                  [x._db_record for x in\n                   multi_cell_list.query_wrapper(\n                       mock.MagicMock(), test)])","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"68a58a2de2e8cdbca023f4a6158fe2c49a540f2a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        isinstance([x._db_record for x in"},{"line_number":165,"context_line":"                    multi_cell_list.query_wrapper("},{"line_number":166,"context_line":"                        mock.MagicMock(), test)], Exception)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class TestListContext(multi_cell_list.RecordSortContext):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_e649758d","line":166,"in_reply_to":"3f79a3b5_9796c64a","updated":"2018-10-31 12:59:46.000000000","message":"actually this again has the object equality comparison problem since using assertEqual to check object quality doesn\u0027t work well and I can\u0027t use obj_equals_prim here, however I could make this more accurate by checking if its an instance of test.TestingException instead of Exception if its that important for consistency.","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"e15c242f931958bc453e42302e3b12050819a940","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        isinstance([x._db_record for x in"},{"line_number":165,"context_line":"                    multi_cell_list.query_wrapper("},{"line_number":166,"context_line":"                        mock.MagicMock(), test)], Exception)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class TestListContext(multi_cell_list.RecordSortContext):"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_9796c64a","line":166,"in_reply_to":"3f79a3b5_f3bbb8e0","updated":"2018-10-30 12:22:50.000000000","message":"ack, will change this :)","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"97ba5237217c66b4eb9d56ae77cdd7ad5cf0a3e8","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        # One cell will succeed and then time out, one will fail immediately,"},{"line_number":392,"context_line":"        # and the last will always work"},{"line_number":393,"context_line":"        lister.set_fails(uuids.cell0, [None, context.did_not_respond_sentinel])"},{"line_number":394,"context_line":"        lister.set_fails(uuids.cell1, exception.BuildAbortException("},{"line_number":395,"context_line":"            instance_uuid\u003d\u0027fake\u0027, reason\u003d\u0027fake\u0027))"},{"line_number":396,"context_line":"        ctx \u003d context.RequestContext()"},{"line_number":397,"context_line":"        result \u003d lister.get_records_sorted(ctx, {}, 50, None,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_33ce1058","line":394,"updated":"2018-10-26 20:32:07.000000000","message":"Note: I don\u0027t think this could ever be an exception raised from an instance list (same with InstanceNotFound) but it doesn\u0027t technically matter for the intent of the test.","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"68a58a2de2e8cdbca023f4a6158fe2c49a540f2a","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        # One cell will succeed and then time out, one will fail immediately,"},{"line_number":392,"context_line":"        # and the last will always work"},{"line_number":393,"context_line":"        lister.set_fails(uuids.cell0, [None, context.did_not_respond_sentinel])"},{"line_number":394,"context_line":"        lister.set_fails(uuids.cell1, exception.BuildAbortException("},{"line_number":395,"context_line":"            instance_uuid\u003d\u0027fake\u0027, reason\u003d\u0027fake\u0027))"},{"line_number":396,"context_line":"        ctx \u003d context.RequestContext()"},{"line_number":397,"context_line":"        result \u003d lister.get_records_sorted(ctx, {}, 50, None,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_a106071b","line":394,"in_reply_to":"3f79a3b5_33ce1058","updated":"2018-10-31 12:59:46.000000000","message":"I could add a comment here to avoid confusions.","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"5eba3ef8db4498f0eca15fbbdf016faee445a076","unresolved":false,"context_lines":[{"line_number":391,"context_line":"        # One cell will succeed and then time out, one will fail immediately,"},{"line_number":392,"context_line":"        # and the last will always work"},{"line_number":393,"context_line":"        lister.set_fails(uuids.cell0, [None, context.did_not_respond_sentinel])"},{"line_number":394,"context_line":"        lister.set_fails(uuids.cell1, exception.BuildAbortException("},{"line_number":395,"context_line":"            instance_uuid\u003d\u0027fake\u0027, reason\u003d\u0027fake\u0027))"},{"line_number":396,"context_line":"        ctx \u003d context.RequestContext()"},{"line_number":397,"context_line":"        result \u003d lister.get_records_sorted(ctx, {}, 50, None,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_fc0fa1d1","line":394,"in_reply_to":"3f79a3b5_a106071b","updated":"2018-11-02 00:43:38.000000000","message":"Y\u0027know, I should have suggested to just use test.TestingException for these. Ah well, I forgot. :)","commit_id":"d356597a809444905be0e439dca9f725d3d75ff9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bfbdb07b3ad9d3a070360e0f478a2ea073f0efd3","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        def tester(ctx):"},{"line_number":162,"context_line":"            raise test.TestingException"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        isinstance([x._db_record for x in"},{"line_number":165,"context_line":"                    multi_cell_list.query_wrapper("},{"line_number":166,"context_line":"                        mock.MagicMock(), tester)], test.TestingException)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_47793cc4","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":18},"updated":"2018-10-31 18:54:12.000000000","message":"This is still weird. Can\u0027t we just do a simple for loop over the results and do self.assertIsInstance(test.TestingException, result) for each result?","commit_id":"e1218283e523aff461b4fc2f5af315571494c89d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a3c54c057d29189982c4d590e09b6e4d4809de4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        def tester(ctx):"},{"line_number":162,"context_line":"            raise test.TestingException"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        isinstance([x._db_record for x in"},{"line_number":165,"context_line":"                    multi_cell_list.query_wrapper("},{"line_number":166,"context_line":"                        mock.MagicMock(), tester)], test.TestingException)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_f2b36408","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":18},"in_reply_to":"3f79a3b5_47793cc4","updated":"2018-10-31 19:18:01.000000000","message":"Done","commit_id":"e1218283e523aff461b4fc2f5af315571494c89d"},{"author":{"_account_id":26936,"name":"Surya Seetharaman","email":"suryaseetharaman.9@gmail.com","username":"tssurya"},"change_message_id":"43b1395381791524302df8cbfec43fdf1587f1fc","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        def tester(ctx):"},{"line_number":162,"context_line":"            raise test.TestingException"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        self.assertIsInstance("},{"line_number":165,"context_line":"            # query_wrapper is a generator so we convert to a list and"},{"line_number":166,"context_line":"            # check the type on the first and only result"},{"line_number":167,"context_line":"            [x._db_record for x in multi_cell_list.query_wrapper("}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_eaefe5af","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":29},"updated":"2018-11-01 10:53:28.000000000","message":"nice, never used this before.. wfm, thanks","commit_id":"031314b6d87638ebaf01a42dc97196ecb10c8499"}]}
