)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"e0a1737149c93358ccc4a3ff06fe9ce280c1413c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Aija Jauntēva \u003caija.jaunteva@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-09-09 11:18:05 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman forced hard power off"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For systems where soft power off at the end of deployment"},{"line_number":10,"context_line":"to boot to instance fails and forced hard power off is used,"},{"line_number":11,"context_line":"it was broken when using idrac-wsman power interface leaving"},{"line_number":12,"context_line":"successfully deployed node in off state without any errors."},{"line_number":13,"context_line":"This broke other workflows expecting node to be on booted into"},{"line_number":14,"context_line":"OS at the end of deployment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is fixed by waiting for target power state. This"},{"line_number":17,"context_line":"fix affects all workflows where idrac-wsman power"},{"line_number":18,"context_line":"interface is used to set power state, not only deployment."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2009204"},{"line_number":21,"context_line":"Task: 43261"},{"line_number":22,"context_line":"Change-Id: I3112a22149c07e5508f26c79f33d09aeb905c308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"72967f40_42b7e9d0","line":19,"range":{"start_line":7,"start_character":0,"end_line":19,"end_character":0},"updated":"2021-09-10 00:09:49.000000000","message":"Please consider the following:\n\nFix idrac-wsman set_power_state to wait on HW\n\nThe idrac-wsman power interface implementation\u0027s set_power_state()\nmethod has returned to the caller immediately after issuing the out-of-\nband (OOB) command to the Dell EMC integrated Dell Remote Access\nController (iDRAC), without confirming the system has reached the\nrequested state. That is inconsistent with the ipmi and redfish\nimplementations, which synchronously wait until they have read back the\ndesired state before returning. This change fixes idrac-wsman\nset_power_off() to wait like them.\n\nThat bug can cause instance workload deployments to fail on Dell EMC\nPowerEdge server models on which IPA ramdisk soft power off fails. When\nthat occurs, ironic employs OOB power control as a fallback strategy.\nDuring an otherwise successful deployment and activation, the subsequent\nprocessing to power on and boot the baremetal node into the instance\noperating system (OS) does not occur. Ironic treats the system in the\nmidst of powering off as already on, so it does not OOB power it on. A\nshow of the node does not report an error occurred; it is active, as\nexpected, but powered off. That breaks subsequent instance workflows\nwhich expect the system to be powered on into the OS.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Aija Jauntēva \u003caija.jaunteva@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-09-09 11:18:05 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman forced hard power off"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For systems where soft power off at the end of deployment"},{"line_number":10,"context_line":"to boot to instance fails and forced hard power off is used,"},{"line_number":11,"context_line":"it was broken when using idrac-wsman power interface leaving"},{"line_number":12,"context_line":"successfully deployed node in off state without any errors."},{"line_number":13,"context_line":"This broke other workflows expecting node to be on booted into"},{"line_number":14,"context_line":"OS at the end of deployment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is fixed by waiting for target power state. This"},{"line_number":17,"context_line":"fix affects all workflows where idrac-wsman power"},{"line_number":18,"context_line":"interface is used to set power state, not only deployment."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2009204"},{"line_number":21,"context_line":"Task: 43261"},{"line_number":22,"context_line":"Change-Id: I3112a22149c07e5508f26c79f33d09aeb905c308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5e3eaddf_9d606d2f","line":19,"range":{"start_line":7,"start_character":0,"end_line":19,"end_character":0},"in_reply_to":"4a50d0a9_703704e3","updated":"2021-09-13 23:36:53.000000000","message":"You are most welcome. Here is a shorter suggestion. Entirely your call :)\n\nThe idrac-wsman power interface\u0027s set_power_state() has returned to the\ncaller immediately after issuing the out-of-band (OOB) command to the\nDell EMC iDRAC, without confirming the system has reached the requested\nstate. This fixes that by synchronously waiting until the target state\nhas been read before returning.\n\nThat bug can cause instance workload deployments to fail on Dell EMC\nPowerEdge server models on which IPA ramdisk soft power off fails and\nironic employs its OOB fallback strategy. After an otherwise successful\ndeployment, the node is active, but is powered off. No error is reported\nin last_error. If the subsequent instance workflow expects the system to\nbe powered on into the operating system, it fails.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Aija Jauntēva \u003caija.jaunteva@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-09-09 11:18:05 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman forced hard power off"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For systems where soft power off at the end of deployment"},{"line_number":10,"context_line":"to boot to instance fails and forced hard power off is used,"},{"line_number":11,"context_line":"it was broken when using idrac-wsman power interface leaving"},{"line_number":12,"context_line":"successfully deployed node in off state without any errors."},{"line_number":13,"context_line":"This broke other workflows expecting node to be on booted into"},{"line_number":14,"context_line":"OS at the end of deployment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is fixed by waiting for target power state. This"},{"line_number":17,"context_line":"fix affects all workflows where idrac-wsman power"},{"line_number":18,"context_line":"interface is used to set power state, not only deployment."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2009204"},{"line_number":21,"context_line":"Task: 43261"},{"line_number":22,"context_line":"Change-Id: I3112a22149c07e5508f26c79f33d09aeb905c308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"32549485_3a3a1b0c","line":19,"range":{"start_line":7,"start_character":0,"end_line":19,"end_character":0},"in_reply_to":"5e3eaddf_9d606d2f","updated":"2021-09-14 08:08:12.000000000","message":"thanks, updated and found a way to make it even shorter. Here in commit messages I assume some familiarity with and knowledge about ironic and baremetal realm otherwise repeating the same thing over and over again in git log becomes repetitive. There is story link for those who need more context.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Aija Jauntēva \u003caija.jaunteva@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-09-09 11:18:05 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman forced hard power off"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"For systems where soft power off at the end of deployment"},{"line_number":10,"context_line":"to boot to instance fails and forced hard power off is used,"},{"line_number":11,"context_line":"it was broken when using idrac-wsman power interface leaving"},{"line_number":12,"context_line":"successfully deployed node in off state without any errors."},{"line_number":13,"context_line":"This broke other workflows expecting node to be on booted into"},{"line_number":14,"context_line":"OS at the end of deployment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This is fixed by waiting for target power state. This"},{"line_number":17,"context_line":"fix affects all workflows where idrac-wsman power"},{"line_number":18,"context_line":"interface is used to set power state, not only deployment."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2009204"},{"line_number":21,"context_line":"Task: 43261"},{"line_number":22,"context_line":"Change-Id: I3112a22149c07e5508f26c79f33d09aeb905c308"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"4a50d0a9_703704e3","line":19,"range":{"start_line":7,"start_character":0,"end_line":19,"end_character":0},"in_reply_to":"72967f40_42b7e9d0","updated":"2021-09-10 08:24:13.000000000","message":"thanks for suggestion. I would be looking at making it shorter. E.g., information such as \"That is inconsistent with the ipmi and redfish implementations, which synchronously wait until they have read back the desired state before returning.\" is nice to know and could be moved to linked story.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"}],"ironic/drivers/modules/drac/power.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"7e0aebe0610b8cdd9b2d6dcd5d142b8d506ad97d","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":136,"context_line":"            if calc_power_state !\u003d states.REBOOT:"},{"line_number":137,"context_line":"                # Skipping for reboot as can\u0027t match reboot with on/off."},{"line_number":138,"context_line":"                # Reboot so far has been part of workflow that is not followed"},{"line_number":139,"context_line":"                # by another power state change that could break the flow."}],"source_content_type":"text/x-python","patch_set":1,"id":"9456fe97_777923d8","line":136,"range":{"start_line":136,"start_character":12,"end_line":136,"end_character":49},"updated":"2021-09-09 15:20:06.000000000","message":"it not ok with this, then alternative is to replace REBOOT commadn with OFF+ON (like in redfish power interface)","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":136,"context_line":"            if calc_power_state !\u003d states.REBOOT:"},{"line_number":137,"context_line":"                # Skipping for reboot as can\u0027t match reboot with on/off."},{"line_number":138,"context_line":"                # Reboot so far has been part of workflow that is not followed"},{"line_number":139,"context_line":"                # by another power state change that could break the flow."}],"source_content_type":"text/x-python","patch_set":1,"id":"128eaf31_4d742030","line":136,"range":{"start_line":136,"start_character":12,"end_line":136,"end_character":49},"in_reply_to":"5627e1c9_98a97f66","updated":"2021-09-10 08:24:13.000000000","message":"Ack","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e1fbe1b234809470b4d70dc4d6da2ecf59ee2dab","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":136,"context_line":"            if calc_power_state !\u003d states.REBOOT:"},{"line_number":137,"context_line":"                # Skipping for reboot as can\u0027t match reboot with on/off."},{"line_number":138,"context_line":"                # Reboot so far has been part of workflow that is not followed"},{"line_number":139,"context_line":"                # by another power state change that could break the flow."}],"source_content_type":"text/x-python","patch_set":1,"id":"d2941e9a_8d614fa2","line":136,"range":{"start_line":136,"start_character":12,"end_line":136,"end_character":49},"in_reply_to":"9456fe97_777923d8","updated":"2021-09-09 15:25:10.000000000","message":"It seems reasonable to me.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"e0a1737149c93358ccc4a3ff06fe9ce280c1413c","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":136,"context_line":"            if calc_power_state !\u003d states.REBOOT:"},{"line_number":137,"context_line":"                # Skipping for reboot as can\u0027t match reboot with on/off."},{"line_number":138,"context_line":"                # Reboot so far has been part of workflow that is not followed"},{"line_number":139,"context_line":"                # by another power state change that could break the flow."}],"source_content_type":"text/x-python","patch_set":1,"id":"5627e1c9_98a97f66","line":136,"range":{"start_line":136,"start_character":12,"end_line":136,"end_character":49},"in_reply_to":"d2941e9a_8d614fa2","updated":"2021-09-10 00:09:49.000000000","message":"I am good with it. It feels like fairly unlikely technical debt.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"e0a1737149c93358ccc4a3ff06fe9ce280c1413c","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                 missing."},{"line_number":248,"context_line":"        :raises: DracOperationError on an error from python-dracclient."},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        # TODO(rloo): Support timeouts!"},{"line_number":251,"context_line":"        if timeout is not None:"},{"line_number":252,"context_line":"            LOG.warning(\"The \u0027idrac\u0027 Power Interface\u0027s \u0027reboot\u0027 method \""},{"line_number":253,"context_line":"                        \"doesn\u0027t support the \u0027timeout\u0027 parameter. Ignoring \""},{"line_number":254,"context_line":"                        \"timeout\u003d%(timeout)s\","},{"line_number":255,"context_line":"                        {\u0027timeout\u0027: timeout})"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        _set_power_state(task.node, states.REBOOT, task)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"82839960_8f0dc90f","line":256,"range":{"start_line":250,"start_character":0,"end_line":256,"end_character":0},"updated":"2021-09-10 00:09:49.000000000","message":"Now that cond_utils.node_wait_for_power_state() is called, should timeout support be added or would it be better to do that as a follow-on? Could that aspect be backported to stable branches?","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                 missing."},{"line_number":248,"context_line":"        :raises: DracOperationError on an error from python-dracclient."},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        # TODO(rloo): Support timeouts!"},{"line_number":251,"context_line":"        if timeout is not None:"},{"line_number":252,"context_line":"            LOG.warning(\"The \u0027idrac\u0027 Power Interface\u0027s \u0027reboot\u0027 method \""},{"line_number":253,"context_line":"                        \"doesn\u0027t support the \u0027timeout\u0027 parameter. Ignoring \""},{"line_number":254,"context_line":"                        \"timeout\u003d%(timeout)s\","},{"line_number":255,"context_line":"                        {\u0027timeout\u0027: timeout})"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        _set_power_state(task.node, states.REBOOT, task)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b7009bc1_e9645400","line":256,"range":{"start_line":250,"start_character":0,"end_line":256,"end_character":0},"in_reply_to":"82839960_8f0dc90f","updated":"2021-09-10 08:24:13.000000000","message":"this is `reboot` method, rebooting is not affected by this change because of line 136. In any case would do in another patch.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"d6cfd176c2b9ba28084a20bcdca4c0aeab468dd7","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                 missing."},{"line_number":248,"context_line":"        :raises: DracOperationError on an error from python-dracclient."},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        # TODO(rloo): Support timeouts!"},{"line_number":251,"context_line":"        if timeout is not None:"},{"line_number":252,"context_line":"            LOG.warning(\"The \u0027idrac\u0027 Power Interface\u0027s \u0027reboot\u0027 method \""},{"line_number":253,"context_line":"                        \"doesn\u0027t support the \u0027timeout\u0027 parameter. Ignoring \""},{"line_number":254,"context_line":"                        \"timeout\u003d%(timeout)s\","},{"line_number":255,"context_line":"                        {\u0027timeout\u0027: timeout})"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        _set_power_state(task.node, states.REBOOT, task)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"cc27f43f_55302f77","line":256,"range":{"start_line":250,"start_character":0,"end_line":256,"end_character":0},"in_reply_to":"b7009bc1_e9645400","updated":"2021-09-13 09:12:11.000000000","message":"as discussed offline, this should apply to method set_power_state above, more changes made.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e1fbe1b234809470b4d70dc4d6da2ecf59ee2dab","unresolved":true,"context_lines":[{"line_number":253,"context_line":"                        \"doesn\u0027t support the \u0027timeout\u0027 parameter. Ignoring \""},{"line_number":254,"context_line":"                        \"timeout\u003d%(timeout)s\","},{"line_number":255,"context_line":"                        {\u0027timeout\u0027: timeout})"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        _set_power_state(task.node, states.REBOOT, task)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"class DracPower(DracWSManPower):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1cf97c31_2e654417","line":257,"range":{"start_line":256,"start_character":0,"end_line":257,"end_character":56},"updated":"2021-09-09 15:25:10.000000000","message":"it is an internal method, maybe just swap task for node, and split node out directly with\n\nnode \u003d task.node\n\nin the very beginning of the _set_power_state call.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                        \"doesn\u0027t support the \u0027timeout\u0027 parameter. Ignoring \""},{"line_number":254,"context_line":"                        \"timeout\u003d%(timeout)s\","},{"line_number":255,"context_line":"                        {\u0027timeout\u0027: timeout})"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        _set_power_state(task.node, states.REBOOT, task)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"class DracPower(DracWSManPower):"}],"source_content_type":"text/x-python","patch_set":1,"id":"cab89627_3cc90fa7","line":257,"range":{"start_line":256,"start_character":0,"end_line":257,"end_character":56},"in_reply_to":"1cf97c31_2e654417","updated":"2021-09-10 08:24:13.000000000","message":"Done","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":true,"context_lines":[{"line_number":137,"context_line":"            if calc_power_state \u003d\u003d states.REBOOT:"},{"line_number":138,"context_line":"                # TODO(rloo): Support timeouts!"},{"line_number":139,"context_line":"                if timeout is not None:"},{"line_number":140,"context_line":"                    LOG.warning(\"The \u0027idrac\u0027 Power Interface  does not \""},{"line_number":141,"context_line":"                                \"support \u0027timeout\u0027 parameter when setting \""},{"line_number":142,"context_line":"                                \"power state to reboot. Ignoring \""},{"line_number":143,"context_line":"                                \"timeout\u003d%(timeout)s\","}],"source_content_type":"text/x-python","patch_set":3,"id":"df242f03_5b3e75ec","line":140,"range":{"start_line":140,"start_character":37,"end_line":140,"end_character":60},"updated":"2021-09-13 23:36:53.000000000","message":"The name of the interface\u0027s entry point is no longer correct. Perhaps this is a good opportunity to update it. Of course, it could be done as a follow-on.\n\n    \u0027idrac-wsman\u0027 power interface","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            if calc_power_state \u003d\u003d states.REBOOT:"},{"line_number":138,"context_line":"                # TODO(rloo): Support timeouts!"},{"line_number":139,"context_line":"                if timeout is not None:"},{"line_number":140,"context_line":"                    LOG.warning(\"The \u0027idrac\u0027 Power Interface  does not \""},{"line_number":141,"context_line":"                                \"support \u0027timeout\u0027 parameter when setting \""},{"line_number":142,"context_line":"                                \"power state to reboot. Ignoring \""},{"line_number":143,"context_line":"                                \"timeout\u003d%(timeout)s\","}],"source_content_type":"text/x-python","patch_set":3,"id":"fe2993c9_c55c8d48","line":140,"range":{"start_line":140,"start_character":37,"end_line":140,"end_character":60},"in_reply_to":"df242f03_5b3e75ec","updated":"2021-09-14 08:08:12.000000000","message":"Done","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6b6dadc773b601c98c9b4ec1ab3b0300d06931f9","unresolved":true,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":137,"context_line":"            if calc_power_state \u003d\u003d states.REBOOT:"},{"line_number":138,"context_line":"                # TODO(rloo): Support timeouts!"},{"line_number":139,"context_line":"                if timeout is not None:"},{"line_number":140,"context_line":"                    LOG.warning(\"The \u0027idrac\u0027 Power Interface  does not \""},{"line_number":141,"context_line":"                                \"support \u0027timeout\u0027 parameter when setting \""},{"line_number":142,"context_line":"                                \"power state to reboot. Ignoring \""},{"line_number":143,"context_line":"                                \"timeout\u003d%(timeout)s\","},{"line_number":144,"context_line":"                                {\u0027timeout\u0027: timeout})"},{"line_number":145,"context_line":"            else:"},{"line_number":146,"context_line":"                # Skipped for reboot as can\u0027t match reboot with on/off."},{"line_number":147,"context_line":"                # Reboot so far has been part of workflow that is not followed"}],"source_content_type":"text/x-python","patch_set":3,"id":"1cb3d29b_68575bf3","line":144,"range":{"start_line":137,"start_character":0,"end_line":144,"end_character":53},"updated":"2021-09-13 15:08:43.000000000","message":"logistical question, how would we ever actually... know?","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":true,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            client.set_power_state(target_power_state)"},{"line_number":137,"context_line":"            if calc_power_state \u003d\u003d states.REBOOT:"},{"line_number":138,"context_line":"                # TODO(rloo): Support timeouts!"},{"line_number":139,"context_line":"                if timeout is not None:"},{"line_number":140,"context_line":"                    LOG.warning(\"The \u0027idrac\u0027 Power Interface  does not \""},{"line_number":141,"context_line":"                                \"support \u0027timeout\u0027 parameter when setting \""},{"line_number":142,"context_line":"                                \"power state to reboot. Ignoring \""},{"line_number":143,"context_line":"                                \"timeout\u003d%(timeout)s\","},{"line_number":144,"context_line":"                                {\u0027timeout\u0027: timeout})"},{"line_number":145,"context_line":"            else:"},{"line_number":146,"context_line":"                # Skipped for reboot as can\u0027t match reboot with on/off."},{"line_number":147,"context_line":"                # Reboot so far has been part of workflow that is not followed"}],"source_content_type":"text/x-python","patch_set":3,"id":"b180d4b7_d4a46336","line":144,"range":{"start_line":137,"start_character":0,"end_line":144,"end_character":53},"in_reply_to":"1cb3d29b_68575bf3","updated":"2021-09-14 08:08:12.000000000","message":"if I got your Q right - for reboot we don\u0027t, that\u0027s why it\u0027s not there","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"}],"ironic/tests/unit/drivers/modules/drac/test_power.py":[{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"e0a1737149c93358ccc4a3ff06fe9ce280c1413c","unresolved":true,"context_lines":[{"line_number":79,"context_line":"            task.driver.power.set_power_state(task, states.POWER_OFF)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        drac_power_state \u003d drac_power.REVERSE_POWER_STATES[states.POWER_OFF]"},{"line_number":82,"context_line":"        mock_client.set_power_state.assert_called_once_with(drac_power_state)"},{"line_number":83,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_set_power_state_fail(self, mock_get_drac_client):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df74bc23_df3e9159","line":82,"updated":"2021-09-10 00:09:49.000000000","message":"I am wondering if adding an assertion that mock_client.get_power_state was called twice would be helpful. If so, please consider making the same or analogous changes to the other individual tests in this testcase class.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            task.driver.power.set_power_state(task, states.POWER_OFF)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        drac_power_state \u003d drac_power.REVERSE_POWER_STATES[states.POWER_OFF]"},{"line_number":82,"context_line":"        mock_client.set_power_state.assert_called_once_with(drac_power_state)"},{"line_number":83,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_set_power_state_fail(self, mock_get_drac_client):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d376f09_3b11f82f","line":82,"in_reply_to":"b11a5c39_08a718d5","updated":"2021-09-13 23:36:53.000000000","message":"As discussed offline, this is good, as-is.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            task.driver.power.set_power_state(task, states.POWER_OFF)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        drac_power_state \u003d drac_power.REVERSE_POWER_STATES[states.POWER_OFF]"},{"line_number":82,"context_line":"        mock_client.set_power_state.assert_called_once_with(drac_power_state)"},{"line_number":83,"context_line":"        self.assertFalse(mock_log.called)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_set_power_state_fail(self, mock_get_drac_client):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b11a5c39_08a718d5","line":82,"in_reply_to":"df74bc23_df3e9159","updated":"2021-09-10 08:24:13.000000000","message":"rather no, that is already tested implicitly by having `get_power_state.side_effect` with 2 changing values. The test can\u0027t pass if it\u0027s not called 2 times, if it is called more than 2 times it will fail with iteration error.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"}],"releasenotes/notes/idrac-wsman-set-power-state-wait-cd8f9ff41b19c7a7.yaml":[{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"e0a1737149c93358ccc4a3ff06fe9ce280c1413c","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."},{"line_number":10,"context_line":"  "}],"source_content_type":"text/x-yaml","patch_set":1,"id":"944db377_8bf62e83","line":10,"updated":"2021-09-10 00:09:49.000000000","message":"It seems like Gerrit prefers a newline at the end.","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"07814e47de3ad3ea07a4eb2f0da5d55755689191","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."},{"line_number":10,"context_line":"  "}],"source_content_type":"text/x-yaml","patch_set":1,"id":"ac492592_a7141ef2","line":10,"in_reply_to":"944db377_8bf62e83","updated":"2021-09-10 08:24:13.000000000","message":"Done","commit_id":"0934ad6256754d1bf28c5e15842d6e819efe50e1"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes ``idrac-wsman`` power interface to wait for powering off before"},{"line_number":5,"context_line":"    proceeding. For systems where soft power off at the end of deployment"},{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8689a362_171fa3b9","line":5,"range":{"start_line":4,"start_character":54,"end_line":5,"end_character":14},"updated":"2021-09-13 23:36:53.000000000","message":"More completely, the fix waits for\n\n    the hardware to reach the target state before returning","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes ``idrac-wsman`` power interface to wait for powering off before"},{"line_number":5,"context_line":"    proceeding. For systems where soft power off at the end of deployment"},{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"d32ceedc_b66689c1","line":5,"range":{"start_line":4,"start_character":54,"end_line":5,"end_character":14},"in_reply_to":"8689a362_171fa3b9","updated":"2021-09-14 08:08:12.000000000","message":"Done","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes ``idrac-wsman`` power interface to wait for powering off before"},{"line_number":5,"context_line":"    proceeding. For systems where soft power off at the end of deployment"},{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"919316fa_a3ad5254","line":6,"range":{"start_line":6,"start_character":35,"end_line":6,"end_character":46},"updated":"2021-09-13 23:36:53.000000000","message":"I am unfamiliar with this. Do you mean out-of-band fallback?","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes ``idrac-wsman`` power interface to wait for powering off before"},{"line_number":5,"context_line":"    proceeding. For systems where soft power off at the end of deployment"},{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"9d2cd54e_9682f699","line":6,"range":{"start_line":6,"start_character":35,"end_line":6,"end_character":46},"in_reply_to":"919316fa_a3ad5254","updated":"2021-09-14 08:08:12.000000000","message":"yes, and this is release note read by end users. They don\u0027t see OOB in warning messages. They see \"Failed to soft power off node \u003cnode_uuid\u003e in at least \u003ctimeout\u003e seconds. Forcing hard power off and proceeding.\" Leaving as it is.","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"a8ab7a8216184f968fbb8da9d9dcd8067d910f2d","unresolved":true,"context_lines":[{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"8ff8f9bf_0a0e4512","line":9,"updated":"2021-09-13 23:36:53.000000000","message":"Not sure if we still do this, but please consider adding a link to the story.\n\n    Additional information can be found in `story 2009204 \u003chttps://storyboard.openstack.org/#!/story/2009204\u003e`_.","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e6478a7116e5f34eee4310b608bd50750ade3b0f","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    to boot to instance failed and forced hard power off was used,"},{"line_number":7,"context_line":"    this left node successfully deployed in off state without any errors."},{"line_number":8,"context_line":"    This broke other workflows expecting node to be on booted into"},{"line_number":9,"context_line":"    OS at the end of deployment."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5b4df139_eccd8e31","line":9,"in_reply_to":"8ff8f9bf_0a0e4512","updated":"2021-09-14 08:08:12.000000000","message":"Done","commit_id":"5a615d1cbf97ca0098732666ae6f796117557b46"}]}
