)]}'
{"ironic/conductor/manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4c505a9e34ac1ca0f8c549d4afac013bb3a92807","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        with task_manager.acquire(context, node_id, shared\u003dFalse) as task:"},{"line_number":269,"context_line":"            task.driver.deploy.validate(node_obj)"},{"line_number":270,"context_line":"            if node_obj[\u0027provision_state\u0027] is not states.NOSTATE:"},{"line_number":271,"context_line":"                raise exception.InstanceDeployFailure(_("},{"line_number":272,"context_line":"                    \"RPC do_node_deploy called for %(node)s, but provision \""},{"line_number":273,"context_line":"                    \"state is already %(state)s.\") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B1zY%3D","side":"PARENT","line":270,"updated":"2013-11-19 14:10:17.000000000","message":"It is more accurate to use the task.node since that will have the most recent state info, not the node_obj.","commit_id":"8b016721971944a6f02079a4d096c5437d483d7d"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"81a4d95e32161eee258fcb61ac7d8a09a3ef3b16","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"        with task_manager.acquire(context, node_id, shared\u003dFalse) as task:"},{"line_number":269,"context_line":"            task.driver.deploy.validate(node_obj)"},{"line_number":270,"context_line":"            if node_obj[\u0027provision_state\u0027] is not states.NOSTATE:"},{"line_number":271,"context_line":"                raise exception.InstanceDeployFailure(_("},{"line_number":272,"context_line":"                    \"RPC do_node_deploy called for %(node)s, but provision \""},{"line_number":273,"context_line":"                    \"state is already %(state)s.\") %"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B1mU%3D","side":"PARENT","line":270,"in_reply_to":"AAAATn%2F%2B1zY%3D","updated":"2013-11-19 14:55:16.000000000","message":"Done","commit_id":"8b016721971944a6f02079a4d096c5437d483d7d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4c505a9e34ac1ca0f8c549d4afac013bb3a92807","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        LOG.debug(_(\"RPC do_node_tear_down called for node %s.\") % node_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        with task_manager.acquire(context, node_id, shared\u003dFalse) as task:"},{"line_number":320,"context_line":"            if node_obj[\u0027provision_state\u0027] not in [states.ACTIVE,"},{"line_number":321,"context_line":"                                                   states.DEPLOYFAIL,"},{"line_number":322,"context_line":"                                                   states.ERROR]:"},{"line_number":323,"context_line":"                raise exception.InstanceDeployFailure(_("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B1wA%3D","line":320,"updated":"2013-11-19 14:10:17.000000000","message":"ditto","commit_id":"325e6fff77c8d979b2ca1f198ca07935c4a2a883"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"81a4d95e32161eee258fcb61ac7d8a09a3ef3b16","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        LOG.debug(_(\"RPC do_node_tear_down called for node %s.\") % node_id)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        with task_manager.acquire(context, node_id, shared\u003dFalse) as task:"},{"line_number":320,"context_line":"            if node_obj[\u0027provision_state\u0027] not in [states.ACTIVE,"},{"line_number":321,"context_line":"                                                   states.DEPLOYFAIL,"},{"line_number":322,"context_line":"                                                   states.ERROR]:"},{"line_number":323,"context_line":"                raise exception.InstanceDeployFailure(_("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2B1mQ%3D","line":320,"in_reply_to":"AAAATn%2F%2B1wA%3D","updated":"2013-11-19 14:55:16.000000000","message":"Done","commit_id":"325e6fff77c8d979b2ca1f198ca07935c4a2a883"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            except Exception as e:"},{"line_number":293,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":294,"context_line":"                    node[\u0027last_error\u0027] \u003d \\"},{"line_number":295,"context_line":"                           _(\"Failed to deploy a node. Error: %s\") % e"},{"line_number":296,"context_line":"                    node[\u0027provision_state\u0027] \u003d states.ERROR"},{"line_number":297,"context_line":"                    node[\u0027target_provision_state\u0027] \u003d states.NOSTATE"},{"line_number":298,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1gM%3D","line":295,"updated":"2013-11-19 15:23:24.000000000","message":"Sorry, should have seen this before. Just a nit. The user will see last_error string, as it relates to a specific node, so this might be better as \u0027Failed to deploy\u0027, or \u0027Failed to deploy this node\u0027. (I prefer the first.)","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            except Exception as e:"},{"line_number":293,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":294,"context_line":"                    node[\u0027last_error\u0027] \u003d \\"},{"line_number":295,"context_line":"                           _(\"Failed to deploy a node. Error: %s\") % e"},{"line_number":296,"context_line":"                    node[\u0027provision_state\u0027] \u003d states.ERROR"},{"line_number":297,"context_line":"                    node[\u0027target_provision_state\u0027] \u003d states.NOSTATE"},{"line_number":298,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1Y0%3D","line":295,"in_reply_to":"AAAATn%2F%2B1gM%3D","updated":"2013-11-19 15:39:26.000000000","message":"Agree.","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            except Exception as e:"},{"line_number":347,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":348,"context_line":"                    node[\u0027last_error\u0027] \u003d \\"},{"line_number":349,"context_line":"                           _(\"Failed to tear down a node. Error: %s\") % e"},{"line_number":350,"context_line":"                    node[\u0027provision_state\u0027] \u003d states.ERROR"},{"line_number":351,"context_line":"                    node[\u0027target_provision_state\u0027] \u003d states.NOSTATE"},{"line_number":352,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1fU%3D","line":349,"updated":"2013-11-19 15:23:24.000000000","message":"ditto","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            except Exception as e:"},{"line_number":347,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":348,"context_line":"                    node[\u0027last_error\u0027] \u003d \\"},{"line_number":349,"context_line":"                           _(\"Failed to tear down a node. Error: %s\") % e"},{"line_number":350,"context_line":"                    node[\u0027provision_state\u0027] \u003d states.ERROR"},{"line_number":351,"context_line":"                    node[\u0027target_provision_state\u0027] \u003d states.NOSTATE"},{"line_number":352,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1Yw%3D","line":349,"in_reply_to":"AAAATn%2F%2B1fU%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"}],"ironic/tests/conductor/test_manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            node.refresh(self.context)"},{"line_number":438,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":439,"context_line":"                             states.ERROR)"},{"line_number":440,"context_line":"            self.assertIsNotNone(node[\u0027last_error\u0027])"},{"line_number":441,"context_line":"            deploy.assert_called_once()"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def test_do_node_deploy_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1dU%3D","line":440,"updated":"2013-11-19 15:23:24.000000000","message":"While you\u0027re at it, would you mind adding an assert for \u0027target_provision_state\u0027?","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":437,"context_line":"            node.refresh(self.context)"},{"line_number":438,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":439,"context_line":"                             states.ERROR)"},{"line_number":440,"context_line":"            self.assertIsNotNone(node[\u0027last_error\u0027])"},{"line_number":441,"context_line":"            deploy.assert_called_once()"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def test_do_node_deploy_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1bM%3D","line":440,"in_reply_to":"AAAATn%2F%2B1dU%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":455,"context_line":"                             states.ACTIVE)"},{"line_number":456,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":457,"context_line":"                             states.NOSTATE)"},{"line_number":458,"context_line":"            deploy.assert_called_once()"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def test_do_node_deploy_partial_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1d4%3D","line":457,"updated":"2013-11-19 15:23:24.000000000","message":"For completeness sake, I\u0027d probably assert last_error \u003d None.","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":455,"context_line":"                             states.ACTIVE)"},{"line_number":456,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":457,"context_line":"                             states.NOSTATE)"},{"line_number":458,"context_line":"            deploy.assert_called_once()"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    def test_do_node_deploy_partial_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1as%3D","line":457,"in_reply_to":"AAAATn%2F%2B1d4%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":472,"context_line":"                             states.DEPLOYING)"},{"line_number":473,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":474,"context_line":"                             states.DEPLOYDONE)"},{"line_number":475,"context_line":"            deploy.assert_called_once()"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def test_do_node_tear_down_invalid_state(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1do%3D","line":474,"updated":"2013-11-19 15:23:24.000000000","message":"Add an assert last_error\u003dNone?","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":472,"context_line":"                             states.DEPLOYING)"},{"line_number":473,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":474,"context_line":"                             states.DEPLOYDONE)"},{"line_number":475,"context_line":"            deploy.assert_called_once()"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"    def test_do_node_tear_down_invalid_state(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1aQ%3D","line":474,"in_reply_to":"AAAATn%2F%2B1do%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            node.refresh(self.context)"},{"line_number":499,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":500,"context_line":"                             states.ERROR)"},{"line_number":501,"context_line":"            self.assertIsNotNone(node[\u0027last_error\u0027])"},{"line_number":502,"context_line":"            deploy.assert_called_once()"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def test_do_node_tear_down_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1dE%3D","line":501,"updated":"2013-11-19 15:23:24.000000000","message":"Maybe also add an assert for \u0027target_provision_state\u0027?","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            node.refresh(self.context)"},{"line_number":499,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":500,"context_line":"                             states.ERROR)"},{"line_number":501,"context_line":"            self.assertIsNotNone(node[\u0027last_error\u0027])"},{"line_number":502,"context_line":"            deploy.assert_called_once()"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def test_do_node_tear_down_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1Z4%3D","line":501,"in_reply_to":"AAAATn%2F%2B1dE%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":516,"context_line":"                             states.NOSTATE)"},{"line_number":517,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":518,"context_line":"                             states.NOSTATE)"},{"line_number":519,"context_line":"            deploy.assert_called_once()"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def test_do_node_tear_down_partial_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1c8%3D","line":518,"updated":"2013-11-19 15:23:24.000000000","message":"Add an assert for \u0027last_error\u0027?","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":515,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":516,"context_line":"                             states.NOSTATE)"},{"line_number":517,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":518,"context_line":"                             states.NOSTATE)"},{"line_number":519,"context_line":"            deploy.assert_called_once()"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def test_do_node_tear_down_partial_ok(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1ZM%3D","line":518,"in_reply_to":"AAAATn%2F%2B1c8%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"709ddba873c07f4d63ad3557ba7760cccf71c687","unresolved":false,"context_lines":[{"line_number":532,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":533,"context_line":"                             states.DELETING)"},{"line_number":534,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":535,"context_line":"                             states.DELETED)"},{"line_number":536,"context_line":"            deploy.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1c4%3D","line":535,"updated":"2013-11-19 15:23:24.000000000","message":"Add an assert for \u0027last_error\u0027?","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"93d5baae5050acdf74372b9c34acea3ee85d3733","unresolved":false,"context_lines":[{"line_number":532,"context_line":"            self.assertEqual(node[\u0027provision_state\u0027],"},{"line_number":533,"context_line":"                             states.DELETING)"},{"line_number":534,"context_line":"            self.assertEqual(node[\u0027target_provision_state\u0027],"},{"line_number":535,"context_line":"                             states.DELETED)"},{"line_number":536,"context_line":"            deploy.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2B1ZQ%3D","line":535,"in_reply_to":"AAAATn%2F%2B1c4%3D","updated":"2013-11-19 15:39:26.000000000","message":"Done","commit_id":"a04026de52b6c7811486379b6651b809dee7a156"}]}
