)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"1b0076f70cfa75db1ee65cabe23cd09c5e63fbe0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DRAC: Fix a bug for clear_job_queue clean step with non-BIOS pending job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we create pending non-bios config job( E.g create/delete virtual disk)"},{"line_number":10,"context_line":"with \"At next reboot\" option and execute \"clear_job_queue\" clean step,"},{"line_number":11,"context_line":"then that job gets deleted after job execution instead of getting"},{"line_number":12,"context_line":"deleted before job execution."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_4599136c","line":9,"updated":"2019-09-20 14:45:47.000000000","message":"nit: The above line is 73 characters long, but we\u0027re supposed to limit the line length to 72 characters.","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"f1e16317560f335071a77e4d0fdbce457674391d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DRAC: Fix a bug for clear_job_queue clean step with non-BIOS pending job"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we create pending non-bios config job( E.g create/delete virtual disk)"},{"line_number":10,"context_line":"with \"At next reboot\" option and execute \"clear_job_queue\" clean step,"},{"line_number":11,"context_line":"then that job gets deleted after job execution instead of getting"},{"line_number":12,"context_line":"deleted before job execution."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_bf4e756c","line":9,"in_reply_to":"3fa7e38b_4599136c","updated":"2019-09-26 07:01:59.000000000","message":"Done","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"}],"ironic/drivers/modules/drac/management.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"1b0076f70cfa75db1ee65cabe23cd09c5e63fbe0","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":198,"context_line":"    if unfinished_jobs:"},{"line_number":199,"context_line":"        unfinished_job_ids \u003d [job.id for job in unfinished_jobs]"},{"line_number":200,"context_line":"        client.delete_jobs(job_ids\u003dunfinished_job_ids)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    try:"},{"line_number":203,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_a808ded8","line":200,"updated":"2019-09-20 14:45:47.000000000","message":"There is a problem with this change where whenever set_boot_device() is called, we will delete all pending jobs from the job queue.  While I agree that this is what should be done when the cleaning step to clear the job queue is running, this probably should not happen in other scenarios when set_boot_device() is called.  I think this issue can be fixed by accessing the cleaning step on the node and only clearing the job queue if the clear job queue cleaning step is running.  To check if the currently running cleaning step is to clear the job queue, I think you could do something like this:\n\nif node.clean_step.get(\u0027step\u0027) \u003d\u003d \u0027clear_job_queue\u0027:\n   # We know it\u0027s safe to delete the pending jobs in this case","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"6dad828a9877663d30fe2bd9def7637b4200fb9a","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":198,"context_line":"    if unfinished_jobs:"},{"line_number":199,"context_line":"        unfinished_job_ids \u003d [job.id for job in unfinished_jobs]"},{"line_number":200,"context_line":"        client.delete_jobs(job_ids\u003dunfinished_job_ids)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    try:"},{"line_number":203,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_b609022d","line":200,"in_reply_to":"3fa7e38b_a808ded8","updated":"2019-09-23 10:40:24.000000000","message":"Hi Chris, I have implemented above changes locally,\nbut before updating patch, I would like to ask you one question, \n\nI think, \"pending bios config job\" should be cleared in all the cases(whenever set_boot_device() is called) to handle error\u0027s like below:\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d1534551\n\nAnd \"pending non-bios config job\" should be cleared whenever \u0027clear_job_queue\u0027 or \u0027known_good_state\u0027 clean step exists in node like below: \n\nif node.driver_internal_info.get(\"clean_steps\")[0].get(\n     \u0027step\u0027) in [\u0027clear_job_queue\u0027, \u0027known_good_state\u0027]:\n      # then delete only non-bios unfinished jobs.\n\nIs it correct approach??  or\ncan we simply delete all the unfinished jobs, whenever \u0027clear_job_queue\u0027 or \u0027known_good_state clean step exists in node as you suggested??","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"f1e16317560f335071a77e4d0fdbce457674391d","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":198,"context_line":"    if unfinished_jobs:"},{"line_number":199,"context_line":"        unfinished_job_ids \u003d [job.id for job in unfinished_jobs]"},{"line_number":200,"context_line":"        client.delete_jobs(job_ids\u003dunfinished_job_ids)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    try:"},{"line_number":203,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5f3ae1cb","line":200,"in_reply_to":"3fa7e38b_ae38c23c","updated":"2019-09-26 07:01:59.000000000","message":"Hi Chris, I have resolved this comment in updated patch, please review it.","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"90f9de0c7e7174082c465af69f360e0b38177997","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":198,"context_line":"    if unfinished_jobs:"},{"line_number":199,"context_line":"        unfinished_job_ids \u003d [job.id for job in unfinished_jobs]"},{"line_number":200,"context_line":"        client.delete_jobs(job_ids\u003dunfinished_job_ids)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    try:"},{"line_number":203,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ae38c23c","line":200,"in_reply_to":"3fa7e38b_b609022d","updated":"2019-09-23 19:34:12.000000000","message":"Hey Pradip, you make a very good point that we should delete all the unfinished jobs if either the known_good or the clear_job_queue cleaning steps are being executed, and I completely agree with that.  I think it makes perfect sense to delete the pending jobs when we are in the process of running a cleaning step that will clear the job queue, since the user clearly just wants the job queue cleared and almost certainly does not want any pending jobs to run.  If the user is not running a cleaning step that will clear the job queue though, I think it is less obvious if it\u0027s expected behavior to delete all pending jobs.  I think I would be conservative and say that we should not delete pending jobs in this case and error out instead.  It should be best practice for the user to put the server into the known good state by running the known_good cleaning step prior to starting to work with the iDRAC.  If this is done, then they shouldn\u0027t run into the case where there are pending unfinished jobs.  If they do hit the case where there are pending unfinished jobs, then it will be due to a bug in the calling code, a bug in our code, or a firmware bug.  If it is due to a bug in our code or the firmware, we would want them to file a bug ticket so that we are aware of it and can fix the bug.  Always deleting pending jobs would hide this situation instead of making it evident, so I don\u0027t think we should do that.","commit_id":"1faf974e7d9abea7f5749478dffc056050990de0"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7579d67ad246068adfcd9d359328f3a935bed3f1","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if unfinished_jobs:"},{"line_number":205,"context_line":"                client.delete_jobs(job_ids\u003d[job.id for job in unfinished_jobs])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    drac_job.validate_job_queue(node)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    try:"},{"line_number":210,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_782f9487","line":207,"updated":"2019-09-27 15:15:24.000000000","message":"Could you put a check around this so we only validate the job queue if we didn\u0027t just delete all of the unfinished jobs?","commit_id":"29c8b7c99a3a9cceb0386d242ad6c8c92734322e"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"b7a42f46ed6e345c58222c227e0b5189cb75bfdc","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if unfinished_jobs:"},{"line_number":205,"context_line":"                client.delete_jobs(job_ids\u003d[job.id for job in unfinished_jobs])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    drac_job.validate_job_queue(node)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    try:"},{"line_number":210,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_406c1acd","line":207,"in_reply_to":"3fa7e38b_782f9487","updated":"2019-09-27 20:17:10.000000000","message":"Done","commit_id":"29c8b7c99a3a9cceb0386d242ad6c8c92734322e"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d962cfa5fd6605ece7cc7260b620b2eb2bb986b5","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if unfinished_jobs:"},{"line_number":205,"context_line":"                client.delete_jobs(job_ids\u003d[job.id for job in unfinished_jobs])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    if not node.driver_internal_info.get("},{"line_number":208,"context_line":"            \"clean_steps\") or node.driver_internal_info.get("},{"line_number":209,"context_line":"            \"clean_steps\")[0].get(\u0027step\u0027) not in _CLEAR_JOBS_CLEAN_STEPS:"},{"line_number":210,"context_line":"        drac_job.validate_job_queue(node)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e0942639","line":207,"updated":"2019-09-27 20:44:35.000000000","message":"Could you simplify this a little and at line 199, before the \"if\" statement:\nvalidate_job_queue \u003d True\n\nThen at line 205, inside the 3rd \"if\" statement and just before delete_jobs():\nvalidate_job_queue \u003d False\n\nThen this \"if\" statement becomes a simple:\nif validate_job_queue:","commit_id":"c7b57c069d0bfe6ae3b8c0b9ab8bd694787903d4"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"bdf66a34d8fddaec8cef06fe0fb3db6bbafe0d7b","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if unfinished_jobs:"},{"line_number":205,"context_line":"                client.delete_jobs(job_ids\u003d[job.id for job in unfinished_jobs])"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    if not node.driver_internal_info.get("},{"line_number":208,"context_line":"            \"clean_steps\") or node.driver_internal_info.get("},{"line_number":209,"context_line":"            \"clean_steps\")[0].get(\u0027step\u0027) not in _CLEAR_JOBS_CLEAN_STEPS:"},{"line_number":210,"context_line":"        drac_job.validate_job_queue(node)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_c0656a1f","line":207,"in_reply_to":"3fa7e38b_e0942639","updated":"2019-09-27 21:05:39.000000000","message":"Done","commit_id":"c7b57c069d0bfe6ae3b8c0b9ab8bd694787903d4"}],"ironic/tests/unit/drivers/modules/drac/test_management.py":[{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"4d87c837d80e330deaa18d49ad3dffc700475a06","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":272,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":275,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_9670340a","line":274,"updated":"2019-09-26 18:58:34.000000000","message":"Setting driver_internal_info[\u0027clean_steps\u0027] like this makes this test act like the clear_job_queue cleaning step is running.  I think instead, we should make this and all of the other modified test cases act like a cleaning step is not running, since this will be the normal case, like this:\n\nself.node.driver_internal_info[\u0027clean_steps\u0027]\u003d[]\n\nThen, we should add a new test case named test_set_boot_device_with_cleaning or something like that. That test would test when set_boot_device is called and the clear_job_queue cleaning step is running like it is here.  In this new test case, we would then add asserts to check that list_unfinished_jobs() is called and delete_jobs() is called for each unfinished job.","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"09ad7b4b6ec3713a81e4cf23404edf85522d4e7c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":272,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":275,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_5db16d46","line":274,"in_reply_to":"3fa7e38b_9670340a","updated":"2019-09-27 11:50:06.000000000","message":"Done","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"4d87c837d80e330deaa18d49ad3dffc700475a06","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":536,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":539,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":540,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":541,"context_line":"                                  persistent\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_f65ac880","line":538,"updated":"2019-09-26 18:58:34.000000000","message":"I would set clean_steps to the empty list here.","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"09ad7b4b6ec3713a81e4cf23404edf85522d4e7c","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":536,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":539,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":540,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":541,"context_line":"                                  persistent\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_7dac69ec","line":538,"in_reply_to":"3fa7e38b_f65ac880","updated":"2019-09-27 11:50:06.000000000","message":"Done","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"4d87c837d80e330deaa18d49ad3dffc700475a06","unresolved":false,"context_lines":[{"line_number":589,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":590,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":593,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_165e8475","line":592,"updated":"2019-09-26 18:58:34.000000000","message":"I would set clean_steps to the empty list here.","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"09ad7b4b6ec3713a81e4cf23404edf85522d4e7c","unresolved":false,"context_lines":[{"line_number":589,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":590,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d [{"},{"line_number":593,"context_line":"            u\u0027interface\u0027: u\u0027management\u0027, u\u0027step\u0027: u\u0027clear_job_queue\u0027}]"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_1db7753c","line":592,"in_reply_to":"3fa7e38b_165e8475","updated":"2019-09-27 11:50:06.000000000","message":"Done","commit_id":"38d5c1eb3db632714c6d13a6375a18da3a7dc9e1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1ff256406ff6175225094aefa6e7fbf71c45dc4d","unresolved":false,"context_lines":[{"line_number":534,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":535,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d []"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":540,"context_line":"                                  persistent\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_3072d3ae","line":537,"updated":"2019-10-10 14:12:33.000000000","message":"nit: It would be good to also test this code with the value set to None.","commit_id":"4e8369f1e97b1e445dcb68b54f2df8173b4f96a4"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"2a11ed4f57940eb4bd2c3c0a716ce2cf47157c94","unresolved":false,"context_lines":[{"line_number":534,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":535,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"        self.node.driver_internal_info[\u0027clean_steps\u0027] \u003d []"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":540,"context_line":"                                  persistent\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_b268fcf4","line":537,"in_reply_to":"3fa7e38b_3072d3ae","updated":"2019-10-11 05:42:29.000000000","message":"Thanks Julia for reviews.\nI have tested with driver_internal_info[\u0027clean_steps\u0027] \u003d None,  test case is executing successfully in this case as well. But, the default value is always [] for self.node.driver_internal_info[\u0027clean_steps\u0027].\nSo, I don\u0027t think there is need to update this patch set.","commit_id":"4e8369f1e97b1e445dcb68b54f2df8173b4f96a4"}]}
