)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yogesh Ramachandra \u003cyogesh.ramachandra@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-08-28 10:19:24 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman factory-reset getting updated bios setting values"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    We have not been able to identify when the restored factory default"},{"line_number":10,"context_line":"    settings are deterministically available to be read from the iDRAC"},{"line_number":11,"context_line":"    following a successful factory reset."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    reading last time System Inventory Collection On Reboot from python-dracclient"},{"line_number":14,"context_line":"    before and after factory reset if it changes and get the updated bios settings"},{"line_number":15,"context_line":"    and set the node status to manageable. if value is not changed it set the node"},{"line_number":16,"context_line":"    to failed state after waiting configured timeout time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Story: 2008058"},{"line_number":19,"context_line":"    Task: 40739"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f560f44_724f4c6a","line":16,"range":{"start_line":7,"start_character":0,"end_line":16,"end_character":58},"updated":"2020-08-28 22:04:34.000000000","message":"Need to do a little work on line length here.\nFrom https://wiki.openstack.org/wiki/GitCommitMessages:\n- The first line should be limited to 50 characters and should not end with a period.\n- Subsequent lines should be wrapped at 72 characters.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yogesh Ramachandra \u003cyogesh.ramachandra@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-08-28 10:19:24 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman factory-reset getting updated bios setting values"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    We have not been able to identify when the restored factory default"},{"line_number":10,"context_line":"    settings are deterministically available to be read from the iDRAC"},{"line_number":11,"context_line":"    following a successful factory reset."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    reading last time System Inventory Collection On Reboot from python-dracclient"},{"line_number":14,"context_line":"    before and after factory reset if it changes and get the updated bios settings"},{"line_number":15,"context_line":"    and set the node status to manageable. if value is not changed it set the node"},{"line_number":16,"context_line":"    to failed state after waiting configured timeout time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Story: 2008058"},{"line_number":19,"context_line":"    Task: 40739"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f560f44_ec6e7cfe","line":16,"range":{"start_line":7,"start_character":0,"end_line":16,"end_character":58},"in_reply_to":"9f560f44_56c94e58","updated":"2020-09-04 15:32:03.000000000","message":"Padding is still there\n+ the title needs to be shortened so it fits in 50 chars, breaking it in 2 lines does not solve the issue - it\u0027s invalid title.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yogesh Ramachandra \u003cyogesh.ramachandra@dell.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-08-28 10:19:24 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix idrac-wsman factory-reset getting updated bios setting values"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    We have not been able to identify when the restored factory default"},{"line_number":10,"context_line":"    settings are deterministically available to be read from the iDRAC"},{"line_number":11,"context_line":"    following a successful factory reset."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    reading last time System Inventory Collection On Reboot from python-dracclient"},{"line_number":14,"context_line":"    before and after factory reset if it changes and get the updated bios settings"},{"line_number":15,"context_line":"    and set the node status to manageable. if value is not changed it set the node"},{"line_number":16,"context_line":"    to failed state after waiting configured timeout time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    Story: 2008058"},{"line_number":19,"context_line":"    Task: 40739"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f560f44_56c94e58","line":16,"range":{"start_line":7,"start_character":0,"end_line":16,"end_character":58},"in_reply_to":"9f560f44_724f4c6a","updated":"2020-08-31 08:16:23.000000000","message":"+ no need for padding of the body","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2008058"},{"line_number":21,"context_line":"Task: 40739"},{"line_number":22,"context_line":"Depends-On: https://review.opendev.org/#/c/748571/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I11b92612d6686b7133ddef67068664c9b81df30e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f621f24_a2df2d38","line":22,"updated":"2020-11-11 18:24:47.000000000","message":"This change has merged, but it means this change is also requires python-dracclient 5.1.0 and driver-requirements.txt should be updated accordingly.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Story: 2008058"},{"line_number":21,"context_line":"Task: 40739"},{"line_number":22,"context_line":"Depends-On: https://review.opendev.org/#/c/748571/"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I11b92612d6686b7133ddef67068664c9b81df30e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f621f24_67f20c72","line":22,"in_reply_to":"1f621f24_a2df2d38","updated":"2020-11-17 07:36:45.000000000","message":"in latest changes of driver-requirment.txt already updated with python-dracclient 5.1.0","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"}],"ironic/conf/drac.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               help\u003d_(\u0027Maximum number of retries for \u0027"},{"line_number":36,"context_line":"                      \u0027the configuration job to complete \u0027"},{"line_number":37,"context_line":"                      \u0027successfully.\u0027)),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027config_reboot_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Interval (in seconds) Maximum timeout node to reboot\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_96d8061f","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":37},"updated":"2020-08-31 08:16:23.000000000","message":"idea: maybe make this setting name more generic so it can be used in checking timeout for other jobs like BIOS, RAID apply_configuration. E.g. name it `config_timeout`? Drawback is that this timeout will have to be adjusted to the slowest job, advantage - not too many config values to set up.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               help\u003d_(\u0027Maximum number of retries for \u0027"},{"line_number":36,"context_line":"                      \u0027the configuration job to complete \u0027"},{"line_number":37,"context_line":"                      \u0027successfully.\u0027)),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027config_reboot_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Interval (in seconds) Maximum timeout node to reboot\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9398c675","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":37},"in_reply_to":"9f560f44_96d8061f","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Interval (in seconds) Maximum timeout node to reboot\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b2860413","line":43,"updated":"2020-08-28 22:04:34.000000000","message":"Can you change this help message to:\nMaximum timeout for the node to reboot in seconds.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Interval (in seconds) Maximum timeout node to reboot\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"]"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f3882223","line":43,"in_reply_to":"9f560f44_b2860413","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               help\u003d_(\u0027Maximum number of retries for \u0027"},{"line_number":36,"context_line":"                      \u0027the configuration job to complete \u0027"},{"line_number":37,"context_line":"                      \u0027successfully.\u0027)),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027config_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_2c14d04c","line":38,"updated":"2020-09-22 20:21:21.000000000","message":"Could we use a more descriptive name for this parameter? Something like: bios_factory_reset_timeout","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               help\u003d_(\u0027Maximum number of retries for \u0027"},{"line_number":36,"context_line":"                      \u0027the configuration job to complete \u0027"},{"line_number":37,"context_line":"                      \u0027successfully.\u0027)),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027config_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_dcd006f7","line":38,"in_reply_to":"9f560f44_2c14d04c","updated":"2020-09-28 09:24:32.000000000","message":"Done","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2dc4435645b84bc1088fdf78917aed94e2c0c706","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.IntOpt(\u0027bios_factory_reset_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"cd824fe7_39d4acc5","line":41,"updated":"2021-03-22 11:17:19.000000000","message":"nit: missing space (and ideally a comma) before trailing \u0027","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"2058ec061d81e80ec522fc78571594abfed3fb21","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.IntOpt(\u0027bios_factory_reset_timeout\u0027,"},{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"f73b67a5_35c86a78","line":41,"in_reply_to":"cd824fe7_39d4acc5","updated":"2021-03-31 04:35:55.000000000","message":"Done","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2dc4435645b84bc1088fdf78917aed94e2c0c706","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"2fd6b43a_ce142ef4","line":42,"updated":"2021-03-22 11:17:19.000000000","message":"ditto","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"2058ec061d81e80ec522fc78571594abfed3fb21","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               default\u003d600,"},{"line_number":40,"context_line":"               min\u003d1,"},{"line_number":41,"context_line":"               help\u003d_(\u0027Maximum timeout for the node to reboot in seconds\u0027"},{"line_number":42,"context_line":"                      \u0027if it is not rebooted in this interval after factory\u0027"},{"line_number":43,"context_line":"                      \u0027reset set the node to fail state.\u0027))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":20,"id":"14000b92_cc852e49","line":42,"in_reply_to":"2fd6b43a_ce142ef4","updated":"2021-03-31 04:35:55.000000000","message":"Done","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"}],"ironic/drivers/modules/drac/bios.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":159,"context_line":"                job_ids \u003d driver_internal_info.get(\u0027bios_config_job_ids\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":162,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":163,"context_line":"                                          purpose\u003dlock_purpose,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b608aa91","line":160,"updated":"2020-08-31 08:16:23.000000000","message":"nit: need this new line/change not related to this patch.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":159,"context_line":"                job_ids \u003d driver_internal_info.get(\u0027bios_config_job_ids\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":162,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":163,"context_line":"                                          purpose\u003dlock_purpose,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_62f8ba7b","line":160,"in_reply_to":"9f560f44_b608aa91","updated":"2020-09-04 12:10:35.000000000","message":"removed","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d676fe0c","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"updated":"2020-08-31 08:16:23.000000000","message":"alternatively, instead of creating a new method `_query_last_reboot_change_status` that has almost the same code as this method, could refactor this part to also check for inventory times.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_7835cff6","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"in_reply_to":"9f560f44_6f153ee5","updated":"2020-09-10 17:17:20.000000000","message":"i tried adding condition same method if key exist call that method but drwaback is after apply config if you try factory reset bios_config_job_ids still exists in driver_info and loop will returnback it will never call  if \"last_inventory_reboot_time_before_fr\"  line.\nlet me know is there any other way i can handle this\n\n\nif \"bios_config_job_ids\" in driver_internal_info:\n    if not job_ids:\n         continue\n   self._check_node_bios_jobs(task)\n\nif \"last_inventory_reboot_time_before_fr\" in driver_internal_info:\n   if not last_inventory_reboot_time_before_factory_reset:\n                            continue\n                        \n   self._check_last_system_inventory_changed(task)","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"8b8a73f444f93aebcdccb3d8bf90685f985f9287","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_2100db35","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"in_reply_to":"9f560f44_71bf7ccf","updated":"2020-09-15 14:05:10.000000000","message":"Thanks for Suggestion, updated code accordingly","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"41c547be50e573d26d1b93d871c141d613e60498","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_71bf7ccf","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"in_reply_to":"9f560f44_7835cff6","updated":"2020-09-11 08:11:34.000000000","message":"need to reorganize code/reverse conditions so that both things are checked before `continue`. Maybe `continue` is not necessary at all in the end as there is nothing else happening after checking what the node is waiting for. Could be smth like this in pseudo code:\n\n  if [there are bios jobs on node]:\n    check if they are done\n  if [there are factory reset fields on node]:\n    check if factory reset is done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_4428cae0","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"in_reply_to":"9f560f44_d676fe0c","updated":"2020-09-10 17:17:20.000000000","message":"after apply config following json\n {\u0027clean_steps\u0027: [{\u0027interface\u0027: \u0027bios\u0027, \u0027step\u0027: \u0027factory_reset\u0027}], \u0027agent_erase_devices_iterations\u0027: 1, \u0027agent_erase_devices_zeroize\u0027: True, \u0027agent_continue_if_ata_erase_failed\u0027: False, \u0027agent_enable_ata_secure_erase\u0027: True, \u0027disk_erasure_concurrency\u0027: 1, \u0027agent_erase_skip_read_only\u0027: False, \u0027drac_boot_device\u0027: None, \u0027last_power_state_change\u0027: \u00272020-09-10T14:00:26.212866\u0027, \u0027agent_version\u0027: \u00276.2.0.dev56\u0027, \u0027agent_last_heartbeat\u0027: \u00272020-09-10T13:51:14.875309\u0027, \u0027hardware_manager_version\u0027: {\u0027IntelCnaHardwareManager\u0027: \u00271.0\u0027, \u0027generic_hardware_manager\u0027: \u00271.1\u0027}, \u0027agent_cached_clean_steps_refreshed\u0027: \u00272020-09-10 13:51:14.975378\u0027, \u0027bios_config_job_ids\u0027: []}\n\nadded below condition and loop will be in contine go backs to beging\n\nif not driver_internal_info.get(\"bios_config_job_ids\") is None and len(driver_internal_info.get(\"bios_config_job_ids\"))\u003c1 :","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                        continue"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"                    # skip if nothing to check on this node"},{"line_number":170,"context_line":"                    if not job_ids:"},{"line_number":171,"context_line":"                        continue"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    self._check_node_bios_jobs(task)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"            except exception.NodeNotFound:"},{"line_number":176,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_6f153ee5","line":173,"range":{"start_line":170,"start_character":0,"end_line":173,"end_character":52},"in_reply_to":"9f560f44_d676fe0c","updated":"2020-09-04 15:32:03.000000000","message":"just a question - is this still being considered? Digambar talks about the same in line 211","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    # spacing parameter for periodic method"},{"line_number":189,"context_line":"    @periodics.periodic("},{"line_number":190,"context_line":"        spacing\u003dCONF.drac.query_raid_config_job_status_interval)"},{"line_number":191,"context_line":"    def _query_last_reboot_change_status(self, manager, context):"},{"line_number":192,"context_line":"        \"\"\"Periodic task to check node is rebooted to get factory value."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param manager: an instance of Ironic Conductor Manager with"},{"line_number":195,"context_line":"                        the node list to act on"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f602226f","line":192,"range":{"start_line":191,"start_character":8,"end_line":192,"end_character":50},"updated":"2020-08-31 08:16:23.000000000","message":"it\u0027s really checking last inventory time, so maybe rename this and update comment to say that?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    # spacing parameter for periodic method"},{"line_number":189,"context_line":"    @periodics.periodic("},{"line_number":190,"context_line":"        spacing\u003dCONF.drac.query_raid_config_job_status_interval)"},{"line_number":191,"context_line":"    def _query_last_reboot_change_status(self, manager, context):"},{"line_number":192,"context_line":"        \"\"\"Periodic task to check node is rebooted to get factory value."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        :param manager: an instance of Ironic Conductor Manager with"},{"line_number":195,"context_line":"                        the node list to act on"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_e277aa07","line":192,"range":{"start_line":191,"start_character":8,"end_line":192,"end_character":50},"in_reply_to":"9f560f44_f602226f","updated":"2020-09-04 12:10:35.000000000","message":"updated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        for (node_uuid, driver, conductor_group,"},{"line_number":205,"context_line":"             driver_internal_info) in node_list:"},{"line_number":206,"context_line":"            try:"},{"line_number":207,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":208,"context_line":"                last_reboot_time_before_fs \u003d driver_internal_info.get("},{"line_number":209,"context_line":"                    \u0027last_reboot_time_before_fs\u0027)"},{"line_number":210,"context_line":"                # Performing read-only/non-destructive work with shared lock"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_bde7f5ac","line":207,"updated":"2020-08-28 22:04:34.000000000","message":"Let\u0027s change the above lock_purpose to be something different than the timer that\u0027s checking bios config jobs, like:\n\u0027checking bios factory reset completion\u0027","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        for (node_uuid, driver, conductor_group,"},{"line_number":205,"context_line":"             driver_internal_info) in node_list:"},{"line_number":206,"context_line":"            try:"},{"line_number":207,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":208,"context_line":"                last_reboot_time_before_fs \u003d driver_internal_info.get("},{"line_number":209,"context_line":"                    \u0027last_reboot_time_before_fs\u0027)"},{"line_number":210,"context_line":"                # Performing read-only/non-destructive work with shared lock"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_c27a66ee","line":207,"in_reply_to":"9f560f44_bde7f5ac","updated":"2020-09-04 12:10:35.000000000","message":"\u003e Let\u0027s change the above lock_purpose to be something different than\n \u003e the timer that\u0027s checking bios config jobs, like:\n \u003e \u0027checking bios factory reset completion\u0027\n\nupdated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":8580,"name":"Digambar","email":"digambarpatil15@yahoo.co.in","username":"digambar"},"change_message_id":"a49d4ebb8ac467e99c0ecde0267e3d06627d185f","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                last_reboot_time_before_fs \u003d driver_internal_info.get("},{"line_number":209,"context_line":"                    \u0027last_reboot_time_before_fs\u0027)"},{"line_number":210,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":211,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":212,"context_line":"                                          purpose\u003dlock_purpose,"},{"line_number":213,"context_line":"                                          shared\u003dTrue) as task:"},{"line_number":214,"context_line":"                    # skip a node not being managed by idrac driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_72c3b539","line":211,"range":{"start_line":211,"start_character":21,"end_line":211,"end_character":33},"updated":"2020-08-31 15:25:50.000000000","message":"This method code is duplicating most of the code which is written in _query_raid_config_job_status(), I suggest you can implement these changes in_query_bios_config_job_status() method as you only need to get status of reboot.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"8b8a73f444f93aebcdccb3d8bf90685f985f9287","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                last_reboot_time_before_fs \u003d driver_internal_info.get("},{"line_number":209,"context_line":"                    \u0027last_reboot_time_before_fs\u0027)"},{"line_number":210,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":211,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":212,"context_line":"                                          purpose\u003dlock_purpose,"},{"line_number":213,"context_line":"                                          shared\u003dTrue) as task:"},{"line_number":214,"context_line":"                    # skip a node not being managed by idrac driver"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9cecaa93","line":211,"range":{"start_line":211,"start_character":21,"end_line":211,"end_character":33},"in_reply_to":"9f560f44_72c3b539","updated":"2020-09-15 14:05:10.000000000","message":"updated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    self._check_last_system_inventory_changed(task)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            except exception.NodeNotFound:"},{"line_number":223,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""},{"line_number":224,"context_line":"                         \"%(node)s was not found and presumed deleted by \""},{"line_number":225,"context_line":"                         \"another process.\", {\u0027node\u0027: node_uuid})"},{"line_number":226,"context_line":"            except exception.NodeLocked:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_fd85edaf","line":223,"updated":"2020-08-28 22:04:34.000000000","message":"Need to change \"query_bios_config_job_status\" above to the name of this method.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                    self._check_last_system_inventory_changed(task)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            except exception.NodeNotFound:"},{"line_number":223,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""},{"line_number":224,"context_line":"                         \"%(node)s was not found and presumed deleted by \""},{"line_number":225,"context_line":"                         \"another process.\", {\u0027node\u0027: node_uuid})"},{"line_number":226,"context_line":"            except exception.NodeLocked:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_2fb7ddda","line":223,"in_reply_to":"9f560f44_fd85edaf","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                         \"%(node)s was not found and presumed deleted by \""},{"line_number":225,"context_line":"                         \"another process.\", {\u0027node\u0027: node_uuid})"},{"line_number":226,"context_line":"            except exception.NodeLocked:"},{"line_number":227,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""},{"line_number":228,"context_line":"                         \"%(node)s was already locked by another process. \""},{"line_number":229,"context_line":"                         \"Skip.\", {\u0027node\u0027: node_uuid})"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_dd82a9a5","line":227,"updated":"2020-08-28 22:04:34.000000000","message":"Need to change \"query_bios_config_job_status\" above to the name of this method.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                         \"%(node)s was not found and presumed deleted by \""},{"line_number":225,"context_line":"                         \"another process.\", {\u0027node\u0027: node_uuid})"},{"line_number":226,"context_line":"            except exception.NodeLocked:"},{"line_number":227,"context_line":"                LOG.info(\"During query_bios_config_job_status, node \""},{"line_number":228,"context_line":"                         \"%(node)s was already locked by another process. \""},{"line_number":229,"context_line":"                         \"Skip.\", {\u0027node\u0027: node_uuid})"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_6fb1d5e1","line":227,"in_reply_to":"9f560f44_dd82a9a5","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    def _check_last_system_inventory_changed(self, task):"},{"line_number":232,"context_line":"        \"\"\"Check the progress of running BIOS last inventory of a node."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        This handles jobs for BIOS set and reset. Handle means,"},{"line_number":235,"context_line":"        it checks for job status to not only signify completed jobs but"},{"line_number":236,"context_line":"        also handle failures by invoking the \u0027fail\u0027 event, allowing the"},{"line_number":237,"context_line":"        conductor to put the node into clean/deploy FAIL state."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_bd6a55ea","line":234,"updated":"2020-08-28 22:04:34.000000000","message":"Please change the above to:\n... \"for BIOS factory reset.\"...\nsince this is not being used for BIOS set.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    def _check_last_system_inventory_changed(self, task):"},{"line_number":232,"context_line":"        \"\"\"Check the progress of running BIOS last inventory of a node."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        This handles jobs for BIOS set and reset. Handle means,"},{"line_number":235,"context_line":"        it checks for job status to not only signify completed jobs but"},{"line_number":236,"context_line":"        also handle failures by invoking the \u0027fail\u0027 event, allowing the"},{"line_number":237,"context_line":"        conductor to put the node into clean/deploy FAIL state."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_4fe971b5","line":234,"in_reply_to":"9f560f44_bd6a55ea","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":8580,"name":"Digambar","email":"digambarpatil15@yahoo.co.in","username":"digambar"},"change_message_id":"a49d4ebb8ac467e99c0ecde0267e3d06627d185f","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        node \u003d task.node"},{"line_number":242,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":243,"context_line":"        last_reboot_time_before_factory_reset \u003d node.driver_internal_info["},{"line_number":244,"context_line":"            \u0027last_reboot_time_before_fs\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        factory_reset_time \u003d node.driver_internal_info[\u0027factory_reset_time\u0027]"},{"line_number":247,"context_line":"        # local variable to check the node is rebooted or not"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d210c1ab","line":244,"range":{"start_line":244,"start_character":13,"end_line":244,"end_character":39},"updated":"2020-08-31 15:25:50.000000000","message":"Use node.driver_internal_info.get(\"last_reboot_time_before_fs\")","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        node \u003d task.node"},{"line_number":242,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":243,"context_line":"        last_reboot_time_before_factory_reset \u003d node.driver_internal_info["},{"line_number":244,"context_line":"            \u0027last_reboot_time_before_fs\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        factory_reset_time \u003d node.driver_internal_info[\u0027factory_reset_time\u0027]"},{"line_number":247,"context_line":"        # local variable to check the node is rebooted or not"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_8a7097dc","line":244,"range":{"start_line":244,"start_character":13,"end_line":244,"end_character":39},"in_reply_to":"9f560f44_d210c1ab","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        factory_reset_time \u003d node.driver_internal_info[\u0027factory_reset_time\u0027]"},{"line_number":247,"context_line":"        # local variable to check the node is rebooted or not"},{"line_number":248,"context_line":"        time_changed \u003d False"},{"line_number":249,"context_line":"        # local vaiable to track diffrence between current time and factory"},{"line_number":250,"context_line":"        # reset start time"},{"line_number":251,"context_line":"        time_difference \u003d 0"},{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f66fc2f9","line":249,"range":{"start_line":249,"start_character":33,"end_line":249,"end_character":42},"updated":"2020-08-31 08:16:23.000000000","message":"spelling: difference","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        factory_reset_time \u003d node.driver_internal_info[\u0027factory_reset_time\u0027]"},{"line_number":247,"context_line":"        # local variable to check the node is rebooted or not"},{"line_number":248,"context_line":"        time_changed \u003d False"},{"line_number":249,"context_line":"        # local vaiable to track diffrence between current time and factory"},{"line_number":250,"context_line":"        # reset start time"},{"line_number":251,"context_line":"        time_difference \u003d 0"},{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_aa23dbbd","line":249,"range":{"start_line":249,"start_character":33,"end_line":249,"end_character":42},"in_reply_to":"9f560f44_f66fc2f9","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        # reset start time"},{"line_number":251,"context_line":"        time_difference \u003d 0"},{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"},{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_969006f0","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":73},"updated":"2020-08-31 08:16:23.000000000","message":"can the flow from here be simplified having as pseudo code below, now it splits the logic across several blocks and duplicates the checks\n\n  if times are different\n    do all things to mark the job done as successful\n  else\n    check if timeout has occurred\n    if timeout\n      then fail\n    else\n      do nothing (will check again in next run)","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        # reset start time"},{"line_number":251,"context_line":"        time_difference \u003d 0"},{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"},{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_ea2dd3a8","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":73},"in_reply_to":"9f560f44_969006f0","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        # reset start time"},{"line_number":251,"context_line":"        time_difference \u003d 0"},{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"},{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_cf8d6a2b","line":253,"range":{"start_line":253,"start_character":8,"end_line":253,"end_character":73},"in_reply_to":"9f560f44_ea2dd3a8","updated":"2020-09-04 15:32:03.000000000","message":"nice!","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"},{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_fd5ccd4d","line":255,"updated":"2020-08-28 22:04:34.000000000","message":"would you mind changing the above line to \"else:\" to simplify the code?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        last_reboot_after_fs \u003d client.get_last_system_inventory_time()"},{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_3f2f103f","line":255,"in_reply_to":"9f560f44_fd5ccd4d","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":8580,"name":"Digambar","email":"digambarpatil15@yahoo.co.in","username":"digambar"},"change_message_id":"a49d4ebb8ac467e99c0ecde0267e3d06627d185f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9264894b","line":256,"range":{"start_line":256,"start_character":12,"end_line":256,"end_character":24},"updated":"2020-08-31 15:25:50.000000000","message":"We can optimize 4 lines in single line:\ntime_changed \u003d last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        if last_reboot_time_before_factory_reset !\u003d last_reboot_after_fs:"},{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_3fd4301f","line":256,"range":{"start_line":256,"start_character":12,"end_line":256,"end_character":24},"in_reply_to":"9f560f44_9264894b","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":260,"context_line":"            factory_reset_time_stripped \u003d factory_reset_time.split(\u0027+\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_76545222","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":73},"updated":"2020-08-31 08:16:23.000000000","message":"spelling: difference\n\nShould this be changed to \u0027Calculate difference between current time and factory reset start time` otherwise it\u0027s unclear.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            time_changed \u003d True"},{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":260,"context_line":"            factory_reset_time_stripped \u003d factory_reset_time.split(\u0027+\u0027)[0]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_7521a49f","line":257,"range":{"start_line":257,"start_character":12,"end_line":257,"end_character":73},"in_reply_to":"9f560f44_76545222","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        elif last_reboot_time_before_factory_reset \u003d\u003d last_reboot_after_fs:"},{"line_number":256,"context_line":"            time_changed \u003d False"},{"line_number":257,"context_line":"            # diffrence between current time and factory reset start time"},{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":260,"context_line":"            factory_reset_time_stripped \u003d factory_reset_time.split(\u0027+\u0027)[0]"},{"line_number":261,"context_line":"            time_now \u003d datetime.datetime.utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d6171e54","line":258,"range":{"start_line":258,"start_character":14,"end_line":258,"end_character":24},"updated":"2020-08-31 08:16:23.000000000","message":"\"if it is more than configured timeout then set the node to fail state\"?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":260,"context_line":"            factory_reset_time_stripped \u003d factory_reset_time.split(\u0027+\u0027)[0]"},{"line_number":261,"context_line":"            time_now \u003d datetime.datetime.utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":262,"context_line":"            diff \u003d datetime.datetime.strptime(time_now, datetimeFormat)\\"},{"line_number":263,"context_line":"                - datetime.datetime.strptime(factory_reset_time_stripped,"},{"line_number":264,"context_line":"                                             datetimeFormat)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_1d02610c","line":261,"updated":"2020-08-28 22:04:34.000000000","message":"should used datetimeFormat in the line above instead of a hardcoded string.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            # if it more then configured value set the node to fail state"},{"line_number":259,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":260,"context_line":"            factory_reset_time_stripped \u003d factory_reset_time.split(\u0027+\u0027)[0]"},{"line_number":261,"context_line":"            time_now \u003d datetime.datetime.utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":262,"context_line":"            diff \u003d datetime.datetime.strptime(time_now, datetimeFormat)\\"},{"line_number":263,"context_line":"                - datetime.datetime.strptime(factory_reset_time_stripped,"},{"line_number":264,"context_line":"                                             datetimeFormat)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_153948a2","line":261,"in_reply_to":"9f560f44_1d02610c","updated":"2020-09-04 12:10:35.000000000","message":"updated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            if time_difference \u003e CONF.drac.config_reboot_timeout:"},{"line_number":269,"context_line":"                task.upgrade_lock()"},{"line_number":270,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":271,"context_line":"                error_message \u003d \"Node didnot reboot after waiting {} seconds unable to \\"},{"line_number":272,"context_line":"                    fetch updated bios setting\".format("},{"line_number":273,"context_line":"                    CONF.drac.config_reboot_timeout)"},{"line_number":274,"context_line":"                self._set_failed(task, error_message)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f8669bee","line":271,"updated":"2020-08-28 22:04:34.000000000","message":"can you change \"didnot\" to \"did not\" in the line above?\nAnd please add a comma after \"seconds\"","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            if time_difference \u003e CONF.drac.config_reboot_timeout:"},{"line_number":269,"context_line":"                task.upgrade_lock()"},{"line_number":270,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":271,"context_line":"                error_message \u003d \"Node didnot reboot after waiting {} seconds unable to \\"},{"line_number":272,"context_line":"                    fetch updated bios setting\".format("},{"line_number":273,"context_line":"                    CONF.drac.config_reboot_timeout)"},{"line_number":274,"context_line":"                self._set_failed(task, error_message)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_bf8de036","line":271,"in_reply_to":"9f560f44_f8669bee","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        task.upgrade_lock()"},{"line_number":281,"context_line":"        self._delete_cached_reboot_time(node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # if node is rebooted cache the bios setting"},{"line_number":284,"context_line":"        if time_changed:"},{"line_number":285,"context_line":"            self.cache_bios_settings(task)"},{"line_number":286,"context_line":"            self._resume_current_operation(task)"},{"line_number":287,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f8d97b84","line":284,"range":{"start_line":283,"start_character":0,"end_line":284,"end_character":24},"updated":"2020-08-28 22:04:34.000000000","message":"I think we can remove the above line since we know time_change must be True at this point.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        task.upgrade_lock()"},{"line_number":281,"context_line":"        self._delete_cached_reboot_time(node)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # if node is rebooted cache the bios setting"},{"line_number":284,"context_line":"        if time_changed:"},{"line_number":285,"context_line":"            self.cache_bios_settings(task)"},{"line_number":286,"context_line":"            self._resume_current_operation(task)"},{"line_number":287,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d5fcf0b6","line":284,"range":{"start_line":283,"start_character":0,"end_line":284,"end_character":24},"in_reply_to":"9f560f44_f8d97b84","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        if time_changed:"},{"line_number":285,"context_line":"            self.cache_bios_settings(task)"},{"line_number":286,"context_line":"            self._resume_current_operation(task)"},{"line_number":287,"context_line":"        else:"},{"line_number":288,"context_line":"            error_message \u003d \"Node didn\u0027t reboot after waiting {}\u0027s unable \\"},{"line_number":289,"context_line":"                to fetch updated bios setting\".format("},{"line_number":290,"context_line":"                CONF.drac.config_reboot_timeout)"},{"line_number":291,"context_line":"            self._set_failed(task, error_message)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":294,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d891179d","line":291,"range":{"start_line":287,"start_character":0,"end_line":291,"end_character":49},"updated":"2020-08-28 22:04:34.000000000","message":"This else clause will never be executed because if time_change \u003d\u003d False, we return at line 278 above, so I think we can remove this code.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        if time_changed:"},{"line_number":285,"context_line":"            self.cache_bios_settings(task)"},{"line_number":286,"context_line":"            self._resume_current_operation(task)"},{"line_number":287,"context_line":"        else:"},{"line_number":288,"context_line":"            error_message \u003d \"Node didn\u0027t reboot after waiting {}\u0027s unable \\"},{"line_number":289,"context_line":"                to fetch updated bios setting\".format("},{"line_number":290,"context_line":"                CONF.drac.config_reboot_timeout)"},{"line_number":291,"context_line":"            self._set_failed(task, error_message)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":294,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_352d6c46","line":291,"range":{"start_line":287,"start_character":0,"end_line":291,"end_character":49},"in_reply_to":"9f560f44_d891179d","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"},{"line_number":367,"context_line":"        driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d None"},{"line_number":368,"context_line":"        driver_internal_info[\u0027factory_reset_time\u0027] \u003d None"},{"line_number":369,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":370,"context_line":"        node.save()"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_59105f50","line":368,"range":{"start_line":367,"start_character":0,"end_line":368,"end_character":57},"updated":"2020-08-31 08:16:23.000000000","message":"pop/remove these instead so they don\u0027t stay there forever just because node had BIOS factory reset once.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"},{"line_number":367,"context_line":"        driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d None"},{"line_number":368,"context_line":"        driver_internal_info[\u0027factory_reset_time\u0027] \u003d None"},{"line_number":369,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":370,"context_line":"        node.save()"},{"line_number":371,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_a1c4a693","line":368,"range":{"start_line":367,"start_character":0,"end_line":368,"end_character":57},"in_reply_to":"9f560f44_59105f50","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        :param task: a TaskManager instance with node to act on"},{"line_number":376,"context_line":"        :param config_job: a python-dracclient Job object (named tuple)"},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        # LOG.error(\"BIOS configuration job failed for node %(node)s. \","},{"line_number":379,"context_line":"        #           {\u0027node\u0027: task.node_uuid})"},{"line_number":380,"context_line":"        # task.node.last_error \u003d config_job.message"},{"line_number":381,"context_line":"        # tell conductor to handle failure of clean/deploy step"},{"line_number":382,"context_line":"        LOG.error(\"BIOS configuration job failed for node %(node)s. \""},{"line_number":383,"context_line":"                  \"Message: \u0027%(message)s\u0027.\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_9292e0fb","line":380,"range":{"start_line":378,"start_character":0,"end_line":380,"end_character":51},"updated":"2020-08-28 22:04:34.000000000","message":"Can you remove this commented out code?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        :param task: a TaskManager instance with node to act on"},{"line_number":376,"context_line":"        :param config_job: a python-dracclient Job object (named tuple)"},{"line_number":377,"context_line":"        \"\"\""},{"line_number":378,"context_line":"        # LOG.error(\"BIOS configuration job failed for node %(node)s. \","},{"line_number":379,"context_line":"        #           {\u0027node\u0027: task.node_uuid})"},{"line_number":380,"context_line":"        # task.node.last_error \u003d config_job.message"},{"line_number":381,"context_line":"        # tell conductor to handle failure of clean/deploy step"},{"line_number":382,"context_line":"        LOG.error(\"BIOS configuration job failed for node %(node)s. \""},{"line_number":383,"context_line":"                  \"Message: \u0027%(message)s\u0027.\","}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_c1b9da15","line":380,"range":{"start_line":378,"start_character":0,"end_line":380,"end_character":51},"in_reply_to":"9f560f44_9292e0fb","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        node \u003d task.node"},{"line_number":421,"context_line":"        drac_job.validate_job_queue(node)"},{"line_number":422,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":423,"context_line":"        last_reboot_time_before_fs \u003d client.get_last_system_inventory_time()"},{"line_number":424,"context_line":"        lc_bios_reset_attrib \u003d {"},{"line_number":425,"context_line":"            \"BIOS Reset To Defaults Requested\": \"True\""},{"line_number":426,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_991af76c","line":423,"range":{"start_line":423,"start_character":8,"end_line":423,"end_character":34},"updated":"2020-08-31 08:16:23.000000000","message":"naming: is it \"last reboot time\" of \"last system inventory time\"?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":420,"context_line":"        node \u003d task.node"},{"line_number":421,"context_line":"        drac_job.validate_job_queue(node)"},{"line_number":422,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":423,"context_line":"        last_reboot_time_before_fs \u003d client.get_last_system_inventory_time()"},{"line_number":424,"context_line":"        lc_bios_reset_attrib \u003d {"},{"line_number":425,"context_line":"            \"BIOS Reset To Defaults Requested\": \"True\""},{"line_number":426,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_c29c26c1","line":423,"range":{"start_line":423,"start_character":8,"end_line":423,"end_character":34},"in_reply_to":"9f560f44_991af76c","updated":"2020-09-04 12:10:35.000000000","message":"Updated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            # Store the last rebooted time async job handler"},{"line_number":452,"context_line":"            driver_internal_info \u003d node.driver_internal_info"},{"line_number":453,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":454,"context_line":"            driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d \\"},{"line_number":455,"context_line":"                last_reboot_time_before_fs"},{"line_number":456,"context_line":"            # Store the current time to timeout if its exceeds configured value"},{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d9258fb0","line":454,"range":{"start_line":454,"start_character":34,"end_line":454,"end_character":60},"updated":"2020-08-31 08:16:23.000000000","message":"same as above about naming this value - \"reboot time\" or \"inventory time\"?","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":451,"context_line":"            # Store the last rebooted time async job handler"},{"line_number":452,"context_line":"            driver_internal_info \u003d node.driver_internal_info"},{"line_number":453,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":454,"context_line":"            driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d \\"},{"line_number":455,"context_line":"                last_reboot_time_before_fs"},{"line_number":456,"context_line":"            # Store the current time to timeout if its exceeds configured value"},{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_22a40208","line":454,"range":{"start_line":454,"start_character":34,"end_line":454,"end_character":60},"in_reply_to":"9f560f44_d9258fb0","updated":"2020-09-04 12:10:35.000000000","message":"updated","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":454,"context_line":"            driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d \\"},{"line_number":455,"context_line":"                last_reboot_time_before_fs"},{"line_number":456,"context_line":"            # Store the current time to timeout if its exceeds configured value"},{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":458,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":459,"context_line":"            node.driver_internal_info \u003d driver_internal_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_39364be9","line":456,"range":{"start_line":456,"start_character":14,"end_line":456,"end_character":79},"updated":"2020-08-31 08:16:23.000000000","message":"the comment is unclear. Could be smth like \"Store the current time to later check if factory reset times out\".","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":453,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":454,"context_line":"            driver_internal_info[\u0027last_reboot_time_before_fs\u0027] \u003d \\"},{"line_number":455,"context_line":"                last_reboot_time_before_fs"},{"line_number":456,"context_line":"            # Store the current time to timeout if its exceeds configured value"},{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":458,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":459,"context_line":"            node.driver_internal_info \u003d driver_internal_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f5ef74e6","line":456,"range":{"start_line":456,"start_character":14,"end_line":456,"end_character":79},"in_reply_to":"9f560f44_39364be9","updated":"2020-09-04 12:10:35.000000000","message":"Done","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d7e2bffc8ea7cf60b4fa6f99c8064aa630452141","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":458,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":459,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":460,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":461,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            # This method calls node.save(), bios_config_job_id will be"},{"line_number":464,"context_line":"            # saved automatically"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f24fdcbb","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":44},"updated":"2020-08-28 22:04:34.000000000","message":"These lines shouldn\u0027t be necessary because passing reboot\u003dreboot_needed where reboot_needed\u003dTrue to commit_pending_lifecycle_changes() above will automatically cause a reboot job to be created and run, which will cause a reboot.","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":457,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":458,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":459,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":460,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":461,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"            # This method calls node.save(), bios_config_job_id will be"},{"line_number":464,"context_line":"            # saved automatically"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_938c46d8","line":461,"range":{"start_line":460,"start_character":0,"end_line":461,"end_character":44},"in_reply_to":"9f560f44_f24fdcbb","updated":"2020-09-04 12:10:35.000000000","message":"This method not creating reboot job so explicitly calling reboot method","commit_id":"1f8789541ec16fa5cc9033aeb7061d5c7700a469"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        # convert dracclient BIOS settings into ironic settings list"},{"line_number":367,"context_line":"        settings \u003d [{\"name\": name, \"value\": attrib.current_value}"},{"line_number":368,"context_line":"                    for name, attrib in kwsettings.items()]"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        # Store them in the database table"},{"line_number":371,"context_line":"        LOG.debug(\u0027Caching BIOS settings for node %(node_uuid)s\u0027, {"},{"line_number":372,"context_line":"                  \u0027node_uuid\u0027: node_uuid})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_2fbfc6fc","side":"PARENT","line":369,"updated":"2020-09-04 15:32:03.000000000","message":"unrelated change","commit_id":"99e8fc981056735928443fa572a38a10d07a51ff"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":159,"context_line":"                job_ids \u003d driver_internal_info.get(\u0027bios_config_job_ids\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":162,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":163,"context_line":"                                          purpose\u003dlock_purpose,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_af00f601","line":160,"updated":"2020-09-04 15:32:03.000000000","message":"unnecessary change","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            try:"},{"line_number":158,"context_line":"                lock_purpose \u003d \u0027checking async bios configuration jobs\u0027"},{"line_number":159,"context_line":"                job_ids \u003d driver_internal_info.get(\u0027bios_config_job_ids\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"                # Performing read-only/non-destructive work with shared lock"},{"line_number":162,"context_line":"                with task_manager.acquire(context, node_uuid,"},{"line_number":163,"context_line":"                                          purpose\u003dlock_purpose,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_a7c1e8e6","line":160,"in_reply_to":"9f560f44_af00f601","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                         \"another process. Skip.\", {\u0027node\u0027: node_uuid})"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    def _check_last_system_inventory_changed(self, task):"},{"line_number":236,"context_line":"        \"\"\"Check the progress of lastsystem inventory time on reboot of a node."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        This handles jobs for BIOS factory reset. Handle means,"},{"line_number":239,"context_line":"        it checks for job status to not only signify completed jobs but"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_af90f643","line":236,"range":{"start_line":236,"start_character":33,"end_line":236,"end_character":43},"updated":"2020-09-04 15:32:03.000000000","message":"lastsystem -\u003e last system","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        # Get the factory reset start time"},{"line_number":252,"context_line":"        factory_reset_time \u003d node.driver_internal_info.get("},{"line_number":253,"context_line":"            \u0027factory_reset_time\u0027)"},{"line_number":254,"context_line":"        # local vaiable to track difference between current time and factory"},{"line_number":255,"context_line":"        # reset start time"},{"line_number":256,"context_line":"        time_difference \u003d 0"},{"line_number":257,"context_line":"        # Get the last system inventory time after reboot"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6fa6dead","line":254,"range":{"start_line":254,"start_character":16,"end_line":254,"end_character":23},"updated":"2020-09-04 15:32:03.000000000","message":"vaiable -\u003e variable","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"71bc81d0b223ef16ac4b62bbc882db4b572e790d","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":269,"context_line":"            # the node to fail state"},{"line_number":270,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":271,"context_line":"            diff \u003d datetime.datetime.strptime(datetime.datetime.utcnow()."},{"line_number":272,"context_line":"                                              strftime(datetimeFormat),"},{"line_number":273,"context_line":"                                              datetimeFormat)\\"},{"line_number":274,"context_line":"                - datetime.datetime.strptime("},{"line_number":275,"context_line":"                factory_reset_time.split(\u0027+\u0027)[0],"},{"line_number":276,"context_line":"                datetimeFormat)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":279,"context_line":"            LOG.debug(\u0027time_difference %(time_diffrence)s\u0027, {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_7e75b297","line":276,"range":{"start_line":271,"start_character":0,"end_line":276,"end_character":31},"updated":"2020-09-09 14:55:04.000000000","message":"this looks like overcomplicating and parsing dates back and forth. Smth like this should be enough:\n\n  datetime.datetime.utcnow() - datetime.datetime.strptime(factory_reset_time, datetimeFormat)","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":269,"context_line":"            # the node to fail state"},{"line_number":270,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S.%f\u0027"},{"line_number":271,"context_line":"            diff \u003d datetime.datetime.strptime(datetime.datetime.utcnow()."},{"line_number":272,"context_line":"                                              strftime(datetimeFormat),"},{"line_number":273,"context_line":"                                              datetimeFormat)\\"},{"line_number":274,"context_line":"                - datetime.datetime.strptime("},{"line_number":275,"context_line":"                factory_reset_time.split(\u0027+\u0027)[0],"},{"line_number":276,"context_line":"                datetimeFormat)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":279,"context_line":"            LOG.debug(\u0027time_difference %(time_diffrence)s\u0027, {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_30c6ac9b","line":276,"range":{"start_line":271,"start_character":0,"end_line":276,"end_character":31},"in_reply_to":"9f560f44_7e75b297","updated":"2020-09-10 17:17:20.000000000","message":"updated","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                datetimeFormat)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":279,"context_line":"            LOG.debug(\u0027time_difference %(time_diffrence)s\u0027, {"},{"line_number":280,"context_line":"                \u0027time_diffrence\u0027: time_difference})"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"            if time_difference \u003e CONF.drac.config_timeout:"},{"line_number":283,"context_line":"                task.upgrade_lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_cf044a81","line":280,"range":{"start_line":279,"start_character":11,"end_line":280,"end_character":51},"updated":"2020-09-04 15:32:03.000000000","message":"+ include node\u0027s UUID in the log message and extend the message to add context and be more descriptive if this message is meant to be kept at all.","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                datetimeFormat)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":279,"context_line":"            LOG.debug(\u0027time_difference %(time_diffrence)s\u0027, {"},{"line_number":280,"context_line":"                \u0027time_diffrence\u0027: time_difference})"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"            if time_difference \u003e CONF.drac.config_timeout:"},{"line_number":283,"context_line":"                task.upgrade_lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_af8bd61b","line":280,"range":{"start_line":279,"start_character":41,"end_line":280,"end_character":32},"updated":"2020-09-04 15:32:03.000000000","message":"spelling: time_difference","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":276,"context_line":"                datetimeFormat)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":279,"context_line":"            LOG.debug(\u0027time_difference %(time_diffrence)s\u0027, {"},{"line_number":280,"context_line":"                \u0027time_diffrence\u0027: time_difference})"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"            if time_difference \u003e CONF.drac.config_timeout:"},{"line_number":283,"context_line":"                task.upgrade_lock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_0ada5949","line":280,"range":{"start_line":279,"start_character":11,"end_line":280,"end_character":51},"in_reply_to":"9f560f44_cf044a81","updated":"2020-09-10 17:17:20.000000000","message":"removed this log lines","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                    fetch updated bios setting\".format("},{"line_number":287,"context_line":"                    CONF.drac.config_timeout)"},{"line_number":288,"context_line":"                self._set_failed(task, error_message)"},{"line_number":289,"context_line":"            else:"},{"line_number":290,"context_line":"                LOG.debug(\"returning into periodic timer function\")"},{"line_number":291,"context_line":"                return"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":294,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_4f267a18","line":291,"range":{"start_line":289,"start_character":12,"end_line":291,"end_character":22},"updated":"2020-09-04 15:32:03.000000000","message":"add node\u0027s UUID to the message. Suggesting to change message to smth like \"Factory reset for node \u003cUUID\u003e not done, will check again later.\"","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                    fetch updated bios setting\".format("},{"line_number":287,"context_line":"                    CONF.drac.config_timeout)"},{"line_number":288,"context_line":"                self._set_failed(task, error_message)"},{"line_number":289,"context_line":"            else:"},{"line_number":290,"context_line":"                LOG.debug(\"returning into periodic timer function\")"},{"line_number":291,"context_line":"                return"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":294,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_2a659de1","line":291,"range":{"start_line":289,"start_character":12,"end_line":291,"end_character":22},"in_reply_to":"9f560f44_4f267a18","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        \"\"\"Remove factory time from the driver_internal_info table in database."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"         :param node: an ironic node object"},{"line_number":363,"context_line":"         :param finished_job_ids: a list of finished Job ID strings to remove"},{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_0faac283","line":363,"range":{"start_line":363,"start_character":8,"end_line":363,"end_character":77},"updated":"2020-09-04 15:32:03.000000000","message":"not used in this method","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":360,"context_line":"        \"\"\"Remove factory time from the driver_internal_info table in database."},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"         :param node: an ironic node object"},{"line_number":363,"context_line":"         :param finished_job_ids: a list of finished Job ID strings to remove"},{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_6ab03541","line":363,"range":{"start_line":363,"start_character":8,"end_line":363,"end_character":77},"in_reply_to":"9f560f44_0faac283","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":363,"context_line":"         :param finished_job_ids: a list of finished Job ID strings to remove"},{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"},{"line_number":367,"context_line":"        driver_internal_info.pop("},{"line_number":368,"context_line":"            \u0027last_inventory_reboot_time_before_fr\u0027)"},{"line_number":369,"context_line":"        driver_internal_info.pop(\u0027factory_reset_time\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_cf9f2a63","line":366,"range":{"start_line":366,"start_character":10,"end_line":366,"end_character":21},"updated":"2020-09-04 15:32:03.000000000","message":"\"set to None for\" -\u003e \"Remove\"","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":363,"context_line":"         :param finished_job_ids: a list of finished Job ID strings to remove"},{"line_number":364,"context_line":"         \"\"\""},{"line_number":365,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":366,"context_line":"        # set to None for last reboot time and factory reset time"},{"line_number":367,"context_line":"        driver_internal_info.pop("},{"line_number":368,"context_line":"            \u0027last_inventory_reboot_time_before_fr\u0027)"},{"line_number":369,"context_line":"        driver_internal_info.pop(\u0027factory_reset_time\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8a8e6976","line":366,"range":{"start_line":366,"start_character":10,"end_line":366,"end_character":21},"in_reply_to":"9f560f44_cf9f2a63","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        node \u003d task.node"},{"line_number":418,"context_line":"        drac_job.validate_job_queue(node)"},{"line_number":419,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":420,"context_line":"        last_inventory_reboot_time_before_fr \u003d client.get_system("},{"line_number":421,"context_line":"        ).last_system_inventory_time"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        lc_bios_reset_attrib \u003d {"},{"line_number":424,"context_line":"            \"BIOS Reset To Defaults Requested\": \"True\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_2f6d0699","line":421,"range":{"start_line":420,"start_character":0,"end_line":421,"end_character":36},"updated":"2020-09-04 15:32:03.000000000","message":"move this closer to where this is used (line 455). Otherwise this call is made even if it is not used later if returning on line 436.","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        node \u003d task.node"},{"line_number":418,"context_line":"        drac_job.validate_job_queue(node)"},{"line_number":419,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":420,"context_line":"        last_inventory_reboot_time_before_fr \u003d client.get_system("},{"line_number":421,"context_line":"        ).last_system_inventory_time"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        lc_bios_reset_attrib \u003d {"},{"line_number":424,"context_line":"            \"BIOS Reset To Defaults Requested\": \"True\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_aaec0d29","line":421,"range":{"start_line":420,"start_character":0,"end_line":421,"end_character":36},"in_reply_to":"9f560f44_2f6d0699","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            try:"},{"line_number":442,"context_line":"                commit_job_id \u003d client.commit_pending_lifecycle_changes("},{"line_number":443,"context_line":"                    reboot\u003dreboot_needed)"},{"line_number":444,"context_line":"                LOG.info(\"Commit job id \""},{"line_number":445,"context_line":"                         \"%(commit_job_id)s\", {\"commit_job_id\": commit_job_id})"},{"line_number":446,"context_line":"            except drac_exceptions.BaseClientException as exc:"},{"line_number":447,"context_line":"                LOG.error(\u0027Failed to commit BIOS reset on node \u0027"},{"line_number":448,"context_line":"                          \u0027%(node_uuid)s. Reason: %(error)s.\u0027, {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_ef102e03","line":445,"range":{"start_line":444,"start_character":26,"end_line":445,"end_character":78},"updated":"2020-09-04 15:32:03.000000000","message":"include node id in the message, otherwise if there are several nodes factory resetting at the same time, it\u0027s hard to understand to which node this job id belongs to.","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            try:"},{"line_number":442,"context_line":"                commit_job_id \u003d client.commit_pending_lifecycle_changes("},{"line_number":443,"context_line":"                    reboot\u003dreboot_needed)"},{"line_number":444,"context_line":"                LOG.info(\"Commit job id \""},{"line_number":445,"context_line":"                         \"%(commit_job_id)s\", {\"commit_job_id\": commit_job_id})"},{"line_number":446,"context_line":"            except drac_exceptions.BaseClientException as exc:"},{"line_number":447,"context_line":"                LOG.error(\u0027Failed to commit BIOS reset on node \u0027"},{"line_number":448,"context_line":"                          \u0027%(node_uuid)s. Reason: %(error)s.\u0027, {"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_8abca906","line":445,"range":{"start_line":444,"start_character":26,"end_line":445,"end_character":78},"in_reply_to":"9f560f44_ef102e03","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                raise exception.DracOperationError(error\u003dexc)"},{"line_number":452,"context_line":"            # Store the last rebooted time async job handler"},{"line_number":453,"context_line":"            driver_internal_info \u003d node.driver_internal_info"},{"line_number":454,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":455,"context_line":"            driver_internal_info[\u0027last_inventory_reboot_time_before_fr\u0027] \u003d \\"},{"line_number":456,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":457,"context_line":"            # Store the current time to later check if factory reset times out"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_efb78ef4","line":454,"range":{"start_line":454,"start_character":14,"end_line":454,"end_character":50},"updated":"2020-09-04 15:32:03.000000000","message":"maybe can remove this comment? It\u0027s unclear what it means, but it\u0027s clear what the next command does.","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                raise exception.DracOperationError(error\u003dexc)"},{"line_number":452,"context_line":"            # Store the last rebooted time async job handler"},{"line_number":453,"context_line":"            driver_internal_info \u003d node.driver_internal_info"},{"line_number":454,"context_line":"            # _check_last_system_inventory_changed"},{"line_number":455,"context_line":"            driver_internal_info[\u0027last_inventory_reboot_time_before_fr\u0027] \u003d \\"},{"line_number":456,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":457,"context_line":"            # Store the current time to later check if factory reset times out"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_aa3a4d94","line":454,"range":{"start_line":454,"start_character":14,"end_line":454,"end_character":50},"in_reply_to":"9f560f44_efb78ef4","updated":"2020-09-10 17:17:20.000000000","message":"this line should go up","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"71bc81d0b223ef16ac4b62bbc882db4b572e790d","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":457,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":458,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":459,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":460,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":461,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":462,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_4a558d1d","line":459,"range":{"start_line":459,"start_character":47,"end_line":459,"end_character":50},"updated":"2020-09-09 14:55:04.000000000","message":"I\u0027d say don\u0027t need microseconds here as the precision used in timeout calculation is second.","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"ed80f897ffc097b6aa57d44d713a1cb92c6226a3","unresolved":false,"context_lines":[{"line_number":456,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":457,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":458,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":459,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S.%f\u0027)"},{"line_number":460,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":461,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":462,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_4a229153","line":459,"range":{"start_line":459,"start_character":47,"end_line":459,"end_character":50},"in_reply_to":"9f560f44_4a558d1d","updated":"2020-09-10 17:17:20.000000000","message":"Done","commit_id":"1eb8fcc04e35004eed28362370d94459652b1ff2"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"cebbcdd139617f25a14bfa2454f395f52376713e","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                        continue"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                    # check bios_config_job_id exist \u0026 checks job is completed"},{"line_number":168,"context_line":"                    if \"bios_config_job_ids\" in driver_internal_info and \\"},{"line_number":169,"context_line":"                            len(driver_internal_info."},{"line_number":170,"context_line":"                                get(\"bios_config_job_ids\")) \u003e\u003d 1:"},{"line_number":171,"context_line":"                        self._check_node_bios_jobs(task)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    if \"last_inventory_reboot_time_before_fr\" \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_4a1f8808","line":170,"range":{"start_line":168,"start_character":20,"end_line":170,"end_character":65},"updated":"2020-09-21 11:57:59.000000000","message":"can keep the same approach as previously, this whole statement can be replaced with shorter one: \n\n  if driver_internal_info.get(\u0027bios_config_job_ids\u0027):\n\nit covers both checking if the key exists at all and if the value is non-empty (including the list is not empty [])","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"a206c995a240124e948333a1055be9974e31174b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                        continue"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"                    # check bios_config_job_id exist \u0026 checks job is completed"},{"line_number":168,"context_line":"                    if \"bios_config_job_ids\" in driver_internal_info and \\"},{"line_number":169,"context_line":"                            len(driver_internal_info."},{"line_number":170,"context_line":"                                get(\"bios_config_job_ids\")) \u003e\u003d 1:"},{"line_number":171,"context_line":"                        self._check_node_bios_jobs(task)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    if \"last_inventory_reboot_time_before_fr\" \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_7f479aa4","line":170,"range":{"start_line":168,"start_character":20,"end_line":170,"end_character":65},"in_reply_to":"9f560f44_4a1f8808","updated":"2020-09-22 14:38:18.000000000","message":"updated","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"cebbcdd139617f25a14bfa2454f395f52376713e","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                                get(\"bios_config_job_ids\")) \u003e\u003d 1:"},{"line_number":171,"context_line":"                        self._check_node_bios_jobs(task)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    if \"last_inventory_reboot_time_before_fr\" \\"},{"line_number":174,"context_line":"                            in driver_internal_info:"},{"line_number":175,"context_line":"                        self._check_last_system_inventory_changed(task)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            except exception.NodeNotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_eab2dce4","line":174,"range":{"start_line":173,"start_character":20,"end_line":174,"end_character":52},"updated":"2020-09-21 11:57:59.000000000","message":"to keep the same approach: \n\n  if driver_internal_info.get(\u0027last_inventory_reboot_time_before_fr\u0027):\n\notherwise this will fail when the key exists, but the value is empty (that shouldn\u0027t happen based on related code, but better check)","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"a206c995a240124e948333a1055be9974e31174b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"                                get(\"bios_config_job_ids\")) \u003e\u003d 1:"},{"line_number":171,"context_line":"                        self._check_node_bios_jobs(task)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"                    if \"last_inventory_reboot_time_before_fr\" \\"},{"line_number":174,"context_line":"                            in driver_internal_info:"},{"line_number":175,"context_line":"                        self._check_last_system_inventory_changed(task)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            except exception.NodeNotFound:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_1fcc9e32","line":174,"range":{"start_line":173,"start_character":20,"end_line":174,"end_character":52},"in_reply_to":"9f560f44_eab2dce4","updated":"2020-09-22 14:38:18.000000000","message":"updated","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            # the node to fail state"},{"line_number":219,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S\u0027"},{"line_number":220,"context_line":"            diff \u003d datetime.datetime.utcnow("},{"line_number":221,"context_line":"            ) - datetime.datetime.strptime(factory_reset_time, datetimeFormat)"},{"line_number":222,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"            if time_difference \u003e CONF.drac.config_timeout:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_ec4f788f","line":221,"updated":"2020-09-22 20:21:21.000000000","message":"above, oslo_utils.timeutils should probably be used like this:\n- to convert the save time into a date/time: timeutils.parse_isotime(factory_reset_time)\n- to get the current time without timezone, which is required for date arithmetic: timeutils.utcnow(True)","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            # the node to fail state"},{"line_number":219,"context_line":"            datetimeFormat \u003d \u0027%Y%m%d%H%M%S\u0027"},{"line_number":220,"context_line":"            diff \u003d datetime.datetime.utcnow("},{"line_number":221,"context_line":"            ) - datetime.datetime.strptime(factory_reset_time, datetimeFormat)"},{"line_number":222,"context_line":"            time_difference \u003d diff.seconds"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"            if time_difference \u003e CONF.drac.config_timeout:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_a589ce26","line":221,"in_reply_to":"9f560f44_ec4f788f","updated":"2020-09-28 09:24:32.000000000","message":"updated according to review comment","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":227,"context_line":"                error_message \u003d \"Node did not reboot after waiting {} seconds, unable to \\"},{"line_number":228,"context_line":"                    fetch updated bios setting\".format("},{"line_number":229,"context_line":"                    CONF.drac.config_timeout)"},{"line_number":230,"context_line":"                self._set_failed(task, error_message)"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                LOG.debug(\"Factory reset for a node %(node)s is not done \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_8c235cbe","line":229,"updated":"2020-09-22 20:21:21.000000000","message":"Let\u0027s use time_difference in the logging statement above so it accurately logs how long it really waited, which will be greater than or equal to config_timeout.","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":227,"context_line":"                error_message \u003d \"Node did not reboot after waiting {} seconds, unable to \\"},{"line_number":228,"context_line":"                    fetch updated bios setting\".format("},{"line_number":229,"context_line":"                    CONF.drac.config_timeout)"},{"line_number":230,"context_line":"                self._set_failed(task, error_message)"},{"line_number":231,"context_line":"            else:"},{"line_number":232,"context_line":"                LOG.debug(\"Factory reset for a node %(node)s is not done \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_5cfeb669","line":229,"in_reply_to":"9f560f44_8c235cbe","updated":"2020-09-28 09:24:32.000000000","message":"Done","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                  {\u0027node\u0027: task.node.uuid,"},{"line_number":324,"context_line":"                   \u0027message\u0027: error_message})"},{"line_number":325,"context_line":"        task.node.last_error \u003d error_message"},{"line_number":326,"context_line":"        task.process_event(\u0027fail\u0027)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _resume_current_operation(self, task):"},{"line_number":329,"context_line":"        \"\"\"Continue cleaning/deployment of the node."}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_6caa48d2","line":326,"updated":"2020-09-22 20:21:21.000000000","message":"It turns out that a cleaning step should never call task.process_event(\u0027fail\u0027). If the cleaning step fails in this manner, then the node won\u0027t be put into maintenance mode, which it should be, and stale state will be left in node.driver_internal_info. The end result of this is that if you put the node back into manage after the failure and try to rerun the cleaning step, it will never be kicked off. Also, in the code above, node.last_error will be discarded because there is no node.save() call after it.\n\nWhile I know you didn\u0027t write this code, I hate to see us touch fundamentally broken code and not fix it.\n\nPlease replace the 2 lines above with a call to conductor.utils.cleaning_error_handler(task, error_message)\n\nThis will put the node into maintenance mode, clear the state on the node which fixes the hanging cleaning step bug, and it calls node.save(), which will result in last_error being updated on the node.\n\nWhen testing, be sure to do an \"openstack node show\" and verify that last_error actually contains the error message.","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                  {\u0027node\u0027: task.node.uuid,"},{"line_number":324,"context_line":"                   \u0027message\u0027: error_message})"},{"line_number":325,"context_line":"        task.node.last_error \u003d error_message"},{"line_number":326,"context_line":"        task.process_event(\u0027fail\u0027)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _resume_current_operation(self, task):"},{"line_number":329,"context_line":"        \"\"\"Continue cleaning/deployment of the node."}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_2b9456e7","line":326,"in_reply_to":"9f560f44_1c2d5efc","updated":"2020-09-29 17:35:59.000000000","message":"\u003e ok not changing in this patch, will create separate patch for this","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"9902a19ce4c61585979d3fc8b1eac405fbef9ade","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                  {\u0027node\u0027: task.node.uuid,"},{"line_number":324,"context_line":"                   \u0027message\u0027: error_message})"},{"line_number":325,"context_line":"        task.node.last_error \u003d error_message"},{"line_number":326,"context_line":"        task.process_event(\u0027fail\u0027)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _resume_current_operation(self, task):"},{"line_number":329,"context_line":"        \"\"\"Continue cleaning/deployment of the node."}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_fa8241a4","line":326,"in_reply_to":"9f560f44_6caa48d2","updated":"2020-09-25 14:49:38.000000000","message":"I\u0027ll take this in separate patch to fix this with other identified occurrences.","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":323,"context_line":"                  {\u0027node\u0027: task.node.uuid,"},{"line_number":324,"context_line":"                   \u0027message\u0027: error_message})"},{"line_number":325,"context_line":"        task.node.last_error \u003d error_message"},{"line_number":326,"context_line":"        task.process_event(\u0027fail\u0027)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def _resume_current_operation(self, task):"},{"line_number":329,"context_line":"        \"\"\"Continue cleaning/deployment of the node."}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_1c2d5efc","line":326,"in_reply_to":"9f560f44_fa8241a4","updated":"2020-09-28 09:24:32.000000000","message":"ok no changing in this patch, will create separate patch for this","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":399,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":400,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":401,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S\u0027)"},{"line_number":402,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":403,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":404,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_2c8330cd","line":401,"updated":"2020-09-22 20:21:21.000000000","message":"I\u0027ve been told that time should be stored in ISO8601 format. This can be done by calling oslo_utils.timeutils.utcnow().isoformat()\nThis avoids having a custom date/time format.","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":399,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":400,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d datetime.datetime.\\"},{"line_number":401,"context_line":"                utcnow().strftime(\u0027%Y%m%d%H%M%S\u0027)"},{"line_number":402,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":403,"context_line":"            # rebooting the server to apply factory reset value"},{"line_number":404,"context_line":"            client.set_power_state(\u0027REBOOT\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f560f44_ae7c1371","line":401,"in_reply_to":"9f560f44_2c8330cd","updated":"2020-09-28 09:24:32.000000000","message":"Thanks for feedback.\nupdated","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from ironic.drivers.modules.drac import common as drac_common"},{"line_number":31,"context_line":"from ironic.drivers.modules.drac import job as drac_job"},{"line_number":32,"context_line":"from ironic import objects"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"drac_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_90caef42","line":33,"updated":"2020-09-28 15:10:28.000000000","message":"unrelated change","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from ironic.drivers.modules.drac import common as drac_common"},{"line_number":31,"context_line":"from ironic.drivers.modules.drac import job as drac_job"},{"line_number":32,"context_line":"from ironic import objects"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"drac_exceptions \u003d importutils.try_import(\u0027dracclient.exceptions\u0027)"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_f43b51c6","line":33,"in_reply_to":"9f560f44_90caef42","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"de2974f6c2ecda28ae4fd9c440d6a9a55d3c0822","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        # Get the factory reset start time"},{"line_number":201,"context_line":"        factory_reset_time \u003d node.driver_internal_info.get("},{"line_number":202,"context_line":"            \u0027factory_reset_time\u0027)"},{"line_number":203,"context_line":"        LOG.debug(\"Factory reseting node %(node_uuid)s factory reset time \""},{"line_number":204,"context_line":"                  \" %(factory_reset_time)s\", {\"node_uuid\": task.node.uuid,"},{"line_number":205,"context_line":"                                              \"factory_reset_time\":"},{"line_number":206,"context_line":"                                              factory_reset_time})"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_7aa0d5f4","line":203,"updated":"2020-09-28 15:01:54.000000000","message":"nit: change \"reseting\" to \"resetting\"","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        # Get the factory reset start time"},{"line_number":201,"context_line":"        factory_reset_time \u003d node.driver_internal_info.get("},{"line_number":202,"context_line":"            \u0027factory_reset_time\u0027)"},{"line_number":203,"context_line":"        LOG.debug(\"Factory reseting node %(node_uuid)s factory reset time \""},{"line_number":204,"context_line":"                  \" %(factory_reset_time)s\", {\"node_uuid\": task.node.uuid,"},{"line_number":205,"context_line":"                                              \"factory_reset_time\":"},{"line_number":206,"context_line":"                                              factory_reset_time})"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_747101ac","line":203,"in_reply_to":"9f560f44_7aa0d5f4","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"de2974f6c2ecda28ae4fd9c440d6a9a55d3c0822","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":211,"context_line":"        last_inventory_reboot_time_after_fr \u003d client.get_system("},{"line_number":212,"context_line":"        ).last_system_inventory_time"},{"line_number":213,"context_line":"        LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":214,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":215,"context_line":"                  \"%(last_inventory_reboot_time_after_fr)s\","},{"line_number":216,"context_line":"                  {\"node_uuid\": task.node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_baa9cddf","line":213,"updated":"2020-09-28 15:01:54.000000000","message":"nit: here too","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":211,"context_line":"        last_inventory_reboot_time_after_fr \u003d client.get_system("},{"line_number":212,"context_line":"        ).last_system_inventory_time"},{"line_number":213,"context_line":"        LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":214,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":215,"context_line":"                  \"%(last_inventory_reboot_time_after_fr)s\","},{"line_number":216,"context_line":"                  {\"node_uuid\": task.node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_54767da5","line":213,"in_reply_to":"9f560f44_baa9cddf","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"de2974f6c2ecda28ae4fd9c440d6a9a55d3c0822","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            time \u003d timeutils.utcnow("},{"line_number":231,"context_line":"                True) - timeutils.parse_isotime(str(factory_reset_time))"},{"line_number":232,"context_line":"            time_difference \u003d time.seconds"},{"line_number":233,"context_line":"            LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":234,"context_line":"                      \"time difference %(time_diffrence)s \","},{"line_number":235,"context_line":"                      {\"node_uuid\": task.node.uuid, \"time_diffrence\":"},{"line_number":236,"context_line":"                       time_difference})"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_fab3454d","line":233,"updated":"2020-09-28 15:01:54.000000000","message":"nit: here too","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            time \u003d timeutils.utcnow("},{"line_number":231,"context_line":"                True) - timeutils.parse_isotime(str(factory_reset_time))"},{"line_number":232,"context_line":"            time_difference \u003d time.seconds"},{"line_number":233,"context_line":"            LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":234,"context_line":"                      \"time difference %(time_diffrence)s \","},{"line_number":235,"context_line":"                      {\"node_uuid\": task.node.uuid, \"time_diffrence\":"},{"line_number":236,"context_line":"                       time_difference})"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_b46b99b7","line":233,"in_reply_to":"9f560f44_fab3454d","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            if time_difference \u003e CONF.drac.bios_factory_reset_timeout:"},{"line_number":239,"context_line":"                task.upgrade_lock()"},{"line_number":240,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":241,"context_line":"                error_message \u003d (\"Node did not reboot after waiting {} \""},{"line_number":242,"context_line":"                                 \"seconds, unable to fetch updated bios \""},{"line_number":243,"context_line":"                                 \"setting\").format("},{"line_number":244,"context_line":"                                     CONF.drac.bios_factory_reset_timeout)"},{"line_number":245,"context_line":"                self._set_failed(task, error_message)"},{"line_number":246,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_5aab5187","line":243,"range":{"start_line":241,"start_character":34,"end_line":243,"end_character":41},"updated":"2020-09-28 15:10:28.000000000","message":"could this message be improved to talk more about failing BIOS factory reset as it could be that node actually rebooted, but factory reset was not completed in time. This can be confusing for users if they see that reboot happened, but node still failed.\n\nE.g. - \"BIOS factory reset was not completed within {} seconds\".\n\nThat part about \"unable to fetch updated bios setting\" is confusing for me. What does it mean? Couldn\u0027t fetch last inventory time?","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        }"},{"line_number":380,"context_line":"        try:"},{"line_number":381,"context_line":"            set_result \u003d client.set_lifecycle_settings(lc_bios_reset_attrib)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        except drac_exceptions.BaseClientException as exc:"},{"line_number":384,"context_line":"            LOG.error(\u0027Failed to reset BIOS on the node %(node_uuid)s.\u0027"},{"line_number":385,"context_line":"                      \u0027 Reason: %(error)s.\u0027, {\u0027node_uuid\u0027: node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_10089f8e","line":382,"updated":"2020-09-28 15:10:28.000000000","message":"unrelated change","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        }"},{"line_number":380,"context_line":"        try:"},{"line_number":381,"context_line":"            set_result \u003d client.set_lifecycle_settings(lc_bios_reset_attrib)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        except drac_exceptions.BaseClientException as exc:"},{"line_number":384,"context_line":"            LOG.error(\u0027Failed to reset BIOS on the node %(node_uuid)s.\u0027"},{"line_number":385,"context_line":"                      \u0027 Reason: %(error)s.\u0027, {\u0027node_uuid\u0027: node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_f464f1e8","line":382,"in_reply_to":"9f560f44_10089f8e","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"de2974f6c2ecda28ae4fd9c440d6a9a55d3c0822","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                last_inventory_reboot_time_before_fr \u003d client.get_system("},{"line_number":398,"context_line":"                ).last_system_inventory_time"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"                LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":401,"context_line":"                          \"last inventory reboot time before factory reset \""},{"line_number":402,"context_line":"                          \"%(last_inventory_reboot_time_before_fr)s\","},{"line_number":403,"context_line":"                          {\"node_uuid\": task.node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_dab00144","line":400,"updated":"2020-09-28 15:01:54.000000000","message":"nit: here too","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                last_inventory_reboot_time_before_fr \u003d client.get_system("},{"line_number":398,"context_line":"                ).last_system_inventory_time"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"                LOG.debug(\"Factory reseting node %(node_uuid)s \""},{"line_number":401,"context_line":"                          \"last inventory reboot time before factory reset \""},{"line_number":402,"context_line":"                          \"%(last_inventory_reboot_time_before_fr)s\","},{"line_number":403,"context_line":"                          {\"node_uuid\": task.node.uuid,"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_d461edd6","line":400,"in_reply_to":"9f560f44_dab00144","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        else:"},{"line_number":293,"context_line":"            # invoke \u0027fail\u0027 event to allow conductor to put the node in"},{"line_number":294,"context_line":"            # a clean/deploy fail state"},{"line_number":295,"context_line":"            error_message \u003d config_job.message"},{"line_number":296,"context_line":"            self._set_failed(task, error_message)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _delete_cached_config_job_ids(self, node, finished_job_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_e2489c63","line":295,"range":{"start_line":295,"start_character":28,"end_line":295,"end_character":46},"updated":"2020-09-30 11:49:05.000000000","message":"suggesting to also add config_job.id to this error message otherwise that information is being removed with this patch inside `set_failed` (in old code it was at line 254, 256)","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        else:"},{"line_number":293,"context_line":"            # invoke \u0027fail\u0027 event to allow conductor to put the node in"},{"line_number":294,"context_line":"            # a clean/deploy fail state"},{"line_number":295,"context_line":"            error_message \u003d config_job.message"},{"line_number":296,"context_line":"            self._set_failed(task, error_message)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def _delete_cached_config_job_ids(self, node, finished_job_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_d0cef98d","line":295,"range":{"start_line":295,"start_character":28,"end_line":295,"end_character":46},"in_reply_to":"9f560f44_e2489c63","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"3bc9d371c64ade4fc777d59841ce576e435c07ab","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        else:"},{"line_number":293,"context_line":"            # invoke \u0027fail\u0027 event to allow conductor to put the node in"},{"line_number":294,"context_line":"            # a clean/deploy fail state"},{"line_number":295,"context_line":"            error_message \u003d \"Failed config job:\" + config_job.id + \\"},{"line_number":296,"context_line":"                config_job.message"},{"line_number":297,"context_line":"            self._set_failed(task, error_message)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def _delete_cached_config_job_ids(self, node, finished_job_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_3942b910","line":296,"range":{"start_line":295,"start_character":28,"end_line":296,"end_character":34},"updated":"2020-10-01 09:02:02.000000000","message":"use string formatting here instead of +. And make sure there is a whitespace between config_job.id and config_job.message","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"70cdaa9a451d34e6149ecc4b56fa128dd5798e9d","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        else:"},{"line_number":293,"context_line":"            # invoke \u0027fail\u0027 event to allow conductor to put the node in"},{"line_number":294,"context_line":"            # a clean/deploy fail state"},{"line_number":295,"context_line":"            error_message \u003d \"Failed config job:\" + config_job.id + \\"},{"line_number":296,"context_line":"                config_job.message"},{"line_number":297,"context_line":"            self._set_failed(task, error_message)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def _delete_cached_config_job_ids(self, node, finished_job_ids\u003dNone):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f560f44_ff4dc171","line":296,"range":{"start_line":295,"start_character":28,"end_line":296,"end_character":34},"in_reply_to":"9f560f44_3942b910","updated":"2020-10-01 10:56:38.000000000","message":"Done","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7def1a39ad35e47c0cbee5897346e374b9b52606","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                task.upgrade_lock()"},{"line_number":240,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":241,"context_line":"                error_message \u003d (\"BIOS factory reset was not completed within \""},{"line_number":242,"context_line":"                                 \" {} seconds, unable to cache updated bios \""},{"line_number":243,"context_line":"                                 \"setting\").format("},{"line_number":244,"context_line":"                                     CONF.drac.bios_factory_reset_timeout)"},{"line_number":245,"context_line":"                self._set_failed(task, error_message)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_b1dd3ddf","line":242,"updated":"2020-10-01 14:06:14.000000000","message":"nit: extra leading space in the line above","commit_id":"a9291c20918e114bbad9f39968a1ebfc6ec4af95"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"09cd6c58671e469a79ce5ce4ed29a3ec8e8b9701","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                task.upgrade_lock()"},{"line_number":240,"context_line":"                self._delete_cached_reboot_time(node)"},{"line_number":241,"context_line":"                error_message \u003d (\"BIOS factory reset was not completed within \""},{"line_number":242,"context_line":"                                 \" {} seconds, unable to cache updated bios \""},{"line_number":243,"context_line":"                                 \"setting\").format("},{"line_number":244,"context_line":"                                     CONF.drac.bios_factory_reset_timeout)"},{"line_number":245,"context_line":"                self._set_failed(task, error_message)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_7b387bca","line":242,"in_reply_to":"9f560f44_b1dd3ddf","updated":"2020-10-05 12:31:33.000000000","message":"Done","commit_id":"a9291c20918e114bbad9f39968a1ebfc6ec4af95"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"3c3f0fcae455fcade1092c28c21ce952aa23e8a6","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                LOG.debug(\"Factory reset for a node %(node)s is not done \""},{"line_number":248,"context_line":"                          \"will check again later\", {\u0027node\u0027: task.node.uuid})"},{"line_number":249,"context_line":"                return"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":252,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_420b31d4","line":249,"range":{"start_line":249,"start_character":16,"end_line":249,"end_character":22},"updated":"2020-10-01 16:05:00.000000000","message":"nit: return not necessary","commit_id":"a9291c20918e114bbad9f39968a1ebfc6ec4af95"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"09cd6c58671e469a79ce5ce4ed29a3ec8e8b9701","unresolved":false,"context_lines":[{"line_number":246,"context_line":"            else:"},{"line_number":247,"context_line":"                LOG.debug(\"Factory reset for a node %(node)s is not done \""},{"line_number":248,"context_line":"                          \"will check again later\", {\u0027node\u0027: task.node.uuid})"},{"line_number":249,"context_line":"                return"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def _check_node_bios_jobs(self, task):"},{"line_number":252,"context_line":"        \"\"\"Check the progress of running BIOS config jobs of a node."}],"source_content_type":"text/x-python","patch_set":16,"id":"9f560f44_db47074c","line":249,"range":{"start_line":249,"start_character":16,"end_line":249,"end_character":22},"in_reply_to":"9f560f44_420b31d4","updated":"2020-10-05 12:31:33.000000000","message":"Done","commit_id":"a9291c20918e114bbad9f39968a1ebfc6ec4af95"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        ).last_system_inventory_time"},{"line_number":213,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":214,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":215,"context_line":"                  \"%(last_inventory_reboot_time_after_fr)s\","},{"line_number":216,"context_line":"                  {\"node_uuid\": task.node.uuid,"},{"line_number":217,"context_line":"                   \"last_inventory_reboot_time_after_fr\":"},{"line_number":218,"context_line":"                   last_inventory_reboot_time_after_fr})"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_62beb5b4","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":53},"updated":"2020-11-11 18:24:47.000000000","message":"Is the word after needed? If there is any way this can be shortened into something a little easier to immediately grok, I\u0027d appreciate it.\n\nAt second time look, \"last_inventory\"  could be excess and not needed? Anyway, please keep in mind my comments on variable and value labels are basically nits.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        ).last_system_inventory_time"},{"line_number":213,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":214,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":215,"context_line":"                  \"%(last_inventory_reboot_time_after_fr)s\","},{"line_number":216,"context_line":"                  {\"node_uuid\": task.node.uuid,"},{"line_number":217,"context_line":"                   \"last_inventory_reboot_time_after_fr\":"},{"line_number":218,"context_line":"                   last_inventory_reboot_time_after_fr})"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_c4731ee6","line":215,"range":{"start_line":215,"start_character":48,"end_line":215,"end_character":53},"in_reply_to":"1f621f24_62beb5b4","updated":"2020-11-17 07:36:45.000000000","message":"updated to factory_reset_time_endof_reboot","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":229,"context_line":"            # the node to fail state"},{"line_number":230,"context_line":"            time \u003d timeutils.utcnow("},{"line_number":231,"context_line":"                True) - timeutils.parse_isotime(str(factory_reset_time))"},{"line_number":232,"context_line":"            time_difference \u003d time.seconds"},{"line_number":233,"context_line":"            LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":234,"context_line":"                      \"time difference %(time_diffrence)s \","}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_e2a00593","line":231,"updated":"2020-11-11 18:24:47.000000000","message":"Below I note about the use of a timezone aware time. It might be a bad idea since your using it as a comparison to track the passage of time, and this can easily break if we ever change the conductor to be multi-process on host or multi-conductor pooled activities using locks for coordination. Timezones are administratively set on machines and unfortunately in cases where it was not done automatically via management tooling, very often it gets set incorrectly or inconsistently by humans as it is set to their relative context.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":228,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":229,"context_line":"            # the node to fail state"},{"line_number":230,"context_line":"            time \u003d timeutils.utcnow("},{"line_number":231,"context_line":"                True) - timeutils.parse_isotime(str(factory_reset_time))"},{"line_number":232,"context_line":"            time_difference \u003d time.seconds"},{"line_number":233,"context_line":"            LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":234,"context_line":"                      \"time difference %(time_diffrence)s \","}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_066ffac4","line":231,"in_reply_to":"1f621f24_e2a00593","updated":"2020-11-17 07:36:45.000000000","message":"using UTC time without timezone which is required for date arithmetic and also using UTC time for all time related operation as it does not change with timezone.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":324,"context_line":"        # Remove the last reboot time and factory reset time"},{"line_number":325,"context_line":"        driver_internal_info.pop("},{"line_number":326,"context_line":"            \u0027last_inventory_reboot_time_before_fr\u0027)"},{"line_number":327,"context_line":"        driver_internal_info.pop(\u0027factory_reset_time\u0027)"},{"line_number":328,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":329,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_22eb1ddc","line":326,"range":{"start_line":326,"start_character":13,"end_line":326,"end_character":49},"updated":"2020-11-11 18:24:47.000000000","message":"It would be helpful to indicate what \"fr\" stands for in the value label, specifically because the field is visible via the API and is useful for troubleshooting issues.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":323,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":324,"context_line":"        # Remove the last reboot time and factory reset time"},{"line_number":325,"context_line":"        driver_internal_info.pop("},{"line_number":326,"context_line":"            \u0027last_inventory_reboot_time_before_fr\u0027)"},{"line_number":327,"context_line":"        driver_internal_info.pop(\u0027factory_reset_time\u0027)"},{"line_number":328,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":329,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_e6847ed5","line":326,"range":{"start_line":326,"start_character":13,"end_line":326,"end_character":49},"in_reply_to":"1f621f24_22eb1ddc","updated":"2020-11-17 07:36:45.000000000","message":"updated to fr: factory reset","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":424,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":425,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d str("},{"line_number":426,"context_line":"                timeutils.utcnow(True))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":429,"context_line":"            # rebooting the server to apply factory reset value"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_a2860d12","line":426,"range":{"start_line":426,"start_character":30,"end_line":426,"end_character":39},"updated":"2020-11-11 18:24:47.000000000","message":"Two items: It is likely better to keep use of utcnow data lacking the timezone aware value because you either have to consistently use it or not. Elsewhere we don\u0027t incorporate the timezone because timezones are human constructs.\n\nThe second item is that this is a kwarg possible field and while it is presently the only and positional first value, should the library ever change, it would break this usage. It might be best to explicitly state \"with_timezone\u003dTrue\" if you feel the need to use the timezone is justified.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                last_inventory_reboot_time_before_fr"},{"line_number":424,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":425,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d str("},{"line_number":426,"context_line":"                timeutils.utcnow(True))"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":429,"context_line":"            # rebooting the server to apply factory reset value"}],"source_content_type":"text/x-python","patch_set":18,"id":"1f621f24_e658fe31","line":426,"range":{"start_line":426,"start_character":30,"end_line":426,"end_character":39},"in_reply_to":"1f621f24_a2860d12","updated":"2020-11-17 07:36:45.000000000","message":"to get the current time without timezone used with_timezone\u003dTrue, which is required for date arithmetic using UTC time","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cdff15a23a2f09fca3fa066bdc3e7180d4ea1d3b","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        # reset start time"},{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""}],"source_content_type":"text/x-python","patch_set":20,"id":"7b111f62_699661a4","line":222,"updated":"2021-03-22 11:23:43.000000000","message":"Note: this requires dracclient 5.1.0. If you want to backport it beyond Ussuri, you need to make it conditional, so that the code doesn\u0027t break with 3.1.0 (I haven\u0027t checked if you even need to backport it that far).","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3f3debfecef097d603bf0b58f64020ac17c41c22","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        # reset start time"},{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""}],"source_content_type":"text/x-python","patch_set":20,"id":"dbefe6c9_aa1558af","line":222,"in_reply_to":"027854ba_09ec5dc9","updated":"2021-03-23 14:02:46.000000000","message":"\u003e It was released on all of those stable branches by versions\n\nThat\u0027s good to know, but the code must also work with the older versions that ironic still refers to.\n\n\u003e Does this assignement statement need to be made conditional so that it could be backported to stable/ussuri? \n\nYes. Maybe just catch AttributeError and fall back to something reasonable? If there is nothing reasonable to fall back to, then let us provide a clear error message and update the release note accordingly.\n\n\u003e Must that be done now or could it be implemented while cherry picking this change?\n\nIt\u0027s better when the code is the same between the master change and the backport, even if you remove the condition in the next change on master.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":23847,"name":"Richard G. Pioso","email":"richard.pioso@gmail.com","username":"richard.pioso"},"change_message_id":"0d8c06c9a8f3cfa818733be4b96145ca49fd2b8d","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        # reset start time"},{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""}],"source_content_type":"text/x-python","patch_set":20,"id":"027854ba_09ec5dc9","line":222,"in_reply_to":"7b111f62_699661a4","updated":"2021-03-23 04:44:36.000000000","message":"\u003e Note: this requires dracclient 5.1.0.\n\nSupport for client.get_system().last_system_inventory_time was introduced during Victoria and backported all the back to stable/queens, inclusive [1]. It was released on all of those stable branches by versions 5.1.0, 4.1.0, 3.4.0, 2.2.0, and 1.8.0.\n\n\u003e If you want to backport it beyond Ussuri, you need to make it conditional, so that the code doesn\u0027t break with 3.1.0 (I haven\u0027t checked if you even need to backport it that far).\n\nI believe we would want to backport it to stable/ussuri, inclusive, because that is when the idrac hardware type added support of its WS-Man BIOS hardware interface implementation named idrac-wsman [2].\n\nI am unclear why you mention version 3.1.0. Please clarify.\n\nDoes this assignement statement need to be made conditional so that it could be backported to stable/ussuri? If so, what do you have in mind for making it conditional? Might it be placing the statement in a try-except block, catching the exception raised when last_system_inventory_time is missing, and assuming successful completion? Must that be done now or could it be implemented while cherry picking this change?\n\n[1] https://review.opendev.org/c/openstack/python-dracclient/+/748571\n[2] https://review.opendev.org/c/openstack/ironic/+/713450","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2dc4435645b84bc1088fdf78917aed94e2c0c706","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":226,"context_line":"                  \"%(factory_reset_time_endof_reboot)s\","}],"source_content_type":"text/x-python","patch_set":20,"id":"a2d8452f_002f95ad","line":223,"updated":"2021-03-22 11:17:19.000000000","message":"nit: better use \\ after \u003d (or brackets)","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"2058ec061d81e80ec522fc78571594abfed3fb21","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":226,"context_line":"                  \"%(factory_reset_time_endof_reboot)s\","}],"source_content_type":"text/x-python","patch_set":20,"id":"4112a7d7_8c39a7e4","line":223,"in_reply_to":"a2d8452f_002f95ad","updated":"2021-03-31 04:35:55.000000000","message":"Done","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2d60446b19a3e57889ff82f47801be371ea5891d","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        # reset start time"},{"line_number":220,"context_line":"        time_difference \u003d 0"},{"line_number":221,"context_line":"        # Get the last system inventory time after reboot"},{"line_number":222,"context_line":"        factory_reset_time_endof_reboot \u003d client.get_system("},{"line_number":223,"context_line":"        ).last_system_inventory_time"},{"line_number":224,"context_line":"        LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":225,"context_line":"                  \"last inventory reboot time after factory reset \""},{"line_number":226,"context_line":"                  \"%(factory_reset_time_endof_reboot)s\","},{"line_number":227,"context_line":"                  {\"node_uuid\": task.node.uuid,"},{"line_number":228,"context_line":"                   \"factory_reset_time_endof_reboot\":"},{"line_number":229,"context_line":"                   factory_reset_time_endof_reboot})"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if factory_reset_time_before_reboot !\u003d factory_reset_time_endof_reboot:"},{"line_number":232,"context_line":"            # from the database cleanup with factory reset time"},{"line_number":233,"context_line":"            self._delete_cached_reboot_time(node)"},{"line_number":234,"context_line":"            # Cache the new BIOS settings,"},{"line_number":235,"context_line":"            self.cache_bios_settings(task)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5bb031d6_bb27b392","line":232,"range":{"start_line":222,"start_character":0,"end_line":232,"end_character":63},"updated":"2021-03-18 14:11:32.000000000","message":"For other reviewers: There are two different times in use. One is just used as the comparison on line 231 to determine if the task is \"done\" or not. It is not converted at all.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b29378326223a1b76e439bb5b9cc5ef1f669d4ad","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"c4502f27_11144ca8","line":241,"updated":"2020-12-07 14:29:14.000000000","message":"Likely not a good idea to mix the timezone in, just time in UTC is good enough for the computer.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b2d6b44e1a7c723261dd7eb9a2fb62e14567ceab","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"78a51034_35aa5684","line":241,"in_reply_to":"2b450b11_22540b94","updated":"2021-01-25 14:31:28.000000000","message":"Generally you always want to avoid storing or using a time zone. Especially if conductors are not configured for the same local time zone, or are spread across the world.  It is better to take the approach of \"what time is it right now in UTC\" and local time with a timezone does not matter.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"67f3fa300755c585418caa44066796dcb98e63cd","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"2b450b11_22540b94","line":241,"in_reply_to":"679ffb59_2bd1ac81","updated":"2020-12-07 15:54:46.000000000","message":"this could be alternative remove timezone after parse_isotime , as to parse_isotime returns with tzinfo , please suggest \n\ntimeutils.utcnow()-timeutils.parse_isotime(str(factory_reset_time)).replace(tzinfo\u003dNone)","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"76c0702d035be78094d08018f61e194b68e1202a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"fae994e2_85236cf1","line":241,"in_reply_to":"78a51034_35aa5684","updated":"2021-01-25 15:52:36.000000000","message":"it is UTC as it is right now. It is not local time. Here are differences with param and without, the only difference is TZ field, time is the same, and that corresponds to UTC as of this writing.\n\n  \u003e\u003e\u003e timeutils.utcnow(with_timezone\u003dTrue)\n  datetime.datetime(2021, 1, 25, 15, 44, 57, 120315, tzinfo\u003ddatetime.timezone.utc)\n  \u003e\u003e\u003e timeutils.utcnow()\n  datetime.datetime(2021, 1, 25, 15, 45, 2, 743347)\n\nThis is necessary because `parse_isotime` is adding TZ info even if not explicitly providing. Alternative solution would be to remove TZ info as Yogesh has suggested above. I don\u0027t see option in oslo_utils.parse_isotime not to add TZ info.\n\n  \u003e\u003e\u003e timeutils.parse_isotime(str(timeutils.utcnow()))\n  datetime.datetime(2021, 1, 25, 15, 47, 56, 308320, tzinfo\u003ddatetime.timezone.utc)\n\nWhen time diff is calculated this is what happens without TZ:\n\n  \u003e\u003e\u003e timeutils.utcnow() - timeutils.parse_isotime(str(timeutils.utcnow()))\n  Traceback (most recent call last):\n    File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  TypeError: can\u0027t subtract offset-naive and offset-aware datetimes\n\nThis works when TZ added:\n\n  \u003e\u003e\u003e timeutils.utcnow(with_timezone\u003dTrue) - timeutils.parse_isotime(str(timeutils.utcnow()))\n  datetime.timedelta(days\u003d-1, seconds\u003d86399, microseconds\u003d999993)\n\n\nAre you suggesting that instead of explicitly adding that it is really UTC, should go alternative approach as suggested by Yogesh? Or are there any other suggestions?\nI think that it\u0027s clearer as it is, rather then doing `tzinfo\u003dNone`.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"e57526cd3adc12c071803b14b7b0490b22414bdf","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"9d9ef06b_33031b37","line":241,"in_reply_to":"7eff5a82_4501461f","updated":"2021-02-01 16:21:18.000000000","message":"my examples were not entirely precise to depict actual code being used in Ironic - time zone is added to the source value when used for parse_isotime. It is being set in line 438. It will be UTC even if somebody deletes with_timezone\u003dTrue there, because that\u0027s what the function does - it is named utcnow after all and this little flag controls whether TZ\u003dUTC field is added or not.\n\nI still think this is fine as it is. The conflict happens because `utcnow` by default does not add TZ field, but parse_isotime adds TZ field even if it\u0027s missing in source. And subtraction rejects calculation because having default settings one value is with TZ, another is not. What this code does is it makes sure that both values will have TZ and it will be UTC for both.\n\nTo be more precise an example should have been like this: \n\n  timeutils.utcnow(with_timezone\u003dTrue) - timeutils.parse_isotime(str(timeutils.utcnow(with_timezone\u003dTrue)))\n\nBy default if ignoring existence of with_timezone\n\n  \u003e\u003e\u003e timeutils.utcnow() - timeutils.parse_isotime(str(timeutils.utcnow()))\n  Traceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  TypeError: can\u0027t subtract offset-naive and offset-aware datetimes\n\n\nThis calculation is not touching the time coming from BMC, that\u0027s different value and being handled in line 231 where it checks if time has changed and that\u0027s it.\n\nThis block is comparing value set in line 438 (then stored in internal info) and moment it runs.\nThis block checks if timeout has occurred since reboot started to avoid lingering too long if something goes wrong. Both values come from conductor running the code.\n\nI don\u0027t see value in converting UTC in seconds and storing on node or converting back and forth, this is already UTC and in current format it is more readable in case human needs to take a look at internal info when debugging, etc. On node this will be stored like \u00272021-02-01 16:09:27.591516+00:00\u0027","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"2058ec061d81e80ec522fc78571594abfed3fb21","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"c0976155_0e30a19a","line":241,"in_reply_to":"9d9ef06b_33031b37","updated":"2021-03-31 04:35:55.000000000","message":"Ack","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"6d35d213e2b903ad448d8fad586e1d753f7e02be","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"679ffb59_2bd1ac81","line":241,"in_reply_to":"c4502f27_11144ca8","updated":"2020-12-07 15:41:47.000000000","message":"this will add tzinfo to UTC (not server\u0027s local), so it will be fine. And as parse_isotime below returns with tzinfo (UTC), then it can\u0027t use time with and without timezone to calculate.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"70bdf00e30c3d8553634b71255ed0049cc26a796","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            # Calculate difference between current time and factory reset"},{"line_number":239,"context_line":"            # start time if it is more than configured timeout then set"},{"line_number":240,"context_line":"            # the node to fail state"},{"line_number":241,"context_line":"            time \u003d timeutils.utcnow(with_timezone\u003dTrue"},{"line_number":242,"context_line":"                                    ) - timeutils.parse_isotime(str("},{"line_number":243,"context_line":"                                        factory_reset_time))"},{"line_number":244,"context_line":"            time_difference \u003d time.seconds"}],"source_content_type":"text/x-python","patch_set":20,"id":"7eff5a82_4501461f","line":241,"in_reply_to":"fae994e2_85236cf1","updated":"2021-02-01 14:45:39.000000000","message":"So what your encountering kind of highlights why I\u0027m trying to steer you away from using or interacting with any time zone offsets. What matters is how much time has passed on clock on the wall, this can bed done with something as simple as converting UTC time to seconds performing the integer comparison. Actually, that may even be fastest.\n\nso if it is not being explicitly provided, and timeutils.parse_isotime is adding it. Is there any other \"easy\" way to achieve this. If memory serves this is coming from the BMC, I\u0027d just hate to hit a bug where a timezone gets added, and the server\u0027s time zone is off in the other direction and conditions are never met because of UTC.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2d60446b19a3e57889ff82f47801be371ea5891d","unresolved":true,"context_lines":[{"line_number":245,"context_line":"            LOG.debug(\"Factory resetting node %(node_uuid)s \""},{"line_number":246,"context_line":"                      \"time difference %(time_diffrence)s \","},{"line_number":247,"context_line":"                      {\"node_uuid\": task.node.uuid, \"time_diffrence\":"},{"line_number":248,"context_line":"                       time_difference})"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"            if time_difference \u003e CONF.drac.bios_factory_reset_timeout:"},{"line_number":251,"context_line":"                task.upgrade_lock()"}],"source_content_type":"text/x-python","patch_set":20,"id":"874e7aad_31789092","line":248,"updated":"2021-03-18 14:11:32.000000000","message":"So the time used later on is a seconds from epoch for the job as well as is stored in time string format for user friendliness. I\u0027m not really a fan of this, but I get the point they want it to be relatively user friendly. Many don\u0027t know the whole thing about seconds from epoch.\n\nIn other words, I think the time zone and utc usage is okay with how it is being done. It is just easy to get confused because the variable names are very similar.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b29378326223a1b76e439bb5b9cc5ef1f669d4ad","unresolved":true,"context_lines":[{"line_number":435,"context_line":"                factory_reset_time_before_reboot"},{"line_number":436,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":437,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d str("},{"line_number":438,"context_line":"                timeutils.utcnow(with_timezone\u003dTrue))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":441,"context_line":"            # rebooting the server to apply factory reset value"}],"source_content_type":"text/x-python","patch_set":20,"id":"76344429_6d2dd8fe","line":438,"range":{"start_line":438,"start_character":33,"end_line":438,"end_character":46},"updated":"2020-12-07 14:29:14.000000000","message":"It is likely not a good idea to use the timezone. We try not to elsewhere in the code from what I remember.","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"67f3fa300755c585418caa44066796dcb98e63cd","unresolved":false,"context_lines":[{"line_number":435,"context_line":"                factory_reset_time_before_reboot"},{"line_number":436,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":437,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d str("},{"line_number":438,"context_line":"                timeutils.utcnow(with_timezone\u003dTrue))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":441,"context_line":"            # rebooting the server to apply factory reset value"}],"source_content_type":"text/x-python","patch_set":20,"id":"34c7c5cc_96cf7b57","line":438,"range":{"start_line":438,"start_character":33,"end_line":438,"end_character":46},"in_reply_to":"4622a047_e65fe703","updated":"2020-12-07 15:54:46.000000000","message":"Ack","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"6d35d213e2b903ad448d8fad586e1d753f7e02be","unresolved":true,"context_lines":[{"line_number":435,"context_line":"                factory_reset_time_before_reboot"},{"line_number":436,"context_line":"            # Store the current time to later check if factory reset times out"},{"line_number":437,"context_line":"            driver_internal_info[\u0027factory_reset_time\u0027] \u003d str("},{"line_number":438,"context_line":"                timeutils.utcnow(with_timezone\u003dTrue))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"            node.driver_internal_info \u003d driver_internal_info"},{"line_number":441,"context_line":"            # rebooting the server to apply factory reset value"}],"source_content_type":"text/x-python","patch_set":20,"id":"4622a047_e65fe703","line":438,"range":{"start_line":438,"start_character":33,"end_line":438,"end_character":46},"in_reply_to":"76344429_6d2dd8fe","updated":"2020-12-07 15:41:47.000000000","message":"ditto","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"}],"ironic/tests/unit/drivers/modules/drac/test_bios.py":[{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"48a8574edac3f4a50631104bbe4ac222ed025e6a","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    assert_called_once_with(attrib)"},{"line_number":155,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":156,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":157,"context_line":"                job_id \u003d self.mock_client.commit_pending_lifecycle_changes()"},{"line_number":158,"context_line":"                self.assertIn(job_id, info[\u0027bios_config_job_ids\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":161,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_393bebc8","side":"PARENT","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":66},"updated":"2020-08-31 08:16:23.000000000","message":"unit tests needs to be updated to test the new things, instead of removing what does not work anymore because code changed.","commit_id":"99e8fc981056735928443fa572a38a10d07a51ff"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"816b1f7a7652fe698ccdd073410bae931acb20de","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    assert_called_once_with(attrib)"},{"line_number":155,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":156,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":157,"context_line":"                job_id \u003d self.mock_client.commit_pending_lifecycle_changes()"},{"line_number":158,"context_line":"                self.assertIn(job_id, info[\u0027bios_config_job_ids\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":161,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_5382aea6","side":"PARENT","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":66},"in_reply_to":"9f560f44_393bebc8","updated":"2020-09-04 12:10:35.000000000","message":"from factory reset method reading bios_config_job_ids is removed so removing this test cases","commit_id":"99e8fc981056735928443fa572a38a10d07a51ff"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"691196dca244109efb1478c827fbfb66a4c26901","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    assert_called_once_with(attrib)"},{"line_number":155,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":156,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":157,"context_line":"                job_id \u003d self.mock_client.commit_pending_lifecycle_changes()"},{"line_number":158,"context_line":"                self.assertIn(job_id, info[\u0027bios_config_job_ids\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":161,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_4c87a8b7","side":"PARENT","line":158,"range":{"start_line":157,"start_character":0,"end_line":158,"end_character":66},"in_reply_to":"9f560f44_5382aea6","updated":"2020-09-04 15:32:03.000000000","message":"but there are no unit tests for the updated functionality. Looking at the coverage[1] - many lines are missing, including the new methods.\n\n[1] https://fd3a94d7972c133f314a-6e0ea213c4496da85e511d11bb1ba368.ssl.cf2.rackcdn.com/748696/2/check/openstack-tox-cover/4ba7836/cover/ironic_drivers_modules_drac_bios_py.html","commit_id":"99e8fc981056735928443fa572a38a10d07a51ff"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"cebbcdd139617f25a14bfa2454f395f52376713e","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self.assertRaises(exception.DracOperationError,"},{"line_number":236,"context_line":"                              task.driver.bios.factory_reset, task)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test__check_last_system_inventory_same(self):"},{"line_number":239,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":240,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_cac43811","line":238,"range":{"start_line":238,"start_character":8,"end_line":238,"end_character":46},"updated":"2020-09-21 11:57:59.000000000","message":"what is being tested here? Is it method `_check_last_system_inventory_changed`? If so then by convention this should be included in test name in full, e.g., \n\n  test__check_last_system_inventory_changed_same\n\nAlso it does not look like that the method is called in the test, so in the end it does not test it at all (coverage is still 0 for this method).\n\nSame for the 2nd test.","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"a206c995a240124e948333a1055be9974e31174b","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            self.assertRaises(exception.DracOperationError,"},{"line_number":236,"context_line":"                              task.driver.bios.factory_reset, task)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    def test__check_last_system_inventory_same(self):"},{"line_number":239,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":240,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":241,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_2749aa31","line":238,"range":{"start_line":238,"start_character":8,"end_line":238,"end_character":46},"in_reply_to":"9f560f44_cac43811","updated":"2020-09-22 14:38:18.000000000","message":"since it is a private method and it is called in _query_bios_config_job_status mocking is already done in periodic method removing these test cases","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"cebbcdd139617f25a14bfa2454f395f52376713e","unresolved":false,"context_lines":[{"line_number":252,"context_line":"                             task.node.driver_internal_info"},{"line_number":253,"context_line":"                             [\u0027last_inventory_reboot_time_before_fr\u0027])"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    def test__check_last_system_inventory_diffrent(self):"},{"line_number":256,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":257,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":258,"context_line":"            driver_internal_info \u003d self.node.driver_internal_info"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_6aec0cbb","line":255,"range":{"start_line":255,"start_character":42,"end_line":255,"end_character":50},"updated":"2020-09-21 11:57:59.000000000","message":"s/diffrent/different","commit_id":"dd1c1d733fc8827c975f1e14665375968492ffcb"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    assert_called_once_with(attrib)"},{"line_number":155,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":156,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":157,"context_line":"                job_id \u003d self.mock_client.commit_pending_lifecycle_changes()"},{"line_number":158,"context_line":"                self.assertIn(job_id, info[\u0027bios_config_job_ids\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":161,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_9a64c94f","side":"PARENT","line":158,"range":{"start_line":157,"start_character":1,"end_line":158,"end_character":66},"updated":"2020-09-28 15:10:28.000000000","message":"these deleted lines should be replaced with something that tests current implementation.","commit_id":"7d0661a1b44d1ed98ad56b80ea6ff8fc3fa9755c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                    assert_called_once_with(attrib)"},{"line_number":155,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":156,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":157,"context_line":"                job_id \u003d self.mock_client.commit_pending_lifecycle_changes()"},{"line_number":158,"context_line":"                self.assertIn(job_id, info[\u0027bios_config_job_ids\u0027])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":161,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_4fc70813","side":"PARENT","line":158,"range":{"start_line":157,"start_character":1,"end_line":158,"end_character":66},"in_reply_to":"9f560f44_9a64c94f","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"7d0661a1b44d1ed98ad56b80ea6ff8fc3fa9755c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from ironic import objects"},{"line_number":35,"context_line":"from ironic.tests.unit.drivers.modules.drac import utils as test_utils"},{"line_number":36,"context_line":"from ironic.tests.unit.objects import utils as obj_utils"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_b0f8d37b","line":37,"updated":"2020-09-28 15:10:28.000000000","message":"unrelated change","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from ironic import objects"},{"line_number":35,"context_line":"from ironic.tests.unit.drivers.modules.drac import utils as test_utils"},{"line_number":36,"context_line":"from ironic.tests.unit.objects import utils as obj_utils"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"INFO_DICT \u003d test_utils.INFO_DICT"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_749621a3","line":37,"in_reply_to":"9f560f44_b0f8d37b","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":237,"context_line":"            self.assertRaises(exception.DracOperationError,"},{"line_number":238,"context_line":"                              task.driver.bios.factory_reset, task)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test__delete_cached_reboot_time(self):"},{"line_number":241,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":242,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_d7a45ca6","line":240,"range":{"start_line":240,"start_character":4,"end_line":240,"end_character":46},"updated":"2020-09-28 15:10:28.000000000","message":"practically this test is not necessary as this is covered already by testing `_check_last_system_inventory_changed` that calls this method in couple of scenarios.","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":237,"context_line":"            self.assertRaises(exception.DracOperationError,"},{"line_number":238,"context_line":"                              task.driver.bios.factory_reset, task)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test__delete_cached_reboot_time(self):"},{"line_number":241,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":242,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":243,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_00c5ec5c","line":240,"range":{"start_line":240,"start_character":4,"end_line":240,"end_character":46},"in_reply_to":"9f560f44_d7a45ca6","updated":"2020-09-29 17:35:59.000000000","message":"removed this method","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.assertIsNone("},{"line_number":257,"context_line":"                task.node.driver_internal_info.get(\"factory_reset_time\"))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test__check_last_system_inventory_changed_diffrent_inventory_time("},{"line_number":260,"context_line":"            self):"},{"line_number":261,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":262,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_cb767ad5","line":259,"range":{"start_line":259,"start_character":50,"end_line":259,"end_character":58},"updated":"2020-09-28 15:10:28.000000000","message":"typo: different","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            self.assertIsNone("},{"line_number":257,"context_line":"                task.node.driver_internal_info.get(\"factory_reset_time\"))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def test__check_last_system_inventory_changed_diffrent_inventory_time("},{"line_number":260,"context_line":"            self):"},{"line_number":261,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":262,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_c08f742d","line":259,"range":{"start_line":259,"start_character":50,"end_line":259,"end_character":58},"in_reply_to":"9f560f44_cb767ad5","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            task.node.save()"},{"line_number":271,"context_line":"            mock_system \u003d mock.Mock()"},{"line_number":272,"context_line":"            mock_system.last_system_inventory_time \u003d\\"},{"line_number":273,"context_line":"                \"20200910233023\""},{"line_number":274,"context_line":"            self.mock_client.get_system.return_value \u003d mock_system"},{"line_number":275,"context_line":"            mock_resume \u003d mock.Mock()"},{"line_number":276,"context_line":"            task.driver.bios._resume_current_operation \u003d mock_resume"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_57ea0c74","line":273,"range":{"start_line":273,"start_character":16,"end_line":273,"end_character":32},"updated":"2020-09-28 15:10:28.000000000","message":"nice to have realistic test data. Now it looks that system inventory time goes back in time since factory reset started (line 266).\nTest passes just because the code checks if the times are different, not if the current time is after time saved on node.","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            task.node.save()"},{"line_number":271,"context_line":"            mock_system \u003d mock.Mock()"},{"line_number":272,"context_line":"            mock_system.last_system_inventory_time \u003d\\"},{"line_number":273,"context_line":"                \"20200910233023\""},{"line_number":274,"context_line":"            self.mock_client.get_system.return_value \u003d mock_system"},{"line_number":275,"context_line":"            mock_resume \u003d mock.Mock()"},{"line_number":276,"context_line":"            task.driver.bios._resume_current_operation \u003d mock_resume"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_b271dfae","line":273,"range":{"start_line":273,"start_character":16,"end_line":273,"end_character":32},"in_reply_to":"9f560f44_57ea0c74","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            task.driver.bios._check_last_system_inventory_changed(task)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            self.assertIsNotNone(task.node.driver_internal_info.get("},{"line_number":308,"context_line":"                \u0027last_inventory_reboot_time_before_fr\u0027))"},{"line_number":309,"context_line":"            self.assertIsNotNone("},{"line_number":310,"context_line":"                task.node.driver_internal_info.get(\u0027factory_reset_time\u0027))"},{"line_number":311,"context_line":"            self.assertEqual(\"20200910233024\","}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_1a3719b2","line":308,"range":{"start_line":307,"start_character":12,"end_line":308,"end_character":56},"updated":"2020-09-28 15:10:28.000000000","message":"this check can be removed as it will be covered by check on line 311, line 311 will fail if it\u0027s None","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"            task.driver.bios._check_last_system_inventory_changed(task)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            self.assertIsNotNone(task.node.driver_internal_info.get("},{"line_number":308,"context_line":"                \u0027last_inventory_reboot_time_before_fr\u0027))"},{"line_number":309,"context_line":"            self.assertIsNotNone("},{"line_number":310,"context_line":"                task.node.driver_internal_info.get(\u0027factory_reset_time\u0027))"},{"line_number":311,"context_line":"            self.assertEqual(\"20200910233024\","}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_e019d8d1","line":308,"range":{"start_line":307,"start_character":12,"end_line":308,"end_character":56},"in_reply_to":"9f560f44_1a3719b2","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"73a43218023bebc1c4ea457e947d4b03c3ad25e0","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            self.assertIsNotNone(task.node.driver_internal_info.get("},{"line_number":308,"context_line":"                \u0027last_inventory_reboot_time_before_fr\u0027))"},{"line_number":309,"context_line":"            self.assertIsNotNone("},{"line_number":310,"context_line":"                task.node.driver_internal_info.get(\u0027factory_reset_time\u0027))"},{"line_number":311,"context_line":"            self.assertEqual(\"20200910233024\","},{"line_number":312,"context_line":"                             task.node.driver_internal_info.get("},{"line_number":313,"context_line":"                                 \u0027last_inventory_reboot_time_before_fr\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_5af3510a","line":310,"range":{"start_line":309,"start_character":12,"end_line":310,"end_character":73},"updated":"2020-09-28 15:10:28.000000000","message":"here could not only check that it exists, but also check that the value is as intended, that is, as using utcnow will change while test is running, save current utcnow before line 296 in variable and use that variable both in setting up data and checking its value here","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"495494b90a7561936fa5834924d8b8d2e1628d2c","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            self.assertIsNotNone(task.node.driver_internal_info.get("},{"line_number":308,"context_line":"                \u0027last_inventory_reboot_time_before_fr\u0027))"},{"line_number":309,"context_line":"            self.assertIsNotNone("},{"line_number":310,"context_line":"                task.node.driver_internal_info.get(\u0027factory_reset_time\u0027))"},{"line_number":311,"context_line":"            self.assertEqual(\"20200910233024\","},{"line_number":312,"context_line":"                             task.node.driver_internal_info.get("},{"line_number":313,"context_line":"                                 \u0027last_inventory_reboot_time_before_fr\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f560f44_abd4e14c","line":310,"range":{"start_line":309,"start_character":12,"end_line":310,"end_character":73},"in_reply_to":"9f560f44_5af3510a","updated":"2020-09-29 17:35:59.000000000","message":"Done","commit_id":"0759a7286c9e21af2f7bd19c940b45a5baa94871"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                self.mock_client.commit_pending_lifecycle_changes.\\"},{"line_number":162,"context_line":"                    assert_called_once_with(reboot\u003dTrue)"},{"line_number":163,"context_line":"                self.mock_client.get_system.assert_called_once_with()"},{"line_number":164,"context_line":"                last_inventory_reboot_time_before_fr \u003d self.mock_client.\\"},{"line_number":165,"context_line":"                    get_system().last_system_inventory_time"},{"line_number":166,"context_line":"                self.assertIn(last_inventory_reboot_time_before_fr,"},{"line_number":167,"context_line":"                              info[\u0027last_inventory_reboot_time_before_fr\u0027])"},{"line_number":168,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_679e5e56","line":165,"range":{"start_line":164,"start_character":16,"end_line":165,"end_character":59},"updated":"2020-09-30 11:49:05.000000000","message":"it\u0027s not necessary to do it here - to call the mock again; instead assign the value before line 152, \n\n  last_inventory_reboot_time_before_fr \u003d \"20200910233024\"\n\nand use this variable on line 153 and line 166","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                self.mock_client.get_system.assert_called_once_with()"},{"line_number":164,"context_line":"                last_inventory_reboot_time_before_fr \u003d self.mock_client.\\"},{"line_number":165,"context_line":"                    get_system().last_system_inventory_time"},{"line_number":166,"context_line":"                self.assertIn(last_inventory_reboot_time_before_fr,"},{"line_number":167,"context_line":"                              info[\u0027last_inventory_reboot_time_before_fr\u0027])"},{"line_number":168,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":169,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_27e3c6da","line":166,"range":{"start_line":166,"start_character":21,"end_line":166,"end_character":29},"updated":"2020-09-30 11:49:05.000000000","message":"I think this item is not a list, it\u0027s simple value. Should use `assertEqual`.","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                self.mock_client.get_system.assert_called_once_with()"},{"line_number":164,"context_line":"                last_inventory_reboot_time_before_fr \u003d self.mock_client.\\"},{"line_number":165,"context_line":"                    get_system().last_system_inventory_time"},{"line_number":166,"context_line":"                self.assertIn(last_inventory_reboot_time_before_fr,"},{"line_number":167,"context_line":"                              info[\u0027last_inventory_reboot_time_before_fr\u0027])"},{"line_number":168,"context_line":"            if step \u003d\u003d \u0027apply_configuration\u0027:"},{"line_number":169,"context_line":"                ret_state \u003d task.driver.bios.apply_configuration(task, data)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_2d9ba517","line":166,"range":{"start_line":166,"start_character":21,"end_line":166,"end_character":29},"in_reply_to":"9f560f44_27e3c6da","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    \"seconds, unable to cache updated bios setting\")"},{"line_number":333,"context_line":"            mock_failed.assert_called_once_with(task, fail)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def test__query_bios_config_job_status(self):"},{"line_number":336,"context_line":"        self._test__query_bios_config_job_status(self.bios)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027, autospec\u003dTrue)"},{"line_number":339,"context_line":"    def _test__query_bios_config_job_status(self, bios, mock_acquire):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_c7064a86","line":336,"range":{"start_line":335,"start_character":4,"end_line":336,"end_character":59},"updated":"2020-09-30 11:49:05.000000000","message":"here and below these small methods can be discarded and make `_test__query_bios_config_job_status`, ` _test__query_bios_config_job_status_no_config_jobs`, `_test__query_bios_config_job_status_no_driver` non-private. (This pattern was used in drac RAID tests because private tests were reused with different params that is not done and necessary here)","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                    \"seconds, unable to cache updated bios setting\")"},{"line_number":333,"context_line":"            mock_failed.assert_called_once_with(task, fail)"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def test__query_bios_config_job_status(self):"},{"line_number":336,"context_line":"        self._test__query_bios_config_job_status(self.bios)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @mock.patch.object(task_manager, \u0027acquire\u0027, autospec\u003dTrue)"},{"line_number":339,"context_line":"    def _test__query_bios_config_job_status(self, bios, mock_acquire):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_48151d49","line":336,"range":{"start_line":335,"start_character":4,"end_line":336,"end_character":59},"in_reply_to":"9f560f44_c7064a86","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        bios._query_bios_config_job_status(mock_manager,"},{"line_number":380,"context_line":"                                           None)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        self.assertEqual(0, bios._check_node_bios_jobs.call_count)"},{"line_number":383,"context_line":"        self.assertEqual("},{"line_number":384,"context_line":"            0, bios._check_last_system_inventory_changed.call_count)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_e7154e4e","line":382,"range":{"start_line":382,"start_character":7,"end_line":382,"end_character":66},"updated":"2020-09-30 11:49:05.000000000","message":"here and elsewhere where assert no calls, use `mock.assert_not_called()`","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        bios._query_bios_config_job_status(mock_manager,"},{"line_number":380,"context_line":"                                           None)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        self.assertEqual(0, bios._check_node_bios_jobs.call_count)"},{"line_number":383,"context_line":"        self.assertEqual("},{"line_number":384,"context_line":"            0, bios._check_last_system_inventory_changed.call_count)"},{"line_number":385,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_c8ddb714","line":382,"range":{"start_line":382,"start_character":7,"end_line":382,"end_character":66},"in_reply_to":"9f560f44_e7154e4e","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":390,"context_line":"    def _test__query_bios_config_job_status_no_driver(self, bios,"},{"line_number":391,"context_line":"                                                      mock_acquire):"},{"line_number":392,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":393,"context_line":"        node_list \u003d [(self.node.uuid, \u0027\u0027, \u0027\u0027, {})]"},{"line_number":394,"context_line":"        mock_manager.iter_nodes.return_value \u003d node_list"},{"line_number":395,"context_line":"        # mock task_manager.acquire"},{"line_number":396,"context_line":"        task \u003d mock.Mock(node\u003dself.node, driver\u003dmock.Mock(bios\u003d\"\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_27374601","line":393,"range":{"start_line":393,"start_character":8,"end_line":393,"end_character":50},"updated":"2020-09-30 11:49:05.000000000","message":"suggesting to mock bios job and inventory time to be sure that test is working for the right thing. That is - there are these attributes in node, but the driver is different one.","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":390,"context_line":"    def _test__query_bios_config_job_status_no_driver(self, bios,"},{"line_number":391,"context_line":"                                                      mock_acquire):"},{"line_number":392,"context_line":"        mock_manager \u003d mock.Mock()"},{"line_number":393,"context_line":"        node_list \u003d [(self.node.uuid, \u0027\u0027, \u0027\u0027, {})]"},{"line_number":394,"context_line":"        mock_manager.iter_nodes.return_value \u003d node_list"},{"line_number":395,"context_line":"        # mock task_manager.acquire"},{"line_number":396,"context_line":"        task \u003d mock.Mock(node\u003dself.node, driver\u003dmock.Mock(bios\u003d\"\"))"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_7c442cb9","line":393,"range":{"start_line":393,"start_character":8,"end_line":393,"end_character":50},"in_reply_to":"9f560f44_27374601","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"092d9dcdda8e83c32626ef70d1955233f1dd0d6f","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        bios._query_bios_config_job_status(mock_manager,"},{"line_number":402,"context_line":"                                           None)"},{"line_number":403,"context_line":"        self.assertEqual(0, bios._check_node_bios_jobs.call_count)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DracBIOSConfigurationTestCase(test_utils.BaseDracTest):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_073cc2df","line":403,"updated":"2020-09-30 11:49:05.000000000","message":"assert here also that `_check_last_system_inventory_changed` was not called for consistency","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"5eed9e7f43e4743d279f9076eb9eb1d4e3b72d46","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        bios._query_bios_config_job_status(mock_manager,"},{"line_number":402,"context_line":"                                           None)"},{"line_number":403,"context_line":"        self.assertEqual(0, bios._check_node_bios_jobs.call_count)"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class DracBIOSConfigurationTestCase(test_utils.BaseDracTest):"}],"source_content_type":"text/x-python","patch_set":14,"id":"9f560f44_88dd7fdf","line":403,"in_reply_to":"9f560f44_073cc2df","updated":"2020-10-01 05:30:58.000000000","message":"Done","commit_id":"9fe1fc2fb6f2dcd160507b997e03ecbe73e4122c"}],"releasenotes/notes/bug-2008058-Ironic-WS-Man-BIOS-interface-settings-after-factory-reset-not-showing-updated-bios-values-8d82898db35bf9b5.yaml":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7a115fcd4e2ffbb9fdb4b9cfff99cb4deea927d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes idrac-wsman factory-reset getting updated bios setting values."},{"line_number":5,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f560f44_11192587","line":4,"updated":"2020-09-22 20:21:21.000000000","message":"Would you mind changing the above to:\nFixes the idrac-wsman BIOS factory_reset cleaning step to only indicate success once the BIOS settings have actually been reset.","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ce3b30ac3485bd7facd4ca6f4cb5f208809acec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes idrac-wsman factory-reset getting updated bios setting values."},{"line_number":5,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f560f44_9c216eff","line":4,"in_reply_to":"9f560f44_11192587","updated":"2020-09-28 09:24:32.000000000","message":"Done","commit_id":"7fcd7cc3fbead14ee03c9fdf0490473319490955"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"3bc9d371c64ade4fc777d59841ce576e435c07ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the idrac-wsman BIOS factory_reset cleaning step to only"},{"line_number":5,"context_line":"    indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f560f44_79439112","line":4,"range":{"start_line":4,"start_character":14,"end_line":4,"end_character":25},"updated":"2020-10-01 09:02:02.000000000","message":"nit: format for bold monospace by adding double back ticks ``idrac-wsman``. Same for ``factory_reset``.","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":27909,"name":"Aija Jauntēva","email":"code@clusums.eu","username":"ajya"},"change_message_id":"3bc9d371c64ade4fc777d59841ce576e435c07ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the idrac-wsman BIOS factory_reset cleaning step to only"},{"line_number":5,"context_line":"    indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f560f44_59568dd0","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":58},"updated":"2020-10-01 09:02:02.000000000","message":"this is also deploy step, so replace \"cleaning step\" with \"clean and deploy step\"","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"70cdaa9a451d34e6149ecc4b56fa128dd5798e9d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the idrac-wsman BIOS factory_reset cleaning step to only"},{"line_number":5,"context_line":"    indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f560f44_9faac5d0","line":4,"range":{"start_line":4,"start_character":45,"end_line":4,"end_character":58},"in_reply_to":"9f560f44_59568dd0","updated":"2020-10-01 10:56:38.000000000","message":"Done","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"70cdaa9a451d34e6149ecc4b56fa128dd5798e9d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the idrac-wsman BIOS factory_reset cleaning step to only"},{"line_number":5,"context_line":"    indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"9f560f44_dfb43d39","line":4,"range":{"start_line":4,"start_character":14,"end_line":4,"end_character":25},"in_reply_to":"9f560f44_79439112","updated":"2020-10-01 10:56:38.000000000","message":"Done","commit_id":"70133b53b78dc4abd3347790e55d4071970e313b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"e405cadf853e5d0dd3116a8b0b8e54f89387f109","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the ``idrac-wsman`` BIOS ``factory_reset`` clean and deploy step"},{"line_number":5,"context_line":"    to only indicate success once the BIOS settings have actually been reset."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f621f24_e21f6505","line":2,"updated":"2020-11-11 18:24:47.000000000","message":"If you could rename this file to something shorter, say bug-bugnumber-fix-reset-status.yaml it would be very appreciated.","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"7ccca9fe52de0f262d5cf8592c0ca2a93d821ba5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the ``idrac-wsman`` BIOS ``factory_reset`` clean and deploy step"},{"line_number":5,"context_line":"    to only indicate success once the BIOS settings have actually been reset."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f621f24_a439c2f2","line":2,"in_reply_to":"1f621f24_e21f6505","updated":"2020-11-17 07:36:45.000000000","message":"Done","commit_id":"cefbd82928970d6d3151fb6c325d19435b787b6a"}],"releasenotes/notes/bug-2008058-fix-factory-reset-status.yaml-52a6119b46e33b37.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"2dc4435645b84bc1088fdf78917aed94e2c0c706","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the ``idrac-wsman`` BIOS ``factory_reset`` clean and deploy step"},{"line_number":5,"context_line":"    to only indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"db31191a_a0038130","line":6,"updated":"2021-03-22 11:17:19.000000000","message":"missing _ after final ` (the format is `description \u003clink\u003e`_)","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"},{"author":{"_account_id":32108,"name":"Yogesh","email":"yogesh.ramachandra@dell.com","username":"yogeshr20"},"change_message_id":"2058ec061d81e80ec522fc78571594abfed3fb21","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixes the ``idrac-wsman`` BIOS ``factory_reset`` clean and deploy step"},{"line_number":5,"context_line":"    to only indicate success once the BIOS settings have actually been reset."},{"line_number":6,"context_line":"    See `Story 2008058 \u003chttps://storyboard.openstack.org/#!/story/2008058\u003e`."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"24d80758_2a99aed8","line":6,"in_reply_to":"db31191a_a0038130","updated":"2021-03-31 04:35:55.000000000","message":"Done","commit_id":"f98b356a76b0376aea9a18dc2bf9dfd1b2162c11"}]}
