)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d1ea393faa97647683d8b6ff366f3a66d9a9b3fa","unresolved":false,"context_lines":[{"line_number":7,"context_line":"DRAC: Added redfish management clean steps"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added reset_idrac, clear_job_queue and known_good_state"},{"line_number":10,"context_line":"cleaning steps in the iDRAC driver that resets the iDRAC,"},{"line_number":11,"context_line":"Clear the job queue to get the iDRAC into known good state."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1f493fa4_81653120","line":11,"range":{"start_line":10,"start_character":56,"end_line":11,"end_character":5},"updated":"2020-05-06 21:31:20.000000000","message":"Would you mind changing the above to:\n... resets the iDRAC and clears the job ...","commit_id":"9e9610eddf768bf472cf7942dbbd0112c15add68"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"},{"line_number":15,"context_line":"Task: 39628"},{"line_number":16,"context_line":"Depends-On: I29ce49c0865a610f2fb10f5072893bbf51b47303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"966b7082_6527c088","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":53},"updated":"2021-02-22 12:11:45.000000000","message":"should use URL (https://review.opendev.org/c/x/sushy-oem-idrac/+/721596), see [1]\n\n[1] https://zuul-ci.org/docs/zuul/discussion/gating.html#cross-project-dependencies","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"},{"line_number":15,"context_line":"Task: 39628"},{"line_number":16,"context_line":"Depends-On: I29ce49c0865a610f2fb10f5072893bbf51b47303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"f23b715c_2a2b1f92","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":53},"in_reply_to":"966b7082_6527c088","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"},{"line_number":15,"context_line":"Task: 39628"},{"line_number":16,"context_line":"Depends-On: I29ce49c0865a610f2fb10f5072893bbf51b47303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"abe9d1b0_1a416ca7","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":53},"in_reply_to":"f23b715c_2a2b1f92","updated":"2021-03-02 09:26:35.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"},{"line_number":15,"context_line":"Task: 39628"},{"line_number":16,"context_line":"Depends-On: https://review.opendev.org/c/x/sushy-oem-idrac/+/721596"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7538998c_d3eb0888","line":16,"updated":"2021-03-10 15:44:52.000000000","message":"please update driver-requirements.txt","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":13,"context_line":"Change-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4"},{"line_number":14,"context_line":"Story: 2007617"},{"line_number":15,"context_line":"Task: 39628"},{"line_number":16,"context_line":"Depends-On: https://review.opendev.org/c/x/sushy-oem-idrac/+/721596"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"79d50e2f_8c609869","line":16,"range":{"start_line":16,"start_character":12,"end_line":16,"end_character":67},"updated":"2021-03-25 15:50:04.000000000","message":"should be updated to https://review.opendev.org/c/x/sushy-oem-idrac/+/782254","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"3216722c_9adb3711","line":17,"range":{"start_line":7,"start_character":0,"end_line":17,"end_character":0},"updated":"2021-03-29 14:22:46.000000000","message":"Please consider changing the commit message to the following:\n\nAdd iDRAC management via Redfish to idrac HW type\n\nThis change adds support for managing an iDRAC -- reset, clear job queue, and place in known good state -- via the Redfish out-of-band (OOB) management protocol to the idrac hardware type. This is offered by new idrac-redfish management hardware interface implementation cleaning steps: reset_idrac, clear_job_queue, and known_good_state. known_good state both resets an iDRAC and clears its job queue.\n\nStory: 2007617\nTask: 39628\nDepends-On: https://review.opendev.org/c/x/sushy-oem-idrac/+/782254\n\nChange-Id: Iad69c8d7cf3a373f5cfcc619a479a106efa2e4d4","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"02323a8e_2852233a","line":17,"range":{"start_line":7,"start_character":0,"end_line":17,"end_character":0},"in_reply_to":"3216722c_9adb3711","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"01670684ea935de5901e5746558003eb43c07fd7","unresolved":true,"context_lines":[{"line_number":10,"context_line":"queue, and reset to known good state -- via the Redfish out-of-band"},{"line_number":11,"context_line":"(OOB) management protocol to the idrac hardware type. This is offered by"},{"line_number":12,"context_line":"new idrac-redfish management hardware interface implementation cleaning"},{"line_number":13,"context_line":"steps: reset_idrac, clear_job_queue, and known_good_state. known_good"},{"line_number":14,"context_line":"state both resets an iDRAC and clears its job queue."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Story: 2007617"},{"line_number":17,"context_line":"Task: 39628"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"cb7e7ea2_de884cde","line":14,"range":{"start_line":13,"start_character":59,"end_line":14,"end_character":5},"updated":"2021-03-30 12:40:50.000000000","message":"known_good_state","commit_id":"23877dd0edf3df85431632d0668a37e194537b57"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"6e9b4ce4666ed16d0d9d037df5f227d89c953f38","unresolved":true,"context_lines":[{"line_number":10,"context_line":"queue, and reset to known good state -- via the Redfish out-of-band"},{"line_number":11,"context_line":"(OOB) management protocol to the idrac hardware type. This is offered by"},{"line_number":12,"context_line":"new idrac-redfish management hardware interface implementation cleaning"},{"line_number":13,"context_line":"steps: reset_idrac, clear_job_queue, and known_good_state. known_good"},{"line_number":14,"context_line":"state both resets an iDRAC and clears its job queue."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Story: 2007617"},{"line_number":17,"context_line":"Task: 39628"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"e9c65891_23588389","line":14,"range":{"start_line":13,"start_character":59,"end_line":14,"end_character":5},"in_reply_to":"cb7e7ea2_de884cde","updated":"2021-03-30 15:53:17.000000000","message":"Done","commit_id":"23877dd0edf3df85431632d0668a37e194537b57"}],"driver-requirements.txt":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"b4d1013e5b0169f55bbb05f00661c8bdb919fdf7","unresolved":true,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.2.2,\u003c0.3.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003e\u003d2.0.0,\u003c3.0.0"}],"source_content_type":"text/plain","patch_set":14,"id":"c70e008b_743b8cc2","line":23,"range":{"start_line":23,"start_character":17,"end_line":23,"end_character":22},"updated":"2021-03-24 12:49:25.000000000","message":"when released: 2.1.0","commit_id":"a1437b535414efb750b85fc753a4b61046376e1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"afc24728d350468552002e6769dfe02e0d0b104f","unresolved":true,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.2.2,\u003c0.3.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003e\u003d2.0.0,\u003c3.0.0"}],"source_content_type":"text/plain","patch_set":14,"id":"3c020048_3934e867","line":23,"range":{"start_line":23,"start_character":17,"end_line":23,"end_character":22},"in_reply_to":"c70e008b_743b8cc2","updated":"2021-03-24 16:25:21.000000000","message":"Not based upon the history log, unless there are other changes on master that are needed which fixes the known good state change.","commit_id":"a1437b535414efb750b85fc753a4b61046376e1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2d90f827abb12de81cdd8d3d89861e1011116d48","unresolved":true,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.2.2,\u003c0.3.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003e\u003d2.1.0,\u003c3.0.0"}],"source_content_type":"text/plain","patch_set":20,"id":"b3a4ed25_8f11ec9e","line":23,"range":{"start_line":23,"start_character":13,"end_line":23,"end_character":22},"updated":"2021-03-29 14:32:18.000000000","message":"Needs to be tagged, Sounds like rpioso is going to do this shortly.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":20,"context_line":"python-ibmcclient\u003e\u003d0.2.2,\u003c0.3.0"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# Dell EMC iDRAC sushy OEM extension"},{"line_number":23,"context_line":"sushy-oem-idrac\u003e\u003d2.1.0,\u003c3.0.0"}],"source_content_type":"text/plain","patch_set":20,"id":"e6ecd06a_dce2b389","line":23,"range":{"start_line":23,"start_character":13,"end_line":23,"end_character":22},"in_reply_to":"b3a4ed25_8f11ec9e","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"}],"ironic/drivers/modules/drac/common.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    :returns: a OEM manager object."},{"line_number":131,"context_line":"    \"\"\""},{"line_number":132,"context_line":"    system \u003d redfish_utils.get_system(node)"},{"line_number":133,"context_line":"    for manager in system.managers:"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            # Get instance of Sushy OEM manager object"},{"line_number":136,"context_line":"            oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_bd0ff537","line":133,"updated":"2020-09-29 14:52:49.000000000","message":"The logic here feels a bit strange. You\u0027re checking all managers, making sure they all have an OEM extension, but only return the last one?","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    :returns: a OEM manager object."},{"line_number":131,"context_line":"    \"\"\""},{"line_number":132,"context_line":"    system \u003d redfish_utils.get_system(node)"},{"line_number":133,"context_line":"    for manager in system.managers:"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            # Get instance of Sushy OEM manager object"},{"line_number":136,"context_line":"            oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_75feffaf","line":133,"in_reply_to":"9f560f44_bd0ff537","updated":"2020-09-30 16:19:27.000000000","message":"Keeping consistent with ironic code\n\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/drac/boot.py#L105-#L127","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":31,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":32,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"_SERVICE_ROOT \u003d \u0027/redfish/v1/Managers/\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"REQUIRED_PROPERTIES \u003d {"},{"line_number":37,"context_line":"    \u0027drac_address\u0027: _(\u0027IP address or hostname of the DRAC card. Required.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"dbf5a11e_02a6f0a8","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":39},"updated":"2021-02-22 12:11:45.000000000","message":"is this used anywhere?","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":32,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"_SERVICE_ROOT \u003d \u0027/redfish/v1/Managers/\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"REQUIRED_PROPERTIES \u003d {"},{"line_number":37,"context_line":"    \u0027drac_address\u0027: _(\u0027IP address or hostname of the DRAC card. Required.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3013247b_59ac0a11","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":39},"in_reply_to":"c4e47a4b_135b2f61","updated":"2021-03-02 09:26:35.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":31,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":32,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"_SERVICE_ROOT \u003d \u0027/redfish/v1/Managers/\u0027"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"REQUIRED_PROPERTIES \u003d {"},{"line_number":37,"context_line":"    \u0027drac_address\u0027: _(\u0027IP address or hostname of the DRAC card. Required.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"c4e47a4b_135b2f61","line":34,"range":{"start_line":34,"start_character":0,"end_line":34,"end_character":39},"in_reply_to":"dbf5a11e_02a6f0a8","updated":"2021-02-26 09:23:13.000000000","message":"It is useless, removed it.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def get_sushy_oem_manager(node):"},{"line_number":127,"context_line":"    \"\"\"Returns a OEM manager object from sushy-oem library."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    :param node: an ironic node object."},{"line_number":130,"context_line":"    :returns: a OEM manager object."}],"source_content_type":"text/x-python","patch_set":8,"id":"23f1b6bb_60afab96","line":127,"range":{"start_line":127,"start_character":41,"end_line":127,"end_character":50},"updated":"2021-02-22 12:11:45.000000000","message":"to be precise - `sushy-oem-idrac` library","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def get_sushy_oem_manager(node):"},{"line_number":127,"context_line":"    \"\"\"Returns a OEM manager object from sushy-oem library."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    :param node: an ironic node object."},{"line_number":130,"context_line":"    :returns: a OEM manager object."}],"source_content_type":"text/x-python","patch_set":8,"id":"477059cc_64f5ac8c","line":127,"range":{"start_line":127,"start_character":41,"end_line":127,"end_character":50},"in_reply_to":"23f1b6bb_60afab96","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def get_sushy_oem_manager(node):"},{"line_number":127,"context_line":"    \"\"\"Returns a OEM manager object from sushy-oem library."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    :param node: an ironic node object."},{"line_number":130,"context_line":"    :returns: a OEM manager object."}],"source_content_type":"text/x-python","patch_set":8,"id":"a048d55a_efe81b9b","line":127,"range":{"start_line":127,"start_character":41,"end_line":127,"end_character":50},"in_reply_to":"477059cc_64f5ac8c","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":130,"context_line":"    :returns: a OEM manager object."},{"line_number":131,"context_line":"    \"\"\""},{"line_number":132,"context_line":"    system \u003d redfish_utils.get_system(node)"},{"line_number":133,"context_line":"    for manager in system.managers:"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            # Get instance of Sushy OEM manager object"},{"line_number":136,"context_line":"            oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"314e83ba_e2ba58b4","line":133,"range":{"start_line":133,"start_character":4,"end_line":133,"end_character":35},"updated":"2021-02-22 12:11:45.000000000","message":"the logic is to iterate through all managers and return the last one? I know usually there is only one, so it does not matter, but what if not? Maybe return all in list?\n\nFor virtual media boot the logic was to iterate through all managers and start with the first one to execute command and try next ones only if previous fails.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    :returns: a OEM manager object."},{"line_number":131,"context_line":"    \"\"\""},{"line_number":132,"context_line":"    system \u003d redfish_utils.get_system(node)"},{"line_number":133,"context_line":"    for manager in system.managers:"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            # Get instance of Sushy OEM manager object"},{"line_number":136,"context_line":"            oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"064d52f7_edd16a11","line":133,"range":{"start_line":133,"start_character":4,"end_line":133,"end_character":35},"in_reply_to":"0f255cff_2c38616f","updated":"2021-03-02 09:26:35.000000000","message":"thanks, just a note, will have to take a look at having some kind of utility method for this in the end anyway. Besides virtual media boot there are other pending patches that have need for this. I don\u0027t see this as being part of this patch - need to see what are needs for this pattern elsewhere.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":130,"context_line":"    :returns: a OEM manager object."},{"line_number":131,"context_line":"    \"\"\""},{"line_number":132,"context_line":"    system \u003d redfish_utils.get_system(node)"},{"line_number":133,"context_line":"    for manager in system.managers:"},{"line_number":134,"context_line":"        try:"},{"line_number":135,"context_line":"            # Get instance of Sushy OEM manager object"},{"line_number":136,"context_line":"            oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"0f255cff_2c38616f","line":133,"range":{"start_line":133,"start_character":4,"end_line":133,"end_character":35},"in_reply_to":"314e83ba_e2ba58b4","updated":"2021-02-26 09:23:13.000000000","message":"Removed this logic from here and implemented as per virtual media boot.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":31,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"REQUIRED_PROPERTIES \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a2b3ac7_e58d0553","line":31,"updated":"2021-03-10 15:44:52.000000000","message":"unused?","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":31,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"REQUIRED_PROPERTIES \u003d {"}],"source_content_type":"text/x-python","patch_set":12,"id":"0076ec76_eec2d903","line":31,"in_reply_to":"7a2b3ac7_e58d0553","updated":"2021-03-17 09:16:48.000000000","message":"Yes, Removed it.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"}],"ironic/drivers/modules/drac/management.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d1ea393faa97647683d8b6ff366f3a66d9a9b3fa","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                    job_collection \u003d oem_manager.job_collection"},{"line_number":390,"context_line":"                    unfinished_jobs \u003d job_collection.get_unfinished_jobs()"},{"line_number":391,"context_line":"                    if unfinished_jobs \u003d\u003d []:"},{"line_number":392,"context_line":"                        info_msg \u003d (\"Not found any unfinished jobs for node\""},{"line_number":393,"context_line":"                                    \"%(node)s\" %"},{"line_number":394,"context_line":"                                    {\u0027node\u0027: task.node.uuid})"},{"line_number":395,"context_line":"                        LOG.info(info_msg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_e5c36056","line":392,"updated":"2020-05-06 21:31:20.000000000","message":"Would you mind changing the above to:\n\"No unfinished jobs were found for node\"","commit_id":"9e9610eddf768bf472cf7942dbbd0112c15add68"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"4949ea45613b37838adc7cbf2a78a3c9c0bb9bdc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017-2019 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_3d180575","line":5,"updated":"2020-09-29 14:05:59.000000000","message":"Looks like the above was an accidental change. Please revert.","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017-2019 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f2fb4578","line":5,"in_reply_to":"9f560f44_3d180575","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":328,"context_line":"        except sushy.exceptions.SushyError as e:"},{"line_number":329,"context_line":"            error_msg \u003d (\"Sushy OEM extension Python package \""},{"line_number":330,"context_line":"                         \"sushy-oem-idrac failed to clear job queue\""},{"line_number":331,"context_line":"                         \"for %(node)s, Error : %(error)s\" %"},{"line_number":332,"context_line":"                         {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":"            LOG.error(error_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_98095f2d","line":330,"range":{"start_line":329,"start_character":26,"end_line":330,"end_character":41},"updated":"2020-09-29 14:52:49.000000000","message":"No need to reference the python package here or below. It\u0027s only helpful where we\u0027re looking for the OEM extension.","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        try:"},{"line_number":327,"context_line":"            oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":328,"context_line":"        except sushy.exceptions.SushyError as e:"},{"line_number":329,"context_line":"            error_msg \u003d (\"Sushy OEM extension Python package \""},{"line_number":330,"context_line":"                         \"sushy-oem-idrac failed to clear job queue\""},{"line_number":331,"context_line":"                         \"for %(node)s, Error : %(error)s\" %"},{"line_number":332,"context_line":"                         {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":"            LOG.error(error_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_32f5bd85","line":330,"range":{"start_line":329,"start_character":26,"end_line":330,"end_character":41},"in_reply_to":"9f560f44_98095f2d","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                         {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":"            LOG.error(error_msg)"},{"line_number":334,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":335,"context_line":"        return None"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":338,"context_line":"    @base.clean_step(priority\u003d0)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_1d00a102","line":335,"updated":"2020-09-29 14:52:49.000000000","message":"nit: not needed (sambe below)","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                         {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":"            LOG.error(error_msg)"},{"line_number":334,"context_line":"            raise exception.RedfishError(error\u003derror_msg)"},{"line_number":335,"context_line":"        return None"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":338,"context_line":"    @base.clean_step(priority\u003d0)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f2306558","line":335,"in_reply_to":"9f560f44_1d00a102","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.known_good_state\u0027)"},{"line_number":370,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":371,"context_line":"    def known_good_state(self, task):"},{"line_number":372,"context_line":"        \"\"\"Reset the iDRAC, Clear the job queue."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_7823abab","line":371,"updated":"2020-09-29 14:52:49.000000000","message":"maybe reset_to_known_good_state?","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.known_good_state\u0027)"},{"line_number":370,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":371,"context_line":"    def known_good_state(self, task):"},{"line_number":372,"context_line":"        \"\"\"Reset the iDRAC, Clear the job queue."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d2d1e1ce","line":371,"in_reply_to":"9f560f44_7823abab","updated":"2020-09-30 16:19:27.000000000","message":"Keeping consistent with ironic code\n\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/drac/management.py#L434","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return None"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":383,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":384,"context_line":"        if task.node.driver_internal_info.get(\"clean_steps\"):"},{"line_number":385,"context_line":"            if task.node.driver_internal_info.get(\"clean_steps\")[0].get("},{"line_number":386,"context_line":"                    \u0027step\u0027) in _CLEAR_JOBS_CLEAN_STEPS:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_98a5df06","line":383,"updated":"2020-09-29 14:52:49.000000000","message":"Please add a docstring explaining your addition","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        return None"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":383,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":384,"context_line":"        if task.node.driver_internal_info.get(\"clean_steps\"):"},{"line_number":385,"context_line":"            if task.node.driver_internal_info.get(\"clean_steps\")[0].get("},{"line_number":386,"context_line":"                    \u0027step\u0027) in _CLEAR_JOBS_CLEAN_STEPS:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_72e0d598","line":383,"in_reply_to":"9f560f44_98a5df06","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":383,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":384,"context_line":"        if task.node.driver_internal_info.get(\"clean_steps\"):"},{"line_number":385,"context_line":"            if task.node.driver_internal_info.get(\"clean_steps\")[0].get("},{"line_number":386,"context_line":"                    \u0027step\u0027) in _CLEAR_JOBS_CLEAN_STEPS:"},{"line_number":387,"context_line":"                oem_manager \u003d drac_common.get_sushy_oem_manager(task.node)"},{"line_number":388,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d838f7cc","line":385,"range":{"start_line":385,"start_character":65,"end_line":385,"end_character":66},"updated":"2020-09-29 14:52:49.000000000","message":"Why checking the first step? Cannot these steps go 2nd and 3rd, for example?","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":383,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":384,"context_line":"        if task.node.driver_internal_info.get(\"clean_steps\"):"},{"line_number":385,"context_line":"            if task.node.driver_internal_info.get(\"clean_steps\")[0].get("},{"line_number":386,"context_line":"                    \u0027step\u0027) in _CLEAR_JOBS_CLEAN_STEPS:"},{"line_number":387,"context_line":"                oem_manager \u003d drac_common.get_sushy_oem_manager(task.node)"},{"line_number":388,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_727c55b6","line":385,"range":{"start_line":385,"start_character":65,"end_line":385,"end_character":66},"in_reply_to":"9f560f44_d838f7cc","updated":"2020-09-30 16:19:27.000000000","message":"When we run clean steps command \"openstack baremetal node clean  \u003cnode-id\u003e --clean-steps \u0027[{\"interface\": \"management\", \"step\": \"reset_idrac\"}] \"\n\nThen, we get driver_info as below\n\n\u003e\u003e\u003e driver_info.get(\u0027clean_steps\u0027)\n[{\u0027interface\u0027: \u0027management\u0027, \u0027step\u0027: \u0027clear_job_queue\u0027}]\n\u003e\u003e\u003e driver_info.get(\u0027clean_steps\u0027)[0]\n{\u0027interface\u0027: \u0027management\u0027, \u0027step\u0027: \u0027clear_job_queue\u0027}\n\nSo, that\u0027s why we have written above logic to get clean_steps.","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                    job_collection \u003d oem_manager.job_collection"},{"line_number":390,"context_line":"                    unfinished_jobs \u003d job_collection.get_unfinished_jobs()"},{"line_number":391,"context_line":"                    if unfinished_jobs \u003d\u003d []:"},{"line_number":392,"context_line":"                        info_msg \u003d (\"No unfinished jobs were found for node\""},{"line_number":393,"context_line":"                                    \"%(node)s\" %"},{"line_number":394,"context_line":"                                    {\u0027node\u0027: task.node.uuid})"},{"line_number":395,"context_line":"                        LOG.info(info_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_98703fa7","line":392,"updated":"2020-09-29 14:52:49.000000000","message":"nit: missing space before the closing \"","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                    job_collection \u003d oem_manager.job_collection"},{"line_number":390,"context_line":"                    unfinished_jobs \u003d job_collection.get_unfinished_jobs()"},{"line_number":391,"context_line":"                    if unfinished_jobs \u003d\u003d []:"},{"line_number":392,"context_line":"                        info_msg \u003d (\"No unfinished jobs were found for node\""},{"line_number":393,"context_line":"                                    \"%(node)s\" %"},{"line_number":394,"context_line":"                                    {\u0027node\u0027: task.node.uuid})"},{"line_number":395,"context_line":"                        LOG.info(info_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d23ba1e7","line":392,"in_reply_to":"9f560f44_98703fa7","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                        info_msg \u003d (\"No unfinished jobs were found for node\""},{"line_number":393,"context_line":"                                    \"%(node)s\" %"},{"line_number":394,"context_line":"                                    {\u0027node\u0027: task.node.uuid})"},{"line_number":395,"context_line":"                        LOG.info(info_msg)"},{"line_number":396,"context_line":"                    else:"},{"line_number":397,"context_line":"                        oem_manager.job_service.delete_jobs("},{"line_number":398,"context_line":"                            job_ids\u003dunfinished_jobs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_18438f41","line":395,"updated":"2020-09-29 14:52:49.000000000","message":"s/info/debug/","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                        info_msg \u003d (\"No unfinished jobs were found for node\""},{"line_number":393,"context_line":"                                    \"%(node)s\" %"},{"line_number":394,"context_line":"                                    {\u0027node\u0027: task.node.uuid})"},{"line_number":395,"context_line":"                        LOG.info(info_msg)"},{"line_number":396,"context_line":"                    else:"},{"line_number":397,"context_line":"                        oem_manager.job_service.delete_jobs("},{"line_number":398,"context_line":"                            job_ids\u003dunfinished_jobs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_121d1977","line":395,"in_reply_to":"9f560f44_18438f41","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                                 {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":405,"context_line":"                    LOG.error(error_msg)"},{"line_number":406,"context_line":"                    raise exception.RedfishError(error\u003derror_msg)"},{"line_number":407,"context_line":"        super("},{"line_number":408,"context_line":"            DracRedfishManagement,"},{"line_number":409,"context_line":"            self).set_boot_device("},{"line_number":410,"context_line":"            task,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_18b1cf45","line":407,"updated":"2020-09-29 14:52:49.000000000","message":"nit: you can use just super() in python 3","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                                 {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":405,"context_line":"                    LOG.error(error_msg)"},{"line_number":406,"context_line":"                    raise exception.RedfishError(error\u003derror_msg)"},{"line_number":407,"context_line":"        super("},{"line_number":408,"context_line":"            DracRedfishManagement,"},{"line_number":409,"context_line":"            self).set_boot_device("},{"line_number":410,"context_line":"            task,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_1206b922","line":407,"in_reply_to":"9f560f44_18b1cf45","updated":"2020-09-30 16:19:27.000000000","message":"It is compatible with python2 and python3.","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":96,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_boot_device(node, drac_boot_devices\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"f8cbfb2e_f7aed344","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":34},"updated":"2021-02-22 12:11:45.000000000","message":"use constants from sushy-oem-idrac library?","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":96,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_boot_device(node, drac_boot_devices\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"a8f356e3_265476b9","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":34},"in_reply_to":"764dd56a_046dbfb4","updated":"2021-03-03 10:53:19.000000000","message":"To access sushy-oem-idrac constants on ironic side through oem_manager we need add \u0027IDRAC_RESET_TYPE\u0027 constants in \"https://opendev.org/x/sushy-oem-idrac/src/branch/master/sushy_oem_idrac/resources/manager/manager.py#L34\" in this class and access like oem_manager.IDRAC_RESET_TYPE. \nis there other way to read those constants on ironic side?","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"6300e3eac692313c08c461817429c629402b138a","unresolved":true,"context_lines":[{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":96,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_boot_device(node, drac_boot_devices\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"c148ab13_3b48a104","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":34},"in_reply_to":"a8f356e3_265476b9","updated":"2021-03-05 14:33:47.000000000","message":"good question, let\u0027s try to import the sushy-oem-idrac library the same way as sushy and use constants from there. This needs update to sushy-oem-idrac\u0027s __init__.py file. I left the comment there.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"6b83b6ec301ea668aa5b47a846f5874b9bc8e731","unresolved":true,"context_lines":[{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":96,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_boot_device(node, drac_boot_devices\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"e495ead8_4ecad417","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":34},"in_reply_to":"c148ab13_3b48a104","updated":"2021-03-08 15:06:43.000000000","message":"from further discussions - let\u0027s use default now for the method and remove this.\nRelated comment - https://review.opendev.org/c/x/sushy-oem-idrac/+/721596/13/sushy_oem_idrac/resources/manager/idrac_card_service.py#71","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":96,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"def _get_boot_device(node, drac_boot_devices\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"764dd56a_046dbfb4","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":34},"in_reply_to":"f8cbfb2e_f7aed344","updated":"2021-02-26 09:23:13.000000000","message":"Need to discuss","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"024eaf3d_7619261e","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":47},"updated":"2021-02-22 12:11:45.000000000","message":"is ready_wait_time seconds? Would prefer it have in name, that is, `ready_wait_time_sec`.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"e5fb58fc_61128d44","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":50},"updated":"2021-02-22 12:11:45.000000000","message":"is this argument to clean step or what could overwrite it?","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"28ca1c04_06102602","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":47},"in_reply_to":"024eaf3d_7619261e","updated":"2021-02-26 09:23:13.000000000","message":"\u003e is ready_wait_time seconds? Would prefer it have in name, that is, `ready_wait_time_sec`.\n\nDone","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"bd27ae78_a45fbd4c","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":47},"in_reply_to":"28ca1c04_06102602","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"64037f8d_b63d87ea","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":50},"in_reply_to":"b45b4d22_ea25bb36","updated":"2021-03-03 10:53:19.000000000","message":"Done, Taking all idrac related constants at top to make it consistent.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"ef2f01fe_5e276171","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":50},"in_reply_to":"e5fb58fc_61128d44","updated":"2021-02-26 09:23:13.000000000","message":"\u003e is this argument to clean step or what could overwrite it?\n\nNo it is not an argument with clean step, just ready wait time for idrac to become ready.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.reset_idrac\u0027)"},{"line_number":339,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":340,"context_line":"    def reset_idrac(self, task, ready_wait_time\u003d30):"},{"line_number":341,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        :param task: a TaskManager instance containing the node to act on."}],"source_content_type":"text/x-python","patch_set":8,"id":"b45b4d22_ea25bb36","line":340,"range":{"start_line":340,"start_character":32,"end_line":340,"end_character":50},"in_reply_to":"ef2f01fe_5e276171","updated":"2021-03-02 09:26:35.000000000","message":"why not use the same approach as for IDRAC_IS_READY_RETRIES and other constants at the top of this file?","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self.clear_job_queue(task)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":382,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":383,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        Set the boot device to use on next boot of the node."}],"source_content_type":"text/x-python","patch_set":8,"id":"481a3a72_9ad1b88f","line":382,"range":{"start_line":382,"start_character":8,"end_line":382,"end_character":23},"updated":"2021-02-22 12:11:45.000000000","message":"are there any issues with generic Redfish `set_boot_device` on iDRAC? I know WS-Man has similar implementation to this, because there setting boot device requires creating BIOS job (thus job queue need to be empty to avoid other pending BIOS jobs) and need to reboot the system to execute the job, but this is not the case for Redfish implementation (no job is created there) and it works fine as much as I have used it.\n\nI haven\u0027t checked how iDRAC behaves with Redfish when there are pending BIOS jobs as I usually don\u0027t have any, but unless really necessary, I wouldn\u0027t override generic Redfish.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"eac814521c2d90588b749d79f8187e4b3198116f","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self.clear_job_queue(task)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":382,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":383,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        Set the boot device to use on next boot of the node."}],"source_content_type":"text/x-python","patch_set":8,"id":"5459eb19_c85a5e39","line":382,"range":{"start_line":382,"start_character":8,"end_line":382,"end_character":23},"in_reply_to":"481a3a72_9ad1b88f","updated":"2021-02-23 15:38:50.000000000","message":"checked if pending jobs impact setting boot device via Redfish - it still works as expected.\nIf user intends to clear jobs, then should call that explicitly, setting boot device via Redfish does not need to have job queue cleared, so I\u0027d remove this override altogether.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":379,"context_line":"        self.clear_job_queue(task)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":382,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":383,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        Set the boot device to use on next boot of the node."}],"source_content_type":"text/x-python","patch_set":8,"id":"ebd6b915_3dc661c6","line":382,"range":{"start_line":382,"start_character":8,"end_line":382,"end_character":23},"in_reply_to":"5459eb19_c85a5e39","updated":"2021-02-26 09:23:13.000000000","message":"Done, removed this altogether.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        self.clear_job_queue(task)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":382,"context_line":"    def set_boot_device(self, task, device, persistent\u003dFalse):"},{"line_number":383,"context_line":"        \"\"\"Set the boot device for a node."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        Set the boot device to use on next boot of the node."}],"source_content_type":"text/x-python","patch_set":8,"id":"7053aacd_12162230","line":382,"range":{"start_line":382,"start_character":8,"end_line":382,"end_character":23},"in_reply_to":"ebd6b915_3dc661c6","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":391,"context_line":"                continue"},{"line_number":392,"context_line":"            redfish_address \u003d task.node.driver_info.get(\u0027redfish_address\u0027)"},{"line_number":393,"context_line":"            redfish_address \u003d urlparse(redfish_address)"},{"line_number":394,"context_line":"            redfish_hostname \u003d redfish_address.netloc"},{"line_number":395,"context_line":"            drac_utils.wait_for_host(redfish_hostname)"},{"line_number":396,"context_line":"            time.sleep(ready_wait_time_sec)"},{"line_number":397,"context_line":"            drac_utils.wait_until_idrac_is_ready("}],"source_content_type":"text/x-python","patch_set":11,"id":"b437badb_5570eade","line":394,"updated":"2021-03-02 09:26:35.000000000","message":"have this outside of loop/before the loop to not get it again and again? It should be the same for all iterations.","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":391,"context_line":"                continue"},{"line_number":392,"context_line":"            redfish_address \u003d task.node.driver_info.get(\u0027redfish_address\u0027)"},{"line_number":393,"context_line":"            redfish_address \u003d urlparse(redfish_address)"},{"line_number":394,"context_line":"            redfish_hostname \u003d redfish_address.netloc"},{"line_number":395,"context_line":"            drac_utils.wait_for_host(redfish_hostname)"},{"line_number":396,"context_line":"            time.sleep(ready_wait_time_sec)"},{"line_number":397,"context_line":"            drac_utils.wait_until_idrac_is_ready("}],"source_content_type":"text/x-python","patch_set":11,"id":"816fe75e_c0c34240","line":394,"in_reply_to":"b437badb_5570eade","updated":"2021-03-03 10:53:19.000000000","message":"Done","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":330,"context_line":"        for manager in system.managers:"},{"line_number":331,"context_line":"            try:"},{"line_number":332,"context_line":"                oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":333,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"},{"line_number":334,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension package\""}],"source_content_type":"text/x-python","patch_set":12,"id":"a92aacf2_21df2cb3","line":331,"updated":"2021-03-10 15:44:52.000000000","message":"THis try..except block is a repeating pattern, please add a helper for it","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"fdbbef154b7fad012737c0ac6883dd16fcce792f","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":330,"context_line":"        for manager in system.managers:"},{"line_number":331,"context_line":"            try:"},{"line_number":332,"context_line":"                oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":333,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"},{"line_number":334,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension package\""}],"source_content_type":"text/x-python","patch_set":12,"id":"8d210959_ac95cd69","line":331,"in_reply_to":"83fd75dd_0865a406","updated":"2021-03-18 13:19:35.000000000","message":"we will take a look at this separately. Need to investigate what can be reused across other patches and why need to iterate through managers. Currently, it\u0027s following the pattern established by virtual media boot that was first need for OEM extension.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        \"\"\""},{"line_number":329,"context_line":"        system \u003d redfish_utils.get_system(task.node)"},{"line_number":330,"context_line":"        for manager in system.managers:"},{"line_number":331,"context_line":"            try:"},{"line_number":332,"context_line":"                oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":333,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"},{"line_number":334,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension package\""}],"source_content_type":"text/x-python","patch_set":12,"id":"83fd75dd_0865a406","line":331,"in_reply_to":"a92aacf2_21df2cb3","updated":"2021-03-17 09:16:48.000000000","message":"Keeping the consistent with https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/drac/boot.py#L108\nNeed to discuss.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":89,"context_line":"_CLEAR_JOBS_CLEAN_STEPS \u003d [\u0027clear_job_queue\u0027, \u0027known_good_state\u0027]"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# IS iDRAC READY RETRY"},{"line_number":92,"context_line":"IDRAC_IS_READY_RETRIES \u003d 96"},{"line_number":93,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":94,"context_line":"IDRAC_READY_WAIT_TIME_SEC \u003d 30"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":97,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"0c661300_cf0ce323","line":94,"range":{"start_line":92,"start_character":0,"end_line":94,"end_character":30},"updated":"2021-03-18 17:30:04.000000000","message":"nit: I would *high* prefer to see these as a simplified configuration parameter which maybe explains the two phases of \"waiting for the bmc to reboot/reset and then be actually fully ready to accept work\".  That way it is easier to tune, especially if a future firmware update takes an extra 20 seconds or something as a configuration parameter is easy to change on-site. Backporting tuning changes and then shipping those to customers is extremely costly.","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":393,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":394,"context_line":"                LOG.debug(error_msg)"},{"line_number":395,"context_line":"                continue"},{"line_number":396,"context_line":"            drac_utils.wait_for_host(redfish_hostname)"},{"line_number":397,"context_line":"            time.sleep(IDRAC_READY_WAIT_TIME_SEC)"},{"line_number":398,"context_line":"            drac_utils.wait_until_idrac_is_ready("},{"line_number":399,"context_line":"                oem_manager,"},{"line_number":400,"context_line":"                redfish_hostname,"},{"line_number":401,"context_line":"                IDRAC_IS_READY_RETRIES,"},{"line_number":402,"context_line":"                IDRAC_IS_READY_RETRY_DELAY_SEC)"},{"line_number":403,"context_line":"            redfish_utils.wait_until_get_system_ready(task.node)"},{"line_number":404,"context_line":"            LOG.info(\"reset iDRAC success for %(node)s via OEM\","},{"line_number":405,"context_line":"                     {\u0027node\u0027: task.node.uuid})"},{"line_number":406,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":13,"id":"4de4a03f_6df5b008","line":403,"range":{"start_line":396,"start_character":0,"end_line":403,"end_character":64},"updated":"2021-03-18 17:30:04.000000000","message":"It seems like all of this can be combined into a single helper or a single wait until x call.","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":91,"context_line":"IDRAC_IS_READY_RETRY_DELAY_SEC \u003d 10"},{"line_number":92,"context_line":"IDRAC_READY_WAIT_TIME_SEC \u003d 30"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# IDRAC_RESET_TYPE"},{"line_number":95,"context_line":"IDRAC_RESET_TYPE \u003d \u0027force restart\u0027"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"11b37971_253ac747","line":94,"updated":"2021-03-25 15:50:04.000000000","message":"are these still used after all the changes?","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":321,"context_line":"        \"\"\"Clear the job queue."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":324,"context_line":"        :returns: None if it is completed."},{"line_number":325,"context_line":"        :raises: RedfishError on an error."},{"line_number":326,"context_line":"        \"\"\""},{"line_number":327,"context_line":"        system \u003d redfish_utils.get_system(task.node)"}],"source_content_type":"text/x-python","patch_set":17,"id":"4630df13_1f1c03a8","line":324,"range":{"start_line":324,"start_character":0,"end_line":324,"end_character":42},"updated":"2021-03-25 15:50:04.000000000","message":"such :returns: can be removed","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":365,"context_line":"        \"\"\"Reset the iDRAC."},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":368,"context_line":"        :returns: None if it is completed."},{"line_number":369,"context_line":"        :raises: RedfishError on an error."},{"line_number":370,"context_line":"        \"\"\""},{"line_number":371,"context_line":"        system \u003d redfish_utils.get_system(task.node)"}],"source_content_type":"text/x-python","patch_set":17,"id":"d3356f4d_277628e8","line":368,"range":{"start_line":368,"start_character":0,"end_line":368,"end_character":42},"updated":"2021-03-25 15:50:04.000000000","message":"ditto","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":410,"context_line":"        \"\"\"Reset the iDRAC, Clear the job queue."},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":413,"context_line":"        :returns: None if it is completed."},{"line_number":414,"context_line":"        :raises: RedfishError on an error."},{"line_number":415,"context_line":"        \"\"\""},{"line_number":416,"context_line":"        self.reset_idrac(task)"}],"source_content_type":"text/x-python","patch_set":17,"id":"0c592a4b_5f4c0e4f","line":413,"range":{"start_line":413,"start_character":8,"end_line":413,"end_character":42},"updated":"2021-03-25 15:50:04.000000000","message":"ditto","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017-2020 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"1e887113_ab9c621b","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":25},"updated":"2021-03-29 14:22:46.000000000","message":"nit: 2021","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2014 Red Hat, Inc."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"# Copyright (c) 2017-2020 Dell Inc. or its subsidiaries."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"5672e3c1_c169c26e","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":25},"in_reply_to":"1e887113_ab9c621b","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":310,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.clear_job_queue\u0027)"},{"line_number":311,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":312,"context_line":"    def clear_job_queue(self, task):"},{"line_number":313,"context_line":"        \"\"\"Clear the job queue."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":316,"context_line":"        :raises: RedfishError on an error."}],"source_content_type":"text/x-python","patch_set":20,"id":"60a1910a_3e8cbf10","line":313,"range":{"start_line":313,"start_character":17,"end_line":313,"end_character":20},"updated":"2021-03-29 14:22:46.000000000","message":"s/the/iDRAC/","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":310,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.clear_job_queue\u0027)"},{"line_number":311,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":312,"context_line":"    def clear_job_queue(self, task):"},{"line_number":313,"context_line":"        \"\"\"Clear the job queue."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":316,"context_line":"        :raises: RedfishError on an error."}],"source_content_type":"text/x-python","patch_set":20,"id":"d7cb7ec1_e66a7592","line":313,"range":{"start_line":313,"start_character":17,"end_line":313,"end_character":20},"in_reply_to":"60a1910a_3e8cbf10","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":322,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"},{"line_number":323,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension package\""},{"line_number":324,"context_line":"                               \"\u0027sushy-oem-idrac\u0027 failed for node %(node)s.\""},{"line_number":325,"context_line":"                               \"Ensure it is installed. Error: %(error)s\") %"},{"line_number":326,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":20,"id":"6d5bf26d_5333265a","line":323,"range":{"start_line":323,"start_character":70,"end_line":323,"end_character":71},"updated":"2021-03-29 14:22:46.000000000","message":"Please add a space before the closing double quote.\n\nThis applies elsewhere in this file.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":320,"context_line":"            try:"},{"line_number":321,"context_line":"                oem_manager \u003d manager.get_oem_extension(\u0027Dell\u0027)"},{"line_number":322,"context_line":"            except sushy.exceptions.OEMExtensionNotFoundError as e:"},{"line_number":323,"context_line":"                error_msg \u003d (_(\"Search for Sushy OEM extension package\""},{"line_number":324,"context_line":"                               \"\u0027sushy-oem-idrac\u0027 failed for node %(node)s.\""},{"line_number":325,"context_line":"                               \"Ensure it is installed. Error: %(error)s\") %"},{"line_number":326,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":20,"id":"499d14ae_7db6645f","line":323,"range":{"start_line":323,"start_character":70,"end_line":323,"end_character":71},"in_reply_to":"6d5bf26d_5333265a","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"80b1ab70_149c463a","line":332,"range":{"start_line":332,"start_character":46,"end_line":332,"end_character":49},"updated":"2021-03-29 14:22:46.000000000","message":"s/job/iDRAC job/","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"cae9862a_ca03ff56","line":332,"range":{"start_line":332,"start_character":46,"end_line":332,"end_character":49},"in_reply_to":"80b1ab70_149c463a","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff7eb435_8fc51ade","line":333,"range":{"start_line":333,"start_character":42,"end_line":333,"end_character":61},"updated":"2021-03-29 14:22:46.000000000","message":"This contains a couple of small punctuation issues.\n\ns/, Error : %(error)s/. Error: %(error)s/","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":20,"id":"b664bbb4_dbec44ff","line":333,"range":{"start_line":332,"start_character":29,"end_line":333,"end_character":62},"updated":"2021-03-29 14:22:46.000000000","message":"nit: Prefer use of single quotes, instead of double quotes, unless single quotes are used in the message content.\n\nThis applies elsewhere in this file.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":20,"id":"80b00d8a_87c11371","line":333,"range":{"start_line":332,"start_character":29,"end_line":333,"end_character":62},"in_reply_to":"b664bbb4_dbec44ff","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":20,"id":"7bbd2675_fe57ee91","line":333,"range":{"start_line":333,"start_character":42,"end_line":333,"end_character":61},"in_reply_to":"ff7eb435_8fc51ade","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"},{"line_number":337,"context_line":"            LOG.info(\"Cleared job queue for %(node)s via OEM\","}],"source_content_type":"text/x-python","patch_set":20,"id":"ef24844b_0d8745f1","line":334,"range":{"start_line":332,"start_character":1,"end_line":334,"end_character":66},"updated":"2021-03-29 14:22:46.000000000","message":"Is there a reason why this message does not provide the same amount of detail as boot.py\u0027s _set_boot_device()?\n\nThis applies elsewhere in this file.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            try:"},{"line_number":330,"context_line":"                oem_manager.job_service.delete_jobs(job_ids\u003d[\u0027JID_CLEARALL\u0027])"},{"line_number":331,"context_line":"            except sushy.exceptions.SushyError as e:"},{"line_number":332,"context_line":"                error_msg \u003d (\"Failed to clear job queue \""},{"line_number":333,"context_line":"                             \"for %(node)s, Error : %(error)s\" %"},{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"},{"line_number":337,"context_line":"            LOG.info(\"Cleared job queue for %(node)s via OEM\","}],"source_content_type":"text/x-python","patch_set":20,"id":"fa85754b_0ede82f9","line":334,"range":{"start_line":332,"start_character":1,"end_line":334,"end_character":66},"in_reply_to":"ef24844b_0d8745f1","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"},{"line_number":337,"context_line":"            LOG.info(\"Cleared job queue for %(node)s via OEM\","},{"line_number":338,"context_line":"                     {\u0027node\u0027: task.node.uuid})"},{"line_number":339,"context_line":"            break"},{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            error_msg \u003d (_(\u0027iDRAC Redfish clear job queue \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"15ad621d_00da461e","line":338,"range":{"start_line":337,"start_character":0,"end_line":338,"end_character":46},"updated":"2021-03-29 14:22:46.000000000","message":"To provide greater clarity and context, please change this to the following:\n\n    LOG.info(\u0027Cleared iDRAC job queue for node %(node)s\u0027, {\u0027node\u0027, task.node.uuid})","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":334,"context_line":"                             {\u0027node\u0027: task.node.uuid, \u0027error\u0027: e})"},{"line_number":335,"context_line":"                LOG.debug(error_msg)"},{"line_number":336,"context_line":"                continue"},{"line_number":337,"context_line":"            LOG.info(\"Cleared job queue for %(node)s via OEM\","},{"line_number":338,"context_line":"                     {\u0027node\u0027: task.node.uuid})"},{"line_number":339,"context_line":"            break"},{"line_number":340,"context_line":"        else:"},{"line_number":341,"context_line":"            error_msg \u003d (_(\u0027iDRAC Redfish clear job queue \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"670d9049_2b12aa95","line":338,"range":{"start_line":337,"start_character":0,"end_line":338,"end_character":46},"in_reply_to":"15ad621d_00da461e","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":378,"context_line":"                LOG.debug(error_msg)"},{"line_number":379,"context_line":"                continue"},{"line_number":380,"context_line":"            redfish_utils.wait_until_get_system_ready(task.node)"},{"line_number":381,"context_line":"            LOG.info(\"reset iDRAC success for %(node)s via OEM\","},{"line_number":382,"context_line":"                     {\u0027node\u0027: task.node.uuid})"},{"line_number":383,"context_line":"            break"},{"line_number":384,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"fb43bc70_189c5ffe","line":381,"range":{"start_line":381,"start_character":22,"end_line":381,"end_character":62},"updated":"2021-03-29 14:22:46.000000000","message":"This should be changed to the following:\n\n    Reset iDRAC for node %(node)s","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":378,"context_line":"                LOG.debug(error_msg)"},{"line_number":379,"context_line":"                continue"},{"line_number":380,"context_line":"            redfish_utils.wait_until_get_system_ready(task.node)"},{"line_number":381,"context_line":"            LOG.info(\"reset iDRAC success for %(node)s via OEM\","},{"line_number":382,"context_line":"                     {\u0027node\u0027: task.node.uuid})"},{"line_number":383,"context_line":"            break"},{"line_number":384,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"b2ce2e78_26dffb79","line":381,"range":{"start_line":381,"start_character":22,"end_line":381,"end_character":62},"in_reply_to":"fb43bc70_189c5ffe","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":397,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.known_good_state\u0027)"},{"line_number":398,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":399,"context_line":"    def known_good_state(self, task):"},{"line_number":400,"context_line":"        \"\"\"Reset the iDRAC, Clear the job queue."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":403,"context_line":"        :raises: RedfishError on an error."}],"source_content_type":"text/x-python","patch_set":20,"id":"724a239a_90dcd2cf","line":400,"range":{"start_line":400,"start_character":11,"end_line":400,"end_character":48},"updated":"2021-03-29 14:22:46.000000000","message":"It would be good if this docstring provided more information about the cleaning step. I believe it is used to auto-generate upstream documentation [1].\n \n    \"\"\"Place iDRAC in known good state\n\n    An iDRAC is placed in a known good state by resetting it and clearing its job queue.\n\n    ...\n    \"\"\"\n\n[1] https://docs.openstack.org/ironic/latest/admin/cleaning.html","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.known_good_state\u0027)"},{"line_number":398,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":399,"context_line":"    def known_good_state(self, task):"},{"line_number":400,"context_line":"        \"\"\"Reset the iDRAC, Clear the job queue."},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":403,"context_line":"        :raises: RedfishError on an error."}],"source_content_type":"text/x-python","patch_set":20,"id":"279af093_fa58898d","line":400,"range":{"start_line":400,"start_character":11,"end_line":400,"end_character":48},"in_reply_to":"724a239a_90dcd2cf","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":403,"context_line":"        :raises: RedfishError on an error."},{"line_number":404,"context_line":"        \"\"\""},{"line_number":405,"context_line":"        self.reset_idrac(task)"},{"line_number":406,"context_line":"        self.clear_job_queue(task)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"class DracWSManManagement(base.ManagementInterface):"}],"source_content_type":"text/x-python","patch_set":20,"id":"590e4485_90359b82","line":406,"updated":"2021-03-29 14:22:46.000000000","message":"To provide more context to the consumer, please add the following log. Otherwise, they may find it more difficult to associate the log messages output by the above two (2) calls with the execution of this cleaning step.\n\n    LOG.info(\u0027Placed iDRAC in known good state for node %(node)s\u0027, {\u0027node\u0027: task.node.uuid})","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        :raises: RedfishError on an error."},{"line_number":404,"context_line":"        \"\"\""},{"line_number":405,"context_line":"        self.reset_idrac(task)"},{"line_number":406,"context_line":"        self.clear_job_queue(task)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"class DracWSManManagement(base.ManagementInterface):"}],"source_content_type":"text/x-python","patch_set":20,"id":"97b9854b_5b78786e","line":406,"in_reply_to":"590e4485_90359b82","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"606f936054ba9c7139afb6bd93c1018cc59c9af8","unresolved":true,"context_lines":[{"line_number":306,"context_line":"    \"\"\"iDRAC Redfish interface for management-related actions."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    \"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.clear_job_queue\u0027)"},{"line_number":311,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":312,"context_line":"    def clear_job_queue(self, task):"},{"line_number":313,"context_line":"        \"\"\"Clear iDRAC job queue."}],"source_content_type":"text/x-python","patch_set":21,"id":"a1ceb05a_2beb5325","line":310,"range":{"start_line":309,"start_character":0,"end_line":310,"end_character":59},"updated":"2021-03-30 00:25:47.000000000","message":"assume that all timer settings are handled in the base class outside of this code.\nHad we tested when timer is expired for any of these 3 functions?","commit_id":"fe81a70e8c3af9a53308e1396ae1027ff7c634a2"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"6e9b4ce4666ed16d0d9d037df5f227d89c953f38","unresolved":true,"context_lines":[{"line_number":306,"context_line":"    \"\"\"iDRAC Redfish interface for management-related actions."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    \"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"    @METRICS.timer(\u0027DracRedfishManagement.clear_job_queue\u0027)"},{"line_number":311,"context_line":"    @base.clean_step(priority\u003d0)"},{"line_number":312,"context_line":"    def clear_job_queue(self, task):"},{"line_number":313,"context_line":"        \"\"\"Clear iDRAC job queue."}],"source_content_type":"text/x-python","patch_set":21,"id":"3f780fec_c507d425","line":310,"range":{"start_line":309,"start_character":0,"end_line":310,"end_character":59},"in_reply_to":"a1ceb05a_2beb5325","updated":"2021-03-30 15:53:17.000000000","message":"Need to discuss.","commit_id":"fe81a70e8c3af9a53308e1396ae1027ff7c634a2"}],"ironic/drivers/modules/drac/utils.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d1ea393faa97647683d8b6ff366f3a66d9a9b3fa","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    \"\"\"Waits until the iDRAC is in a ready state"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    :param host: The system hostname"},{"line_number":98,"context_line":"    :param oem_manager: Dell OEM extension object"},{"line_number":99,"context_line":"    :param retries: The number of times to check if the iDRAC is"},{"line_number":100,"context_line":"                    ready."},{"line_number":101,"context_line":"    :param retry_delay: The number of seconds to wait between"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_25eb8812","line":98,"updated":"2020-05-06 21:31:20.000000000","message":"Can you reverse the order of the above 2 lines so they are in the same order as the parameters to the method?","commit_id":"9e9610eddf768bf472cf7942dbbd0112c15add68"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    response \u003d subprocess.call("},{"line_number":29,"context_line":"        \"ping -c 1 {} 2\u003e\u00261 1\u003e/dev/null\".format(host), shell\u003dTrue)"},{"line_number":30,"context_line":"    return response \u003d\u003d 0"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d8bd9704","line":29,"range":{"start_line":29,"start_character":54,"end_line":29,"end_character":64},"updated":"2020-09-29 14:52:49.000000000","message":"please avoid shell (there\u0027s no real need for the redirection)","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    response \u003d subprocess.call("},{"line_number":29,"context_line":"        \"ping -c 1 {} 2\u003e\u00261 1\u003e/dev/null\".format(host), shell\u003dTrue)"},{"line_number":30,"context_line":"    return response \u003d\u003d 0"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_b52377aa","line":29,"range":{"start_line":29,"start_character":54,"end_line":29,"end_character":64},"in_reply_to":"9f560f44_d8bd9704","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        ping_type \u003d \"pingable\""},{"line_number":39,"context_line":"    else:"},{"line_number":40,"context_line":"        ping_type \u003d \"not pingable\""},{"line_number":41,"context_line":"    LOG.info(\"Waiting for the iDRAC %(node)s to become %(ping_type)s\","},{"line_number":42,"context_line":"             {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":43,"context_line":"    response_count \u003d 0"},{"line_number":44,"context_line":"    state_reached \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_b83c2393","line":41,"updated":"2020-09-29 14:52:49.000000000","message":"debug","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        ping_type \u003d \"pingable\""},{"line_number":39,"context_line":"    else:"},{"line_number":40,"context_line":"        ping_type \u003d \"not pingable\""},{"line_number":41,"context_line":"    LOG.info(\"Waiting for the iDRAC %(node)s to become %(ping_type)s\","},{"line_number":42,"context_line":"             {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":43,"context_line":"    response_count \u003d 0"},{"line_number":44,"context_line":"    state_reached \u003d False"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d5226ba3","line":41,"in_reply_to":"9f560f44_b83c2393","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if response_count \u003d\u003d ping_count:"},{"line_number":55,"context_line":"                LOG.debug(\"Reached specified ping count for node %(node)s\","},{"line_number":56,"context_line":"                          {\u0027node\u0027: host})"},{"line_number":57,"context_line":"                state_reached \u003d True"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            response_count \u003d 0"},{"line_number":60,"context_line":"            if alive:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_98283f34","line":57,"updated":"2020-09-29 14:52:49.000000000","message":"just\n\n return True\n\notherwise you\u0027ll reach the sleep in the end","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            if response_count \u003d\u003d ping_count:"},{"line_number":55,"context_line":"                LOG.debug(\"Reached specified ping count for node %(node)s\","},{"line_number":56,"context_line":"                          {\u0027node\u0027: host})"},{"line_number":57,"context_line":"                state_reached \u003d True"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            response_count \u003d 0"},{"line_number":60,"context_line":"            if alive:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_353767e7","line":57,"in_reply_to":"9f560f44_98283f34","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                     \"not pingable\" % host)"},{"line_number":78,"context_line":"        LOG.error(error_msg)"},{"line_number":79,"context_line":"        raise exceptions.DRACOperationFailed(drac_messages\u003derror_msg)"},{"line_number":80,"context_line":"    LOG.info(\"The iDRAC for node %(node)s is not pingable\", {\u0027node\u0027: host})"},{"line_number":81,"context_line":"    state_reached \u003d wait_for_host_state("},{"line_number":82,"context_line":"        host,"},{"line_number":83,"context_line":"        alive\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_18fb8fbe","line":80,"updated":"2020-09-29 14:52:49.000000000","message":"s/info/debug/ and maybe it\u0027s redundant with logging inside wait_for_host_state","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                     \"not pingable\" % host)"},{"line_number":78,"context_line":"        LOG.error(error_msg)"},{"line_number":79,"context_line":"        raise exceptions.DRACOperationFailed(drac_messages\u003derror_msg)"},{"line_number":80,"context_line":"    LOG.info(\"The iDRAC for node %(node)s is not pingable\", {\u0027node\u0027: host})"},{"line_number":81,"context_line":"    state_reached \u003d wait_for_host_state("},{"line_number":82,"context_line":"        host,"},{"line_number":83,"context_line":"        alive\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_1534e3de","line":80,"in_reply_to":"9f560f44_18fb8fbe","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                     \"pingable\", {\u0027node\u0027: host})"},{"line_number":89,"context_line":"        LOG.error(error_msg)"},{"line_number":90,"context_line":"        raise exceptions.DRACOperationFailed(drac_messages\u003derror_msg)"},{"line_number":91,"context_line":"    LOG.info(\"The iDRAC for node %(node)s is pingable\", {\u0027node\u0027: host})"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def wait_until_idrac_is_ready(oem_manager, host, retries, retry_delay):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_18142fe9","line":91,"updated":"2020-09-29 14:52:49.000000000","message":"s/info/debug/","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                     \"pingable\", {\u0027node\u0027: host})"},{"line_number":89,"context_line":"        LOG.error(error_msg)"},{"line_number":90,"context_line":"        raise exceptions.DRACOperationFailed(drac_messages\u003derror_msg)"},{"line_number":91,"context_line":"    LOG.info(\"The iDRAC for node %(node)s is pingable\", {\u0027node\u0027: host})"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def wait_until_idrac_is_ready(oem_manager, host, retries, retry_delay):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_7531dfed","line":91,"in_reply_to":"9f560f44_18142fe9","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                        retries."},{"line_number":103,"context_line":"    \"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    while retries \u003e 0:"},{"line_number":106,"context_line":"        LOG.debug(\"Checking to see if the iDRAC for node %(node)s is ready\","},{"line_number":107,"context_line":"                  {\u0027node\u0027: host})"},{"line_number":108,"context_line":"        if oem_manager.lc_service.is_idrac_ready():"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_78ce0b90","line":105,"updated":"2020-09-29 14:52:49.000000000","message":"maybe use the retrying library?","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                        retries."},{"line_number":103,"context_line":"    \"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    while retries \u003e 0:"},{"line_number":106,"context_line":"        LOG.debug(\"Checking to see if the iDRAC for node %(node)s is ready\","},{"line_number":107,"context_line":"                  {\u0027node\u0027: host})"},{"line_number":108,"context_line":"        if oem_manager.lc_service.is_idrac_ready():"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_9584735f","line":105,"in_reply_to":"9f560f44_78ce0b90","updated":"2020-09-30 16:19:27.000000000","message":"Keeping consistent with python-dracclient code\n\nhttps://github.com/openstack/python-dracclient/blob/master/dracclient/client.py#L1354","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    response \u003d subprocess.call([\"ping\", \"-c\", \"1\", host])"},{"line_number":29,"context_line":"    return response \u003d\u003d 0"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"4fb8790d_52371472","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":20},"updated":"2021-02-22 12:11:45.000000000","message":"add docstring","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    response \u003d subprocess.call([\"ping\", \"-c\", \"1\", host])"},{"line_number":29,"context_line":"    return response \u003d\u003d 0"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a5e7f51_dbd281c9","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":20},"in_reply_to":"4fb8790d_52371472","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":29,"context_line":"    return response \u003d\u003d 0"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def wait_for_host_state(host,"},{"line_number":33,"context_line":"                        alive\u003dTrue,"},{"line_number":34,"context_line":"                        ping_count\u003d3,"},{"line_number":35,"context_line":"                        retries\u003d24):"}],"source_content_type":"text/x-python","patch_set":8,"id":"324b9b34_fd424993","line":32,"updated":"2021-02-22 12:11:45.000000000","message":"add docstring","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    return response \u003d\u003d 0"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def wait_for_host_state(host,"},{"line_number":33,"context_line":"                        alive\u003dTrue,"},{"line_number":34,"context_line":"                        ping_count\u003d3,"},{"line_number":35,"context_line":"                        retries\u003d24):"}],"source_content_type":"text/x-python","patch_set":8,"id":"77a64a08_c17d3109","line":32,"in_reply_to":"324b9b34_fd424993","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":41,"context_line":"              {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":42,"context_line":"    response_count \u003d 0"},{"line_number":43,"context_line":"    state_reached \u003d False"},{"line_number":44,"context_line":"    while retries \u003e 0 and not state_reached:"},{"line_number":45,"context_line":"        response \u003d ping_host(host)"},{"line_number":46,"context_line":"        retries -\u003d 1"},{"line_number":47,"context_line":"        if response \u003d\u003d alive:"}],"source_content_type":"text/x-python","patch_set":8,"id":"f57b5c3e_0804d14e","line":44,"range":{"start_line":44,"start_character":30,"end_line":44,"end_character":43},"updated":"2021-02-22 12:11:45.000000000","message":"where does it change this value inside loop? Does it ever have True assigned?\nCurrently, it looks that this variable and condition can be removed and on line 66 have `return False`","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"              {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":42,"context_line":"    response_count \u003d 0"},{"line_number":43,"context_line":"    state_reached \u003d False"},{"line_number":44,"context_line":"    while retries \u003e 0 and not state_reached:"},{"line_number":45,"context_line":"        response \u003d ping_host(host)"},{"line_number":46,"context_line":"        retries -\u003d 1"},{"line_number":47,"context_line":"        if response \u003d\u003d alive:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fba974a_8ce33b12","line":44,"range":{"start_line":44,"start_character":30,"end_line":44,"end_character":43},"in_reply_to":"f57b5c3e_0804d14e","updated":"2021-03-02 09:26:35.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":66,"context_line":"    return state_reached"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def wait_for_host(host):"},{"line_number":70,"context_line":"    LOG.debug(\"iDRAC was reset for node %(node)s,\""},{"line_number":71,"context_line":"              \"waiting for return to operational state\", {\u0027node\u0027: host})"},{"line_number":72,"context_line":"    state_reached \u003d wait_for_host_state("}],"source_content_type":"text/x-python","patch_set":8,"id":"5f3c9ed8_d191013b","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":24},"updated":"2021-02-22 12:11:45.000000000","message":"add docstring","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return state_reached"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def wait_for_host(host):"},{"line_number":70,"context_line":"    LOG.debug(\"iDRAC was reset for node %(node)s,\""},{"line_number":71,"context_line":"              \"waiting for return to operational state\", {\u0027node\u0027: host})"},{"line_number":72,"context_line":"    state_reached \u003d wait_for_host_state("}],"source_content_type":"text/x-python","patch_set":8,"id":"eac5658d_b6b61343","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":24},"in_reply_to":"4bf5a464_9c95455a","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":66,"context_line":"    return state_reached"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def wait_for_host(host):"},{"line_number":70,"context_line":"    LOG.debug(\"iDRAC was reset for node %(node)s,\""},{"line_number":71,"context_line":"              \"waiting for return to operational state\", {\u0027node\u0027: host})"},{"line_number":72,"context_line":"    state_reached \u003d wait_for_host_state("}],"source_content_type":"text/x-python","patch_set":8,"id":"4bf5a464_9c95455a","line":69,"range":{"start_line":69,"start_character":0,"end_line":69,"end_character":24},"in_reply_to":"5f3c9ed8_d191013b","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":90,"context_line":"    LOG.debug(\"The iDRAC for node %(node)s is pingable\", {\u0027node\u0027: host})"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def wait_until_idrac_is_ready(oem_manager, host, retries, retry_delay):"},{"line_number":94,"context_line":"    \"\"\"Waits until the iDRAC is in a ready state"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    :param oem_manager: Dell OEM extension object"}],"source_content_type":"text/x-python","patch_set":8,"id":"6451481e_d72edbd1","line":93,"range":{"start_line":93,"start_character":58,"end_line":93,"end_character":69},"updated":"2021-02-22 12:11:45.000000000","message":"add seconds to be clear - retry_delay_sec","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"    LOG.debug(\"The iDRAC for node %(node)s is pingable\", {\u0027node\u0027: host})"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def wait_until_idrac_is_ready(oem_manager, host, retries, retry_delay):"},{"line_number":94,"context_line":"    \"\"\"Waits until the iDRAC is in a ready state"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    :param oem_manager: Dell OEM extension object"}],"source_content_type":"text/x-python","patch_set":8,"id":"ce345cf0_4d083c83","line":93,"range":{"start_line":93,"start_character":58,"end_line":93,"end_character":69},"in_reply_to":"53f8f3b1_52264914","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":90,"context_line":"    LOG.debug(\"The iDRAC for node %(node)s is pingable\", {\u0027node\u0027: host})"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"def wait_until_idrac_is_ready(oem_manager, host, retries, retry_delay):"},{"line_number":94,"context_line":"    \"\"\"Waits until the iDRAC is in a ready state"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    :param oem_manager: Dell OEM extension object"}],"source_content_type":"text/x-python","patch_set":8,"id":"53f8f3b1_52264914","line":93,"range":{"start_line":93,"start_character":58,"end_line":93,"end_character":69},"in_reply_to":"6451481e_d72edbd1","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    \"\"\"ping the iDRAC ip for given host"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    :param host: The system hostname."},{"line_number":31,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"20e32af2_e78800a0","line":28,"range":{"start_line":28,"start_character":7,"end_line":28,"end_character":11},"updated":"2021-03-02 09:26:35.000000000","message":"nit: Start with uppercase, same in other added docstrings.","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def ping_host(host):"},{"line_number":28,"context_line":"    \"\"\"ping the iDRAC ip for given host"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    :param host: The system hostname."},{"line_number":31,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ef2f0b36_febe43ec","line":28,"range":{"start_line":28,"start_character":7,"end_line":28,"end_character":11},"in_reply_to":"20e32af2_e78800a0","updated":"2021-03-03 10:53:19.000000000","message":"Done","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def wait_for_host_state(host,"},{"line_number":37,"context_line":"                        alive\u003dTrue,"},{"line_number":38,"context_line":"                        ping_count\u003d3,"},{"line_number":39,"context_line":"                        retries\u003d24):"},{"line_number":40,"context_line":"    \"\"\"Waits for host state to become pingable or not pingable"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    :param host: The system hostname."}],"source_content_type":"text/x-python","patch_set":12,"id":"a99ccd74_baf96469","line":39,"updated":"2021-03-10 15:44:52.000000000","message":"maybe make these configurable?","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def wait_for_host_state(host,"},{"line_number":37,"context_line":"                        alive\u003dTrue,"},{"line_number":38,"context_line":"                        ping_count\u003d3,"},{"line_number":39,"context_line":"                        retries\u003d24):"},{"line_number":40,"context_line":"    \"\"\"Waits for host state to become pingable or not pingable"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    :param host: The system hostname."}],"source_content_type":"text/x-python","patch_set":12,"id":"e5b0a161_ac05dea5","line":39,"in_reply_to":"a99ccd74_baf96469","updated":"2021-03-17 09:16:48.000000000","message":"You mean use constants?","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"fdbbef154b7fad012737c0ac6883dd16fcce792f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"def wait_for_host_state(host,"},{"line_number":37,"context_line":"                        alive\u003dTrue,"},{"line_number":38,"context_line":"                        ping_count\u003d3,"},{"line_number":39,"context_line":"                        retries\u003d24):"},{"line_number":40,"context_line":"    \"\"\"Waits for host state to become pingable or not pingable"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    :param host: The system hostname."}],"source_content_type":"text/x-python","patch_set":12,"id":"0e76f3b1_5a69ecd1","line":39,"in_reply_to":"e5b0a161_ac05dea5","updated":"2021-03-18 13:19:35.000000000","message":"Can look at this in future, but for now rather not introduce new configurable settings. These values are based on input from iDRAC firmware team and have been used in python-dracclient[1].\n\n[1] https://github.com/openstack/python-dracclient/blob/3e52db051151237a0348ed146b537a862c442d0b/dracclient/client.py#L283","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    LOG.debug(\"Waiting for the iDRAC %(node)s to become %(ping_type)s\","},{"line_number":52,"context_line":"              {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":53,"context_line":"    response_count \u003d 0"},{"line_number":54,"context_line":"    while retries \u003e 0:"},{"line_number":55,"context_line":"        response \u003d ping_host(host)"},{"line_number":56,"context_line":"        retries -\u003d 1"},{"line_number":57,"context_line":"        if response \u003d\u003d alive:"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a09b31a_79a73963","line":54,"updated":"2021-03-10 15:44:52.000000000","message":"Please use tenacity instead of custom retries","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    LOG.debug(\"Waiting for the iDRAC %(node)s to become %(ping_type)s\","},{"line_number":52,"context_line":"              {\u0027node\u0027: host, \u0027ping_type\u0027: ping_type})"},{"line_number":53,"context_line":"    response_count \u003d 0"},{"line_number":54,"context_line":"    while retries \u003e 0:"},{"line_number":55,"context_line":"        response \u003d ping_host(host)"},{"line_number":56,"context_line":"        retries -\u003d 1"},{"line_number":57,"context_line":"        if response \u003d\u003d alive:"}],"source_content_type":"text/x-python","patch_set":12,"id":"89228379_0547aa00","line":54,"in_reply_to":"5a09b31a_79a73963","updated":"2021-03-17 09:16:48.000000000","message":"Need to discuss","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            else:"},{"line_number":73,"context_line":"                LOG.debug(\"The iDRAC for node %(node)s is still pingable\","},{"line_number":74,"context_line":"                          {\u0027node\u0027: host})"},{"line_number":75,"context_line":"        time.sleep(10)"},{"line_number":76,"context_line":"    return False"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"db4e440e_38d595a3","line":75,"updated":"2021-03-10 15:44:52.000000000","message":"and this","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    :param host: The system hostname."},{"line_number":31,"context_line":"    \"\"\""},{"line_number":32,"context_line":"    response \u003d subprocess.call([\"ping\", \"-c\", \"1\", host])"},{"line_number":33,"context_line":"    return response \u003d\u003d 0"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"4dc7fd06_d3afc3f9","line":32,"range":{"start_line":32,"start_character":4,"end_line":32,"end_character":57},"updated":"2021-03-18 17:30:04.000000000","message":"Some ping implementations need timeout to be defined or they can hang. I consider this kind of risky and there is no guarantee that network firewalls may allow ICMP Echo-Request to the BMC. It is likely best to just try the TCP socket to the BMC and costs us less in terms of executing an external program versus a native python call on a tcp socket.\n\nFor what it is worth, I think about 30% of the deployments we see elevated security measures and filtering of traffic between controllers and the BMC. Most likely, they will find ironic requiring ping to be unacceptable from a risk management perspective should the infrastructure have an active attacker as pings can aid in recon to pivot an attack.","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":72,"context_line":"            else:"},{"line_number":73,"context_line":"                LOG.debug(\"The iDRAC for node %(node)s is still pingable\","},{"line_number":74,"context_line":"                          {\u0027node\u0027: host})"},{"line_number":75,"context_line":"        time.sleep(10)"},{"line_number":76,"context_line":"    return False"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"853ae46e_208289ec","line":75,"range":{"start_line":75,"start_character":0,"end_line":75,"end_character":22},"updated":"2021-03-18 17:30:04.000000000","message":"Why do we need a 10 second timeout? Why do we need a 10 second timeout encoded in the code?","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":92,"context_line":"        LOG.error(error_msg)"},{"line_number":93,"context_line":"        raise exceptions.DRACOperationFailed(drac_messages\u003derror_msg)"},{"line_number":94,"context_line":"    LOG.debug(\"The iDRAC for node %(node)s is not pingable\", {\u0027node\u0027: host})"},{"line_number":95,"context_line":"    state_reached \u003d wait_for_host_state("},{"line_number":96,"context_line":"        host,"},{"line_number":97,"context_line":"        alive\u003dTrue,"},{"line_number":98,"context_line":"        ping_count\u003d3,"},{"line_number":99,"context_line":"        retries\u003d24)"},{"line_number":100,"context_line":"    if not state_reached:"},{"line_number":101,"context_line":"        error_msg \u003d (\"Timed out waiting iDRAC for node %(node)s to become \""},{"line_number":102,"context_line":"                     \"pingable\", {\u0027node\u0027: host})"}],"source_content_type":"text/x-python","patch_set":13,"id":"a4e3b2ef_4991a337","line":99,"range":{"start_line":95,"start_character":0,"end_line":99,"end_character":19},"updated":"2021-03-18 17:30:04.000000000","message":"Lets move away from using ping and use http or even tcp sockets to check the BMC if it is alive or not. Those clients have appropriate retry logic and are python native versus executing an external program which some may find not available or possible to really use.","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5143dd338959885f475dcce911043de4a53d35fd","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        LOG.debug(\"The iDRAC for node %(node)s is not ready\", {\u0027node\u0027: host})"},{"line_number":126,"context_line":"        retries -\u003d 1"},{"line_number":127,"context_line":"        if retries \u003e 0:"},{"line_number":128,"context_line":"            time.sleep(retry_delay_sec)"},{"line_number":129,"context_line":"    if retries \u003d\u003d 0:"},{"line_number":130,"context_line":"        error_msg \u003d (\"Timed out waiting iDRAC for node %(node)s \""},{"line_number":131,"context_line":"                     \"to become ready after reset\", {\u0027node\u0027: host})"}],"source_content_type":"text/x-python","patch_set":13,"id":"12c525ae_c8181618","line":128,"updated":"2021-03-18 17:30:04.000000000","message":"it really seems like you could use retrying, and just retry on ConnectionError exception and solve almost all of this code complexity in a fairly simple action.","commit_id":"4d0703c52e17a42e86797588f23e64176742ce2d"}],"ironic/drivers/modules/redfish/utils.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"7cfb4f9de6dacd8d6335426ea8c10408348ed268","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            if CONF.redfish.connection_cache_size:"},{"line_number":206,"context_line":"                self.__class__._sessions[self._session_key] \u003d conn"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"                if (len(self.__class__._sessions) \u003e"},{"line_number":209,"context_line":"                        CONF.redfish.connection_cache_size):"},{"line_number":210,"context_line":"                    self._expire_oldest_session()"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_67a5d0b5","line":208,"updated":"2020-04-21 15:06:50.000000000","message":"pep8: W504 line break after binary operator","commit_id":"f49921db6a9536b39dc0fe2ef70819f079a393cd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"@retrying.retry("},{"line_number":299,"context_line":"    retry_on_exception\u003dlambda exception: isinstance(exception, Exception),"},{"line_number":300,"context_line":"    stop_max_attempt_number\u003d60,"},{"line_number":301,"context_line":"    wait_fixed\u003d1 * 1000)"},{"line_number":302,"context_line":"def wait_until_get_system_ready(node):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f8921ba0","line":299,"updated":"2020-09-29 14:52:49.000000000","message":"please use a specific exception","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"@retrying.retry("},{"line_number":299,"context_line":"    retry_on_exception\u003dlambda exception: isinstance(exception, Exception),"},{"line_number":300,"context_line":"    stop_max_attempt_number\u003d60,"},{"line_number":301,"context_line":"    wait_fixed\u003d1 * 1000)"},{"line_number":302,"context_line":"def wait_until_get_system_ready(node):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_350e4733","line":299,"in_reply_to":"9f560f44_f8921ba0","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8fef40f09df694335f751ebb0361e93b4e61b1c7","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            return conn.get_system(system_id)"},{"line_number":308,"context_line":"    except exception.RedfishConnectionError as e:"},{"line_number":309,"context_line":"        err_msg \u003d (\"System is not ready for node %(node)s, with error\""},{"line_number":310,"context_line":"                   \"%(error)s, so retrying it\","},{"line_number":311,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":312,"context_line":"        LOG.warning(err_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_58e98717","line":310,"updated":"2020-09-29 14:52:49.000000000","message":"You\u0027re hiding the exception, the retry won\u0027t happen.","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"83a7b8009b039c266530fa10fe106a516e6a505e","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            return conn.get_system(system_id)"},{"line_number":308,"context_line":"    except exception.RedfishConnectionError as e:"},{"line_number":309,"context_line":"        err_msg \u003d (\"System is not ready for node %(node)s, with error\""},{"line_number":310,"context_line":"                   \"%(error)s, so retrying it\","},{"line_number":311,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":312,"context_line":"        LOG.warning(err_msg)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_7518bf75","line":310,"in_reply_to":"9f560f44_58e98717","updated":"2020-09-30 16:19:27.000000000","message":"Done","commit_id":"ec815b2bc064ecbbe76d9f4341c9f82180d90582"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":299,"context_line":"    retry_on_exception\u003dlambda e: isinstance(e, exception.BadRequest),"},{"line_number":300,"context_line":"    stop_max_attempt_number\u003d60,"},{"line_number":301,"context_line":"    wait_fixed\u003d1 * 1000)"},{"line_number":302,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":303,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":304,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"},{"line_number":305,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"28b50523_a0ed6303","line":302,"range":{"start_line":302,"start_character":0,"end_line":302,"end_character":38},"updated":"2021-02-22 12:11:45.000000000","message":"add docstring","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":299,"context_line":"    retry_on_exception\u003dlambda e: isinstance(e, exception.BadRequest),"},{"line_number":300,"context_line":"    stop_max_attempt_number\u003d60,"},{"line_number":301,"context_line":"    wait_fixed\u003d1 * 1000)"},{"line_number":302,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":303,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":304,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"},{"line_number":305,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"67db2ac0_7918f179","line":302,"range":{"start_line":302,"start_character":0,"end_line":302,"end_character":38},"in_reply_to":"1ec7efa6_ce777e45","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":299,"context_line":"    retry_on_exception\u003dlambda e: isinstance(e, exception.BadRequest),"},{"line_number":300,"context_line":"    stop_max_attempt_number\u003d60,"},{"line_number":301,"context_line":"    wait_fixed\u003d1 * 1000)"},{"line_number":302,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":303,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":304,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"},{"line_number":305,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ec7efa6_ce777e45","line":302,"range":{"start_line":302,"start_character":0,"end_line":302,"end_character":38},"in_reply_to":"28b50523_a0ed6303","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":340,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":341,"context_line":"    reraise\u003dTrue)"},{"line_number":342,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":343,"context_line":"    \"\"\"waits until redfish System ready."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    :param node: an Ironic node object"},{"line_number":346,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"a6553cd5_d8978c44","line":343,"range":{"start_line":343,"start_character":7,"end_line":343,"end_character":12},"updated":"2021-03-02 09:26:35.000000000","message":"nit: Uppercase","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"@tenacity.retry("},{"line_number":337,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":338,"context_line":"        exception.BadRequest),"},{"line_number":339,"context_line":"    stop\u003dtenacity.stop_after_attempt(CONF.redfish.connection_attempts),"},{"line_number":340,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":341,"context_line":"    reraise\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"91758c90_88d29e36","line":338,"updated":"2021-03-10 15:44:52.000000000","message":"Bad request is not a retriable error and should not be retried.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ccd50b69196d5255e1c59e5b1a6d123ae7ee55","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"@tenacity.retry("},{"line_number":337,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":338,"context_line":"        exception.BadRequest),"},{"line_number":339,"context_line":"    stop\u003dtenacity.stop_after_attempt(CONF.redfish.connection_attempts),"},{"line_number":340,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":341,"context_line":"    reraise\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9261bc3d_477deb85","line":338,"in_reply_to":"91758c90_88d29e36","updated":"2021-03-15 14:41:10.000000000","message":"++ BadRequest should be \"full stop\"\n\nI think if we need to keep the logic, then we need a note explaining why","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"@tenacity.retry("},{"line_number":337,"context_line":"    retry\u003dtenacity.retry_if_exception_type("},{"line_number":338,"context_line":"        exception.BadRequest),"},{"line_number":339,"context_line":"    stop\u003dtenacity.stop_after_attempt(CONF.redfish.connection_attempts),"},{"line_number":340,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":341,"context_line":"    reraise\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":12,"id":"e851ca48_977d3b17","line":338,"in_reply_to":"9261bc3d_477deb85","updated":"2021-03-17 09:16:48.000000000","message":"Done. Added RedfishConnectionError exception.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"506c8b37_0a834aa7","line":2,"updated":"2021-03-29 14:22:46.000000000","message":"Add the following:\n\n# Copyright (c) 2021 Dell Inc. or its subsidiaries.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":20,"id":"2911ca0a_70db558d","line":2,"in_reply_to":"506c8b37_0a834aa7","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":381,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":382,"context_line":"    reraise\u003dTrue)"},{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"f6896437_5e0c1e09","line":384,"range":{"start_line":384,"start_character":7,"end_line":384,"end_character":39},"updated":"2021-03-29 14:22:46.000000000","message":"Wait until Redfish system is ready.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":382,"context_line":"    reraise\u003dTrue)"},{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":20,"id":"7b1f5010_0efb8890","line":384,"range":{"start_line":384,"start_character":7,"end_line":384,"end_character":39},"in_reply_to":"f6896437_5e0c1e09","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""},{"line_number":388,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":389,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"8b60332a_1b086454","line":386,"updated":"2021-03-29 14:22:46.000000000","message":"Add the following:\n\n    :raises: RedfishConnectionError on time out.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""},{"line_number":388,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":389,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"bfc1b992_4f8e84a2","line":386,"range":{"start_line":386,"start_character":17,"end_line":386,"end_character":38},"updated":"2021-03-29 14:22:46.000000000","message":"node with Redfish ComputerSystem resource","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""},{"line_number":388,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":389,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"d6ec5d0e_0515f6b5","line":386,"in_reply_to":"8b60332a_1b086454","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":383,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":384,"context_line":"    \"\"\"Waits until redfish system ready."},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    :param node: an Ironic node object"},{"line_number":387,"context_line":"    \"\"\""},{"line_number":388,"context_line":"    driver_info \u003d parse_driver_info(node)"},{"line_number":389,"context_line":"    system_id \u003d driver_info[\u0027system_id\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"5feacc83_42963f19","line":386,"range":{"start_line":386,"start_character":17,"end_line":386,"end_character":38},"in_reply_to":"bfc1b992_4f8e84a2","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"01670684ea935de5901e5746558003eb43c07fd7","unresolved":true,"context_lines":[{"line_number":392,"context_line":"    try:"},{"line_number":393,"context_line":"        with SessionCache(driver_info) as conn:"},{"line_number":394,"context_line":"            return conn.get_system(system_id)"},{"line_number":395,"context_line":"    except exception.RedfishConnectionError as e:"},{"line_number":396,"context_line":"        err_msg \u003d (\"System is not ready for node %(node)s, with error\""},{"line_number":397,"context_line":"                   \"%(error)s, so retrying it\","},{"line_number":398,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":22,"id":"119ce60e_635a5ef2","line":395,"range":{"start_line":395,"start_character":11,"end_line":395,"end_character":43},"updated":"2021-03-30 12:40:50.000000000","message":"This should be changed to sushy.exception.BadRequest.","commit_id":"23877dd0edf3df85431632d0668a37e194537b57"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"6e9b4ce4666ed16d0d9d037df5f227d89c953f38","unresolved":true,"context_lines":[{"line_number":392,"context_line":"    try:"},{"line_number":393,"context_line":"        with SessionCache(driver_info) as conn:"},{"line_number":394,"context_line":"            return conn.get_system(system_id)"},{"line_number":395,"context_line":"    except exception.RedfishConnectionError as e:"},{"line_number":396,"context_line":"        err_msg \u003d (\"System is not ready for node %(node)s, with error\""},{"line_number":397,"context_line":"                   \"%(error)s, so retrying it\","},{"line_number":398,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":22,"id":"0ad8df2d_63823f1f","line":395,"range":{"start_line":395,"start_character":11,"end_line":395,"end_character":43},"in_reply_to":"119ce60e_635a5ef2","updated":"2021-03-30 15:53:17.000000000","message":"Done.","commit_id":"23877dd0edf3df85431632d0668a37e194537b57"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"34836141569fb6e8e54eb34058778194f79624a1","unresolved":true,"context_lines":[{"line_number":384,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":385,"context_line":"    \"\"\"Wait until Redfish system is ready."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    :param node: node with Redfish ComputerSystem resource."},{"line_number":388,"context_line":"    :raises: RedfishConnectionError on time out."},{"line_number":389,"context_line":"    \"\"\""},{"line_number":390,"context_line":"    driver_info \u003d parse_driver_info(node)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a6f38d0_ae48c6b2","line":387,"updated":"2021-03-30 17:16:07.000000000","message":"so this really should have been a node object....","commit_id":"83492daef94a6f69dcc854accdbf944e6c2606b7"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"57e56e0e8a5c8275f8327d3f1fd604b706881a08","unresolved":false,"context_lines":[{"line_number":384,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":385,"context_line":"    \"\"\"Wait until Redfish system is ready."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    :param node: node with Redfish ComputerSystem resource."},{"line_number":388,"context_line":"    :raises: RedfishConnectionError on time out."},{"line_number":389,"context_line":"    \"\"\""},{"line_number":390,"context_line":"    driver_info \u003d parse_driver_info(node)"}],"source_content_type":"text/x-python","patch_set":24,"id":"65e71804_8b09a174","line":387,"in_reply_to":"7a6f38d0_ae48c6b2","updated":"2021-03-31 02:38:28.000000000","message":"Done","commit_id":"83492daef94a6f69dcc854accdbf944e6c2606b7"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"ece761178908c683856a9793cf2d48687a559b78","unresolved":true,"context_lines":[{"line_number":381,"context_line":"    stop\u003dtenacity.stop_after_attempt(CONF.redfish.connection_attempts),"},{"line_number":382,"context_line":"    wait\u003dtenacity.wait_fixed(CONF.redfish.connection_retry_interval),"},{"line_number":383,"context_line":"    reraise\u003dTrue)"},{"line_number":384,"context_line":"def wait_until_get_system_ready(node):"},{"line_number":385,"context_line":"    \"\"\"Wait until Redfish system is ready."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"    :param node: an Ironic node object"}],"source_content_type":"text/x-python","patch_set":25,"id":"b81c0575_ee640d3d","line":384,"range":{"start_line":384,"start_character":3,"end_line":384,"end_character":32},"updated":"2021-03-31 08:30:16.000000000","message":"this needs unit tests, can do as follow up","commit_id":"7ca3c9c1e321d3019017c7a354a3346f02a9346a"}],"ironic/tests/unit/drivers/modules/drac/test_management.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DRAC_REDFISH_INFO_DICT \u003d db_utils.get_test_redfish_info()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfad9121_21680e64","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":57},"updated":"2021-02-22 12:11:45.000000000","message":"instead of this, I would add necessary Redfish info to get_test_drac_info, like it\u0027s done here [1]\n\n[1] https://review.opendev.org/c/openstack/ironic/+/759428/3/ironic/tests/unit/db/utils.py","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DRAC_REDFISH_INFO_DICT \u003d db_utils.get_test_redfish_info()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"6e67a73b_c96521e7","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":57},"in_reply_to":"612a9c11_331d0d16","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DRAC_REDFISH_INFO_DICT \u003d db_utils.get_test_redfish_info()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":8,"id":"612a9c11_331d0d16","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":57},"in_reply_to":"dfad9121_21680e64","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"be7faede202cf65ba7256bc6264d346145a09d96","unresolved":true,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"@mock.patch.object(drac_mgmt, \u0027redfish_utils\u0027, autospec\u003dTrue)"},{"line_number":832,"context_line":"@mock.patch.object(drac_common, \u0027get_sushy_oem_manager\u0027, autospec\u003dTrue)"},{"line_number":833,"context_line":"class DracRedfishManagementTestCase(test_utils.BaseDracTest):"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"cfe94928_d4d3b7f3","line":832,"updated":"2021-02-22 12:11:45.000000000","message":"do not patch this at class level as they are not used in all test cases and very likely that tests from other features will not need this. There are already patches pending that don\u0027t have this.","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":false,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"@mock.patch.object(drac_mgmt, \u0027redfish_utils\u0027, autospec\u003dTrue)"},{"line_number":832,"context_line":"@mock.patch.object(drac_common, \u0027get_sushy_oem_manager\u0027, autospec\u003dTrue)"},{"line_number":833,"context_line":"class DracRedfishManagementTestCase(test_utils.BaseDracTest):"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"52f1ca5c_cce45116","line":832,"in_reply_to":"2ac86dba_a08953cf","updated":"2021-03-02 09:26:35.000000000","message":"Ack","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"fd202c9d9fbba4c10eef8963e49e3e8215a370b1","unresolved":true,"context_lines":[{"line_number":829,"context_line":""},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"@mock.patch.object(drac_mgmt, \u0027redfish_utils\u0027, autospec\u003dTrue)"},{"line_number":832,"context_line":"@mock.patch.object(drac_common, \u0027get_sushy_oem_manager\u0027, autospec\u003dTrue)"},{"line_number":833,"context_line":"class DracRedfishManagementTestCase(test_utils.BaseDracTest):"},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"2ac86dba_a08953cf","line":832,"in_reply_to":"cfe94928_d4d3b7f3","updated":"2021-02-26 09:23:13.000000000","message":"Done","commit_id":"faa7dd997abadd7537a2466935a0b5090c60ae2a"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DRAC_INFO_DICT \u003d db_utils.get_test_drac_info()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":11,"id":"86a52871_366526de","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":46},"updated":"2021-03-02 09:26:35.000000000","message":"this shouldn\u0027t be necessary anymore, could use INFO_DICT from line 40 in line 842 as in all other tests after Redfish settings are added in utils.py","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DRAC_INFO_DICT \u003d db_utils.get_test_drac_info()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1733910f_0767fa42","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":46},"in_reply_to":"86a52871_366526de","updated":"2021-03-03 10:53:19.000000000","message":"Done","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e88fa3d75ec809e7dda135435fd0a8f085a46bc0","unresolved":true,"context_lines":[{"line_number":867,"context_line":"        redfish_utils, \u0027wait_until_get_system_ready\u0027, autospec\u003dTrue)"},{"line_number":868,"context_line":"    @mock.patch.object(drac_utils, \u0027wait_until_idrac_is_ready\u0027, autospec\u003dTrue)"},{"line_number":869,"context_line":"    @mock.patch.object(drac_utils, \u0027wait_for_host\u0027, autospec\u003dTrue)"},{"line_number":870,"context_line":"    def test_reset_idrac(self, mock_wait_for_host,"},{"line_number":871,"context_line":"                         mock_wait_until_idrac_is_ready,"},{"line_number":872,"context_line":"                         mock_wait_untill_get_system_ready,"},{"line_number":873,"context_line":"                         mock_redfish_utils):"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc38829d_8b7b5f4e","line":870,"range":{"start_line":870,"start_character":4,"end_line":870,"end_character":24},"updated":"2021-03-02 09:26:35.000000000","message":"how long does it take to run this test given that the tested method has time.sleep on line 396 (management.py) with default value 30 seconds? Should mock time.sleep on this test.","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"74184d467dd9b3a1ccf8c14bcf99bedfd22dbc54","unresolved":true,"context_lines":[{"line_number":867,"context_line":"        redfish_utils, \u0027wait_until_get_system_ready\u0027, autospec\u003dTrue)"},{"line_number":868,"context_line":"    @mock.patch.object(drac_utils, \u0027wait_until_idrac_is_ready\u0027, autospec\u003dTrue)"},{"line_number":869,"context_line":"    @mock.patch.object(drac_utils, \u0027wait_for_host\u0027, autospec\u003dTrue)"},{"line_number":870,"context_line":"    def test_reset_idrac(self, mock_wait_for_host,"},{"line_number":871,"context_line":"                         mock_wait_until_idrac_is_ready,"},{"line_number":872,"context_line":"                         mock_wait_untill_get_system_ready,"},{"line_number":873,"context_line":"                         mock_redfish_utils):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7b5e13ef_aaaa019d","line":870,"range":{"start_line":870,"start_character":4,"end_line":870,"end_character":24},"in_reply_to":"dc38829d_8b7b5f4e","updated":"2021-03-03 10:53:19.000000000","message":"Done, Mocked time to test on line 396 in management.py","commit_id":"53c0f59023bfdc537b34aeaadbe0611c09bd4b02"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2020 Dell Inc. or its subsidiaries."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"81b279ae_b9184b92","line":1,"updated":"2021-03-10 15:44:52.000000000","message":"In theory you\u0027re not supported to remove other\u0027s copyrights","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2020 Dell Inc. or its subsidiaries."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":12,"id":"28af0bf8_ca2f5380","line":1,"in_reply_to":"81b279ae_b9184b92","updated":"2021-03-17 09:16:48.000000000","message":"Done. Just changed the year in patchset(13).","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"DRAC_INFO_DICT \u003d db_utils.get_test_drac_info()"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3bc216d4_2415d129","line":44,"range":{"start_line":44,"start_character":0,"end_line":44,"end_character":46},"updated":"2021-03-25 15:50:04.000000000","message":"is this still used?","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":35,"context_line":"from ironic.tests.unit.objects import utils as obj_utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"}],"source_content_type":"text/x-python","patch_set":20,"id":"8789d7ad_f20ffff5","line":38,"updated":"2021-03-29 14:22:46.000000000","message":"nit: Seems like this should be after the import of dracclient.exceptions.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from ironic.tests.unit.objects import utils as obj_utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"sushy \u003d importutils.try_import(\u0027sushy\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"dracclient_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"}],"source_content_type":"text/x-python","patch_set":20,"id":"f424aee5_a245471c","line":38,"in_reply_to":"8789d7ad_f20ffff5","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":835,"context_line":"        self.config(enabled_hardware_types\u003d[\u0027idrac\u0027],"},{"line_number":836,"context_line":"                    enabled_power_interfaces\u003d[\u0027idrac-redfish\u0027],"},{"line_number":837,"context_line":"                    enabled_management_interfaces\u003d[\u0027idrac-redfish\u0027],"},{"line_number":838,"context_line":"                    enabled_inspect_interfaces\u003d[\u0027idrac-redfish\u0027])"},{"line_number":839,"context_line":"        self.node \u003d obj_utils.create_test_node("},{"line_number":840,"context_line":"            self.context, driver\u003d\u0027idrac\u0027,"},{"line_number":841,"context_line":"            driver_info\u003dINFO_DICT)"}],"source_content_type":"text/x-python","patch_set":20,"id":"324254ee_b252bff5","line":838,"updated":"2021-03-29 14:22:46.000000000","message":"Is enabling the idrac-redfish inspect hardware interface implementation necessary?","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":835,"context_line":"        self.config(enabled_hardware_types\u003d[\u0027idrac\u0027],"},{"line_number":836,"context_line":"                    enabled_power_interfaces\u003d[\u0027idrac-redfish\u0027],"},{"line_number":837,"context_line":"                    enabled_management_interfaces\u003d[\u0027idrac-redfish\u0027],"},{"line_number":838,"context_line":"                    enabled_inspect_interfaces\u003d[\u0027idrac-redfish\u0027])"},{"line_number":839,"context_line":"        self.node \u003d obj_utils.create_test_node("},{"line_number":840,"context_line":"            self.context, driver\u003d\u0027idrac\u0027,"},{"line_number":841,"context_line":"            driver_info\u003dINFO_DICT)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1c7447d4_13396529","line":838,"in_reply_to":"324254ee_b252bff5","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":840,"context_line":"            self.context, driver\u003d\u0027idrac\u0027,"},{"line_number":841,"context_line":"            driver_info\u003dINFO_DICT)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"    def test_get_properties(self,"},{"line_number":844,"context_line":"                            mock_redfish_utils):"},{"line_number":845,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":846,"context_line":"                                  shared\u003dTrue) as task:"},{"line_number":847,"context_line":"            properties \u003d task.driver.get_properties()"},{"line_number":848,"context_line":"            for prop in redfish_utils.COMMON_PROPERTIES:"},{"line_number":849,"context_line":"                self.assertIn(prop, properties)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_clear_job_queue(self, mock_redfish_utils):"},{"line_number":852,"context_line":"        mock_system \u003d mock_redfish_utils.get_system.return_value"},{"line_number":853,"context_line":"        mock_manager \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":20,"id":"231f0f00_5f83b174","line":850,"range":{"start_line":843,"start_character":0,"end_line":850,"end_character":0},"updated":"2021-03-29 14:22:46.000000000","message":"How is this related to the proposed change?","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":840,"context_line":"            self.context, driver\u003d\u0027idrac\u0027,"},{"line_number":841,"context_line":"            driver_info\u003dINFO_DICT)"},{"line_number":842,"context_line":""},{"line_number":843,"context_line":"    def test_get_properties(self,"},{"line_number":844,"context_line":"                            mock_redfish_utils):"},{"line_number":845,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":846,"context_line":"                                  shared\u003dTrue) as task:"},{"line_number":847,"context_line":"            properties \u003d task.driver.get_properties()"},{"line_number":848,"context_line":"            for prop in redfish_utils.COMMON_PROPERTIES:"},{"line_number":849,"context_line":"                self.assertIn(prop, properties)"},{"line_number":850,"context_line":""},{"line_number":851,"context_line":"    def test_clear_job_queue(self, mock_redfish_utils):"},{"line_number":852,"context_line":"        mock_system \u003d mock_redfish_utils.get_system.return_value"},{"line_number":853,"context_line":"        mock_manager \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":20,"id":"bb387c1f_bc7525f5","line":850,"range":{"start_line":843,"start_character":0,"end_line":850,"end_character":0},"in_reply_to":"231f0f00_5f83b174","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"606f936054ba9c7139afb6bd93c1018cc59c9af8","unresolved":true,"context_lines":[{"line_number":861,"context_line":"            task.driver.management.reset_idrac(task)"},{"line_number":862,"context_line":"            mock_manager_oem.reset_idrac.assert_called_once_with()"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def test_known_good_state(self, mock_redfish_utils):"},{"line_number":865,"context_line":"        mock_system \u003d mock_redfish_utils.get_system.return_value"},{"line_number":866,"context_line":"        mock_manager \u003d mock.MagicMock()"},{"line_number":867,"context_line":"        mock_system.managers \u003d [mock_manager]"}],"source_content_type":"text/x-python","patch_set":21,"id":"54513622_548345fe","line":864,"range":{"start_line":864,"start_character":0,"end_line":864,"end_character":56},"updated":"2021-03-30 00:25:47.000000000","message":"tests look good.\nShould add one test for expired timer for one of the tests?","commit_id":"fe81a70e8c3af9a53308e1396ae1027ff7c634a2"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"6e9b4ce4666ed16d0d9d037df5f227d89c953f38","unresolved":true,"context_lines":[{"line_number":861,"context_line":"            task.driver.management.reset_idrac(task)"},{"line_number":862,"context_line":"            mock_manager_oem.reset_idrac.assert_called_once_with()"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"    def test_known_good_state(self, mock_redfish_utils):"},{"line_number":865,"context_line":"        mock_system \u003d mock_redfish_utils.get_system.return_value"},{"line_number":866,"context_line":"        mock_manager \u003d mock.MagicMock()"},{"line_number":867,"context_line":"        mock_system.managers \u003d [mock_manager]"}],"source_content_type":"text/x-python","patch_set":21,"id":"29b6dbb7_ca5ef329","line":864,"range":{"start_line":864,"start_character":0,"end_line":864,"end_character":56},"in_reply_to":"54513622_548345fe","updated":"2021-03-30 15:53:17.000000000","message":"Need to discuss.","commit_id":"fe81a70e8c3af9a53308e1396ae1027ff7c634a2"}],"ironic/tests/unit/drivers/modules/drac/test_utils.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":27,"context_line":"idrac_ready_retries \u003d 96"},{"line_number":28,"context_line":"idrac_ready_retry_delay \u003d 10"},{"line_number":29,"context_line":"ping_count \u003d 3"},{"line_number":30,"context_line":"ping_retries \u003d 24"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class DracRedfishUtilsTestCase(test_utils.BaseDracTest):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_2088ee6f","line":30,"updated":"2020-05-08 21:02:32.000000000","message":"We should capitalize the constant names above.","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @mock.patch.object(drac_common, \u0027get_sushy_oem_manager\u0027, autospec\u003dTrue)"},{"line_number":36,"context_line":"    def test_wait_until_idrac_is_ready(self, mock_get_sushy_oem_manager):"},{"line_number":37,"context_line":"        mock_manager_oem \u003d mock.Mock()"},{"line_number":38,"context_line":"        mock_get_sushy_oem_manager.return_value \u003d mock_manager_oem"},{"line_number":39,"context_line":"        drac_utils.wait_until_idrac_is_ready(mock_manager_oem,"},{"line_number":40,"context_line":"                                             host,"},{"line_number":41,"context_line":"                                             idrac_ready_retries,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_2003ce0f","line":38,"updated":"2020-05-08 21:02:32.000000000","message":"Don\u0027t we need to mock the return value from oem_manager.lc_service.is_idrac_ready() so that it returns True?  If we don\u0027t then I believe it will return a Mock object.","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                             idrac_ready_retries,"},{"line_number":42,"context_line":"                                             idrac_ready_retry_delay)"},{"line_number":43,"context_line":"        mock_manager_oem.lc_service.is_idrac_ready.assert_called_once_with()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @mock.patch.object(drac_utils, \u0027wait_for_host_state\u0027, autospec\u003dTrue)"},{"line_number":46,"context_line":"    def test_wait_for_host(self, mock_wait_for_host_state):"},{"line_number":47,"context_line":"        mock_wait_for_host_state.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_600dc636","line":44,"updated":"2020-05-08 21:02:32.000000000","message":"We should add another test case here that tests when a timeout happens in wait_until_idrac_is_ready().  That will require mocking sleep as well.","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        mock_wait_for_host_state.assert_called_with(host,"},{"line_number":50,"context_line":"                                                    alive\u003dTrue,"},{"line_number":51,"context_line":"                                                    ping_count\u003dping_count,"},{"line_number":52,"context_line":"                                                    retries\u003dping_retries)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @mock.patch.object(drac_utils, \u0027ping_host\u0027, autospec\u003dTrue)"},{"line_number":55,"context_line":"    def test_wait_for_host_state(self, mock_ping_host):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_a03cfebf","line":52,"updated":"2020-05-08 21:02:32.000000000","message":"I think we need another assert here for the 2nd time wait_for_host_state is called.","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                                    alive\u003dTrue,"},{"line_number":51,"context_line":"                                                    ping_count\u003dping_count,"},{"line_number":52,"context_line":"                                                    retries\u003dping_retries)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @mock.patch.object(drac_utils, \u0027ping_host\u0027, autospec\u003dTrue)"},{"line_number":55,"context_line":"    def test_wait_for_host_state(self, mock_ping_host):"},{"line_number":56,"context_line":"        mock_ping_host.return_value \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_e046f64f","line":53,"updated":"2020-05-08 21:02:32.000000000","message":"We should add 2 more test cases for wait_for_host():\n1. state not reached after the 1st wait_for_host_state() call\n2. state not reached after the 2nd wait_for_host_state() call","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"8bf18d53544aa4916c056413a45fd3fcbd42dd45","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        mock_ping_host.return_value \u003d True"},{"line_number":57,"context_line":"        response \u003d drac_utils.wait_for_host_state(host)"},{"line_number":58,"context_line":"        self.assertEqual(True, response)"},{"line_number":59,"context_line":"        mock_ping_host.assert_called_with(host)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_a0aa3ecf","line":59,"updated":"2020-05-08 21:02:32.000000000","message":"It would be good to add 2 more test cases for wait_for_host_state():\n1. A case where ping always fails and False is returned\n2. A case where ping fails once or twice, but then succeeds after that and True is returned","commit_id":"6061cba898cb9e5c98fd9122aedb372299473bc8"}],"releasenotes/notes/redfish_mgmt_clean_steps-c983a8858835046d.yaml":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d1ea393faa97647683d8b6ff366f3a66d9a9b3fa","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC; "},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1f493fa4_41296999","line":6,"updated":"2020-05-06 21:31:20.000000000","message":"extra space at the end of above line","commit_id":"9e9610eddf768bf472cf7942dbbd0112c15add68"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"d75e67d7_defe99b1","line":6,"updated":"2021-03-10 15:44:52.000000000","message":"nit: s/actually//","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"62eb379b_aa7b7ef3","line":6,"in_reply_to":"3c9fb2d2_1123deff","updated":"2021-03-17 09:16:48.000000000","message":"Done. Updated the above lines with new one.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ccd50b69196d5255e1c59e5b1a6d123ae7ee55","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3c9fb2d2_1123deff","line":6,"in_reply_to":"d75e67d7_defe99b1","updated":"2021-03-15 14:41:10.000000000","message":"+1, removal improves readability.\n\nAlternatively, maybe break the release note section up since the use of ; might not grok easily for people.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39ccd50b69196d5255e1c59e5b1a6d123ae7ee55","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"64d2329f_9fe4f9eb","line":7,"updated":"2021-03-15 14:41:10.000000000","message":"and with the repeated use of it.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue`` and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"a1cdadfa_4913567c","line":7,"in_reply_to":"64d2329f_9fe4f9eb","updated":"2021-03-17 09:16:48.000000000","message":"Done.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8d6a017dc23f9d1802237cba8af38b0c217be70e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"0cebcd0d_ed4fc7c9","line":8,"updated":"2021-03-10 15:44:52.000000000","message":"s/also/both/","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":31871,"name":"Dhuldev Valekar","email":"dhuldev.valekar@gmail.com","username":"dhuldev30"},"change_message_id":"3186b27bdede0f04403989e56765968ce3077af6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    cleaning steps to hardware type ``idrac``."},{"line_number":6,"context_line":"    ``reset_idrac`` actually resets the iDRAC;"},{"line_number":7,"context_line":"    ``clear_job_queue`` clears the Lifecycle Controller job queue;"},{"line_number":8,"context_line":"    ``known_good_state`` also resets the iDRAC and clears the Lifecycle"},{"line_number":9,"context_line":"    Controller job queue to make sure the iDRAC is in good state."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"93f94672_83a962fd","line":8,"in_reply_to":"0cebcd0d_ed4fc7c9","updated":"2021-03-17 09:16:48.000000000","message":"Done.","commit_id":"f508e03dcf879484f30a3c5f773b6eca9f7dce9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1065f5e0321f1f52006cde0cd9349506fa9dd6a2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This change add reset_idrac, clear_job_queue and known_good_state"},{"line_number":5,"context_line":"    cleaning steps in the iDRAC driver that resets the iDRAC"},{"line_number":6,"context_line":"    and clears the job queue to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"2ac89d64_4375133a","line":4,"range":{"start_line":4,"start_character":20,"end_line":4,"end_character":31},"updated":"2021-03-22 19:58:36.000000000","message":"Lets highlight the names with `` characters on each side. So ``reset_idrac``, ``clear_job_queue``, and ``known_good_state``.","commit_id":"a1437b535414efb750b85fc753a4b61046376e1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1065f5e0321f1f52006cde0cd9349506fa9dd6a2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This change add reset_idrac, clear_job_queue and known_good_state"},{"line_number":5,"context_line":"    cleaning steps in the iDRAC driver that resets the iDRAC"},{"line_number":6,"context_line":"    and clears the job queue to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":14,"id":"65230645_a61b7caf","line":5,"range":{"start_line":5,"start_character":18,"end_line":5,"end_character":40},"updated":"2021-03-22 19:58:36.000000000","message":"Lets indicate it is the ``idrac`` hardware type with ``idrac-redfish`` management interface.","commit_id":"a1437b535414efb750b85fc753a4b61046376e1d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"afc24728d350468552002e6769dfe02e0d0b104f","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This change add ``reset_idrac``, ``clear_job_queue``, and"},{"line_number":5,"context_line":"    ``known_good_state`` cleaning steps in the ``idrac`` hardware type"},{"line_number":6,"context_line":"    with ``idrac-redfish`` management interface that resets the iDRAC"},{"line_number":7,"context_line":"    and clears the job queue to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"670ca9da_5f5e0a98","line":6,"range":{"start_line":6,"start_character":48,"end_line":6,"end_character":52},"updated":"2021-03-24 16:25:21.000000000","message":"s/that/which/","commit_id":"ba9b97576eac1e6b215a64923daa0f7647a712f4"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This change add ``reset_idrac``, ``clear_job_queue``, and"},{"line_number":5,"context_line":"    ``known_good_state`` cleaning steps in the ``idrac`` hardware type"},{"line_number":6,"context_line":"    with ``idrac-redfish`` management interface which resets the iDRAC"},{"line_number":7,"context_line":"    and clears the job queue to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"7dd971fb_11f44341","line":4,"range":{"start_line":4,"start_character":15,"end_line":4,"end_character":19},"updated":"2021-03-25 15:50:04.000000000","message":"\"adds\", or rather rephrase this to be read among other release notes [1]:\n\"Adds ``reset_idrac``, ``clear_job_queue``, and ``known_good_state`` cleaning steps [...]\"\n\n[1] https://docs.openstack.org/releasenotes/ironic/unreleased.html","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"56620f09a3e24895117ba5871f6b228871f2fbb4","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This change add ``reset_idrac``, ``clear_job_queue``, and"},{"line_number":5,"context_line":"    ``known_good_state`` cleaning steps in the ``idrac`` hardware type"},{"line_number":6,"context_line":"    with ``idrac-redfish`` management interface which resets the iDRAC"},{"line_number":7,"context_line":"    and clears the job queue to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"b8b4f823_c3915abf","line":6,"range":{"start_line":6,"start_character":54,"end_line":6,"end_character":60},"updated":"2021-03-25 15:50:04.000000000","message":"\"reset\"? Maybe everything after \"which\" can be removed as it does not add much to current listing of clean step names.","commit_id":"7cb962cae090d2b06d1a6ca4b6e8cd9a362defc7"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"dc41ac8cfcf1b93b42dfcbfdeba5903b3fb4b1cd","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue``, and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps in the ``idrac`` hardware type with ``idrac-redfish``"},{"line_number":6,"context_line":"    management interface which reset the iDRAC and clear the job queue"},{"line_number":7,"context_line":"    to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"422408f4_c17b6d6f","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":41},"updated":"2021-03-29 14:22:46.000000000","message":"Please consider making the note the following:\n\nAdds support for managing an iDRAC -- reset, clear job queue, and place in a known good state -- via the Redfish out-of-band (OOB) management protocol to the ``idrac`` hardware type. This is offered by new ``idrac-redfish`` management hardware interface implementation cleaning steps: ``reset_idrac``, ``clear_job_queue``, and ``known_good_state``. ``known_good_state`` both resets an iDRAC and clears its job queue.","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"ae959b4c7ce532f90e6dd8171290f795d479e452","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds ``reset_idrac``, ``clear_job_queue``, and ``known_good_state``"},{"line_number":5,"context_line":"    cleaning steps in the ``idrac`` hardware type with ``idrac-redfish``"},{"line_number":6,"context_line":"    management interface which reset the iDRAC and clear the job queue"},{"line_number":7,"context_line":"    to put the iDRAC in known good state."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"ea1d8285_a177a250","line":7,"range":{"start_line":4,"start_character":0,"end_line":7,"end_character":41},"in_reply_to":"422408f4_c17b6d6f","updated":"2021-03-29 23:46:12.000000000","message":"Done","commit_id":"339482e1de595af234bfa8374d7fb725988173f4"}]}
