)]}'
{"ironic/conductor/deployments.py":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            node.instance_info \u003d instance_info"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    driver_internal_info \u003d node.driver_internal_info"},{"line_number":91,"context_line":"    driver_internal_info.pop(\u0027steps_validated\u0027, None)"},{"line_number":92,"context_line":"    # Infer the image type to make sure the deploy driver"},{"line_number":93,"context_line":"    # validates only the necessary variables for different"},{"line_number":94,"context_line":"    # image types."}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_f192ec9d","line":91,"updated":"2020-04-24 14:59:51.000000000","message":"It might be sensible to clean up some other fields here.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7824420b1e57542b189826f31efc1aead41f50fa","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    driver_internal_info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":317,"context_line":"    driver_internal_info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":318,"context_line":"    driver_internal_info.pop(\u0027steps_validated\u0027, None)"},{"line_number":319,"context_line":"    # Remove the agent_url cached from the deployment."},{"line_number":320,"context_line":"    driver_internal_info.pop(\u0027agent_url\u0027, None)"},{"line_number":321,"context_line":"    node.driver_internal_info \u003d driver_internal_info"},{"line_number":322,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_0665ceb5","line":319,"updated":"2020-04-24 13:58:21.000000000","message":"I kind of wonder if we should nuke the field in error handling... Guess it really doesn\u0027t matter.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    driver_internal_info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":317,"context_line":"    driver_internal_info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":318,"context_line":"    driver_internal_info.pop(\u0027steps_validated\u0027, None)"},{"line_number":319,"context_line":"    # Remove the agent_url cached from the deployment."},{"line_number":320,"context_line":"    driver_internal_info.pop(\u0027agent_url\u0027, None)"},{"line_number":321,"context_line":"    node.driver_internal_info \u003d driver_internal_info"},{"line_number":322,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_51a920dd","line":319,"in_reply_to":"1f493fa4_0665ceb5","updated":"2020-04-24 14:59:51.000000000","message":"+1, should also be popped in deploying_error_handler.\n\nIt would be better if there were some field we could clear in its entirety, but nevermind.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ca5b25281f3490189559f8d294a32c36885d7f27","unresolved":false,"context_lines":[{"line_number":316,"context_line":"    driver_internal_info.pop(\u0027deployment_reboot\u0027, None)"},{"line_number":317,"context_line":"    driver_internal_info.pop(\u0027deployment_polling\u0027, None)"},{"line_number":318,"context_line":"    driver_internal_info.pop(\u0027steps_validated\u0027, None)"},{"line_number":319,"context_line":"    # Remove the agent_url cached from the deployment."},{"line_number":320,"context_line":"    driver_internal_info.pop(\u0027agent_url\u0027, None)"},{"line_number":321,"context_line":"    node.driver_internal_info \u003d driver_internal_info"},{"line_number":322,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_204a3f7f","line":319,"in_reply_to":"1f493fa4_51a920dd","updated":"2020-04-24 15:45:10.000000000","message":"Done","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"}],"ironic/drivers/modules/agent_base.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3a322758efd2509dbfcdda22edf14c0272246278","unresolved":false,"context_lines":[{"line_number":460,"context_line":"                        \u0027maintenance mode; not taking any action.\u0027,"},{"line_number":461,"context_line":"                        {\u0027node\u0027: node.uuid})"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"    @METRICS.timer(\u0027HeartbeatMixin.heartbeat\u0027)"},{"line_number":464,"context_line":"    def heartbeat(self, task, callback_url, agent_version):"},{"line_number":465,"context_line":"        \"\"\"Process a heartbeat."},{"line_number":466,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"df33271e_a16c31ce","line":463,"updated":"2020-04-01 15:07:45.000000000","message":"C901 \u0027HeartbeatMixin.heartbeat\u0027 is too complex (21)","commit_id":"bc2b1acafcb7a30723b767a278febdfbb47c9bec"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        node \u003d task.node"},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            # NOTE(dtantsur): on first heartbeat, load in-band steps."},{"line_number":484,"context_line":"            if not node.driver_internal_info.get(\u0027agent_cached_deploy_steps\u0027):"},{"line_number":485,"context_line":"                msg \u003d _(\u0027Failed to load in-band deploy steps\u0027)"},{"line_number":486,"context_line":"                # Refresh steps since this is the first time IPA has"},{"line_number":487,"context_line":"                # booted and we need to collect in-band steps."}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_f16e6c93","line":484,"range":{"start_line":484,"start_character":50,"end_line":484,"end_character":75},"updated":"2020-04-24 14:59:51.000000000","message":"I always get nervous checking for the absence of these fields. Are we sure it\u0027s always cleared at the beginning and/or end of a deploy?\n\nIn fact I can\u0027t see it being cleared at all.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ca5b25281f3490189559f8d294a32c36885d7f27","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        node \u003d task.node"},{"line_number":482,"context_line":"        try:"},{"line_number":483,"context_line":"            # NOTE(dtantsur): on first heartbeat, load in-band steps."},{"line_number":484,"context_line":"            if not node.driver_internal_info.get(\u0027agent_cached_deploy_steps\u0027):"},{"line_number":485,"context_line":"                msg \u003d _(\u0027Failed to load in-band deploy steps\u0027)"},{"line_number":486,"context_line":"                # Refresh steps since this is the first time IPA has"},{"line_number":487,"context_line":"                # booted and we need to collect in-band steps."}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_a33139ef","line":484,"range":{"start_line":484,"start_character":50,"end_line":484,"end_character":75},"in_reply_to":"1f493fa4_f16e6c93","updated":"2020-04-24 15:45:10.000000000","message":"Done","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":542,"context_line":"                polling \u003d node.driver_internal_info.get("},{"line_number":543,"context_line":"                    \u0027cleaning_polling\u0027, False)"},{"line_number":544,"context_line":"                if not polling:"},{"line_number":545,"context_line":"                    self.continue_cleaning(task)"},{"line_number":546,"context_line":"        except Exception as e:"},{"line_number":547,"context_line":"            last_error \u003d _(\u0027%(msg)s. Error: %(exc)s\u0027) % {\u0027msg\u0027: msg, \u0027exc\u0027: e}"},{"line_number":548,"context_line":"            LOG.exception(\u0027Asynchronous exception for node %(node)s: %(err)s\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_f1782c2b","line":545,"range":{"start_line":545,"start_character":25,"end_line":545,"end_character":42},"updated":"2020-04-24 14:59:51.000000000","message":"Would be good to switch to process_next_step for consistency here.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ca5b25281f3490189559f8d294a32c36885d7f27","unresolved":false,"context_lines":[{"line_number":542,"context_line":"                polling \u003d node.driver_internal_info.get("},{"line_number":543,"context_line":"                    \u0027cleaning_polling\u0027, False)"},{"line_number":544,"context_line":"                if not polling:"},{"line_number":545,"context_line":"                    self.continue_cleaning(task)"},{"line_number":546,"context_line":"        except Exception as e:"},{"line_number":547,"context_line":"            last_error \u003d _(\u0027%(msg)s. Error: %(exc)s\u0027) % {\u0027msg\u0027: msg, \u0027exc\u0027: e}"},{"line_number":548,"context_line":"            LOG.exception(\u0027Asynchronous exception for node %(node)s: %(err)s\u0027,"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_83419d3c","line":545,"range":{"start_line":545,"start_character":25,"end_line":545,"end_character":42},"in_reply_to":"1f493fa4_f1782c2b","updated":"2020-04-24 15:45:10.000000000","message":"It has some subtle implications, so I didn\u0027t risk touching it.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":712,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027type\u0027: step_type,"},{"line_number":713,"context_line":"                   \u0027steps\u0027: previous_steps})"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"        call \u003d getattr(self._client, \u0027get_%s_steps\u0027 % step_type)"},{"line_number":716,"context_line":"        try:"},{"line_number":717,"context_line":"            agent_result \u003d call(node, task.ports).get(\u0027command_result\u0027, {})"},{"line_number":718,"context_line":"        except exception.AgentAPIError as exc:"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_11679827","line":715,"updated":"2020-04-24 14:59:51.000000000","message":"Probably needs a TODO here.","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ca5b25281f3490189559f8d294a32c36885d7f27","unresolved":false,"context_lines":[{"line_number":712,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027type\u0027: step_type,"},{"line_number":713,"context_line":"                   \u0027steps\u0027: previous_steps})"},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"        call \u003d getattr(self._client, \u0027get_%s_steps\u0027 % step_type)"},{"line_number":716,"context_line":"        try:"},{"line_number":717,"context_line":"            agent_result \u003d call(node, task.ports).get(\u0027command_result\u0027, {})"},{"line_number":718,"context_line":"        except exception.AgentAPIError as exc:"}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_a346594e","line":715,"in_reply_to":"1f493fa4_11679827","updated":"2020-04-24 15:45:10.000000000","message":"Done","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"1f71f2842b1febd24577f437551efc9fce8a6533","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":792,"context_line":"        :param step: a deploy step dictionary to execute"},{"line_number":793,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":794,"context_line":"            status"},{"line_number":795,"context_line":"        :returns: states.DEPLOYWAIT to signify the step will be completed async"},{"line_number":796,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_d17c10b7","line":793,"range":{"start_line":793,"start_character":17,"end_line":793,"end_character":36},"updated":"2020-04-24 14:59:51.000000000","message":"deploy","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ca5b25281f3490189559f8d294a32c36885d7f27","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":792,"context_line":"        :param step: a deploy step dictionary to execute"},{"line_number":793,"context_line":"        :raises: NodeCleaningFailure if the agent does not return a command"},{"line_number":794,"context_line":"            status"},{"line_number":795,"context_line":"        :returns: states.DEPLOYWAIT to signify the step will be completed async"},{"line_number":796,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":36,"id":"1f493fa4_43a67512","line":793,"range":{"start_line":793,"start_character":17,"end_line":793,"end_character":36},"in_reply_to":"1f493fa4_d17c10b7","updated":"2020-04-24 15:45:10.000000000","message":"Done","commit_id":"4795c4a8b8896129228fba5a09b87d0551f6e140"}]}
