)]}'
{"ironic/drivers/modules/ilo/common.py":[{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ff5e636119f554bd3e450234bfb379870b456d4","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                                          error\u003dilo_exception)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"def get_server_model(node):"},{"line_number":835,"context_line":"    \"\"\"Get the model of the server"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ddd5aab8","line":834,"updated":"2018-09-29 16:03:42.000000000","message":"This method doesn\u0027t seem used.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"423f80758c6172d2dd445e412347cdff14f2d6b9","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                                          error\u003dilo_exception)"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"def get_server_model(node):"},{"line_number":835,"context_line":"    \"\"\"Get the model of the server"},{"line_number":836,"context_line":""},{"line_number":837,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_37506e09","line":834,"in_reply_to":"3f79a3b5_ddd5aab8","updated":"2018-10-01 04:17:48.000000000","message":"Oh.. this cane be removed. My earlier implementation required it.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"}],"ironic/drivers/modules/ilo/power.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9929e7c49ed3bb4668a004b71f096bab172727d1","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        # need to ensure timeout does not expire during power-off"},{"line_number":176,"context_line":"        # and power-on operation."},{"line_number":177,"context_line":"        is_final_state \u003d target_state in (states.SOFT_POWER_OFF,"},{"line_number":178,"context_line":"                                          states.POWER_ON)"},{"line_number":179,"context_line":"        time_consumed \u003d _wait_for_soft_state_change("},{"line_number":180,"context_line":"            node, target_state, is_final_state, timeout\u003dtimeout)"},{"line_number":181,"context_line":"        if target_state \u003d\u003d states.SOFT_REBOOT:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_14762941","line":178,"updated":"2018-09-23 13:30:07.000000000","message":"what about target states POWER_OFF and REBOOT? They can also have a timeout. At least POWER_OFF seems to belong here.","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"42c8d2fac07c107321b17bb525d72e2aaed6e03d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        # need to ensure timeout does not expire during power-off"},{"line_number":176,"context_line":"        # and power-on operation."},{"line_number":177,"context_line":"        is_final_state \u003d target_state in (states.SOFT_POWER_OFF,"},{"line_number":178,"context_line":"                                          states.POWER_ON)"},{"line_number":179,"context_line":"        time_consumed \u003d _wait_for_soft_state_change("},{"line_number":180,"context_line":"            node, target_state, is_final_state, timeout\u003dtimeout)"},{"line_number":181,"context_line":"        if target_state \u003d\u003d states.SOFT_REBOOT:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_c5023d0d","line":178,"in_reply_to":"3f79a3b5_14762941","updated":"2018-09-26 10:40:27.000000000","message":"It was my misunderstanding, I assumed timeout is only for the soft power operation. Fixed.","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9929e7c49ed3bb4668a004b71f096bab172727d1","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        if target_state \u003d\u003d states.SOFT_REBOOT:"},{"line_number":182,"context_line":"            _attach_boot_iso_if_needed(task)"},{"line_number":183,"context_line":"            try:"},{"line_number":184,"context_line":"                ilo_object.press_pwr_btn()"},{"line_number":185,"context_line":"            except ilo_error.IloError as ilo_exception:"},{"line_number":186,"context_line":"                operation \u003d _(\u0027Set power state failed for node %s\u0027) % node.uuid"},{"line_number":187,"context_line":"                raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b472d549","line":184,"updated":"2018-09-23 13:30:07.000000000","message":"out of curiosity: why not set_host_power(\u0027ON\u0027)? this is what you do for POWER_ON.","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"42c8d2fac07c107321b17bb525d72e2aaed6e03d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        if target_state \u003d\u003d states.SOFT_REBOOT:"},{"line_number":182,"context_line":"            _attach_boot_iso_if_needed(task)"},{"line_number":183,"context_line":"            try:"},{"line_number":184,"context_line":"                ilo_object.press_pwr_btn()"},{"line_number":185,"context_line":"            except ilo_error.IloError as ilo_exception:"},{"line_number":186,"context_line":"                operation \u003d _(\u0027Set power state failed for node %s\u0027) % node.uuid"},{"line_number":187,"context_line":"                raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e33619b4","line":184,"in_reply_to":"3f79a3b5_b472d549","updated":"2018-09-26 10:40:27.000000000","message":"It can be done either way. But better to do with set_host_power(\u0027ON\u0027) as it has additional fixes in proliantutils to handle some chassis firmware bugs.","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9929e7c49ed3bb4668a004b71f096bab172727d1","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            try:"},{"line_number":184,"context_line":"                ilo_object.press_pwr_btn()"},{"line_number":185,"context_line":"            except ilo_error.IloError as ilo_exception:"},{"line_number":186,"context_line":"                operation \u003d _(\u0027Set power state failed for node %s\u0027) % node.uuid"},{"line_number":187,"context_line":"                raise exception.IloOperationError(operation\u003doperation,"},{"line_number":188,"context_line":"                                                  error\u003dilo_exception)"},{"line_number":189,"context_line":"            # Re-calculate timeout available for power-on operation"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d46f515e","line":186,"updated":"2018-09-23 13:30:07.000000000","message":"maybe more details, like \"Powering on failed after soft power off\"?","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"42c8d2fac07c107321b17bb525d72e2aaed6e03d","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            try:"},{"line_number":184,"context_line":"                ilo_object.press_pwr_btn()"},{"line_number":185,"context_line":"            except ilo_error.IloError as ilo_exception:"},{"line_number":186,"context_line":"                operation \u003d _(\u0027Set power state failed for node %s\u0027) % node.uuid"},{"line_number":187,"context_line":"                raise exception.IloOperationError(operation\u003doperation,"},{"line_number":188,"context_line":"                                                  error\u003dilo_exception)"},{"line_number":189,"context_line":"            # Re-calculate timeout available for power-on operation"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a92cbbb2","line":186,"in_reply_to":"3f79a3b5_d46f515e","updated":"2018-09-26 10:40:27.000000000","message":"Done","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9929e7c49ed3bb4668a004b71f096bab172727d1","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        node \u003d task.node"},{"line_number":341,"context_line":"        ignore_timeout \u003d True"},{"line_number":342,"context_line":"        if timeout is not None:"},{"line_number":343,"context_line":"            # Only Gen9 and Gen10 servers supports soft power operations"},{"line_number":344,"context_line":"            if _can_get_server_post_state(node):"},{"line_number":345,"context_line":"                ignore_timeout \u003d False"},{"line_number":346,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_748afd13","line":343,"updated":"2018-09-23 13:30:07.000000000","message":"This is hard reboot, why do you mention soft operations? Maybe you wanted to say \"Hard power operations do not support timeout\" (which is sad btw)?","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"42c8d2fac07c107321b17bb525d72e2aaed6e03d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        node \u003d task.node"},{"line_number":341,"context_line":"        ignore_timeout \u003d True"},{"line_number":342,"context_line":"        if timeout is not None:"},{"line_number":343,"context_line":"            # Only Gen9 and Gen10 servers supports soft power operations"},{"line_number":344,"context_line":"            if _can_get_server_post_state(node):"},{"line_number":345,"context_line":"                ignore_timeout \u003d False"},{"line_number":346,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_8cf30d0a","line":343,"in_reply_to":"3f79a3b5_748afd13","updated":"2018-09-26 10:40:27.000000000","message":"Oops, its my misunderstanding, I assumed timeout is only for the soft power operation.","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9929e7c49ed3bb4668a004b71f096bab172727d1","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                ignore_timeout \u003d False"},{"line_number":346,"context_line":"            else:"},{"line_number":347,"context_line":"                LOG.warning(\"The server model %(model)s of node %(node)s \""},{"line_number":348,"context_line":"                            \"doesn\u0027t support the soft power operation. \""},{"line_number":349,"context_line":"                            \"Ignoring timeout\u003d%(timeout)s\","},{"line_number":350,"context_line":"                            {\u0027model\u0027: ilo_common.get_server_model(node),"},{"line_number":351,"context_line":"                             \u0027node\u0027: node.uuid, \u0027timeout\u0027: timeout})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_948f9921","line":348,"updated":"2018-09-23 13:30:07.000000000","message":"s/soft power operationr/timeout with reboot/","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"42c8d2fac07c107321b17bb525d72e2aaed6e03d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                ignore_timeout \u003d False"},{"line_number":346,"context_line":"            else:"},{"line_number":347,"context_line":"                LOG.warning(\"The server model %(model)s of node %(node)s \""},{"line_number":348,"context_line":"                            \"doesn\u0027t support the soft power operation. \""},{"line_number":349,"context_line":"                            \"Ignoring timeout\u003d%(timeout)s\","},{"line_number":350,"context_line":"                            {\u0027model\u0027: ilo_common.get_server_model(node),"},{"line_number":351,"context_line":"                             \u0027node\u0027: node.uuid, \u0027timeout\u0027: timeout})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_63420910","line":348,"in_reply_to":"3f79a3b5_948f9921","updated":"2018-09-26 10:40:27.000000000","message":"Done","commit_id":"00c928ff0e3b2cce75b65382f4a0f960357893ec"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ff5e636119f554bd3e450234bfb379870b456d4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        # during \u0027power on\u0027 operation. It could lead to deploy failures"},{"line_number":131,"context_line":"        # with default ironic configuration."},{"line_number":132,"context_line":"        # Use conductor.soft_power_off_timeout, instead."},{"line_number":133,"context_line":"        max_retry \u003d int(CONF.conductor.soft_power_off_timeout / interval)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    state_to_check \u003d target_state"},{"line_number":136,"context_line":"    use_post_state \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_401211b6","line":133,"updated":"2018-09-29 16:03:42.000000000","message":"It sounds a little confusing to use soft_power_off_timeout for hard power off. Though I don\u0027t have a good idea, it might be better to explain it in the driver documentation.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"423f80758c6172d2dd445e412347cdff14f2d6b9","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        # during \u0027power on\u0027 operation. It could lead to deploy failures"},{"line_number":131,"context_line":"        # with default ironic configuration."},{"line_number":132,"context_line":"        # Use conductor.soft_power_off_timeout, instead."},{"line_number":133,"context_line":"        max_retry \u003d int(CONF.conductor.soft_power_off_timeout / interval)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    state_to_check \u003d target_state"},{"line_number":136,"context_line":"    use_post_state \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5755eaf7","line":133,"in_reply_to":"3f79a3b5_401211b6","updated":"2018-10-01 04:17:48.000000000","message":"Yes, name is bit confusing, but wanted to avoid a new ilo driver specific config for it. Will update it in driver documentation. Will be posting separate documentation patch.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"b7d94d8f211ef46f88742f0a289cd152186fdd29","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        # during \u0027power on\u0027 operation. It could lead to deploy failures"},{"line_number":131,"context_line":"        # with default ironic configuration."},{"line_number":132,"context_line":"        # Use conductor.soft_power_off_timeout, instead."},{"line_number":133,"context_line":"        max_retry \u003d int(CONF.conductor.soft_power_off_timeout / interval)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    state_to_check \u003d target_state"},{"line_number":136,"context_line":"    use_post_state \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_103c432e","line":133,"in_reply_to":"3f79a3b5_5755eaf7","updated":"2018-10-02 06:36:52.000000000","message":"I\u0027m fine with follow-up documentation.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"0ff5e636119f554bd3e450234bfb379870b456d4","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # NOTE(rameshg87): For reboot operations, initially the state"},{"line_number":152,"context_line":"        # will be same as the final state. So defer the check for one retry."},{"line_number":153,"context_line":"        if retries[0] !\u003d 0 and state[0] \u003d\u003d state_to_check:"},{"line_number":154,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if retries[0] \u003e max_retry:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4004517e","line":153,"range":{"start_line":153,"start_character":10,"end_line":153,"end_character":26},"updated":"2018-09-29 16:03:42.000000000","message":"Can we check this only when reboot operations? Though there is no problem in practical, this makes unit tests slow.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"423f80758c6172d2dd445e412347cdff14f2d6b9","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # NOTE(rameshg87): For reboot operations, initially the state"},{"line_number":152,"context_line":"        # will be same as the final state. So defer the check for one retry."},{"line_number":153,"context_line":"        if retries[0] !\u003d 0 and state[0] \u003d\u003d state_to_check:"},{"line_number":154,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if retries[0] \u003e max_retry:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_779826cb","line":153,"range":{"start_line":153,"start_character":10,"end_line":153,"end_character":26},"in_reply_to":"3f79a3b5_4004517e","updated":"2018-10-01 04:17:48.000000000","message":"I understand, it will complicate the case further. For readability, I have retained it as is. Its Ideally it should be:-\nif force_legacy_behavior and target_state \u003d\u003d states.REBOOT:\n    if retries[0] !\u003d 0 and state[0] \u003d\u003d state_to_check:\n       ...\nWDYT?","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"b7d94d8f211ef46f88742f0a289cd152186fdd29","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        # NOTE(rameshg87): For reboot operations, initially the state"},{"line_number":152,"context_line":"        # will be same as the final state. So defer the check for one retry."},{"line_number":153,"context_line":"        if retries[0] !\u003d 0 and state[0] \u003d\u003d state_to_check:"},{"line_number":154,"context_line":"            raise loopingcall.LoopingCallDone()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        if retries[0] \u003e max_retry:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f017479c","line":153,"range":{"start_line":153,"start_character":10,"end_line":153,"end_character":26},"in_reply_to":"3f79a3b5_779826cb","updated":"2018-10-02 06:36:52.000000000","message":"I agree to leave it as-is. The fix will be more complicated because target_state is updated to POWER_ON at L214.","commit_id":"67ca9fc5de553a1e47df2ec5da9bd75b5c8273f0"}]}
