)]}'
{"ironic/drivers/modules/ipminative.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"1b08736015e9a39f774ee00a5e4a83a45c5201cb","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_7b708640","line":148,"updated":"2015-08-26 12:38:59.000000000","message":"so the error will contain _LE translated string, IIRC translations should be done with _ in exceptions.","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5e675679a52f5eda5e31646528d6f0877f80e902","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_71450541","line":148,"in_reply_to":"fa1b9901_7b708640","updated":"2015-08-26 13:10:07.000000000","message":"Done","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"1b08736015e9a39f774ee00a5e4a83a45c5201cb","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":178,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":179,"context_line":"        LOG.exception(error)"},{"line_number":180,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":183,"context_line":"    if state \u003d\u003d \u0027off\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_1bbb8ae6","line":180,"updated":"2015-08-26 12:38:59.000000000","message":"ditto","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5e675679a52f5eda5e31646528d6f0877f80e902","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":178,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":179,"context_line":"        LOG.exception(error)"},{"line_number":180,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":183,"context_line":"    if state \u003d\u003d \u0027off\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_1175a996","line":180,"in_reply_to":"fa1b9901_1bbb8ae6","updated":"2015-08-26 13:10:07.000000000","message":"Done","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"1b08736015e9a39f774ee00a5e4a83a45c5201cb","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":212,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":213,"context_line":"        LOG.exception(error)"},{"line_number":214,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":217,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_db951232","line":214,"updated":"2015-08-26 12:38:59.000000000","message":"ditto","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5e675679a52f5eda5e31646528d6f0877f80e902","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":212,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":213,"context_line":"        LOG.exception(error)"},{"line_number":214,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":217,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_715c2519","line":214,"in_reply_to":"fa1b9901_db951232","updated":"2015-08-26 13:10:07.000000000","message":"Done","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"1b08736015e9a39f774ee00a5e4a83a45c5201cb","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                   \"with the following error: %(error)s\") %"},{"line_number":242,"context_line":"               {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e})"},{"line_number":243,"context_line":"        LOG.exception(msg)"},{"line_number":244,"context_line":"        raise exception.IPMIFailure(msg)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":247,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_fb9a5661","line":244,"updated":"2015-08-26 12:38:59.000000000","message":"ditto","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5e675679a52f5eda5e31646528d6f0877f80e902","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                   \"with the following error: %(error)s\") %"},{"line_number":242,"context_line":"               {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e})"},{"line_number":243,"context_line":"        LOG.exception(msg)"},{"line_number":244,"context_line":"        raise exception.IPMIFailure(msg)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":247,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_f1a6f50d","line":244,"in_reply_to":"fa1b9901_fb9a5661","updated":"2015-08-26 13:10:07.000000000","message":"Done","commit_id":"2978315b37e8a4f6af36d1deccba11b8d726a404"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"4941aca6d7eae36f0c2d557430f556eec7308513","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        ret \u003d ipmicmd.set_power(\u0027on\u0027, wait)"},{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_7bc58959","line":147,"updated":"2015-08-26 23:17:15.000000000","message":"Are there any unit tests for this? Could they be added?","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        ret \u003d ipmicmd.set_power(\u0027on\u0027, wait)"},{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_ea744ffe","line":147,"in_reply_to":"da20952f_7bc58959","updated":"2015-08-27 08:52:23.000000000","message":"John, we do not test logging changes in Ironic (some time ago was an IRC discussion with Ruby).","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d85a046226fc8cb4aa56fc4cf1df39c76e2ba1eb","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e22a5ce7","line":148,"updated":"2015-08-26 16:38:49.000000000","message":"since we\u0027re raising an exception, I wonder if is it better to LOG.error instead of LOG.exception. I\u0027m a bit fuzzy on that.","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    except pyghmi_exception.IpmiException as e:"},{"line_number":146,"context_line":"        error \u003d msg % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e}"},{"line_number":147,"context_line":"        LOG.exception(error)"},{"line_number":148,"context_line":"        raise exception.IPMIFailure(error)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    state \u003d ret.get(\u0027powerstate\u0027)"},{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_4f0c6d94","line":148,"in_reply_to":"da20952f_e22a5ce7","updated":"2015-08-27 08:52:23.000000000","message":"Done","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d85a046226fc8cb4aa56fc4cf1df39c76e2ba1eb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"},{"line_number":152,"context_line":"        return states.POWER_ON"},{"line_number":153,"context_line":"    else:"},{"line_number":154,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":155,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":156,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.POWER_ON)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_9cd0a9cb","line":154,"updated":"2015-08-26 16:38:49.000000000","message":"I don\u0027t know (too lazy to look into it) what value(s) ret has. This only has the state. Is there other info in ret that might be useful?","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    if state \u003d\u003d \u0027on\u0027:"},{"line_number":152,"context_line":"        return states.POWER_ON"},{"line_number":153,"context_line":"    else:"},{"line_number":154,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":155,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":156,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.POWER_ON)"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_8f4da574","line":154,"in_reply_to":"da20952f_9cd0a9cb","updated":"2015-08-27 08:52:23.000000000","message":"Yes, \u0027error\u0027 key for example.","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d85a046226fc8cb4aa56fc4cf1df39c76e2ba1eb","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    if state \u003d\u003d \u0027off\u0027:"},{"line_number":184,"context_line":"        return states.POWER_OFF"},{"line_number":185,"context_line":"    else:"},{"line_number":186,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":187,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":188,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.POWER_OFF)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_fc99a520","line":186,"updated":"2015-08-26 16:38:49.000000000","message":"ditto","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    if state \u003d\u003d \u0027off\u0027:"},{"line_number":184,"context_line":"        return states.POWER_OFF"},{"line_number":185,"context_line":"    else:"},{"line_number":186,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":187,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":188,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.POWER_OFF)"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_6f5cd125","line":186,"in_reply_to":"da20952f_fc99a520","updated":"2015-08-27 08:52:23.000000000","message":"Done","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d85a046226fc8cb4aa56fc4cf1df39c76e2ba1eb","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    if state \u003d\u003d \u0027on\u0027:"},{"line_number":218,"context_line":"        return states.POWER_ON"},{"line_number":219,"context_line":"    else:"},{"line_number":220,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":221,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":222,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.REBOOT)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_1caa591a","line":220,"updated":"2015-08-26 16:38:49.000000000","message":"ditto","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    if state \u003d\u003d \u0027on\u0027:"},{"line_number":218,"context_line":"        return states.POWER_ON"},{"line_number":219,"context_line":"    else:"},{"line_number":220,"context_line":"        error \u003d _(\"wrong power state \u0027%s\u0027 returned\") % state"},{"line_number":221,"context_line":"        LOG.exception(msg, {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: error})"},{"line_number":222,"context_line":"        raise exception.PowerStateFailure(pstate\u003dstates.REBOOT)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_0f42f53e","line":220,"in_reply_to":"da20952f_1caa591a","updated":"2015-08-27 08:52:23.000000000","message":"Done","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d85a046226fc8cb4aa56fc4cf1df39c76e2ba1eb","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # what to do."},{"line_number":255,"context_line":"        LOG.warning(_LW(\"IPMI get power state for node %(node_id)s returns the\""},{"line_number":256,"context_line":"                        \" following state: %(state)s\"),"},{"line_number":257,"context_line":"                    {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027state\u0027: state})"},{"line_number":258,"context_line":"        return states.ERROR"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_1c2fb9a2","line":257,"updated":"2015-08-26 16:38:49.000000000","message":"ditto","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d7559935e06cfa81bbf1a589b292a611b8940b60","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # what to do."},{"line_number":255,"context_line":"        LOG.warning(_LW(\"IPMI get power state for node %(node_id)s returns the\""},{"line_number":256,"context_line":"                        \" following state: %(state)s\"),"},{"line_number":257,"context_line":"                    {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027state\u0027: state})"},{"line_number":258,"context_line":"        return states.ERROR"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_2f3fb9b5","line":257,"in_reply_to":"da20952f_1c2fb9a2","updated":"2015-08-27 08:52:23.000000000","message":"Done","commit_id":"bc6a2574092ac8d0e17709785d42c65519e68eb7"}]}
