)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d86e526c321d6779d9f495295c6355b1fca7a601","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Co-Authored-By: Michael Davies \u003cmichael@the-davies.net\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I96d4214ba86f2b1d489b5120c379adfca28a0a7d"},{"line_number":18,"context_line":"Closes-Bug: #1285507"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAWH%2F%2FF1k%3D","line":18,"updated":"2014-03-20 10:46:22.000000000","message":"I think it\u0027s \"Partial-Bug:\" because seems there\u0027s more methods that needs to be updated","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"69beeabad153f93e84f26eca7e58365c4073de9c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Co-Authored-By: Michael Davies \u003cmichael@the-davies.net\u003e"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I96d4214ba86f2b1d489b5120c379adfca28a0a7d"},{"line_number":18,"context_line":"Closes-Bug: #1285507"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAWH%2F%2FEx8%3D","line":18,"in_reply_to":"AAAAWH%2F%2FF1k%3D","updated":"2014-03-20 13:28:23.000000000","message":"This contradicts Devananda\u0027s statement in the bug, but I\u0027ll change it so that can be settled later.\n\nDone","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"}],"ironic/conductor/manager.py":[{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"eb63880927bfa3764f18c338805258e1317beb30","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                # Release node lock if error occurred."},{"line_number":763,"context_line":"                task.release_resources()"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"    def _set_console_mode(self, context, node_id, enabled, task):"},{"line_number":766,"context_line":"        node \u003d task.node"},{"line_number":767,"context_line":"        try:"},{"line_number":768,"context_line":"            if enabled and not node.console_enabled:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FRro%3D","line":765,"updated":"2014-03-18 23:06:37.000000000","message":"We don\u0027t need to pass both task and node_id here.  node_id as a param is not actually used, and we already get the node on L766, so the id is available as node.uuid (as already used in the exception handler on L781)","commit_id":"450641d78eae39710535ed95d271110e2cb47fb5"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"418f96f5188b956b68f8dc8a47bc8c994f96b5a1","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                # Release node lock if error occurred."},{"line_number":763,"context_line":"                task.release_resources()"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"    def _set_console_mode(self, context, node_id, enabled, task):"},{"line_number":766,"context_line":"        node \u003d task.node"},{"line_number":767,"context_line":"        try:"},{"line_number":768,"context_line":"            if enabled and not node.console_enabled:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2FRg0%3D","line":765,"in_reply_to":"AAAAWH%2F%2FRro%3D","updated":"2014-03-18 23:19:34.000000000","message":"Ugh, nice catch.","commit_id":"450641d78eae39710535ed95d271110e2cb47fb5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8a3cdf54ff3d995c1d9581dcd7346bacf7a05011","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                                 exception.InvalidParameterValue)"},{"line_number":727,"context_line":"    def set_console_mode(self, context, node_id, enabled):"},{"line_number":728,"context_line":"        \"\"\"Enable/Disable the console."},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        :param context: request context."},{"line_number":731,"context_line":"        :param node_id: node id or uuid."},{"line_number":732,"context_line":"        :param enabled: Boolean value; whether the console is enabled or"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FROs%3D","line":729,"updated":"2014-03-19 00:16:05.000000000","message":"Might be good to add something here about the sync/async. eg, Validation is done synchronously, and the enable/disabling of the console is done in the background asynchronously.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"efc8524dd451ff422718f324b80d73e4bb48df24","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                                 exception.InvalidParameterValue)"},{"line_number":727,"context_line":"    def set_console_mode(self, context, node_id, enabled):"},{"line_number":728,"context_line":"        \"\"\"Enable/Disable the console."},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        :param context: request context."},{"line_number":731,"context_line":"        :param node_id: node id or uuid."},{"line_number":732,"context_line":"        :param enabled: Boolean value; whether the console is enabled or"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJTQ%3D","line":729,"in_reply_to":"AAAAWH%2F%2FROs%3D","updated":"2014-03-19 23:03:33.000000000","message":"Done","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8a3cdf54ff3d995c1d9581dcd7346bacf7a05011","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":735,"context_line":"                 support console."},{"line_number":736,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":737,"context_line":"        \"\"\""},{"line_number":738,"context_line":"        LOG.debug(_(\u0027RPC set_console_mode called for node %(node)s with \u0027"},{"line_number":739,"context_line":"                    \u0027enabled %(enabled)s\u0027) % {\u0027node\u0027: node_id,"},{"line_number":740,"context_line":"                                              \u0027enabled\u0027: enabled})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FRU8%3D","line":737,"updated":"2014-03-19 00:16:05.000000000","message":"Should probably add\n\n:raises: NoFreeConductorWorker when there is no free worker to start async task.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"efc8524dd451ff422718f324b80d73e4bb48df24","unresolved":false,"context_lines":[{"line_number":734,"context_line":"        :raises: UnsupportedDriverExtension if the node\u0027s driver doesn\u0027t"},{"line_number":735,"context_line":"                 support console."},{"line_number":736,"context_line":"        :raises: InvalidParameterValue when the wrong driver info is specified."},{"line_number":737,"context_line":"        \"\"\""},{"line_number":738,"context_line":"        LOG.debug(_(\u0027RPC set_console_mode called for node %(node)s with \u0027"},{"line_number":739,"context_line":"                    \u0027enabled %(enabled)s\u0027) % {\u0027node\u0027: node_id,"},{"line_number":740,"context_line":"                                              \u0027enabled\u0027: enabled})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJR4%3D","line":737,"in_reply_to":"AAAAWH%2F%2FRU8%3D","updated":"2014-03-19 23:03:33.000000000","message":"Done","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8a3cdf54ff3d995c1d9581dcd7346bacf7a05011","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            if not getattr(task.driver, \u0027console\u0027, None):"},{"line_number":747,"context_line":"                exc \u003d exception.UnsupportedDriverExtension(driver\u003dnode.driver,"},{"line_number":748,"context_line":"                                                           extension\u003d\u0027console\u0027)"},{"line_number":749,"context_line":"                node.last_error \u003d exc.format_message()"},{"line_number":750,"context_line":"                node.save(context)"},{"line_number":751,"context_line":"                raise exc"},{"line_number":752,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FRTs%3D","line":749,"updated":"2014-03-19 00:16:05.000000000","message":"The node.last_error is meant to record errors that are done in an async fashion. With this change, this is in the sync part, so don\u0027t set (or save) this. Just raise the exception.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"efc8524dd451ff422718f324b80d73e4bb48df24","unresolved":false,"context_lines":[{"line_number":746,"context_line":"            if not getattr(task.driver, \u0027console\u0027, None):"},{"line_number":747,"context_line":"                exc \u003d exception.UnsupportedDriverExtension(driver\u003dnode.driver,"},{"line_number":748,"context_line":"                                                           extension\u003d\u0027console\u0027)"},{"line_number":749,"context_line":"                node.last_error \u003d exc.format_message()"},{"line_number":750,"context_line":"                node.save(context)"},{"line_number":751,"context_line":"                raise exc"},{"line_number":752,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJRE%3D","line":749,"in_reply_to":"AAAAWH%2F%2FRTs%3D","updated":"2014-03-19 23:03:33.000000000","message":"This is not what has been done for _do_node_deploy and _do_node_tear_down.  The change here is consistent with those other two methods.  If we want that different behaviour, we should update all three methods to be consistent.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8a3cdf54ff3d995c1d9581dcd7346bacf7a05011","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            # Start the requested action in the background."},{"line_number":756,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":757,"context_line":"                                        enabled, task)"},{"line_number":758,"context_line":"            # Release node lock at the end."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FRO0%3D","line":755,"updated":"2014-03-19 00:16:05.000000000","message":"Before the background work is started, it might be good to do \n  node.last_error\u003dNone\n  node.save(context)\n\nin case there was a .last_error from a previous operation.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"e16e520f474cd1e1ab1c58fbb7af0099e5bf3609","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            # Start the requested action in the background."},{"line_number":756,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":757,"context_line":"                                        enabled, task)"},{"line_number":758,"context_line":"            # Release node lock at the end."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FI5k%3D","line":755,"in_reply_to":"AAAAWH%2F%2FJE4%3D","updated":"2014-03-20 00:11:35.000000000","message":"Thanks @Deva for the explanation - updated in new patch.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"4823eb439fce2d2049d3b39352d9edd46aefa9cd","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            # Start the requested action in the background."},{"line_number":756,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":757,"context_line":"                                        enabled, task)"},{"line_number":758,"context_line":"            # Release node lock at the end."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJE4%3D","line":755,"in_reply_to":"AAAAWH%2F%2FJPs%3D","updated":"2014-03-19 23:29:11.000000000","message":"I think Ruby\u0027s point is that we should clear last_error when starting new work. That is consistent with other methods.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"efc8524dd451ff422718f324b80d73e4bb48df24","unresolved":false,"context_lines":[{"line_number":752,"context_line":""},{"line_number":753,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"            # Start the requested action in the background."},{"line_number":756,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":757,"context_line":"                                        enabled, task)"},{"line_number":758,"context_line":"            # Release node lock at the end."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJPs%3D","line":755,"in_reply_to":"AAAAWH%2F%2FRO0%3D","updated":"2014-03-19 23:03:33.000000000","message":"Every occasion where last_error is set there is a node.save() operation immediately afterwards.  I don\u0027t think this is necessary.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8a3cdf54ff3d995c1d9581dcd7346bacf7a05011","unresolved":false,"context_lines":[{"line_number":770,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":771,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":772,"context_line":"            else:"},{"line_number":773,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":774,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":775,"context_line":"                           \"console is already %s\") % op)"},{"line_number":776,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FRRo%3D","line":773,"updated":"2014-03-19 00:16:05.000000000","message":"It would be nice to check for this in the sync part, before _set_console_mode() is called. But I guess it doesn\u0027t matter, since it isn\u0027t being treated as an error.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"e16e520f474cd1e1ab1c58fbb7af0099e5bf3609","unresolved":false,"context_lines":[{"line_number":770,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":771,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":772,"context_line":"            else:"},{"line_number":773,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":774,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":775,"context_line":"                           \"console is already %s\") % op)"},{"line_number":776,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FI6A%3D","line":773,"in_reply_to":"AAAAWH%2F%2FJFc%3D","updated":"2014-03-20 00:11:35.000000000","message":"Thanks @Deva - updated in new patch","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"4823eb439fce2d2049d3b39352d9edd46aefa9cd","unresolved":false,"context_lines":[{"line_number":770,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":771,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":772,"context_line":"            else:"},{"line_number":773,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":774,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":775,"context_line":"                           \"console is already %s\") % op)"},{"line_number":776,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJFc%3D","line":773,"in_reply_to":"AAAAWH%2F%2FJOA%3D","updated":"2014-03-19 23:29:11.000000000","message":"@Michael, no, it wouldn\u0027t. \n\nAs long as this check is performed after the lock is taken, it only needs to be done once.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"efc8524dd451ff422718f324b80d73e4bb48df24","unresolved":false,"context_lines":[{"line_number":770,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":771,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":772,"context_line":"            else:"},{"line_number":773,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":774,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":775,"context_line":"                           \"console is already %s\") % op)"},{"line_number":776,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FJOA%3D","line":773,"in_reply_to":"AAAAWH%2F%2FRRo%3D","updated":"2014-03-19 23:03:33.000000000","message":"I agree, but to move it to set_console_mode would mean doubling the check to enable/disable console_mode, so it\u0027s probably best left here.","commit_id":"511a7beec3244ed87d736d04cc87b91cb31f4dcb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"79d80ad10599711159059ca47de8cd94ab7be720","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                raise exc"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"            # Start the requested action in the background."},{"line_number":761,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":762,"context_line":"                                        enabled, task)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FJEc%3D","line":759,"updated":"2014-03-19 23:42:28.000000000","message":"As commented on rev3, this should set node.last_error\u003dNone (if it is not already None) before calling _spawn_worker.","commit_id":"2d454a7962f8a43b86f5b88fdae3d0757ca244b3"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7ca430e17651ed2f8399ad9448f7c366f62b1eb1","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                raise exc"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"            task.driver.console.validate(task, node)"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"            # Start the requested action in the background."},{"line_number":761,"context_line":"            thread \u003d self._spawn_worker(self._set_console_mode, context,"},{"line_number":762,"context_line":"                                        enabled, task)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FI5U%3D","line":759,"in_reply_to":"AAAAWH%2F%2FJEc%3D","updated":"2014-03-20 00:12:48.000000000","message":"Done","commit_id":"2d454a7962f8a43b86f5b88fdae3d0757ca244b3"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"79d80ad10599711159059ca47de8cd94ab7be720","unresolved":false,"context_lines":[{"line_number":776,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":777,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":778,"context_line":"            else:"},{"line_number":779,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":780,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":781,"context_line":"                           \"console is already %s\") % op)"},{"line_number":782,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FJBo%3D","line":779,"updated":"2014-03-19 23:42:28.000000000","message":"as commented on rev3, i think this whole if..elif..else series could be moved up, eg. to L757","commit_id":"2d454a7962f8a43b86f5b88fdae3d0757ca244b3"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"7ca430e17651ed2f8399ad9448f7c366f62b1eb1","unresolved":false,"context_lines":[{"line_number":776,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":777,"context_line":"                task.driver.console.stop_console(task, node)"},{"line_number":778,"context_line":"            else:"},{"line_number":779,"context_line":"                op \u003d _(\u0027enabled\u0027) if enabled else _(\u0027disabled\u0027)"},{"line_number":780,"context_line":"                LOG.info(_(\"No console action was triggered because the \""},{"line_number":781,"context_line":"                           \"console is already %s\") % op)"},{"line_number":782,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2FI5Q%3D","line":779,"in_reply_to":"AAAAWH%2F%2FJBo%3D","updated":"2014-03-20 00:12:48.000000000","message":"Done","commit_id":"2d454a7962f8a43b86f5b88fdae3d0757ca244b3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"99ed5a764450fe96a42c30364bc5388200879531","unresolved":false,"context_lines":[{"line_number":776,"context_line":"                # Release node lock if error occurred."},{"line_number":777,"context_line":"                task.release_resources()"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    def _set_console_mode(self, context, enabled, task):"},{"line_number":780,"context_line":"        \"\"\"Internal method to set console mode on a node.\"\"\""},{"line_number":781,"context_line":"        node \u003d task.node"},{"line_number":782,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FFLY%3D","line":779,"updated":"2014-03-20 12:23:05.000000000","message":"1) task already contains context as attribute task.context 2) please re-arrange arguments for consistency with another methods\n\ndef _set_console_mode(self, task, enabled):","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"69beeabad153f93e84f26eca7e58365c4073de9c","unresolved":false,"context_lines":[{"line_number":776,"context_line":"                # Release node lock if error occurred."},{"line_number":777,"context_line":"                task.release_resources()"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    def _set_console_mode(self, context, enabled, task):"},{"line_number":780,"context_line":"        \"\"\"Internal method to set console mode on a node.\"\"\""},{"line_number":781,"context_line":"        node \u003d task.node"},{"line_number":782,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FEyM%3D","line":779,"in_reply_to":"AAAAWH%2F%2FFLY%3D","updated":"2014-03-20 13:28:23.000000000","message":"This was following the pattern of the other changes, but I agree if we can get context from task, that should be done.\n\nDone","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d86e526c321d6779d9f495295c6355b1fca7a601","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        \"\"\"Internal method to set console mode on a node.\"\"\""},{"line_number":781,"context_line":"        node \u003d task.node"},{"line_number":782,"context_line":"        try:"},{"line_number":783,"context_line":"            if enabled and not node.console_enabled:"},{"line_number":784,"context_line":"                task.driver.console.start_console(task, node)"},{"line_number":785,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":786,"context_line":"                task.driver.console.stop_console(task, node)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FF3Q%3D","line":783,"updated":"2014-03-20 10:46:22.000000000","message":"This comparison is already being done by line 760, so we don\u0027t need to do it here again. We can simplify it, e.g:\n\nif enabled:\n    start_console()\nelse:\n    stop_console()","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"69beeabad153f93e84f26eca7e58365c4073de9c","unresolved":false,"context_lines":[{"line_number":780,"context_line":"        \"\"\"Internal method to set console mode on a node.\"\"\""},{"line_number":781,"context_line":"        node \u003d task.node"},{"line_number":782,"context_line":"        try:"},{"line_number":783,"context_line":"            if enabled and not node.console_enabled:"},{"line_number":784,"context_line":"                task.driver.console.start_console(task, node)"},{"line_number":785,"context_line":"            elif not enabled and node.console_enabled:"},{"line_number":786,"context_line":"                task.driver.console.stop_console(task, node)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FEyE%3D","line":783,"in_reply_to":"AAAAWH%2F%2FF3Q%3D","updated":"2014-03-20 13:28:23.000000000","message":"Done","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"}],"ironic/tests/conductor/test_manager.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d86e526c321d6779d9f495295c6355b1fca7a601","unresolved":false,"context_lines":[{"line_number":1133,"context_line":"            self.service.set_console_mode(self.context, node.uuid, False)"},{"line_number":1134,"context_line":"            self.service._worker_pool.waitall()"},{"line_number":1135,"context_line":"            self.assertFalse(mock_sc.called)"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":"    def test_get_console(self):"},{"line_number":1138,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027, console_enabled\u003dTrue)"},{"line_number":1139,"context_line":"        node \u003d self.dbapi.create_node(ndict)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FF6s%3D","line":1136,"updated":"2014-03-20 10:46:22.000000000","message":"We need a test that captures the NoFreeConductorWorker behavior when trying to invoke set_console_mode()","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"69beeabad153f93e84f26eca7e58365c4073de9c","unresolved":false,"context_lines":[{"line_number":1133,"context_line":"            self.service.set_console_mode(self.context, node.uuid, False)"},{"line_number":1134,"context_line":"            self.service._worker_pool.waitall()"},{"line_number":1135,"context_line":"            self.assertFalse(mock_sc.called)"},{"line_number":1136,"context_line":""},{"line_number":1137,"context_line":"    def test_get_console(self):"},{"line_number":1138,"context_line":"        ndict \u003d utils.get_test_node(driver\u003d\u0027fake\u0027, console_enabled\u003dTrue)"},{"line_number":1139,"context_line":"        node \u003d self.dbapi.create_node(ndict)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAWH%2F%2FEuE%3D","line":1136,"in_reply_to":"AAAAWH%2F%2FF6s%3D","updated":"2014-03-20 13:28:23.000000000","message":"Done","commit_id":"74a56c5a456f9219a4b415a4bc67fd91ad25431e"}]}
