)]}'
{"ironic/drivers/modules/drac/management.py":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"49125826fcc1495bfe4ebdabdbbe9ae2c532ce0a","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d \\"},{"line_number":202,"context_line":"            [job.id for job in unfinished_jobs if _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs and \\"},{"line_number":204,"context_line":"                len(unfinished_jobs) \u003d\u003d len(unfinished_bios_jobs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_c29fa3b1","line":201,"updated":"2019-08-06 09:28:21.000000000","message":"you could split after if instead of using \\","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"acc5785ef780577909a2353ad7eb13e17fe36337","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d \\"},{"line_number":202,"context_line":"            [job.id for job in unfinished_jobs if _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs and \\"},{"line_number":204,"context_line":"                len(unfinished_jobs) \u003d\u003d len(unfinished_bios_jobs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_cc3d83bd","line":201,"in_reply_to":"7faddb67_c29fa3b1","updated":"2019-08-07 07:34:53.000000000","message":"Done","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"49125826fcc1495bfe4ebdabdbbe9ae2c532ce0a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d \\"},{"line_number":202,"context_line":"            [job.id for job in unfinished_jobs if _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs and \\"},{"line_number":204,"context_line":"                len(unfinished_jobs) \u003d\u003d len(unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_a285c75b","line":203,"updated":"2019-08-06 09:28:21.000000000","message":"you could split after the second \"len(\" instead of using \\","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"acc5785ef780577909a2353ad7eb13e17fe36337","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d \\"},{"line_number":202,"context_line":"            [job.id for job in unfinished_jobs if _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs and \\"},{"line_number":204,"context_line":"                len(unfinished_jobs) \u003d\u003d len(unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ec3abfc2","line":203,"in_reply_to":"7faddb67_a285c75b","updated":"2019-08-07 07:34:53.000000000","message":"Done","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"7ce368c4b630e331ddf1e0bb39ab29f4890963e7","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"},{"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":4,"id":"7faddb67_66421512","line":207,"updated":"2019-08-12 19:07:35.000000000","message":"I think we need to remove the entire else clause above including the call to validate_job_queue().  With the code the way it currently is, any pending non-bios job will cause validate_job_queue() to be called which will cause the set_boot_device() call to abort and the clear job queue cleaning step will never run.","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"},{"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":4,"id":"7faddb67_869146f4","line":207,"in_reply_to":"7faddb67_66421512","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"a1759f279d1b98329b15af676b3dbb7d0af4aa4f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"},{"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":4,"id":"7faddb67_66de953f","line":207,"in_reply_to":"7faddb67_66421512","updated":"2019-08-12 19:17:31.000000000","message":"So If we remove else clause then any pending job will get cleared from job queue.\nOne question, do we need to clear non bios pending jobs from  here or from cleaning step?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"d55af86c93997ae91caba9365265833c53bb5a7a","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"},{"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":4,"id":"7faddb67_a6a24dac","line":207,"in_reply_to":"7faddb67_66de953f","updated":"2019-08-12 19:23:41.000000000","message":"I think the best thing to do is let the cleaning step clear all non-bios pending jobs.","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"88ddbe160ec01d15766497728a2bec082402178f","unresolved":false,"context_lines":[{"line_number":204,"context_line":"                unfinished_bios_jobs):"},{"line_number":205,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":206,"context_line":"        else:"},{"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":4,"id":"7faddb67_a6b9edcb","line":207,"in_reply_to":"7faddb67_a6a24dac","updated":"2019-08-12 19:32:39.000000000","message":"Okay, I have almost addressed all your previous test cases review comments, but now test cases will change again as per  latest approach, so will update patch again.","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1d5ce43196b0ff56cf70e3247f4c5c95803f9eff","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # If pending BIOS job for changing the boot mode is in job queue,"},{"line_number":196,"context_line":"    # we need to clear that job before executing clear_job_queue clean step."},{"line_number":197,"context_line":"    # Otherwise, any pending config jobs can cause creating new config jobs"},{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_3faa54d1","line":196,"range":{"start_line":196,"start_character":5,"end_line":196,"end_character":76},"updated":"2019-08-21 11:29:34.000000000","message":"Did not get this comment. How is set_boot_mode() is related to clear_job_queue() clean step?","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"0e5001f8f0912b8670f660f3b69610e468cad73f","unresolved":false,"context_lines":[{"line_number":193,"context_line":"    client \u003d drac_common.get_drac_client(node)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # If pending BIOS job for changing the boot mode is in job queue,"},{"line_number":196,"context_line":"    # we need to clear that job before executing clear_job_queue clean step."},{"line_number":197,"context_line":"    # Otherwise, any pending config jobs can cause creating new config jobs"},{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_49cf458b","line":196,"range":{"start_line":196,"start_character":5,"end_line":196,"end_character":76},"in_reply_to":"7faddb67_3faa54d1","updated":"2019-08-22 10:48:50.000000000","message":"while executing clear_job_queue cleaning step, below sequence of methods is executing and it is calling set_boot_device() method.\n_do_node_clean()\n_prepare_cleaning()\ndeploy_utils.prepare_inband_cleaning()\nprepare_ramdisk()\nset_boot_device()\n\nPreviously, if bios pending job found in job queue then it was raising an exception.\nTo avoid that exception, we need to delete that pending BIOS job from job queue and then clear_job_queue clean step will delete remaining jobs(completed jobs and other pending jobs).","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1d5ce43196b0ff56cf70e3247f4c5c95803f9eff","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    # we need to clear that job before executing clear_job_queue clean step."},{"line_number":197,"context_line":"    # Otherwise, any pending config jobs can cause creating new config jobs"},{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d [job.id for job in unfinished_jobs if"},{"line_number":202,"context_line":"                                _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs:"},{"line_number":204,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    try:"},{"line_number":207,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_ffb6fc24","line":204,"range":{"start_line":199,"start_character":4,"end_line":204,"end_character":60},"updated":"2019-08-21 11:29:34.000000000","message":"Since this is being combined with feature, I hope you do not want to backport it. If you need to, better to raise them as separate reviews.","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"0e5001f8f0912b8670f660f3b69610e468cad73f","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    # we need to clear that job before executing clear_job_queue clean step."},{"line_number":197,"context_line":"    # Otherwise, any pending config jobs can cause creating new config jobs"},{"line_number":198,"context_line":"    # to fail."},{"line_number":199,"context_line":"    unfinished_jobs \u003d drac_job.list_unfinished_jobs(node)"},{"line_number":200,"context_line":"    if unfinished_jobs:"},{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d [job.id for job in unfinished_jobs if"},{"line_number":202,"context_line":"                                _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs:"},{"line_number":204,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    try:"},{"line_number":207,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_8bca1817","line":204,"range":{"start_line":199,"start_character":4,"end_line":204,"end_character":60},"in_reply_to":"7faddb67_ffb6fc24","updated":"2019-08-22 10:48:50.000000000","message":"No need of separate reviews, as we do not want to backport it.","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1d5ce43196b0ff56cf70e3247f4c5c95803f9eff","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        node \u003d task.node"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":442,"context_line":"        client.delete_jobs(job_ids\u003d[_CLEAR_JOB_IDS])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_7ff20c07","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":26},"updated":"2019-08-21 11:29:34.000000000","message":"This should be in try/except to handle exceptions from client.delete_jobs","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"70742282e2df0b35015cd0c0e5a7e51170264d43","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        node \u003d task.node"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":442,"context_line":"        client.delete_jobs(job_ids\u003d[_CLEAR_JOB_IDS])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_29a297ae","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":26},"in_reply_to":"7faddb67_7ff20c07","updated":"2019-08-29 09:12:02.000000000","message":"Hi Shivanand, added try/except in clear_job_queue cleaning step, please review it.","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"0e5001f8f0912b8670f660f3b69610e468cad73f","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        node \u003d task.node"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        client \u003d drac_common.get_drac_client(node)"},{"line_number":442,"context_line":"        client.delete_jobs(job_ids\u003d[_CLEAR_JOB_IDS])"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_6b631c1b","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":26},"in_reply_to":"7faddb67_7ff20c07","updated":"2019-08-22 10:48:50.000000000","message":"In the method where this clean step is calling, try/except clause is already present there to handle exceptions.","commit_id":"8304f084f6be4f13ff3b34e0dbf163356576c7d3"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8f26ff66a47ed51ef76af8ad8ca9a1b62be96b5b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d [job.id for job in unfinished_jobs if"},{"line_number":202,"context_line":"                                _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs:"},{"line_number":204,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    try:"},{"line_number":207,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_4faa30d2","line":204,"updated":"2019-09-03 17:01:48.000000000","message":"I\u0027m curious, does this situation: set_boot_device() being called with a pending BIOS job, only happen when doing introspection?\n\nIf no, could someone verify that you still want to do this in other situations where this code might get invoked?","commit_id":"dd9c5fcedfe4acdeaf8dd525ddc41a62229d4d53"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52406a82f7ea12a45248c047ff5c216aaf60ab59","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        unfinished_bios_jobs \u003d [job.id for job in unfinished_jobs if"},{"line_number":202,"context_line":"                                _BIOS_JOB_NAME in job.name]"},{"line_number":203,"context_line":"        if unfinished_bios_jobs:"},{"line_number":204,"context_line":"            client.delete_jobs(job_ids\u003dunfinished_bios_jobs)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    try:"},{"line_number":207,"context_line":"        drac_boot_devices \u003d client.list_boot_devices()"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_28cb1ca4","line":204,"in_reply_to":"7faddb67_4faa30d2","updated":"2019-09-04 12:56:45.000000000","message":"It is all applications of set boot device, as I understand it.","commit_id":"dd9c5fcedfe4acdeaf8dd525ddc41a62229d4d53"}],"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":"4efaba095b209b3de088b764a10611846e50b51c","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("},{"line_number":273,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dFalse)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":276,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":277,"context_line":"        mock_client.change_boot_device_order.assert_called_once_with("},{"line_number":278,"context_line":"            \u0027OneTime\u0027, \u0027BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_139941cf","line":275,"updated":"2019-08-09 18:28:38.000000000","message":"In this test case, as well as many of the below, validate_job_queue() should not be called because no jobs are specified to be returned, but the assert that it is called on the line below is passing, which it should not.  I looked into why this is, and it\u0027s because the call to list_unfinished jobs() returns a MagicMock since we haven\u0027t specified what it should return here.  This results in validate_job_queue() being called, which it shouldn\u0027t be.  To fix this, in any test case where we want no unfinished jobs to be returned, we should explicitly make mock_list_unfinished_jobs return [] like this:\n\nmock_list_unfinished_jobs.return_value\u003d[]\n\nAnd we will need to remove the assert that validate_job_queue() is called on the line below, since it should not be in this case.","commit_id":"85c98bc3f13c6af8d1cb66f5c676de637fc3d247"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"dcba852e093e9d7a14d96fcc11caf807c041e300","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("},{"line_number":273,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dFalse)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":276,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":277,"context_line":"        mock_client.change_boot_device_order.assert_called_once_with("},{"line_number":278,"context_line":"            \u0027OneTime\u0027, \u0027BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_5f77ac3c","line":275,"in_reply_to":"7faddb67_139941cf","updated":"2019-08-12 11:58:51.000000000","message":"I have updated test_set_boot_device(..) with mentioned changes, please let me know if any other changes required.","commit_id":"85c98bc3f13c6af8d1cb66f5c676de637fc3d247"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        mock_client.change_boot_device_order.assert_called_once_with("},{"line_number":275,"context_line":"            \u0027OneTime\u0027, \u0027BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1\u0027)"},{"line_number":276,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":277,"context_line":"        mock_client.commit_pending_bios_changes.assert_called_once_with()"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @mock.patch.object(drac_mgmt, \u0027_get_next_persistent_boot_mode\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_dcce475a","line":276,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        mock_client.change_boot_device_order.assert_called_once_with("},{"line_number":275,"context_line":"            \u0027OneTime\u0027, \u0027BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1\u0027)"},{"line_number":276,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":277,"context_line":"        mock_client.commit_pending_bios_changes.assert_called_once_with()"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    @mock.patch.object(drac_mgmt, \u0027_get_next_persistent_boot_mode\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_46bd8e66","line":276,"in_reply_to":"7faddb67_dcce475a","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":286,"context_line":"                       autospec\u003dTrue)"},{"line_number":287,"context_line":"    def test_set_boot_device_called_with_no_change("},{"line_number":288,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":289,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":290,"context_line":"            mock_get_drac_client):"},{"line_number":291,"context_line":"        mock_client \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9ce20fa0","line":288,"updated":"2019-08-12 14:03:28.000000000","message":"I think mock_validate_job_queue can be removed","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":286,"context_line":"                       autospec\u003dTrue)"},{"line_number":287,"context_line":"    def test_set_boot_device_called_with_no_change("},{"line_number":288,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":289,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":290,"context_line":"            mock_get_drac_client):"},{"line_number":291,"context_line":"        mock_client \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_66c0cae1","line":288,"in_reply_to":"7faddb67_9ce20fa0","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                       \u0027persistent\u0027: True}"},{"line_number":296,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":297,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("},{"line_number":300,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dTrue)"},{"line_number":301,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1cfe1f6b","line":298,"updated":"2019-08-12 14:03:28.000000000","message":"Need to add: mock_list_unfinished_jobs.return_value \u003d []","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":295,"context_line":"                       \u0027persistent\u0027: True}"},{"line_number":296,"context_line":"        mock__get_boot_device.return_value \u003d boot_device"},{"line_number":297,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"        boot_device \u003d drac_mgmt.set_boot_device("},{"line_number":300,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dTrue)"},{"line_number":301,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_06b79688","line":298,"in_reply_to":"7faddb67_1cfe1f6b","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dTrue)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":303,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":304,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":305,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":306,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_dcf7278c","line":303,"updated":"2019-08-12 14:03:28.000000000","message":"Need to remove the above line since validate_job_queue() shouldn\u0027t be called at all during this test","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":300,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dTrue)"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":303,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":304,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":305,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":306,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c6b09e8e","line":303,"in_reply_to":"7faddb67_dcf7278c","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":319,"context_line":"                       autospec\u003dTrue)"},{"line_number":320,"context_line":"    def test_set_boot_device_called_with_no_drac_boot_device("},{"line_number":321,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":322,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":323,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":324,"context_line":"            mock__flexibly_program_boot_order,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1ce85f7a","line":321,"updated":"2019-08-12 14:03:28.000000000","message":"I think mock_validate_job_queue can be removed","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":319,"context_line":"                       autospec\u003dTrue)"},{"line_number":320,"context_line":"    def test_set_boot_device_called_with_no_drac_boot_device("},{"line_number":321,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":322,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":323,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":324,"context_line":"            mock__flexibly_program_boot_order,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e6ab5a1b","line":321,"in_reply_to":"7faddb67_1ce85f7a","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            mock_get_drac_client):"},{"line_number":326,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":327,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":328,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027UEFI\u0027]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        mock_job \u003d mock.Mock()"},{"line_number":331,"context_line":"        mock_job.status \u003d \"Scheduled\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1c337f64","line":328,"updated":"2019-08-12 14:03:28.000000000","message":"Need to add: mock_list_unfinished_jobs.return_value \u003d []","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            mock_get_drac_client):"},{"line_number":326,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":327,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":328,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027UEFI\u0027]"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        mock_job \u003d mock.Mock()"},{"line_number":331,"context_line":"        mock_job.status \u003d \"Scheduled\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_46626e18","line":328,"in_reply_to":"7faddb67_1c337f64","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                                  persistent\u003dTrue)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":365,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":366,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":367,"context_line":"        mock_client.set_bios_settings.assert_called_once_with("},{"line_number":368,"context_line":"            flexibly_program_settings)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_dc3c0732","line":365,"updated":"2019-08-12 14:03:28.000000000","message":"Need to remove the above line since validate_job_queue() shouldn\u0027t be called at all during this test","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                                  persistent\u003dTrue)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":365,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":366,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":367,"context_line":"        mock_client.set_bios_settings.assert_called_once_with("},{"line_number":368,"context_line":"            flexibly_program_settings)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_266f32fd","line":365,"in_reply_to":"7faddb67_dc3c0732","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":380,"context_line":"                       autospec\u003dTrue)"},{"line_number":381,"context_line":"    def test_set_boot_device_called_with_not_flexibly_programmable("},{"line_number":382,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":383,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":384,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":385,"context_line":"            mock_get_drac_client):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9cfbef45","line":382,"updated":"2019-08-12 14:03:28.000000000","message":"I think mock_validate_job_queue can be removed","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":379,"context_line":"    @mock.patch.object(drac_job, \u0027list_unfinished_jobs\u0027, spec_set\u003dTrue,"},{"line_number":380,"context_line":"                       autospec\u003dTrue)"},{"line_number":381,"context_line":"    def test_set_boot_device_called_with_not_flexibly_programmable("},{"line_number":382,"context_line":"            self, mock_list_unfinished_jobs, mock_validate_job_queue,"},{"line_number":383,"context_line":"            mock__get_boot_device, mock__get_next_persistent_boot_mode,"},{"line_number":384,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":385,"context_line":"            mock_get_drac_client):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c675fecd","line":382,"in_reply_to":"7faddb67_9cfbef45","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":385,"context_line":"            mock_get_drac_client):"},{"line_number":386,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":387,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":388,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027UEFI\u0027]"},{"line_number":389,"context_line":"        boot_device \u003d {\u0027boot_device\u0027: ironic.common.boot_devices.PXE,"},{"line_number":390,"context_line":"                       \u0027persistent\u0027: False}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_7c7ab3f0","line":387,"updated":"2019-08-12 14:03:28.000000000","message":"Need to add: mock_list_unfinished_jobs.return_value \u003d []","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            mock__is_boot_order_flexibly_programmable,"},{"line_number":385,"context_line":"            mock_get_drac_client):"},{"line_number":386,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":387,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":388,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027UEFI\u0027]"},{"line_number":389,"context_line":"        boot_device \u003d {\u0027boot_device\u0027: ironic.common.boot_devices.PXE,"},{"line_number":390,"context_line":"                       \u0027persistent\u0027: False}"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e6703add","line":387,"in_reply_to":"7faddb67_7c7ab3f0","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                          ironic.common.boot_devices.CDROM, persistent\u003dFalse)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":400,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":401,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":402,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":403,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_1c813fc4","line":400,"updated":"2019-08-12 14:03:28.000000000","message":"Need to remove the above line since validate_job_queue() shouldn\u0027t be called at all during this test","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                          ironic.common.boot_devices.CDROM, persistent\u003dFalse)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":400,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":401,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":402,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":403,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a67a42b7","line":400,"in_reply_to":"7faddb67_1c813fc4","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":442,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":443,"context_line":"                          ironic.common.boot_devices.DISK, persistent\u003dTrue)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        mock_list_unfinished_jobs.return_value \u003d []"},{"line_number":446,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":447,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":448,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_3cb99b78","line":445,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":442,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":443,"context_line":"                          ironic.common.boot_devices.DISK, persistent\u003dTrue)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"        mock_list_unfinished_jobs.return_value \u003d []"},{"line_number":446,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":447,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"},{"line_number":448,"context_line":"        self.assertEqual(0, mock_client.commit_pending_bios_changes.call_count)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_664e8a97","line":445,"in_reply_to":"7faddb67_3cb99b78","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def test_set_boot_device_job_not_scheduled("},{"line_number":461,"context_line":"            self,"},{"line_number":462,"context_line":"            mock_list_unfinished_jobs,"},{"line_number":463,"context_line":"            mock_validate_job_queue,"},{"line_number":464,"context_line":"            mock__get_boot_device,"},{"line_number":465,"context_line":"            mock__get_next_persistent_boot_mode,"},{"line_number":466,"context_line":"            mock_sleep,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_bc002b04","line":463,"updated":"2019-08-12 14:03:28.000000000","message":"I think mock_validate_job_queue can be removed","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def test_set_boot_device_job_not_scheduled("},{"line_number":461,"context_line":"            self,"},{"line_number":462,"context_line":"            mock_list_unfinished_jobs,"},{"line_number":463,"context_line":"            mock_validate_job_queue,"},{"line_number":464,"context_line":"            mock__get_boot_device,"},{"line_number":465,"context_line":"            mock__get_next_persistent_boot_mode,"},{"line_number":466,"context_line":"            mock_sleep,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_26489285","line":463,"in_reply_to":"7faddb67_bc002b04","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            mock_time,"},{"line_number":468,"context_line":"            mock_get_drac_client):"},{"line_number":469,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":471,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027IPL\u0027]"},{"line_number":472,"context_line":"        mock_job \u003d mock.Mock()"},{"line_number":473,"context_line":"        mock_job.status \u003d \"New\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_5c2fb7a6","line":470,"updated":"2019-08-12 14:03:28.000000000","message":"Need to add: mock_list_unfinished_jobs.return_value \u003d []","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            mock_time,"},{"line_number":468,"context_line":"            mock_get_drac_client):"},{"line_number":469,"context_line":"        mock_client \u003d mock.Mock()"},{"line_number":470,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":471,"context_line":"        mock_client.list_boot_devices.return_value \u003d self.boot_devices[\u0027IPL\u0027]"},{"line_number":472,"context_line":"        mock_job \u003d mock.Mock()"},{"line_number":473,"context_line":"        mock_job.status \u003d \"New\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c65e5e44","line":470,"in_reply_to":"7faddb67_5c2fb7a6","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        self.assertRaises(exception.DracOperationError,"},{"line_number":483,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":484,"context_line":"                          ironic.common.boot_devices.PXE,"},{"line_number":485,"context_line":"                          persistent\u003dTrue)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":488,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9c2c4fad","line":485,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        self.assertRaises(exception.DracOperationError,"},{"line_number":483,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":484,"context_line":"                          ironic.common.boot_devices.PXE,"},{"line_number":485,"context_line":"                          persistent\u003dTrue)"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"},{"line_number":488,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e6591a5b","line":485,"in_reply_to":"7faddb67_9c2c4fad","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        drac_mgmt.set_boot_device("},{"line_number":523,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dFalse)"},{"line_number":524,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9f48c15c","line":523,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":520,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        drac_mgmt.set_boot_device("},{"line_number":523,"context_line":"            self.node, ironic.common.boot_devices.PXE, persistent\u003dFalse)"},{"line_number":524,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    @mock.patch.object(drac_job, \u0027validate_job_queue\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_46302e08","line":523,"in_reply_to":"7faddb67_9f48c15c","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":581,"context_line":"                                  persistent\u003dTrue)"},{"line_number":582,"context_line":"        mock_client.delete_jobs.assert_called_once_with("},{"line_number":583,"context_line":"            job_ids\u003d[\u0027JID_602553293345\u0027])"},{"line_number":584,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_7f9ce5be","line":581,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":581,"context_line":"                                  persistent\u003dTrue)"},{"line_number":582,"context_line":"        mock_client.delete_jobs.assert_called_once_with("},{"line_number":583,"context_line":"            job_ids\u003d[\u0027JID_602553293345\u0027])"},{"line_number":584,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_063a36e6","line":581,"in_reply_to":"7faddb67_7f9ce5be","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"87e9a7135168a06881b3978b54254ff53460d9f6","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":629,"context_line":"                                  persistent\u003dTrue)"},{"line_number":630,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_9fb6813e","line":629,"updated":"2019-08-12 14:03:28.000000000","message":"Can you add an assert here that list_unfinished_jobs() was called once?","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"ef6b1c344bb1f29424450d3e292dfe12b77127c3","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        mock__get_next_persistent_boot_mode.return_value \u003d \u0027IPL\u0027"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":629,"context_line":"                                  persistent\u003dTrue)"},{"line_number":630,"context_line":"        mock_validate_job_queue.assert_called_once_with(self.node)"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_263df2dc","line":629,"in_reply_to":"7faddb67_9fb6813e","updated":"2019-08-13 11:25:09.000000000","message":"Done","commit_id":"670a1d5584d9f2ace4f5e3adf3b3a5ada2be1e61"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"143f4fb2e3b35ffe5c9ffbc66d44f059b0dd2535","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        self.assertRaises(exception.DracOperationError,"},{"line_number":437,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":438,"context_line":"                          ironic.common.boot_devices.DISK, persistent\u003dTrue)"},{"line_number":439,"context_line":"        mock_list_unfinished_jobs.return_value \u003d []"},{"line_number":440,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":441,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":442,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_80e5a00c","line":439,"updated":"2019-08-13 20:37:13.000000000","message":"The above line needs to be moved before the self.assertRaises() statement where set_boot_device() is called.","commit_id":"977fb75cda9a0c5e5cb301f687f5ae9c82753b17"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"bd005254907c0a4d979ef0325ccf3d7a334dc1ab","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        self.assertRaises(exception.DracOperationError,"},{"line_number":437,"context_line":"                          drac_mgmt.set_boot_device, self.node,"},{"line_number":438,"context_line":"                          ironic.common.boot_devices.DISK, persistent\u003dTrue)"},{"line_number":439,"context_line":"        mock_list_unfinished_jobs.return_value \u003d []"},{"line_number":440,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":441,"context_line":"        self.assertEqual(0, mock_client.change_boot_device_order.call_count)"},{"line_number":442,"context_line":"        self.assertEqual(0, mock_client.set_bios_settings.call_count)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_1df2729b","line":439,"in_reply_to":"7faddb67_80e5a00c","updated":"2019-08-14 11:09:42.000000000","message":"Done","commit_id":"977fb75cda9a0c5e5cb301f687f5ae9c82753b17"},{"author":{"_account_id":10250,"name":"Christopher Dearborn","email":"Christopher.Dearborn@dell.com","username":"cdearbor"},"change_message_id":"143f4fb2e3b35ffe5c9ffbc66d44f059b0dd2535","unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":576,"context_line":"                                  persistent\u003dTrue)"},{"line_number":577,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_a0c9bc79","line":577,"updated":"2019-08-13 20:37:13.000000000","message":"I think we should add an assert statement here that delete_jobs is called with job JID_602553293345.","commit_id":"977fb75cda9a0c5e5cb301f687f5ae9c82753b17"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"bd005254907c0a4d979ef0325ccf3d7a334dc1ab","unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        drac_mgmt.set_boot_device(self.node, ironic.common.boot_devices.DISK,"},{"line_number":576,"context_line":"                                  persistent\u003dTrue)"},{"line_number":577,"context_line":"        mock_list_unfinished_jobs.assert_called_once_with(self.node)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"@mock.patch.object(drac_common, \u0027get_drac_client\u0027, spec_set\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_3dedeeb6","line":577,"in_reply_to":"7faddb67_a0c9bc79","updated":"2019-08-14 11:09:42.000000000","message":"Done","commit_id":"977fb75cda9a0c5e5cb301f687f5ae9c82753b17"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"52406a82f7ea12a45248c047ff5c216aaf60ab59","unresolved":false,"context_lines":[{"line_number":508,"context_line":"        mock_get_drac_client.return_value \u003d mock_client"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        bios_job_dict \u003d {"},{"line_number":511,"context_line":"            \u0027id\u0027: \u0027JID_602553293345\u0027,"},{"line_number":512,"context_line":"            \u0027name\u0027: \u0027ConfigBIOS:BIOS.Setup.1-1\u0027,"},{"line_number":513,"context_line":"            \u0027start_time\u0027: \u0027TIME_NOW\u0027,"},{"line_number":514,"context_line":"            \u0027until_time\u0027: \u0027TIME_NA\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_a84b8c25","line":511,"updated":"2019-09-04 12:56:45.000000000","message":"Thank you for adding this test.","commit_id":"dd9c5fcedfe4acdeaf8dd525ddc41a62229d4d53"}],"releasenotes/notes/add_clean_step_clear_job_queue-7b774d8d0e36d1b2.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"49125826fcc1495bfe4ebdabdbbe9ae2c532ce0a","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    job queue including bios config pending job."},{"line_number":7,"context_line":"fixes:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Fixes an issue if there is a pending bios config job in job queue,"},{"line_number":10,"context_line":"    then ironic will abandon the introspection attempt for the node,"},{"line_number":11,"context_line":"    which will cause overall introspection to fail."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_a24e276c","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":19},"updated":"2019-08-06 09:28:21.000000000","message":"nit: adds \"where\"","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"},{"author":{"_account_id":29834,"name":"Pradip Kadam","email":"pradip.kadam001@gmail.com","username":"pradip.kadam001"},"change_message_id":"acc5785ef780577909a2353ad7eb13e17fe36337","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    job queue including bios config pending job."},{"line_number":7,"context_line":"fixes:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Fixes an issue if there is a pending bios config job in job queue,"},{"line_number":10,"context_line":"    then ironic will abandon the introspection attempt for the node,"},{"line_number":11,"context_line":"    which will cause overall introspection to fail."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7faddb67_2c59b734","line":9,"range":{"start_line":9,"start_character":18,"end_line":9,"end_character":19},"in_reply_to":"7faddb67_a24e276c","updated":"2019-08-07 07:34:53.000000000","message":"Done","commit_id":"49ad5394fec13bd46595ffec3f327468cc19c027"}]}
