)]}'
{"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4d483288877ab3e0fcb476a53a3e84e5d8eb5471","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        result \u003d self.driver.get_info(instance)"},{"line_number":1071,"context_line":"        self.assertEqual(hardware.InstanceInfo(state\u003dnova_states.RUNNING),"},{"line_number":1072,"context_line":"                         result)"},{"line_number":1073,"context_line":"        mock_gbiu.assert_not_called()"},{"line_number":1074,"context_line":""},{"line_number":1075,"context_line":"    @mock.patch.object(ironic_driver.IronicDriver, \u0027_get_node_list\u0027)"},{"line_number":1076,"context_line":"    @mock.patch.object(objects.InstanceList, \u0027get_uuids_by_host\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_bc4f3333","line":1073,"range":{"start_line":1073,"start_character":8,"end_line":1073,"end_character":17},"updated":"2018-09-21 13:32:06.000000000","message":"Could have just mocked _validate_instance_and_node and assert that\u0027s not called, otherwise this test is mocking a bit deep for my tastes, but looks like it\u0027s just a copy/paste/modify sort of test.","commit_id":"9d5fb1b58e908ccacbbbf29341918d0b0588a36f"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5b62aa1af6c464baa14fedceb3527344094b26cf","unresolved":false,"context_lines":[{"line_number":894,"context_line":"        \"\"\""},{"line_number":895,"context_line":"        # we should already have a cache for our nodes, refreshed on every"},{"line_number":896,"context_line":"        # RT loop. but if we don\u0027t have a cache, generate it."},{"line_number":897,"context_line":"        if not self.node_cache:"},{"line_number":898,"context_line":"            # Empty cache, try to populate it."},{"line_number":899,"context_line":"            self._refresh_cache()"},{"line_number":900,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1801303a","line":897,"range":{"start_line":897,"start_character":8,"end_line":897,"end_character":31},"updated":"2018-09-13 18:21:18.000000000","message":"Perhaps for a separate patch, this check-and-early-quit could be folded into _refresh_cache() itself, so you can just invoke _refresh_cache() (here and the other three usages). Assume we\u0027re not so worried about performance that avoiding extra call frame is crucial?","commit_id":"d8da285482eea5a294f64c4dc012447a3d3bb586"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c8b1cf7dad50330b6c0dadde7f37f5e7d1c166c6","unresolved":false,"context_lines":[{"line_number":894,"context_line":"        \"\"\""},{"line_number":895,"context_line":"        # we should already have a cache for our nodes, refreshed on every"},{"line_number":896,"context_line":"        # RT loop. but if we don\u0027t have a cache, generate it."},{"line_number":897,"context_line":"        if not self.node_cache:"},{"line_number":898,"context_line":"            # Empty cache, try to populate it."},{"line_number":899,"context_line":"            self._refresh_cache()"},{"line_number":900,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_443e5a29","line":897,"range":{"start_line":897,"start_character":8,"end_line":897,"end_character":31},"in_reply_to":"3f79a3b5_1801303a","updated":"2018-09-20 19:07:47.000000000","message":"Good idea, thanks :) definitely a separate patch.","commit_id":"d8da285482eea5a294f64c4dc012447a3d3bb586"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d0a55168592c9028b7a2606c5ee5d2be0419b3d4","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            # Empty cache, try to populate it."},{"line_number":899,"context_line":"            self._refresh_cache()"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        for uuid, node in self.node_cache.items():"},{"line_number":902,"context_line":"            if instance.uuid \u003d\u003d node.instance_uuid:"},{"line_number":903,"context_line":"                break"},{"line_number":904,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d78aacba","line":901,"range":{"start_line":901,"start_character":12,"end_line":901,"end_character":49},"updated":"2018-09-13 14:48:13.000000000","message":"nit: node in self.node_cache.values()","commit_id":"d8da285482eea5a294f64c4dc012447a3d3bb586"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c8b1cf7dad50330b6c0dadde7f37f5e7d1c166c6","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            # Empty cache, try to populate it."},{"line_number":899,"context_line":"            self._refresh_cache()"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"        for uuid, node in self.node_cache.items():"},{"line_number":902,"context_line":"            if instance.uuid \u003d\u003d node.instance_uuid:"},{"line_number":903,"context_line":"                break"},{"line_number":904,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8430f256","line":901,"range":{"start_line":901,"start_character":12,"end_line":901,"end_character":49},"in_reply_to":"3f79a3b5_d78aacba","updated":"2018-09-20 19:07:47.000000000","message":"Done","commit_id":"d8da285482eea5a294f64c4dc012447a3d3bb586"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4f53d10e4e04a86c2fd35b1a9ac94278c6a5dfb8","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            if instance.uuid \u003d\u003d node.instance_uuid:"},{"line_number":902,"context_line":"                break"},{"line_number":903,"context_line":"        else:"},{"line_number":904,"context_line":"            # if we can\u0027t find the instance, fall back to ironic"},{"line_number":905,"context_line":"            try:"},{"line_number":906,"context_line":"                node \u003d self._validate_instance_and_node(instance)"},{"line_number":907,"context_line":"            except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_dc179645","line":904,"updated":"2018-09-21 08:11:50.000000000","message":"a warning here maybe? is it a normal situation?","commit_id":"9d5fb1b58e908ccacbbbf29341918d0b0588a36f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"286ed63254b8b3fc9260544157d58b0c0541954a","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            if instance.uuid \u003d\u003d node.instance_uuid:"},{"line_number":902,"context_line":"                break"},{"line_number":903,"context_line":"        else:"},{"line_number":904,"context_line":"            # if we can\u0027t find the instance, fall back to ironic"},{"line_number":905,"context_line":"            try:"},{"line_number":906,"context_line":"                node \u003d self._validate_instance_and_node(instance)"},{"line_number":907,"context_line":"            except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5a04c314","line":904,"in_reply_to":"3f79a3b5_dc179645","updated":"2018-09-24 11:29:48.000000000","message":"It isn\u0027t worth a warning IMO, as there\u0027s nothing the operator can do about it, and it doesn\u0027t really hurt anything, just a race condition being handled.","commit_id":"9d5fb1b58e908ccacbbbf29341918d0b0588a36f"}]}
