)]}'
{"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3df3ff670804cdc9308b0bc5acf8baf9dab41f43","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_reboot_flags(node, skip_current_step\u003dFalse):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_3cb56ced","line":1471,"updated":"2019-08-22 08:51:22.000000000","message":"Could we feasibly want to skip the current step without having rebooted? e.g. if we trigger an async action in the agent and wait for a callback.","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3df3ff670804cdc9308b0bc5acf8baf9dab41f43","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_reboot_flags(node, skip_current_step\u003dFalse):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_9cc5805e","line":1471,"range":{"start_line":1471,"start_character":4,"end_line":1471,"end_character":31},"updated":"2019-08-22 08:51:22.000000000","message":"maybe just set_async_step_flags?","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"2e7375b2314860a8809f2d4e0a37826a80ab7faa","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_reboot_flags(node, skip_current_step\u003dFalse):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_bc3f1c20","line":1471,"in_reply_to":"7faddb67_3cb56ced","updated":"2019-08-22 09:39:08.000000000","message":"Done.","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"2e7375b2314860a8809f2d4e0a37826a80ab7faa","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_reboot_flags(node, skip_current_step\u003dFalse):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_66d4ae20","line":1471,"range":{"start_line":1471,"start_character":4,"end_line":1471,"end_character":31},"in_reply_to":"7faddb67_9cc5805e","updated":"2019-08-22 09:39:08.000000000","message":"Done","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3df3ff670804cdc9308b0bc5acf8baf9dab41f43","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"                              value is False."},{"line_number":1480,"context_line":"    \"\"\""},{"line_number":1481,"context_line":"    info \u003d node.driver_internal_info"},{"line_number":1482,"context_line":"    cleaning \u003d [\u0027cleaning_reboot\u0027, \u0027skip_current_clean_step\u0027]"},{"line_number":1483,"context_line":"    deployment \u003d [\u0027deployment_reboot\u0027, \u0027skip_current_deploy_step\u0027]"},{"line_number":1484,"context_line":"    field_name \u003d cleaning if node.clean_step else deployment"},{"line_number":1485,"context_line":"    info[field_name[0]] \u003d True"},{"line_number":1486,"context_line":"    info[field_name[1]] \u003d skip_current_step"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_5c8aa81a","line":1483,"range":{"start_line":1482,"start_character":4,"end_line":1483,"end_character":66},"updated":"2019-08-22 08:51:22.000000000","message":"nit: would be a little more readable to use a dict here, e.g.\n\ncleaning \u003d {\u0027reboot\u0027: \u0027cleaning_reboot\u0027, \u0027skip\u0027: \u0027skip_current_clean_step\u0027}","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"2e7375b2314860a8809f2d4e0a37826a80ab7faa","unresolved":false,"context_lines":[{"line_number":1479,"context_line":"                              value is False."},{"line_number":1480,"context_line":"    \"\"\""},{"line_number":1481,"context_line":"    info \u003d node.driver_internal_info"},{"line_number":1482,"context_line":"    cleaning \u003d [\u0027cleaning_reboot\u0027, \u0027skip_current_clean_step\u0027]"},{"line_number":1483,"context_line":"    deployment \u003d [\u0027deployment_reboot\u0027, \u0027skip_current_deploy_step\u0027]"},{"line_number":1484,"context_line":"    field_name \u003d cleaning if node.clean_step else deployment"},{"line_number":1485,"context_line":"    info[field_name[0]] \u003d True"},{"line_number":1486,"context_line":"    info[field_name[1]] \u003d skip_current_step"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_26deb63e","line":1483,"range":{"start_line":1482,"start_character":4,"end_line":1483,"end_character":66},"in_reply_to":"7faddb67_5c8aa81a","updated":"2019-08-22 09:39:08.000000000","message":"Done","commit_id":"8d89360ec7a831842cfda0d5d7070408e09f3ff9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"0502573a3cc5685a0f49a5ad8163d47c2a5b877f","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_flags(node, reboot\u003dTrue, skip_current_step\u003dTrue):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ba6f1927","line":1471,"updated":"2019-08-22 13:01:34.000000000","message":"Not sure whether True or False is the most intuitive default here. Anyone else?","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"edbd26bd07dc2ad64661b174071210774623b6a8","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_flags(node, reboot\u003dTrue, skip_current_step\u003dTrue):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e84139a8","line":1471,"in_reply_to":"7faddb67_3459f25a","updated":"2019-08-23 03:43:43.000000000","message":"So far we have mix of two types of async steps:-\n1. Steps that perform reboot and want them to be re-ran\n   reboot \u003d True with skip_current_step \u003d False\n   These are majority. Ex: Redfish and iLO driver BIOS\n   steps. ILO driver RAID steps. \n\n2. Steps that perform reboot and wait for the response \n   through some kind of periodic task.\n   Ex: Drac driver RAID steps\n\nThis method is to be used only for async steps hence the \u0027reboot\u0027 flag needs to be \u0027True\u0027. The skipping of step is somthing optional. I was in doubt, about right default value for it and used it based on [1]. It is to skip the step.\nhttps://github.com/openstack/ironic/blob/master/ironic/conductor/manager.py#L1071-L1072\n\nIf the default values are confusing, we can choose not to provide any default value. WDYT?","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"15ba9ec48591a0af4d97ec874112d3edc6dfe739","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_flags(node, reboot\u003dTrue, skip_current_step\u003dTrue):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_3459f25a","line":1471,"in_reply_to":"7faddb67_ba6f1927","updated":"2019-08-22 22:01:06.000000000","message":"Without thinking too much, false for both of them. But ?? Almost tempted to make it None so that it is explicitly specified...\n\ni don\u0027t know, this will be used internally. Not sure if setting to one or the other will cause the most errors (if any) in the future...","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"fe4faafe3b0367d0051d164109be0f1602858676","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_flags(node, reboot\u003dTrue, skip_current_step\u003dTrue):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_d5286386","line":1471,"in_reply_to":"7faddb67_e84139a8","updated":"2019-08-27 09:54:39.000000000","message":"None actually makes sense to me. If we\u0027re chaining steps then we wouldn\u0027t want to set *_reboot to false if it was previously set to true. Skip is less important because it only affects the current step.","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fbdbed0ce4e3ce67b8abbeb75d339aa5977fd018","unresolved":false,"context_lines":[{"line_number":1468,"context_line":"    return states.CLEANWAIT if node.clean_step else states.DEPLOYWAIT"},{"line_number":1469,"context_line":""},{"line_number":1470,"context_line":""},{"line_number":1471,"context_line":"def set_async_step_flags(node, reboot\u003dTrue, skip_current_step\u003dTrue):"},{"line_number":1472,"context_line":"    \"\"\"Sets appropriate reboot flags in driver_internal_info based on operation"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_101cf075","line":1471,"in_reply_to":"7faddb67_e84139a8","updated":"2019-08-27 13:36:01.000000000","message":"hmm. I guess the only reason for trying to \u0027get it right\u0027 is in case some out-of-tree driver uses it, which will make it harder to change. Having said that, I guess the safest thing is to use None as default value.\n\nI\u0027m thinking of future IF we ever want to add more flags to this method, and/or if we ever don\u0027t want to set a flag. We can use the \"None\u0027 as an indicator not to set the flag. And any future change won\u0027t break existing code.\n\nAnd after all this discussion, I bet we won\u0027t ever need to modify this method in the future :)","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"15ba9ec48591a0af4d97ec874112d3edc6dfe739","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"    :param node: an ironic node object."},{"line_number":1475,"context_line":"    :param reboot: Boolean value to set for node\u0027s driver_internal_info flag"},{"line_number":1476,"context_line":"        cleaning_reboot or deployment_reboot based on cleaning or deployment"},{"line_number":1477,"context_line":"        operation in progress. Default value is True."},{"line_number":1478,"context_line":"    :param skip_current_step: Boolean value to set for node\u0027s"},{"line_number":1479,"context_line":"        driver_internal_info flag skip_current_clean_step or"},{"line_number":1480,"context_line":"        skip_current_deploy_step based on cleaning or deployment operation"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ed72b6e4","line":1477,"updated":"2019-08-22 22:01:06.000000000","message":"Do we think that most async steps will require a reboot? If so, then it makes sense for the default to be True. I\u0027m thinking False otherwise.\n\nI must have missed where we decided to have cleaning_reboot and deployment_reboot. Or did I add this in? (Can\u0027t recall now). The current step is in internal info. Guess we could clean this up later. or not.","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"edbd26bd07dc2ad64661b174071210774623b6a8","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"    :param node: an ironic node object."},{"line_number":1475,"context_line":"    :param reboot: Boolean value to set for node\u0027s driver_internal_info flag"},{"line_number":1476,"context_line":"        cleaning_reboot or deployment_reboot based on cleaning or deployment"},{"line_number":1477,"context_line":"        operation in progress. Default value is True."},{"line_number":1478,"context_line":"    :param skip_current_step: Boolean value to set for node\u0027s"},{"line_number":1479,"context_line":"        driver_internal_info flag skip_current_clean_step or"},{"line_number":1480,"context_line":"        skip_current_deploy_step based on cleaning or deployment operation"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_480acd79","line":1477,"in_reply_to":"7faddb67_ed72b6e4","updated":"2019-08-23 03:43:43.000000000","message":"This is required for the steps that are performed out-of-band but needs a reboot to check the success/failure.","commit_id":"bf6db3450b97ac27725b9baf66d2c7efcc261cec"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ca8cf4a8fcbe7c033ac664a2e0ae0dd1477ab018","unresolved":false,"context_lines":[{"line_number":1489,"context_line":"    info[fields[\u0027reboot\u0027]] \u003d reboot"},{"line_number":1490,"context_line":"    info[fields[\u0027skip\u0027]] \u003d skip_current_step"},{"line_number":1491,"context_line":"    node.driver_internal_info \u003d info"},{"line_number":1492,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_72ff56ab","line":1492,"updated":"2019-08-27 17:57:08.000000000","message":"I guess two saves in rapid succession may be okay...","commit_id":"6f626ccfcd18867f46aa9b54abdc83ccb9f54b59"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ca8cf4a8fcbe7c033ac664a2e0ae0dd1477ab018","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7faddb67_926772b8","line":1493,"updated":"2019-08-27 17:57:08.000000000","message":"Thanks for doing this!","commit_id":"6f626ccfcd18867f46aa9b54abdc83ccb9f54b59"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fbdbed0ce4e3ce67b8abbeb75d339aa5977fd018","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"    :param skip_current_step: Boolean value to set for node\u0027s"},{"line_number":1479,"context_line":"        driver_internal_info flag skip_current_clean_step or"},{"line_number":1480,"context_line":"        skip_current_deploy_step based on cleaning or deployment operation"},{"line_number":1481,"context_line":"        in progress."},{"line_number":1482,"context_line":"    \"\"\""},{"line_number":1483,"context_line":"    info \u003d node.driver_internal_info"},{"line_number":1484,"context_line":"    cleaning \u003d {\u0027reboot\u0027: \u0027cleaning_reboot\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_e9bee662","line":1481,"updated":"2019-08-27 13:36:01.000000000","message":"nit, if you feel like it, we could mention that if it is None, it isn\u0027t set at all.","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"a2eb0e66575b759180f1292136274c55078bdf0d","unresolved":false,"context_lines":[{"line_number":1478,"context_line":"    :param skip_current_step: Boolean value to set for node\u0027s"},{"line_number":1479,"context_line":"        driver_internal_info flag skip_current_clean_step or"},{"line_number":1480,"context_line":"        skip_current_deploy_step based on cleaning or deployment operation"},{"line_number":1481,"context_line":"        in progress."},{"line_number":1482,"context_line":"    \"\"\""},{"line_number":1483,"context_line":"    info \u003d node.driver_internal_info"},{"line_number":1484,"context_line":"    cleaning \u003d {\u0027reboot\u0027: \u0027cleaning_reboot\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_641a1b19","line":1481,"in_reply_to":"7faddb67_e9bee662","updated":"2019-08-27 14:16:56.000000000","message":"Done","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"}],"ironic/tests/unit/drivers/modules/test_deploy_utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fbdbed0ce4e3ce67b8abbeb75d339aa5977fd018","unresolved":false,"context_lines":[{"line_number":2856,"context_line":"        self.assertEqual(30 * 60, cache._cache_ttl)"},{"line_number":2857,"context_line":""},{"line_number":2858,"context_line":""},{"line_number":2859,"context_line":"class AyncStepTestCase(db_base.DbTestCase):"},{"line_number":2860,"context_line":""},{"line_number":2861,"context_line":"    def setUp(self):"},{"line_number":2862,"context_line":"        super(AyncStepTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_c960ca10","line":2859,"updated":"2019-08-27 13:36:01.000000000","message":"nit s/Aync/Async/. Well, we should probably fix this.","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"a2eb0e66575b759180f1292136274c55078bdf0d","unresolved":false,"context_lines":[{"line_number":2856,"context_line":"        self.assertEqual(30 * 60, cache._cache_ttl)"},{"line_number":2857,"context_line":""},{"line_number":2858,"context_line":""},{"line_number":2859,"context_line":"class AyncStepTestCase(db_base.DbTestCase):"},{"line_number":2860,"context_line":""},{"line_number":2861,"context_line":"    def setUp(self):"},{"line_number":2862,"context_line":"        super(AyncStepTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_e4c7eb10","line":2859,"in_reply_to":"7faddb67_c960ca10","updated":"2019-08-27 14:16:56.000000000","message":"Done","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fbdbed0ce4e3ce67b8abbeb75d339aa5977fd018","unresolved":false,"context_lines":[{"line_number":2902,"context_line":"            self.assertNotIn(fields[\u0027skip\u0027], info)"},{"line_number":2903,"context_line":""},{"line_number":2904,"context_line":"    def test_set_async_step_flags_cleaning_set_both(self, reboot\u003dTrue,"},{"line_number":2905,"context_line":"                                                    skip_current_step\u003dTrue):"},{"line_number":2906,"context_line":"        self.node.clean_step \u003d {\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":2907,"context_line":"                                \u0027interface\u0027: \u0027raid\u0027}"},{"line_number":2908,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_4467dfeb","line":2905,"updated":"2019-08-27 13:36:01.000000000","message":"why are you passing in reboot \u0026 skip_current_step as parameters?","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"a2eb0e66575b759180f1292136274c55078bdf0d","unresolved":false,"context_lines":[{"line_number":2902,"context_line":"            self.assertNotIn(fields[\u0027skip\u0027], info)"},{"line_number":2903,"context_line":""},{"line_number":2904,"context_line":"    def test_set_async_step_flags_cleaning_set_both(self, reboot\u003dTrue,"},{"line_number":2905,"context_line":"                                                    skip_current_step\u003dTrue):"},{"line_number":2906,"context_line":"        self.node.clean_step \u003d {\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":2907,"context_line":"                                \u0027interface\u0027: \u0027raid\u0027}"},{"line_number":2908,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_84ce372b","line":2905,"in_reply_to":"7faddb67_4467dfeb","updated":"2019-08-27 14:16:56.000000000","message":"Done","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fbdbed0ce4e3ce67b8abbeb75d339aa5977fd018","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"        self.node.deploy_step \u003d {\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":2928,"context_line":"                                 \u0027interface\u0027: \u0027raid\u0027}"},{"line_number":2929,"context_line":"        self.node.save()"},{"line_number":2930,"context_line":"        self._test_set_async_step_flags(reboot\u003dreboot)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_a47013a6","line":2930,"updated":"2019-08-27 13:36:01.000000000","message":"Just a thought. ._test_set_async_step_flags() seems to mimic the code in utils.set_async_step_flags(). Instead of that, what about doing something like\n      utils.set_async_steps_flags(reboot\u003dTrue)\n      self.assertEqual({\u0027reboot\u0027: True}, self.node.driver_internal_info)","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"a2eb0e66575b759180f1292136274c55078bdf0d","unresolved":false,"context_lines":[{"line_number":2927,"context_line":"        self.node.deploy_step \u003d {\u0027step\u0027: \u0027create_configuration\u0027,"},{"line_number":2928,"context_line":"                                 \u0027interface\u0027: \u0027raid\u0027}"},{"line_number":2929,"context_line":"        self.node.save()"},{"line_number":2930,"context_line":"        self._test_set_async_step_flags(reboot\u003dreboot)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_64d3fbd4","line":2930,"in_reply_to":"7faddb67_a47013a6","updated":"2019-08-27 14:16:56.000000000","message":"Done","commit_id":"615f2e28d7edaeb636a78861ac6de151f6b33b99"}]}
