)]}'
{"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"7b1926e934d147d006bbbb556ea923ec03401a55","unresolved":false,"context_lines":[{"line_number":91,"context_line":"class NodeStates(base.APIBase):"},{"line_number":92,"context_line":"    \"\"\"API representation of the states of a node.\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    console_enabled \u003d bool"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    power_state \u003d wtypes.text"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FA60%3D","line":94,"updated":"2014-02-17 16:35:21.000000000","message":"Looks like this should be replaced by wsme type which was introduced in parent patch","commit_id":"9f77ce8a7799f27f9a6d7c5d07f16707de7e05ef"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8a017e6306648dd1ee1e1c6781662b526f313e87","unresolved":false,"context_lines":[{"line_number":91,"context_line":"class NodeStates(base.APIBase):"},{"line_number":92,"context_line":"    \"\"\"API representation of the states of a node.\"\"\""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    console_enabled \u003d bool"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    power_state \u003d wtypes.text"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2FAuw%3D","line":94,"in_reply_to":"AAAAUX%2F%2FA60%3D","updated":"2014-02-17 16:52:35.000000000","message":"+1! Fixing... thanks","commit_id":"9f77ce8a7799f27f9a6d7c5d07f16707de7e05ef"}],"ironic/conductor/manager.py":[{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"4cfecb5fed6ab052389126455aae1cde2b2f41a4","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":571,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":572,"context_line":"                    node[\u0027last_error\u0027] \u003d (_(\"Failed to validate console info. \""},{"line_number":573,"context_line":"                                            \"Error: %s\") % e)"},{"line_number":574,"context_line":"                    node.save(context)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2Bnvs%3D","line":573,"updated":"2014-02-20 06:31:18.000000000","message":"Per these i18n-messages bps [1], suggest to use six.text_type(e) method to format the exception message to support i18n.\n\n[1] https://blueprints.launchpad.net/openstack/?searchtext\u003di18n-messages","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e02fca1dec591ac4a7a49386d2ca43f212b3b2dc","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":571,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":572,"context_line":"                    node[\u0027last_error\u0027] \u003d (_(\"Failed to validate console info. \""},{"line_number":573,"context_line":"                                            \"Error: %s\") % e)"},{"line_number":574,"context_line":"                    node.save(context)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BYvM%3D","line":573,"in_reply_to":"AAAAUX%2F%2BnkI%3D","updated":"2014-02-21 13:48:32.000000000","message":"Ah ack, will make the change :)","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"803ac6f2dea6ba57fbf483a92ea688e443221a7c","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":571,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":572,"context_line":"                    node[\u0027last_error\u0027] \u003d (_(\"Failed to validate console info. \""},{"line_number":573,"context_line":"                                            \"Error: %s\") % e)"},{"line_number":574,"context_line":"                    node.save(context)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BnkI%3D","line":573,"in_reply_to":"AAAAUX%2F%2Bnvs%3D","updated":"2014-02-20 06:58:41.000000000","message":"I just commit patch to support this on our IronicException level [1], so no need to change your code here.\n\n[1] https://review.openstack.org/#/c/74626/5/ironic/common/exception.py\n\nAnd welcome your comments about my i18n patch:)","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"4cfecb5fed6ab052389126455aae1cde2b2f41a4","unresolved":false,"context_lines":[{"line_number":575,"context_line":""},{"line_number":576,"context_line":"            try:"},{"line_number":577,"context_line":"                if enabled:"},{"line_number":578,"context_line":"                    task.driver.console.start_console(task, node)"},{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2Bnzo%3D","line":578,"updated":"2014-02-20 06:31:18.000000000","message":"Should we check if the console is started already and avoid to start it again? Maybe a new console interface method \u0027get_console_status(node)\u0027 is required to check the actual console status. I think for some case the actual status is not synced with our node[\u0027console_enabled\u0027] in database, and for some case, our user try to start console which is started already, make sense?","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e02fca1dec591ac4a7a49386d2ca43f212b3b2dc","unresolved":false,"context_lines":[{"line_number":575,"context_line":""},{"line_number":576,"context_line":"            try:"},{"line_number":577,"context_line":"                if enabled:"},{"line_number":578,"context_line":"                    task.driver.console.start_console(task, node)"},{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BYtY%3D","line":578,"in_reply_to":"AAAAUX%2F%2Bnzo%3D","updated":"2014-02-21 13:48:32.000000000","message":"Makes sense indeed :)\n\nIn this case the lock is being acquired with shared\u003dFalse, so I think we can assume that the task.node.console_enabled db field is updated here.","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"4cfecb5fed6ab052389126455aae1cde2b2f41a4","unresolved":false,"context_lines":[{"line_number":577,"context_line":"                if enabled:"},{"line_number":578,"context_line":"                    task.driver.console.start_console(task, node)"},{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    op \u003d _(\u0027enabling\u0027) if enabled else _(\u0027disabling\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BnzE%3D","line":580,"updated":"2014-02-20 06:31:18.000000000","message":"ditto, should we check if it is stopped already before stopping?","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"0a2fbab4362a1228dbc720c1198fc7e9e71078ac","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    op \u003d _(\u0027enabling\u0027) if enabled else _(\u0027disabling\u0027)"},{"line_number":584,"context_line":"                    msg \u003d (_(\u0027Error %(op)s the console on node %(node)s. \u0027"},{"line_number":585,"context_line":"                            \u0027Reason: %(error)s\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BnU4%3D","line":582,"updated":"2014-02-20 07:26:57.000000000","message":"Here we will re-raise common Exception, so how do you think , should we convert it to our IronicException, how about a new ConsoleOperationFailed(IronicException) get involved?","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"5479480d73a22680ed2e1913ceb9c39f1ffc395b","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    op \u003d _(\u0027enabling\u0027) if enabled else _(\u0027disabling\u0027)"},{"line_number":584,"context_line":"                    msg \u003d (_(\u0027Error %(op)s the console on node %(node)s. \u0027"},{"line_number":585,"context_line":"                            \u0027Reason: %(error)s\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BYgA%3D","line":582,"in_reply_to":"AAAAUX%2F%2BYs0%3D","updated":"2014-02-21 14:08:39.000000000","message":"Actually no. I was thinking more about it and I think it would be better if {start, stop}_console raise an Exceptions inherited from the IronicException. Because if an non-ironic exception was raised it means that the driver didn\u0027t predicted that behavior so it should be fixed, converting everything might obfuscate it. I think the drivers on Nova do it as well, they raise NovaException for the expected behaviors[1] \n\n[1] https://review.openstack.org/#/c/51328/25/nova/virt/ironic/driver.py","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e02fca1dec591ac4a7a49386d2ca43f212b3b2dc","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                else:"},{"line_number":580,"context_line":"                    task.driver.console.stop_console(task, node)"},{"line_number":581,"context_line":"            except Exception as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    op \u003d _(\u0027enabling\u0027) if enabled else _(\u0027disabling\u0027)"},{"line_number":584,"context_line":"                    msg \u003d (_(\u0027Error %(op)s the console on node %(node)s. \u0027"},{"line_number":585,"context_line":"                            \u0027Reason: %(error)s\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUX%2F%2BYs0%3D","line":582,"in_reply_to":"AAAAUX%2F%2BnU4%3D","updated":"2014-02-21 13:48:32.000000000","message":"I took a look at the other methods, they don\u0027t seem to be converting it but I think it\u0027s a good practice so I will convert. It\u0027s also valid to say that these exception being raised in this function are not really being used in the moment since it runs as an async task right now.","commit_id":"ec32a30cbd1bfd90527deb82ea46a210b755b8c9"},{"author":{"_account_id":7411,"name":"Matt Wagner","email":"matt.wagner@redhat.com","username":"matty_dubs"},"change_message_id":"389e7c53b079d1601839c9cf4e6f6ae0bc7b0310","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                    \u0027enabled %(enabled)s\u0027) % {\u0027node\u0027: node_id,"},{"line_number":557,"context_line":"                                              \u0027enabled\u0027: enabled})"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        with task_manager.acquire(context, node_id) as task:"},{"line_number":560,"context_line":"            node \u003d task.node"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"            if not getattr(task.driver, \u0027console\u0027, None):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2BUfU%3D","line":559,"updated":"2014-02-21 22:04:21.000000000","message":"It seems like this lock is persisting for the duration of the console session, but the lock is blocking us from stopping the console over the API. For testing I\u0027ve been manually clearing it out in the database, but this is obviously not a sustainable approach.","commit_id":"7aed0a32fc0b610fddc6f6cb5956894945059dd9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a5f09b5b408b169c0ad00ad23ca50a4006b2c60e","unresolved":false,"context_lines":[{"line_number":556,"context_line":"                    \u0027enabled %(enabled)s\u0027) % {\u0027node\u0027: node_id,"},{"line_number":557,"context_line":"                                              \u0027enabled\u0027: enabled})"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        with task_manager.acquire(context, node_id) as task:"},{"line_number":560,"context_line":"            node \u003d task.node"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":"            if not getattr(task.driver, \u0027console\u0027, None):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAU3%2F%2F2TA%3D","line":559,"in_reply_to":"AAAAUX%2F%2BUfU%3D","updated":"2014-02-24 14:22:09.000000000","message":"Hmm, right the lock should be release after it leaves the \"with\" scope. One possible problem is that the ipmi console is not running shellinabox as a background job (although I can see the --background option being passed as argument).\n\nQuick q, after you start the console the node\u0027s db field console_enabled is True?","commit_id":"7aed0a32fc0b610fddc6f6cb5956894945059dd9"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"726bb60eff429a9b2cf1d37d609f07f74899d3c4","unresolved":false,"context_lines":[{"line_number":602,"context_line":"                           % {\u0027op\u0027: op, \u0027node\u0027: node_id,"},{"line_number":603,"context_line":"                              \u0027error\u0027: six.text_type(e)})"},{"line_number":604,"context_line":"                    node[\u0027last_error\u0027] \u003d msg"},{"line_number":605,"context_line":"                    node.save(context)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"            node[\u0027console_enabled\u0027] \u003d enabled"},{"line_number":608,"context_line":"            node[\u0027last_error\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAU3%2F%2FeSA%3D","line":605,"updated":"2014-02-26 12:38:09.000000000","message":"IMO better use try-except-else-finally syntax and put node.save(context) in finally.","commit_id":"63305dd5ea1ec6a6c72574c9e3e11ab4f1b7bf27"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"dad9bdee354df166f8119523534c569b1ac12ef6","unresolved":false,"context_lines":[{"line_number":602,"context_line":"                           % {\u0027op\u0027: op, \u0027node\u0027: node_id,"},{"line_number":603,"context_line":"                              \u0027error\u0027: six.text_type(e)})"},{"line_number":604,"context_line":"                    node[\u0027last_error\u0027] \u003d msg"},{"line_number":605,"context_line":"                    node.save(context)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"            node[\u0027console_enabled\u0027] \u003d enabled"},{"line_number":608,"context_line":"            node[\u0027last_error\u0027] \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAU3%2F%2FdoQ%3D","line":605,"in_reply_to":"AAAAU3%2F%2FeSA%3D","updated":"2014-02-26 13:47:17.000000000","message":"+1, will change","commit_id":"63305dd5ea1ec6a6c72574c9e3e11ab4f1b7bf27"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b5c1b453e222bb7a076496fe8daa7a90112927fb","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    node.last_error \u003d (_(\"Failed to validate console info. \""},{"line_number":584,"context_line":"                                         \"Error: %s\") % six.text_type(e))"},{"line_number":585,"context_line":"                    node.save(context)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FcF0%3D","line":584,"updated":"2014-02-26 16:27:12.000000000","message":"Lucas, why this conversion needed, an error possible here\n\n Python 2.7.3 (default, Sep 26 2013, 20:03:06) \n \u003e\u003e\u003e a\u003d\u0027???\u0027\n \u003e\u003e\u003e b\u003du\u0027???\u0027\n \u003e\u003e\u003e \u0027%s\u0027 % a\n \u0027\\xd0\\xb0\\xd0\\xb1\\xd0\\xb2\u0027\n \u003e\u003e\u003e \u0027%s\u0027 % b\n u\u0027\\u0430\\u0431\\u0432\u0027\n \u003e\u003e\u003e import six\n \u003e\u003e\u003e six.text_type(a)\n Traceback (most recent call last):\n   File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n UnicodeDecodeError: \u0027ascii\u0027 codec can\u0027t decode byte 0xd0 in position 0: ordinal not  in  range(128)","commit_id":"efef3da6aa79c53da1853bc438ec9ea0c0c2e09c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f3ba8a07401903d8a186a7ab880c860eb64b85aa","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    node.last_error \u003d (_(\"Failed to validate console info. \""},{"line_number":584,"context_line":"                                         \"Error: %s\") % six.text_type(e))"},{"line_number":585,"context_line":"                    node.save(context)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAVX%2F%2F7To%3D","line":584,"in_reply_to":"AAAAU3%2F%2Fb1g%3D","updated":"2014-02-27 10:20:03.000000000","message":"Ah, right... Indeed. I will remove it and then once that patch lands we can create another patch which converts all the exceptions to six.text_type()\n\nThanks yuriy","commit_id":"efef3da6aa79c53da1853bc438ec9ea0c0c2e09c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"2174ef0c3dc85353c12a2bc03f764fc0d6eb4a9e","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    node.last_error \u003d (_(\"Failed to validate console info. \""},{"line_number":584,"context_line":"                                         \"Error: %s\") % six.text_type(e))"},{"line_number":585,"context_line":"                    node.save(context)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fb1g%3D","line":584,"in_reply_to":"AAAAU3%2F%2Fb7I%3D","updated":"2014-02-26 16:52:39.000000000","message":"OK, but Haomeng Wang wrote Feb 20\n\n\"I just commit patch to support this on our IronicException level [1], so no need to change your code here.\"","commit_id":"efef3da6aa79c53da1853bc438ec9ea0c0c2e09c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1d79b2bd5c5e7026141b152b846c3b724874ecea","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            except exception.InvalidParameterValue as e:"},{"line_number":582,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":583,"context_line":"                    node.last_error \u003d (_(\"Failed to validate console info. \""},{"line_number":584,"context_line":"                                         \"Error: %s\") % six.text_type(e))"},{"line_number":585,"context_line":"                    node.save(context)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2Fb7I%3D","line":584,"in_reply_to":"AAAAU3%2F%2FcF0%3D","updated":"2014-02-26 16:43:41.000000000","message":"Hi,\n\nIt was pointed out to me by Haomeng in a previous review (Patch set #8) to use six_type() to format the exceptions messages to support i18n[1][2]\n\nSo I just used it to be honest. You think we should drop it?\n\n[1] https://blueprints.launchpad.net/openstack/?searchtext\u003di18n-messages\n\n[2] https://review.openstack.org/#/c/74626","commit_id":"efef3da6aa79c53da1853bc438ec9ea0c0c2e09c"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b5c1b453e222bb7a076496fe8daa7a90112927fb","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                    msg \u003d (_(\u0027Error %(op)s the console on node %(node)s. \u0027"},{"line_number":600,"context_line":"                            \u0027Reason: %(error)s\u0027) % {\u0027op\u0027: op,"},{"line_number":601,"context_line":"                                                    \u0027node\u0027: node.uuid,"},{"line_number":602,"context_line":"                                                    \u0027error\u0027: six.text_type(e)})"},{"line_number":603,"context_line":"                    node.last_error \u003d msg"},{"line_number":604,"context_line":"            else:"},{"line_number":605,"context_line":"                node.console_enabled \u003d enabled"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAU3%2F%2FcEw%3D","line":602,"updated":"2014-02-26 16:27:12.000000000","message":"ditto","commit_id":"efef3da6aa79c53da1853bc438ec9ea0c0c2e09c"}],"ironic/tests/db/sqlalchemy/test_migrations.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"726bb60eff429a9b2cf1d37d609f07f74899d3c4","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        self.assertIn(\u0027console_enabled\u0027, col_names)"},{"line_number":516,"context_line":"        # in some backends bool type is integer"},{"line_number":517,"context_line":"        self.assertTrue(isinstance(nodes.c.maintenance.type,"},{"line_number":518,"context_line":"                                   sqlalchemy.types.Boolean) or"},{"line_number":519,"context_line":"                        isinstance(nodes.c.maintenance.type,"},{"line_number":520,"context_line":"                                   sqlalchemy.types.Integer))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAU3%2F%2FePk%3D","line":517,"updated":"2014-02-26 12:38:09.000000000","message":"nodes.c.console_enabled.type","commit_id":"63305dd5ea1ec6a6c72574c9e3e11ab4f1b7bf27"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"dad9bdee354df166f8119523534c569b1ac12ef6","unresolved":false,"context_lines":[{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        self.assertIn(\u0027console_enabled\u0027, col_names)"},{"line_number":516,"context_line":"        # in some backends bool type is integer"},{"line_number":517,"context_line":"        self.assertTrue(isinstance(nodes.c.maintenance.type,"},{"line_number":518,"context_line":"                                   sqlalchemy.types.Boolean) or"},{"line_number":519,"context_line":"                        isinstance(nodes.c.maintenance.type,"},{"line_number":520,"context_line":"                                   sqlalchemy.types.Integer))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAU3%2F%2Fdn4%3D","line":517,"in_reply_to":"AAAAU3%2F%2FePk%3D","updated":"2014-02-26 13:47:17.000000000","message":"errr, my bad sorry... that\u0027s the problem with the copy\u0026paste\n\nThanks for pointing it out","commit_id":"63305dd5ea1ec6a6c72574c9e3e11ab4f1b7bf27"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"726bb60eff429a9b2cf1d37d609f07f74899d3c4","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        # in some backends bool type is integer"},{"line_number":517,"context_line":"        self.assertTrue(isinstance(nodes.c.maintenance.type,"},{"line_number":518,"context_line":"                                   sqlalchemy.types.Boolean) or"},{"line_number":519,"context_line":"                        isinstance(nodes.c.maintenance.type,"},{"line_number":520,"context_line":"                                   sqlalchemy.types.Integer))"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAU3%2F%2FePg%3D","line":519,"updated":"2014-02-26 12:38:09.000000000","message":"ditto","commit_id":"63305dd5ea1ec6a6c72574c9e3e11ab4f1b7bf27"}]}
