)]}'
{"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5a18a375242f05bcac56cf805c1033eb31dc2fe6","unresolved":false,"context_lines":[{"line_number":497,"context_line":"    def test_instance_exists(self):"},{"line_number":498,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":499,"context_line":"                                                   uuid\u003dself.instance_uuid)"},{"line_number":500,"context_line":"        mock_get_node \u003d mock.Mock(return_value\u003dinstance)"},{"line_number":501,"context_line":"        self.driver.ironicconn.get_node \u003d mock_get_node"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        self.assertTrue(self.driver.instance_exists(instance))"},{"line_number":504,"context_line":"        mock_get_node.assert_called_once_with(self.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_9d541700","line":501,"range":{"start_line":500,"start_character":0,"end_line":501,"end_character":55},"updated":"2019-04-26 22:18:51.000000000","message":"This needs to be done more like\n\n mock_get_node \u003d mock.patch.object(self.driver.ironicconn, \u0027get_node\u0027, return_value\u003dinstance)","commit_id":"52998ddacbcc9a886fd16047a00a5a53da505c5d"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"ec891be323f7661aae63d5fd6ab906d29c750389","unresolved":false,"context_lines":[{"line_number":497,"context_line":"    def test_instance_exists(self):"},{"line_number":498,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":499,"context_line":"                                                   uuid\u003dself.instance_uuid)"},{"line_number":500,"context_line":"        mock_get_node \u003d mock.Mock(return_value\u003dinstance)"},{"line_number":501,"context_line":"        self.driver.ironicconn.get_node \u003d mock_get_node"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        self.assertTrue(self.driver.instance_exists(instance))"},{"line_number":504,"context_line":"        mock_get_node.assert_called_once_with(self.instance_uuid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_40547221","line":501,"range":{"start_line":500,"start_character":0,"end_line":501,"end_character":55},"in_reply_to":"ffb9cba7_9d541700","updated":"2019-04-27 01:24:28.000000000","message":"Done","commit_id":"52998ddacbcc9a886fd16047a00a5a53da505c5d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5a18a375242f05bcac56cf805c1033eb31dc2fe6","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    def test_instance_exists_fail(self):"},{"line_number":507,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":508,"context_line":"                                                   uuid\u003dself.instance_uuid)"},{"line_number":509,"context_line":"        mock_get_node \u003d mock.Mock(side_effect\u003dironic_exception.NotFound)"},{"line_number":510,"context_line":"        self.driver.ironicconn.get_node \u003d mock_get_node"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        self.assertFalse(self.driver.instance_exists(instance))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_fd53d315","line":509,"updated":"2019-04-26 22:18:51.000000000","message":"likewise","commit_id":"52998ddacbcc9a886fd16047a00a5a53da505c5d"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"ec891be323f7661aae63d5fd6ab906d29c750389","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    def test_instance_exists_fail(self):"},{"line_number":507,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":508,"context_line":"                                                   uuid\u003dself.instance_uuid)"},{"line_number":509,"context_line":"        mock_get_node \u003d mock.Mock(side_effect\u003dironic_exception.NotFound)"},{"line_number":510,"context_line":"        self.driver.ironicconn.get_node \u003d mock_get_node"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"        self.assertFalse(self.driver.instance_exists(instance))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_e0324610","line":509,"in_reply_to":"ffb9cba7_fd53d315","updated":"2019-04-27 01:24:28.000000000","message":"Done","commit_id":"52998ddacbcc9a886fd16047a00a5a53da505c5d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"276b09d757edd05922b8b1c1cd87c3dc6b75ee03","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"        result \u003d self.driver.get_info(instance)"},{"line_number":1130,"context_line":"        self.assertEqual(hardware.InstanceInfo(state\u003dnova_states.RUNNING),"},{"line_number":1131,"context_line":"                         result)"},{"line_number":1132,"context_line":"        self.mock_conn.get_node.assert_called_once()"},{"line_number":1133,"context_line":"        self.mock_conn.get_node.assert_called_once_with("},{"line_number":1134,"context_line":"            instance_id\u003dinstance.uuid)"},{"line_number":1135,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_de1c1b15","line":1132,"range":{"start_line":1132,"start_character":0,"end_line":1132,"end_character":52},"updated":"2019-08-09 10:33:48.000000000","message":"This was wrong before but it\u0027s unnecessary since the below does this check and more\n\nhttps://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.assert_called_once_with","commit_id":"116930ebc548d2a2191edc6d692a0f39687559b6"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"4035e7519aea0dab9fbfcc0a7b09c8945ded64a7","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"        result \u003d self.driver.get_info(instance)"},{"line_number":1130,"context_line":"        self.assertEqual(hardware.InstanceInfo(state\u003dnova_states.RUNNING),"},{"line_number":1131,"context_line":"                         result)"},{"line_number":1132,"context_line":"        self.mock_conn.get_node.assert_called_once()"},{"line_number":1133,"context_line":"        self.mock_conn.get_node.assert_called_once_with("},{"line_number":1134,"context_line":"            instance_id\u003dinstance.uuid)"},{"line_number":1135,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_8dbf2c5f","line":1132,"range":{"start_line":1132,"start_character":0,"end_line":1132,"end_character":52},"in_reply_to":"7faddb67_de1c1b15","updated":"2019-08-13 04:27:40.000000000","message":"Fixed","commit_id":"116930ebc548d2a2191edc6d692a0f39687559b6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a147c7d23ca1c962e9c1667a88deceb721aa2bb8","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def test__validate_instance_and_node(self):"},{"line_number":184,"context_line":"        node_id \u003d \u0027aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\u0027"},{"line_number":185,"context_line":"        node \u003d _get_cached_node("},{"line_number":186,"context_line":"                id\u003dnode_id, instance_id\u003dself.instance_id)"},{"line_number":187,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":188,"context_line":"                                                   uuid\u003dself.instance_id)"},{"line_number":189,"context_line":"        self.mock_conn.get_node.return_value \u003d node"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_2415b549","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":16},"updated":"2019-08-15 22:03:37.000000000","message":"nit: could have taken the opportunity to fix this indentation while we were here","commit_id":"df8eccb0f2890b5bbd20fb8e1118cac2ff9b259d"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"66b266597e30500cee2a085d14f572db680c7066","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def test__validate_instance_and_node(self):"},{"line_number":184,"context_line":"        node_id \u003d \u0027aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\u0027"},{"line_number":185,"context_line":"        node \u003d _get_cached_node("},{"line_number":186,"context_line":"                id\u003dnode_id, instance_id\u003dself.instance_id)"},{"line_number":187,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":188,"context_line":"                                                   uuid\u003dself.instance_id)"},{"line_number":189,"context_line":"        self.mock_conn.get_node.return_value \u003d node"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_5acc4c34","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":16},"in_reply_to":"7faddb67_2415b549","updated":"2019-08-16 01:49:57.000000000","message":"Done","commit_id":"df8eccb0f2890b5bbd20fb8e1118cac2ff9b259d"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"55f013f7c5c950ef03054a44e7a576946b8f58d6","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        node, and return the node."},{"line_number":228,"context_line":"        \"\"\""},{"line_number":229,"context_line":"        try:"},{"line_number":230,"context_line":"            return self.ironicconn.get_node(instance.uuid)"},{"line_number":231,"context_line":"        except sdk_exc.ResourceNotFound:"},{"line_number":232,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9fb8cfa7_e5a3e8b0","line":230,"range":{"start_line":230,"start_character":0,"end_line":230,"end_character":58},"updated":"2019-06-13 12:03:11.000000000","message":"That\u0027s not equivalent. I think you should use something like:\n\n nodes \u003d self.ironicconn.nodes(instance_uuid\u003dinstance.uuid)\n if not nodes:\n   raise ...","commit_id":"50dffb5f264b572c3c764c30eb4148712e746a32"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e1f351ca90cbea893557d9ab45b8a5c4025a3e5f","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        try:"},{"line_number":233,"context_line":"            return self.ironicclient.call(\u0027node.get_by_instance_uuid\u0027,"},{"line_number":234,"context_line":"                                          instance.uuid, fields\u003d_NODE_FIELDS)"},{"line_number":235,"context_line":"        except ironic.exc.NotFound:"},{"line_number":236,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_8497173b","side":"PARENT","line":234,"updated":"2019-08-12 10:51:53.000000000","message":"Hmm, dropping this seems like a worry, I thought it was quite a performance boost.","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a19113eace9ced82fa843e65cb2927b419217955","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        \"\"\""},{"line_number":232,"context_line":"        try:"},{"line_number":233,"context_line":"            return self.ironicclient.call(\u0027node.get_by_instance_uuid\u0027,"},{"line_number":234,"context_line":"                                          instance.uuid, fields\u003d_NODE_FIELDS)"},{"line_number":235,"context_line":"        except ironic.exc.NotFound:"},{"line_number":236,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7faddb67_44a11f95","side":"PARENT","line":234,"in_reply_to":"7faddb67_8497173b","updated":"2019-08-12 10:52:18.000000000","message":"to be clear, I mean the fields\u003d_NODE_FIELDS","commit_id":"e26892a91a6a05c450143566978599f75fc0043c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92f6c533fc3375ca1b06ebdcdfe3f7f1e305b87f","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            node \u003d next(self.ironic_connection.nodes("},{"line_number":239,"context_line":"                {\"instance_id\": instance.uuid, \"fields\": _NODE_FIELDS}))"},{"line_number":240,"context_line":"            if hasattr(node, \"id\"):"},{"line_number":241,"context_line":"                print(\"has id\")"},{"line_number":242,"context_line":"                node.uuid \u003d node.id"},{"line_number":243,"context_line":"            if hasattr(node, \"instance_id\"):"},{"line_number":244,"context_line":"                print(\"has instance_id\")"}],"source_content_type":"text/x-python","patch_set":31,"id":"7faddb67_028e7726","line":241,"updated":"2019-09-02 10:24:36.000000000","message":"I\u0027m guessing you meant to drop this?","commit_id":"5a0de666f3bc5807b4b2d7eb25764be8111fba82"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92f6c533fc3375ca1b06ebdcdfe3f7f1e305b87f","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                {\"instance_id\": instance.uuid, \"fields\": _NODE_FIELDS}))"},{"line_number":240,"context_line":"            if hasattr(node, \"id\"):"},{"line_number":241,"context_line":"                print(\"has id\")"},{"line_number":242,"context_line":"                node.uuid \u003d node.id"},{"line_number":243,"context_line":"            if hasattr(node, \"instance_id\"):"},{"line_number":244,"context_line":"                print(\"has instance_id\")"},{"line_number":245,"context_line":"                node.instance_uuid \u003d node.instance_id"}],"source_content_type":"text/x-python","patch_set":31,"id":"7faddb67_c2acdf89","line":242,"updated":"2019-09-02 10:24:36.000000000","message":"and that this should always be done (i.e. no \u0027if hasattr\u0027 above) with a TODO to update all callers to use \u0027id\u0027 instead of \u0027uuid\u0027","commit_id":"5a0de666f3bc5807b4b2d7eb25764be8111fba82"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8bcee82e4bef224b9509c3fd2b243b2f397a7c90","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        try:"},{"line_number":238,"context_line":"            node \u003d next(self.ironic_connection.nodes("},{"line_number":239,"context_line":"                {\"instance_id\": instance.uuid, \"fields\": _NODE_FIELDS}))"},{"line_number":240,"context_line":"            # TODO(dustinc): Make consumers use the right fields and remove"},{"line_number":241,"context_line":"            if hasattr(node, \"id\"):"},{"line_number":242,"context_line":"                node.uuid \u003d node.id"},{"line_number":243,"context_line":"            if hasattr(node, \"instance_id\"):"},{"line_number":244,"context_line":"                node.instance_uuid \u003d node.instance_id"},{"line_number":245,"context_line":"            if hasattr(node, \"is_maintenance\"):"},{"line_number":246,"context_line":"                node.maintenance \u003d node.is_maintenance"},{"line_number":247,"context_line":"            return node"},{"line_number":248,"context_line":"        except StopIteration:"},{"line_number":249,"context_line":"            raise exception.InstanceNotFound(instance_id\u003dinstance.uuid)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7faddb67_d7f31c72","line":246,"range":{"start_line":240,"start_character":0,"end_line":246,"end_character":54},"updated":"2019-09-03 15:38:59.000000000","message":"We should DRY this into a helper (can be a fup)","commit_id":"3440c3d37a1681a0ea12db2c20222d78d16e44e9"}]}
