)]}'
{"ironic/conductor/manager.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ee0ce2181d43d772bf6587e382780519497609a9","unresolved":false,"context_lines":[{"line_number":923,"context_line":"            except KeyError:"},{"line_number":924,"context_line":"                skip_current_step \u003d True"},{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_824b6629","line":926,"range":{"start_line":926,"start_character":16,"end_line":926,"end_character":48},"updated":"2019-09-11 18:08:15.000000000","message":"Fixed - need to do this in all paths where we save.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"35925e5af9d5b570f915b09437b7ce94818ef93b","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_d3eb89d9","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"updated":"2019-09-11 03:53:29.000000000","message":"If driver can pop this upon completion of polling instead of setting it to False. we would not need this check.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"48ad5782b9db4cf753d8004af35b38ede88301c4","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_1f0a7189","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"in_reply_to":"5faad753_094a407f","updated":"2019-09-11 17:36:16.000000000","message":"Some deploy steps might not boot up the agent, so we can\u0027t necessarily depend on the heartbeat.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"84399f9f26e788381bac0f532e20bdc1e841d8c5","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_5378eb28","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"in_reply_to":"5faad753_2baff994","updated":"2019-09-11 14:48:59.000000000","message":"True. Still we need to trust driver to set it to \u0027False\u0027 upon completion of the step else we will never reach here.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"fb8a2ab6214db2499ba2eb4c5024f68197963d14","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_094a407f","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"in_reply_to":"5faad753_53222b02","updated":"2019-09-11 16:16:35.000000000","message":"Ok, then it should be fine. It would be an issue if it relies on next heartbeat to resume deployment. Would it be good, if we make both behavior similar as in rely on heartbeat? \nBut I suppose in cleaning we support both kinds of mechanism to resume cleaning, so it should be fine.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"52dbb8447e2a3994538e9af4e5e9fdb9b6913b55","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_53222b02","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"in_reply_to":"5faad753_5378eb28","updated":"2019-09-11 14:55:06.000000000","message":"On completion of the step, the driver will trigger this RPC.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7948c5405d3bcba39ffbc2770895cfd5fde826e1","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            else:"},{"line_number":926,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":927,"context_line":"                save_required \u003d True"},{"line_number":928,"context_line":"            if info.pop(\u0027deployment_polling\u0027, None) is not None:"},{"line_number":929,"context_line":"                save_required \u003d True"},{"line_number":930,"context_line":"            if save_required:"},{"line_number":931,"context_line":"                node.save()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_2baff994","line":928,"range":{"start_line":928,"start_character":12,"end_line":928,"end_character":64},"in_reply_to":"5faad753_d3eb89d9","updated":"2019-09-11 11:55:05.000000000","message":"True, but then we need to trust the driver. If we forget to remove it, we never resume deployment so it\u0027s quite important.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"ee0ce2181d43d772bf6587e382780519497609a9","unresolved":false,"context_lines":[{"line_number":1239,"context_line":"            except KeyError:"},{"line_number":1240,"context_line":"                skip_current_step \u003d True"},{"line_number":1241,"context_line":"            else:"},{"line_number":1242,"context_line":"                node.driver_internal_info \u003d info"},{"line_number":1243,"context_line":"                save_required \u003d True"},{"line_number":1244,"context_line":"            if info.pop(\u0027cleaning_polling\u0027, None) is not None:"},{"line_number":1245,"context_line":"                save_required \u003d True"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_42556ec5","line":1242,"updated":"2019-09-11 18:08:15.000000000","message":"And here.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8b60ec76920a59f740dedd2d415d7596514ef5db","unresolved":false,"context_lines":[{"line_number":1548,"context_line":"        node.clean_step \u003d None"},{"line_number":1549,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":1550,"context_line":"        info.pop(\u0027clean_step_index\u0027, None)"},{"line_number":1551,"context_line":"        # Clear any leftover metadata about cleaning"},{"line_number":1552,"context_line":"        info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":1553,"context_line":"        info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":1554,"context_line":"        info.pop(\u0027skip_current_clean_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_df4267ab","line":1551,"updated":"2019-09-13 15:33:05.000000000","message":"this also applies to the line above, right?","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"64b69ad22654f1869f26df522f632354e37d3090","unresolved":false,"context_lines":[{"line_number":1548,"context_line":"        node.clean_step \u003d None"},{"line_number":1549,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":1550,"context_line":"        info.pop(\u0027clean_step_index\u0027, None)"},{"line_number":1551,"context_line":"        # Clear any leftover metadata about cleaning"},{"line_number":1552,"context_line":"        info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":1553,"context_line":"        info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":1554,"context_line":"        info.pop(\u0027skip_current_clean_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_11d3f4d6","line":1551,"in_reply_to":"5faad753_df4267ab","updated":"2019-09-16 13:49:58.000000000","message":"Done","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"}],"ironic/conductor/utils.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"35925e5af9d5b570f915b09437b7ce94818ef93b","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        # Clear any leftover metadata about deployment."},{"line_number":470,"context_line":"        info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":471,"context_line":"        info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":472,"context_line":"        info.pop(\u0027skip_current_deploy_step\u0027, None)"},{"line_number":473,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    if cleanup_err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_b3028db3","line":472,"range":{"start_line":472,"start_character":8,"end_line":472,"end_character":50},"updated":"2019-09-11 03:53:29.000000000","message":"Is this required? If so, dont we need same in cleaning as well at L414?","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"7948c5405d3bcba39ffbc2770895cfd5fde826e1","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        # Clear any leftover metadata about deployment."},{"line_number":470,"context_line":"        info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":471,"context_line":"        info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":472,"context_line":"        info.pop(\u0027skip_current_deploy_step\u0027, None)"},{"line_number":473,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    if cleanup_err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_abd689f0","line":472,"range":{"start_line":472,"start_character":8,"end_line":472,"end_character":50},"in_reply_to":"5faad753_b3028db3","updated":"2019-09-11 11:55:05.000000000","message":"Good point, yes I think we should.","commit_id":"ec92b9d7790a7098d29cc1086a4f1f0918efde50"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8b60ec76920a59f740dedd2d415d7596514ef5db","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        node.clean_step \u003d {}"},{"line_number":410,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":411,"context_line":"        info.pop(\u0027clean_step_index\u0027, None)"},{"line_number":412,"context_line":"        # Clear any leftover metadata about cleaning"},{"line_number":413,"context_line":"        info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":414,"context_line":"        info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":415,"context_line":"        info.pop(\u0027skip_current_clean_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_5fe997b4","line":412,"updated":"2019-09-13 15:33:05.000000000","message":"this comment now also applies to the line above.\n\nI wonder why we didn\u0027t write a helper method to clear this stuff, so we don\u0027t have to keep track of all the ones that need to be cleared.  :-( \n(Another PR if we want to do that.)","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"64b69ad22654f1869f26df522f632354e37d3090","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        node.clean_step \u003d {}"},{"line_number":410,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":411,"context_line":"        info.pop(\u0027clean_step_index\u0027, None)"},{"line_number":412,"context_line":"        # Clear any leftover metadata about cleaning"},{"line_number":413,"context_line":"        info.pop(\u0027cleaning_reboot\u0027, None)"},{"line_number":414,"context_line":"        info.pop(\u0027cleaning_polling\u0027, None)"},{"line_number":415,"context_line":"        info.pop(\u0027skip_current_clean_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_317cf0ea","line":412,"in_reply_to":"5faad753_5fe997b4","updated":"2019-09-16 13:49:58.000000000","message":"Done. Helper function makes sense for a follow up.","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8b60ec76920a59f740dedd2d415d7596514ef5db","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        node.deploy_step \u003d {}"},{"line_number":468,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":469,"context_line":"        info.pop(\u0027deploy_step_index\u0027, None)"},{"line_number":470,"context_line":"        # Clear any leftover metadata about deployment."},{"line_number":471,"context_line":"        info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":472,"context_line":"        info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":473,"context_line":"        info.pop(\u0027skip_current_deploy_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_bfd76bee","line":470,"updated":"2019-09-13 15:33:05.000000000","message":"this line now also applies to the line above.","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"64b69ad22654f1869f26df522f632354e37d3090","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        node.deploy_step \u003d {}"},{"line_number":468,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":469,"context_line":"        info.pop(\u0027deploy_step_index\u0027, None)"},{"line_number":470,"context_line":"        # Clear any leftover metadata about deployment."},{"line_number":471,"context_line":"        info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":472,"context_line":"        info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":473,"context_line":"        info.pop(\u0027skip_current_deploy_step\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_9170440a","line":470,"in_reply_to":"5faad753_bfd76bee","updated":"2019-09-16 13:49:58.000000000","message":"Done","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"959720acc7cbbcb88a9c087dcc07f1d17357ee96","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        in progress. If it is None, corresponding skip step flag is not set"},{"line_number":1493,"context_line":"        in node\u0027s driver_internal_info."},{"line_number":1494,"context_line":"    :param polling: Boolean value to set for node\u0027s driver_internal_info flag"},{"line_number":1495,"context_line":"        deployment_polling to cleaning_polling. If it is None, the"},{"line_number":1496,"context_line":"        corresponding polling flag is not set in the node\u0027s"},{"line_number":1497,"context_line":"        driver_internal_info."},{"line_number":1498,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_b8db0f7a","line":1495,"range":{"start_line":1495,"start_character":27,"end_line":1495,"end_character":29},"updated":"2019-09-13 05:00:11.000000000","message":"nit: s/ to / or /","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"5e510371fdc8e0f5660c11801201e79d3d52dd06","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        in progress. If it is None, corresponding skip step flag is not set"},{"line_number":1493,"context_line":"        in node\u0027s driver_internal_info."},{"line_number":1494,"context_line":"    :param polling: Boolean value to set for node\u0027s driver_internal_info flag"},{"line_number":1495,"context_line":"        deployment_polling to cleaning_polling. If it is None, the"},{"line_number":1496,"context_line":"        corresponding polling flag is not set in the node\u0027s"},{"line_number":1497,"context_line":"        driver_internal_info."},{"line_number":1498,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_e2f791d2","line":1495,"range":{"start_line":1495,"start_character":27,"end_line":1495,"end_character":29},"in_reply_to":"5faad753_b8db0f7a","updated":"2019-09-13 08:29:40.000000000","message":"Thanks, I\u0027ll follow up.","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"}],"ironic/tests/unit/drivers/modules/test_agent_base_vendor.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8b60ec76920a59f740dedd2d415d7596514ef5db","unresolved":false,"context_lines":[{"line_number":433,"context_line":"    @mock.patch.object(objects.node.Node, \u0027touch_provisioning\u0027, autospec\u003dTrue)"},{"line_number":434,"context_line":"    @mock.patch.object(agent_base_vendor.HeartbeatMixin,"},{"line_number":435,"context_line":"                       \u0027continue_cleaning\u0027, autospec\u003dTrue)"},{"line_number":436,"context_line":"    def test_heartbeat_continue_polling(self, mock_continue, mock_touch):"},{"line_number":437,"context_line":"        info \u003d self.node.driver_internal_info"},{"line_number":438,"context_line":"        info[\u0027cleaning_polling\u0027] \u003d True"},{"line_number":439,"context_line":"        self.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_e2b9c814","line":436,"updated":"2019-09-13 15:33:05.000000000","message":"nit, you might want to call this test_heartbeat_continue_cleaning_polling","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"64b69ad22654f1869f26df522f632354e37d3090","unresolved":false,"context_lines":[{"line_number":433,"context_line":"    @mock.patch.object(objects.node.Node, \u0027touch_provisioning\u0027, autospec\u003dTrue)"},{"line_number":434,"context_line":"    @mock.patch.object(agent_base_vendor.HeartbeatMixin,"},{"line_number":435,"context_line":"                       \u0027continue_cleaning\u0027, autospec\u003dTrue)"},{"line_number":436,"context_line":"    def test_heartbeat_continue_polling(self, mock_continue, mock_touch):"},{"line_number":437,"context_line":"        info \u003d self.node.driver_internal_info"},{"line_number":438,"context_line":"        info[\u0027cleaning_polling\u0027] \u003d True"},{"line_number":439,"context_line":"        self.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_115e9475","line":436,"in_reply_to":"5faad753_e2b9c814","updated":"2019-09-16 13:49:58.000000000","message":"Done","commit_id":"a6697cb271d9e6935ea910bfb43c3e8833387424"}],"releasenotes/notes/deployment-cleaning-polling-flag-be13a866a7c302d7.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"493f587b93fd77ae15105d818726c4db401d6a64","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    where the step could fail to execute.  The ``deployment_polling`` and"},{"line_number":6,"context_line":"    ``cleaning_polling`` flags may be used by driver implementations to signal"},{"line_number":7,"context_line":"    that the driver is polling for completion.  See `story 2003817"},{"line_number":8,"context_line":"    \u003chttps://storyboard.openstack.org/#!/story/2003817\u003e`__ for details."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5faad753_cc393fd7","line":8,"updated":"2019-09-16 13:57:21.000000000","message":"I\u0027m not sure, but do you have two underscores there?","commit_id":"c6612626f90830b611a0f9a1feb14c22c5670621"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"641181875d7b03ea34c571b7b10a4679375c07fa","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    where the step could fail to execute.  The ``deployment_polling`` and"},{"line_number":6,"context_line":"    ``cleaning_polling`` flags may be used by driver implementations to signal"},{"line_number":7,"context_line":"    that the driver is polling for completion.  See `story 2003817"},{"line_number":8,"context_line":"    \u003chttps://storyboard.openstack.org/#!/story/2003817\u003e`__ for details."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_9a03320e","line":8,"in_reply_to":"5faad753_cc393fd7","updated":"2019-09-17 05:57:02.000000000","message":"Single \u0027_\u0027 is sufficient. The link is rendered properly, inspite of this [1].\nhttps://storage.gra1.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_de5/681272/4/check/build-openstack-releasenotes/de54a00/docs/unreleased.html","commit_id":"c6612626f90830b611a0f9a1feb14c22c5670621"}]}
