)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8547876041b13b62c6061ffb7f405fbb91d1df75","unresolved":false,"context_lines":[{"line_number":17,"context_line":"for consistency between fields in calls and parameters on returned"},{"line_number":18,"context_line":"objects."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Depends-On: Ie39067b6e9217eed63f5ae46331ab8a408f0ace6"},{"line_number":21,"context_line":"Blueprint: openstacksdk-in-nova"},{"line_number":22,"context_line":"Change-Id: Id427e7923ff3a9d2957586fba5ccef0216318e6f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"3fa7e38b_d438763c","line":20,"updated":"2019-11-10 20:38:51.000000000","message":"This was released in 0.36.0 but nova still only requires 0.35.0:\n\nhttps://github.com/openstack/nova/blob/master/lower-constraints.txt#L66\n\nhttps://github.com/openstack/nova/blob/master/requirements.txt#L74\n\nSo this change needs to update both those files yeah?","commit_id":"e0786f85e851db4cd4af314c57e133bd60128ea2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf4125419689cf97fdd8fd23dbeaebe527075ae1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"for consistency between fields in calls and parameters on returned"},{"line_number":18,"context_line":"objects."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Depends-On: Ie39067b6e9217eed63f5ae46331ab8a408f0ace6"},{"line_number":21,"context_line":"Blueprint: openstacksdk-in-nova"},{"line_number":22,"context_line":"Change-Id: Id427e7923ff3a9d2957586fba5ccef0216318e6f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"3fa7e38b_8bd738c1","line":20,"in_reply_to":"3fa7e38b_d438763c","updated":"2019-11-11 17:39:01.000000000","message":"True story, good catch. The `instance_id` stuff will break without it, I think.\n\nSince you\u0027re respinning, you might as well remove this line and rephrase the above paragraph as why you\u0027re bumping requirements.","commit_id":"e0786f85e851db4cd4af314c57e133bd60128ea2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7cc6a6ae1d2cc215d402ae7bd00eb55902123d77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"6cda73e4_204f774e","updated":"2023-07-26 15:19:21.000000000","message":"recheck unrelated failure","commit_id":"71602eacba7b5e38dd1c06e43212f0c7c55a1024"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"69a4cd64c18e0f7fb0537aa7f06259b76de7ab09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":38,"id":"ed1cedb3_fbb76e2c","updated":"2023-12-06 20:14:51.000000000","message":"recheck CI failure unrelated to Ironic driver","commit_id":"d6fa357e80c7e94a59d545c10cac37d946cd4e87"}],"nova/tests/unit/virt/ironic/test_driver.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"534d15f27982251024a35ee23fc351f93de00673","unresolved":false,"context_lines":[{"line_number":2532,"context_line":"        mock_vol.assert_called_once_with(instance)"},{"line_number":2533,"context_line":"        mock_unvif.assert_called_once_with(node, instance, None)"},{"line_number":2534,"context_line":"        mock_stop_fw.assert_called_once_with(instance, None)"},{"line_number":2535,"context_line":"        expected_patch \u003d [{\u0027path\u0027: \u0027/instance_uuid\u0027, \u0027op\u0027: \u0027remove\u0027}]"},{"line_number":2536,"context_line":"        mock_remove_info.called_once_with(node)"},{"line_number":2537,"context_line":""},{"line_number":2538,"context_line":"    @mock.patch.object(ironic_driver.IronicDriver, \u0027_stop_firewall\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"7faddb67_aff3f2e6","line":2535,"range":{"start_line":2535,"start_character":8,"end_line":2535,"end_character":69},"updated":"2019-07-29 01:13:55.000000000","message":"Please remove this line to fix PEP8 error.","commit_id":"9de0cb7924b9fe08c3b1da6a69870e60ebb8605e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"027f48c742abdd01dc9ec47b892ba459e554f008","unresolved":false,"context_lines":[{"line_number":2562,"context_line":"        mock_vol.assert_called_once_with(instance)"},{"line_number":2563,"context_line":"        mock_unvif.assert_called_once_with(node, instance, None)"},{"line_number":2564,"context_line":"        mock_stop_fw.assert_called_once_with(instance, None)"},{"line_number":2565,"context_line":"        mock_remove_info.assert_called_once_with(node)"},{"line_number":2566,"context_line":""},{"line_number":2567,"context_line":"    @mock.patch.object(ironic_driver.IronicDriver, \u0027_stop_firewall\u0027)"},{"line_number":2568,"context_line":"    @mock.patch.object(ironic_driver.IronicDriver, \u0027_unplug_vifs\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7faddb67_26422b6a","line":2565,"range":{"start_line":2565,"start_character":25,"end_line":2565,"end_character":48},"updated":"2019-08-22 17:35:49.000000000","message":"resolved merge conflict here","commit_id":"04d1728e60284f4fcaba52a49b356836fb664300"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1363d04721a3678daee146e7f2c1978878190d9d","unresolved":false,"context_lines":[{"line_number":1309,"context_line":"            self.driver.spawn, self.ctx, instance, None, [], None, {})"},{"line_number":1310,"context_line":"        self.assertEqual(0, mock_destroy.call_count)"},{"line_number":1311,"context_line":""},{"line_number":1312,"context_line":"    def _test_add_instance_info_to_node(self):"},{"line_number":1313,"context_line":"        node \u003d _get_cached_node(driver\u003d\u0027fake\u0027)"},{"line_number":1314,"context_line":"        instance \u003d fake_instance.fake_instance_obj(self.ctx,"},{"line_number":1315,"context_line":"                                                   node\u003dnode.uuid)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7faddb67_42ad28e8","line":1312,"range":{"start_line":1312,"start_character":8,"end_line":1312,"end_character":9},"updated":"2019-09-03 15:49:12.000000000","message":"Whoops, since this has an initial underscore and there\u0027s no longer anything calling it, it\u0027s not being run.\n\nAnd when I run it locally, it fails :(","commit_id":"9aabaf32e56243e610202c5446b97561e568825a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1363d04721a3678daee146e7f2c1978878190d9d","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        # TODO(dustinc): Add check for call to patcher.create"},{"line_number":1340,"context_line":"        self.mock_conn.patch_node.assert_called_once_with(node, expected_patch)"},{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"    def _test_remove_instance_info_from_node(self):"},{"line_number":1343,"context_line":"        node \u003d _get_cached_node(driver\u003d\u0027fake\u0027)"},{"line_number":1344,"context_line":"        expected_patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"},{"line_number":1345,"context_line":"                          {\u0027path\u0027: \u0027/instance_uuid\u0027, \u0027op\u0027: \u0027remove\u0027}]"}],"source_content_type":"text/x-python","patch_set":30,"id":"7faddb67_62aaa4d2","line":1342,"range":{"start_line":1342,"start_character":8,"end_line":1342,"end_character":9},"updated":"2019-09-03 15:49:12.000000000","message":"likewise (but this one passes)","commit_id":"9aabaf32e56243e610202c5446b97561e568825a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3a9f8bf45e507e0e64bbee434e244ff40b098198","unresolved":false,"context_lines":[{"line_number":1382,"context_line":"        self.driver._add_instance_info_to_node(node, instance,"},{"line_number":1383,"context_line":"                                               image_meta, flavor)"},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"        # TODO(dustinc): Add check for call to patcher.create"},{"line_number":1386,"context_line":"        self.mock_conn.patch_node.assert_called_once_with(node, expected_patch)"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"    def test__remove_instance_info_from_node(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"3fa7e38b_8e37b5e3","line":1385,"range":{"start_line":1385,"start_character":8,"end_line":1385,"end_character":61},"updated":"2019-10-31 16:07:33.000000000","message":"Nah, the fact that the patch ends up in the right shape means patcher.create is dtrt.","commit_id":"e0786f85e851db4cd4af314c57e133bd60128ea2"}],"nova/virt/ironic/driver.py":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"41d611d099a2e4baa5244643f9cd42a33bf57d64","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                                      preserve_ephemeral,"},{"line_number":407,"context_line":"                                                      boot_from_volume)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        self.ironicconn.patch_node(node, patch)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def _remove_instance_info_from_node(self, node):"},{"line_number":412,"context_line":"        patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_02b93b13","line":409,"range":{"start_line":409,"start_character":8,"end_line":409,"end_character":47},"updated":"2019-07-19 01:36:40.000000000","message":"IMO, it\u0027s better to catch the exception here.","commit_id":"90f1420242dd24d5baf4f75d224227739db98e19"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"41d611d099a2e4baa5244643f9cd42a33bf57d64","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                                      preserve_ephemeral,"},{"line_number":407,"context_line":"                                                      boot_from_volume)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        self.ironicconn.patch_node(node, patch)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def _remove_instance_info_from_node(self, node):"},{"line_number":412,"context_line":"        patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_62f10f01","line":409,"range":{"start_line":409,"start_character":35,"end_line":409,"end_character":39},"updated":"2019-07-19 01:36:40.000000000","message":"Why not use node.uuid here?","commit_id":"90f1420242dd24d5baf4f75d224227739db98e19"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"7fc33e38b931baeb1b5b07f2fcfc35bb6d5ecf21","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                                      preserve_ephemeral,"},{"line_number":407,"context_line":"                                                      boot_from_volume)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        self.ironicconn.patch_node(node, patch)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def _remove_instance_info_from_node(self, node):"},{"line_number":412,"context_line":"        patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_f04cdb42","line":409,"range":{"start_line":409,"start_character":8,"end_line":409,"end_character":47},"in_reply_to":"7faddb67_02b93b13","updated":"2019-07-19 22:43:03.000000000","message":"Agree, done.","commit_id":"90f1420242dd24d5baf4f75d224227739db98e19"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"7fc33e38b931baeb1b5b07f2fcfc35bb6d5ecf21","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                                      preserve_ephemeral,"},{"line_number":407,"context_line":"                                                      boot_from_volume)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        self.ironicconn.patch_node(node, patch)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def _remove_instance_info_from_node(self, node):"},{"line_number":412,"context_line":"        patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_1048972a","line":409,"range":{"start_line":409,"start_character":35,"end_line":409,"end_character":39},"in_reply_to":"7faddb67_62f10f01","updated":"2019-07-19 22:43:03.000000000","message":"It can take a node name, id, or object and to reduce the already confusing .id/.uuid mess, I opted to just pass the object instead.","commit_id":"90f1420242dd24d5baf4f75d224227739db98e19"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"41d611d099a2e4baa5244643f9cd42a33bf57d64","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        patch \u003d [{\u0027path\u0027: \u0027/instance_info\u0027, \u0027op\u0027: \u0027remove\u0027},"},{"line_number":413,"context_line":"                 {\u0027path\u0027: \u0027/instance_uuid\u0027, \u0027op\u0027: \u0027remove\u0027}]"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        self.ironicconn.patch_node(node, patch)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"},{"line_number":418,"context_line":"        bdms \u003d virt_driver.block_device_info_get_mapping(block_device_info)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7faddb67_c2eec320","line":415,"range":{"start_line":415,"start_character":35,"end_line":415,"end_character":39},"updated":"2019-07-19 01:36:40.000000000","message":"ditto","commit_id":"90f1420242dd24d5baf4f75d224227739db98e19"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3f066a386c4d5316f73011530c8181adaa642b4","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                                                      boot_from_volume)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        try:"},{"line_number":416,"context_line":"            # FIXME(lucasagomes): The \"retry_on_conflict\" parameter was added"},{"line_number":417,"context_line":"            # to basically causes the deployment to fail faster in case the"},{"line_number":418,"context_line":"            # node picked by the scheduler is already associated with another"},{"line_number":419,"context_line":"            # instance due bug #1341420."},{"line_number":420,"context_line":"            self.ironicclient.call(\u0027node.update\u0027, node.uuid, patch,"},{"line_number":421,"context_line":"                                   retry_on_conflict\u003dFalse)"},{"line_number":422,"context_line":"        except ironic.exc.BadRequest:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_fe32375e","side":"PARENT","line":419,"range":{"start_line":416,"start_character":0,"end_line":419,"end_character":40},"updated":"2019-08-09 10:51:31.000000000","message":"Is this no longer true? I guess we\u0027re using this parameter elsewhere and don\u0027t call it out, but still","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"dc43eee8dea467da8d864808eb213f6c392a5fa6","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                                                      boot_from_volume)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        try:"},{"line_number":416,"context_line":"            # FIXME(lucasagomes): The \"retry_on_conflict\" parameter was added"},{"line_number":417,"context_line":"            # to basically causes the deployment to fail faster in case the"},{"line_number":418,"context_line":"            # node picked by the scheduler is already associated with another"},{"line_number":419,"context_line":"            # instance due bug #1341420."},{"line_number":420,"context_line":"            self.ironicclient.call(\u0027node.update\u0027, node.uuid, patch,"},{"line_number":421,"context_line":"                                   retry_on_conflict\u003dFalse)"},{"line_number":422,"context_line":"        except ironic.exc.BadRequest:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_d2006305","side":"PARENT","line":419,"range":{"start_line":416,"start_character":0,"end_line":419,"end_character":40},"in_reply_to":"7faddb67_24d423e9","updated":"2019-08-13 04:27:44.000000000","message":"Done","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03edafbdccee842882a94b8be3dd49d1bbb71f30","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                                                      boot_from_volume)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        try:"},{"line_number":416,"context_line":"            # FIXME(lucasagomes): The \"retry_on_conflict\" parameter was added"},{"line_number":417,"context_line":"            # to basically causes the deployment to fail faster in case the"},{"line_number":418,"context_line":"            # node picked by the scheduler is already associated with another"},{"line_number":419,"context_line":"            # instance due bug #1341420."},{"line_number":420,"context_line":"            self.ironicclient.call(\u0027node.update\u0027, node.uuid, patch,"},{"line_number":421,"context_line":"                                   retry_on_conflict\u003dFalse)"},{"line_number":422,"context_line":"        except ironic.exc.BadRequest:"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_24d423e9","side":"PARENT","line":419,"range":{"start_line":416,"start_character":0,"end_line":419,"end_character":40},"in_reply_to":"7faddb67_fe32375e","updated":"2019-08-12 10:58:42.000000000","message":"I think we should keep this comment. Now in theory placement claims me this is no longer an issue, but its worth keeping this. (Maybe its a NOTE not a FIXME, but hey ho).","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b3f066a386c4d5316f73011530c8181adaa642b4","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node \""},{"line_number":436,"context_line":"                        \"%(node)s when unprovisioning the instance \""},{"line_number":437,"context_line":"                        \"%(instance)s: %(reason)s\","},{"line_number":438,"context_line":"                        {\u0027node\u0027: node.uuid, \u0027instance\u0027: instance.uuid,"},{"line_number":439,"context_line":"                         \u0027reason\u0027: six.text_type(e)})"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_be259f0c","side":"PARENT","line":438,"range":{"start_line":438,"start_character":56,"end_line":438,"end_character":70},"updated":"2019-08-09 10:51:31.000000000","message":"why do we no longer care to log the instance UUID?","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"dc43eee8dea467da8d864808eb213f6c392a5fa6","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node \""},{"line_number":436,"context_line":"                        \"%(node)s when unprovisioning the instance \""},{"line_number":437,"context_line":"                        \"%(instance)s: %(reason)s\","},{"line_number":438,"context_line":"                        {\u0027node\u0027: node.uuid, \u0027instance\u0027: instance.uuid,"},{"line_number":439,"context_line":"                         \u0027reason\u0027: six.text_type(e)})"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_b205a716","side":"PARENT","line":438,"range":{"start_line":438,"start_character":56,"end_line":438,"end_character":70},"in_reply_to":"7faddb67_840cf794","updated":"2019-08-13 04:27:44.000000000","message":"Done","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"03edafbdccee842882a94b8be3dd49d1bbb71f30","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node \""},{"line_number":436,"context_line":"                        \"%(node)s when unprovisioning the instance \""},{"line_number":437,"context_line":"                        \"%(instance)s: %(reason)s\","},{"line_number":438,"context_line":"                        {\u0027node\u0027: node.uuid, \u0027instance\u0027: instance.uuid,"},{"line_number":439,"context_line":"                         \u0027reason\u0027: six.text_type(e)})"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7faddb67_840cf794","side":"PARENT","line":438,"range":{"start_line":438,"start_character":56,"end_line":438,"end_character":70},"in_reply_to":"7faddb67_be259f0c","updated":"2019-08-12 10:58:42.000000000","message":"Yeah, we should keep instance_uuid in there please. I have actually used this log message, and its the most useful bit in there.","commit_id":"6faec66c66a13846a67360c9bf82e3d0ea7cbf71"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b0b2e7f76b2e614b3917ec999aee574bbe0997b2","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":441,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node %(node)s\""},{"line_number":442,"context_line":"                        \" when unprovisioning the instance: %(reason)s\","},{"line_number":443,"context_line":"                        {\u0027node\u0027: node.id, \u0027instance\u0027: node.instance_id,"},{"line_number":444,"context_line":"                         \u0027reason\u0027: six.text_type(e)})"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_f10e8f8a","line":443,"range":{"start_line":443,"start_character":42,"end_line":443,"end_character":71},"updated":"2019-08-15 06:12:24.000000000","message":"The log message lost %(instance)s behind instance.","commit_id":"01a0ea011052281479bca2b4061dbef89c17eb64"},{"author":{"_account_id":29745,"name":"Dustin Cowles","email":"cowlesd@gmail.com","username":"dustinc","status":"inactive"},"change_message_id":"e3283c3850841530372b735b55a49012b7f2b3ea","unresolved":false,"context_lines":[{"line_number":440,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":441,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node %(node)s\""},{"line_number":442,"context_line":"                        \" when unprovisioning the instance: %(reason)s\","},{"line_number":443,"context_line":"                        {\u0027node\u0027: node.id, \u0027instance\u0027: node.instance_id,"},{"line_number":444,"context_line":"                         \u0027reason\u0027: six.text_type(e)})"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"    def _add_volume_target_info(self, context, instance, block_device_info):"}],"source_content_type":"text/x-python","patch_set":19,"id":"7faddb67_7af9084c","line":443,"range":{"start_line":443,"start_character":42,"end_line":443,"end_character":71},"in_reply_to":"7faddb67_f10e8f8a","updated":"2019-08-16 01:50:12.000000000","message":"Done","commit_id":"01a0ea011052281479bca2b4061dbef89c17eb64"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8445eed446df315085da4dca109f7ce63066c575","unresolved":false,"context_lines":[{"line_number":435,"context_line":"            # node picked by the scheduler is already associated with another"},{"line_number":436,"context_line":"            # instance due bug #1341420."},{"line_number":437,"context_line":"            self.ironic_connection.patch_node(node, patch,"},{"line_number":438,"context_line":"                                              retry_on_conflict\u003dFalse)"},{"line_number":439,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":440,"context_line":"            msg \u003d (_(\"Failed to add deploy parameters on node %(node)s \""},{"line_number":441,"context_line":"                     \"when provisioning the instance %(instance)s: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"7faddb67_22dcacdf","line":438,"range":{"start_line":438,"start_character":46,"end_line":438,"end_character":70},"updated":"2019-09-03 16:08:47.000000000","message":"I wonder if we still need it. It seems that we now set instance_id in another call.","commit_id":"9aabaf32e56243e610202c5446b97561e568825a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8445eed446df315085da4dca109f7ce63066c575","unresolved":false,"context_lines":[{"line_number":449,"context_line":"                 {\u0027path\u0027: \u0027/instance_uuid\u0027, \u0027op\u0027: \u0027remove\u0027}]"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        try:"},{"line_number":452,"context_line":"            self.ironic_connection.patch_node(node, patch)"},{"line_number":453,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":454,"context_line":"            LOG.warning(\"Failed to remove deploy parameters from node \""},{"line_number":455,"context_line":"                        \"%(node)s when unprovisioning the instance \""}],"source_content_type":"text/x-python","patch_set":30,"id":"7faddb67_a2d09cc9","line":452,"range":{"start_line":452,"start_character":35,"end_line":452,"end_character":58},"updated":"2019-09-03 16:08:47.000000000","message":"nit: you could use\n\n update_node(node, instance_id\u003dNone, instance_info\u003d{})\n\n(depending on what looks nicer to you)","commit_id":"9aabaf32e56243e610202c5446b97561e568825a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8547876041b13b62c6061ffb7f405fbb91d1df75","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                                                      boot_from_volume)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.ironic_connection.patch_node(node, patch)"},{"line_number":442,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":443,"context_line":"            msg \u003d (_(\"Failed to add deploy parameters on node %(node)s \""},{"line_number":444,"context_line":"                     \"when provisioning the instance %(instance)s: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":34,"id":"3fa7e38b_744502b4","line":441,"range":{"start_line":441,"start_character":35,"end_line":441,"end_character":45},"updated":"2019-11-10 20:38:51.000000000","message":"Why is this using patch_node and the below call is using update_node when before this change both were calling node.update? That\u0027s not explained in the commit message.","commit_id":"e0786f85e851db4cd4af314c57e133bd60128ea2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf4125419689cf97fdd8fd23dbeaebe527075ae1","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                                                      boot_from_volume)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.ironic_connection.patch_node(node, patch)"},{"line_number":442,"context_line":"        except sdk_exc.SDKException as e:"},{"line_number":443,"context_line":"            msg \u003d (_(\"Failed to add deploy parameters on node %(node)s \""},{"line_number":444,"context_line":"                     \"when provisioning the instance %(instance)s: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":34,"id":"3fa7e38b_6bde7cdb","line":441,"range":{"start_line":441,"start_character":35,"end_line":441,"end_character":45},"in_reply_to":"3fa7e38b_744502b4","updated":"2019-11-11 17:39:01.000000000","message":"That happened as a result of [1]. But the commit message doesn\u0027t specify which sdk methods are to be used; just that we\u0027re using sdk methods to add \u0026 remove instance info. Do you think it\u0027s necessary to spell that out?\n\n[1] https://review.opendev.org/#/c/659691/30/nova/virt/ironic/driver.py@452","commit_id":"e0786f85e851db4cd4af314c57e133bd60128ea2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4dce076a6d3a91bab2fea6b45560b99c3364ddd8","unresolved":true,"context_lines":[{"line_number":442,"context_line":"            msg \u003d (_(\"Failed to add deploy parameters on node %(node)s \""},{"line_number":443,"context_line":"                     \"when provisioning the instance %(instance)s: %(reason)s\")"},{"line_number":444,"context_line":"                   % {\u0027node\u0027: node.id, \u0027instance\u0027: instance.uuid,"},{"line_number":445,"context_line":"                      \u0027reason\u0027: str(e)})"},{"line_number":446,"context_line":"            LOG.error(msg)"},{"line_number":447,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":448,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"851dfc92_493d8b49","line":445,"updated":"2023-03-13 10:34:59.000000000","message":"nit: no need for str()","commit_id":"2c2da5ac2c5ffedc6479e35b34f098e0650192d8"}]}
