)]}'
{"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"4305323112b63deeb38e4416c5fcd14f7abef8cc","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    except Exception as e:"},{"line_number":213,"context_line":"        LOG.warning(_(\"IPMI power status failed for node %(node_id)s with \""},{"line_number":214,"context_line":"                      \"error: %(error)s.\")"},{"line_number":215,"context_line":"                    % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: str(e)})"},{"line_number":216,"context_line":"        raise exception.IPMIFailure(cmd\u003dstr(e))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if out_err[0] \u003d\u003d \"Chassis Power is on\\n\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B2ZY%3D","line":215,"updated":"2014-01-21 13:10:33.000000000","message":"str() not needed here","commit_id":"a823c377a1a1d1e43c1c64335512fc501a6af032"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1f6fe2f7db594437126f80fed089f7ff07caa128","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    except Exception as e:"},{"line_number":213,"context_line":"        LOG.warning(_(\"IPMI power status failed for node %(node_id)s with \""},{"line_number":214,"context_line":"                      \"error: %(error)s.\")"},{"line_number":215,"context_line":"                    % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: str(e)})"},{"line_number":216,"context_line":"        raise exception.IPMIFailure(cmd\u003dstr(e))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if out_err[0] \u003d\u003d \"Chassis Power is on\\n\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B17A%3D","line":215,"in_reply_to":"AAAAUH%2F%2B2ZY%3D","updated":"2014-01-21 14:35:16.000000000","message":"Oops, thx for catching!","commit_id":"a823c377a1a1d1e43c1c64335512fc501a6af032"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"4305323112b63deeb38e4416c5fcd14f7abef8cc","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        LOG.warning(_(\"IPMI power status failed for node %(node_id)s with \""},{"line_number":214,"context_line":"                      \"error: %(error)s.\")"},{"line_number":215,"context_line":"                    % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: str(e)})"},{"line_number":216,"context_line":"        raise exception.IPMIFailure(cmd\u003dstr(e))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if out_err[0] \u003d\u003d \"Chassis Power is on\\n\":"},{"line_number":219,"context_line":"        return states.POWER_ON"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B2ZM%3D","line":216,"updated":"2014-01-21 13:10:33.000000000","message":"ditto","commit_id":"a823c377a1a1d1e43c1c64335512fc501a6af032"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"580168b597365a991e21a554af798234f15e4d3f","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    :param node: the Node of interest."},{"line_number":68,"context_line":"    :returns: dictionary of parameters."},{"line_number":69,"context_line":"    :raises InvalidParameterValue if any required parameters are missing."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bs4Y%3D","line":69,"updated":"2014-01-23 01:40:57.000000000","message":"missing \":\" here, should be as below:\n\n    :raises: InvalidParameterValue if any required parameters are missing.","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3befd9a659d642e757f1bb76f819e8149e4ecd9c","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    :param node: the Node of interest."},{"line_number":68,"context_line":"    :returns: dictionary of parameters."},{"line_number":69,"context_line":"    :raises InvalidParameterValue if any required parameters are missing."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    \"\"\""},{"line_number":72,"context_line":"    info \u003d node.get(\u0027driver_info\u0027, {})"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bspw%3D","line":69,"in_reply_to":"AAAAUH%2F%2Bs4Y%3D","updated":"2014-01-23 02:47:40.000000000","message":"Oops. Good eyes!","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5d1a4ef57eba751bbc1eb82c7f2c5da8733c8b14","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    This uses the lanplus interface to communicate with the BMC device driver."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    :param command: the ipmitool command to be executed."},{"line_number":97,"context_line":"    :returns: (stdout, stderr) from executing the command."},{"line_number":98,"context_line":"    :raises: some Exception from making the password file or from executing"},{"line_number":99,"context_line":"        the command."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BtBA%3D","line":96,"updated":"2014-01-23 00:59:26.000000000","message":"missing driver_info from doc block","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3befd9a659d642e757f1bb76f819e8149e4ecd9c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    This uses the lanplus interface to communicate with the BMC device driver."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    :param command: the ipmitool command to be executed."},{"line_number":97,"context_line":"    :returns: (stdout, stderr) from executing the command."},{"line_number":98,"context_line":"    :raises: some Exception from making the password file or from executing"},{"line_number":99,"context_line":"        the command."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bspc%3D","line":96,"in_reply_to":"AAAAUH%2F%2BtBA%3D","updated":"2014-01-23 02:47:40.000000000","message":"Added.","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"580168b597365a991e21a554af798234f15e4d3f","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        LOG.warning(_(\"IPMI power status failed for node %(node_id)s with \""},{"line_number":214,"context_line":"                      \"error: %(error)s.\")"},{"line_number":215,"context_line":"                    % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e})"},{"line_number":216,"context_line":"        raise exception.IPMIFailure(cmd\u003de)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if out_err[0] \u003d\u003d \"Chassis Power is on\\n\":"},{"line_number":219,"context_line":"        return states.POWER_ON"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bs2s%3D","line":216,"updated":"2014-01-23 01:40:57.000000000","message":"Here, we are confusing, the parameter name is \u0027cmd\u0027, but the value is \u0027exception\u0027, so either we change \u0027cmd\u0027 to \u0027exception\u0027, or we change \u0027e\u0027 to \u0027cmd\u0027.","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3befd9a659d642e757f1bb76f819e8149e4ecd9c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        LOG.warning(_(\"IPMI power status failed for node %(node_id)s with \""},{"line_number":214,"context_line":"                      \"error: %(error)s.\")"},{"line_number":215,"context_line":"                    % {\u0027node_id\u0027: driver_info[\u0027uuid\u0027], \u0027error\u0027: e})"},{"line_number":216,"context_line":"        raise exception.IPMIFailure(cmd\u003de)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if out_err[0] \u003d\u003d \"Chassis Power is on\\n\":"},{"line_number":219,"context_line":"        return states.POWER_ON"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BsmU%3D","line":216,"in_reply_to":"AAAAUH%2F%2Bs2s%3D","updated":"2014-01-23 02:47:40.000000000","message":"That isn\u0027t supposed to be e. Stay tuned ;)","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"5d1a4ef57eba751bbc1eb82c7f2c5da8733c8b14","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        :param task: a TaskManager instance."},{"line_number":282,"context_line":"        :param node: The Node."},{"line_number":283,"context_line":"        :raises: InvalidParameterValue if required ipmi parameters are missing."},{"line_number":284,"context_line":"        :raises: PowerStateFailure if it could not power on the node."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        \"\"\""},{"line_number":287,"context_line":"        driver_info \u003d _parse_driver_info(node)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BtAM%3D","line":284,"updated":"2014-01-23 00:59:26.000000000","message":"I would clarify the wording slightly and say:\n\n  :raises: PowerStateFailure if the final state of the node is not POWER_ON","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3befd9a659d642e757f1bb76f819e8149e4ecd9c","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        :param task: a TaskManager instance."},{"line_number":282,"context_line":"        :param node: The Node."},{"line_number":283,"context_line":"        :raises: InvalidParameterValue if required ipmi parameters are missing."},{"line_number":284,"context_line":"        :raises: PowerStateFailure if it could not power on the node."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        \"\"\""},{"line_number":287,"context_line":"        driver_info \u003d _parse_driver_info(node)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BslY%3D","line":284,"in_reply_to":"AAAAUH%2F%2BtAM%3D","updated":"2014-01-23 02:47:40.000000000","message":"Better. Thx.","commit_id":"51c35b18923bdd696a7ee3ce6dd96167d416f401"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4c052cdf44b61508f7774b5e5c2e77cda7bbc135","unresolved":false,"context_lines":[{"line_number":47,"context_line":"@contextlib.contextmanager"},{"line_number":48,"context_line":"def _make_password_file(password):"},{"line_number":49,"context_line":"    \"\"\"Makes a temporary file that contains the password.\"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        fd, path \u003d tempfile.mkstemp()"},{"line_number":53,"context_line":"        os.fchmod(fd, stat.S_IRUSR | stat.S_IWUSR)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bqe4%3D","line":50,"updated":"2014-01-23 12:23:41.000000000","message":"Hi Ruby,\n\nI think we should split this change and put the docstrings in another patch, I think it\u0027s fine to fix/improve dosctrings along with other changes if it\u0027s a minimal change, but your change here is more than a side note in a random patch (and that\u0027s great thanks for that), it def fits in its own patch :)","commit_id":"f89961d35a36fcb33c17f9cb0aec2126efebe5ad"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"63b58d0f0aef67124d3bd5804016d47303856890","unresolved":false,"context_lines":[{"line_number":47,"context_line":"@contextlib.contextmanager"},{"line_number":48,"context_line":"def _make_password_file(password):"},{"line_number":49,"context_line":"    \"\"\"Makes a temporary file that contains the password.\"\"\""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        fd, path \u003d tempfile.mkstemp()"},{"line_number":53,"context_line":"        os.fchmod(fd, stat.S_IRUSR | stat.S_IWUSR)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BplI%3D","line":50,"in_reply_to":"AAAAUH%2F%2Bqe4%3D","updated":"2014-01-23 15:05:42.000000000","message":"hmm. okay.","commit_id":"f89961d35a36fcb33c17f9cb0aec2126efebe5ad"}],"ironic/tests/drivers/test_ipmitool.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4c052cdf44b61508f7774b5e5c2e77cda7bbc135","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_set_power_invalid_state(self):"},{"line_number":348,"context_line":"        with task_manager.acquire(self.context, [self.node[\u0027uuid\u0027]]) as task:"},{"line_number":349,"context_line":"            self.assertRaises(exception.InvalidParameterValue,"},{"line_number":350,"context_line":"                    self.driver.power.set_power_state,"},{"line_number":351,"context_line":"                    task,"},{"line_number":352,"context_line":"                    self.node,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2BqiI%3D","line":349,"updated":"2014-01-23 12:23:41.000000000","message":"This change yes, could be just a small note in this patch commit message :)\n\nThanks","commit_id":"f89961d35a36fcb33c17f9cb0aec2126efebe5ad"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"63b58d0f0aef67124d3bd5804016d47303856890","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def test_set_power_invalid_state(self):"},{"line_number":348,"context_line":"        with task_manager.acquire(self.context, [self.node[\u0027uuid\u0027]]) as task:"},{"line_number":349,"context_line":"            self.assertRaises(exception.InvalidParameterValue,"},{"line_number":350,"context_line":"                    self.driver.power.set_power_state,"},{"line_number":351,"context_line":"                    task,"},{"line_number":352,"context_line":"                    self.node,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Bplo%3D","line":349,"in_reply_to":"AAAAUH%2F%2BqiI%3D","updated":"2014-01-23 15:05:42.000000000","message":"Done.","commit_id":"f89961d35a36fcb33c17f9cb0aec2126efebe5ad"}]}
