)]}'
{"ironic_python_agent/extensions/standby.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2744a6aed478c7f95808af9903409978dfa62c7a","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            disk_utils.list_partitions(device)"},{"line_number":475,"context_line":"        except (processutils.UnknownArgumentError,"},{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after\""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_d43d828e","line":477,"updated":"2018-04-11 14:39:53.000000000","message":"missing space. s/after/after /","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"78e27eab3cabff47dfa4ff7923716cdb00e52f8d","unresolved":false,"context_lines":[{"line_number":474,"context_line":"            disk_utils.list_partitions(device)"},{"line_number":475,"context_line":"        except (processutils.UnknownArgumentError,"},{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after\""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_146fc492","line":477,"in_reply_to":"bf659307_d43d828e","updated":"2018-05-08 14:25:03.000000000","message":"Done","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2744a6aed478c7f95808af9903409978dfa62c7a","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after\""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # the configdrive creation is taken care by ironic-lib\u0027s"},{"line_number":482,"context_line":"        # work_on_disk()."},{"line_number":483,"context_line":"        if image_info.get(\u0027image_type\u0027) !\u003d \u0027partition\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf659307_74c35658","line":480,"updated":"2018-04-11 14:39:53.000000000","message":"Do we want to check that there is at least one partition?","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"78e27eab3cabff47dfa4ff7923716cdb00e52f8d","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after\""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # the configdrive creation is taken care by ironic-lib\u0027s"},{"line_number":482,"context_line":"        # work_on_disk()."},{"line_number":483,"context_line":"        if image_info.get(\u0027image_type\u0027) !\u003d \u0027partition\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f7c97a3_9f020db4","line":480,"in_reply_to":"bf659307_74c35658","updated":"2018-05-08 14:25:03.000000000","message":"Thats probably a good check to have /me adds","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"735588a4062fbb26a91f55831333b3015aaf5f48","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        try:"},{"line_number":474,"context_line":"            nparts \u003d len(disk_utils.list_partitions(device))"},{"line_number":475,"context_line":"        except (processutils.UnknownArgumentError,"},{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after \""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_ff0f9885","line":476,"updated":"2018-06-18 15:31:04.000000000","message":"I wonder if we need OSError here. I think we only raise it when an executable is not found.","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b9f5eb170d626bdfcf49a9d1b1f2426060b356","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        try:"},{"line_number":474,"context_line":"            nparts \u003d len(disk_utils.list_partitions(device))"},{"line_number":475,"context_line":"        except (processutils.UnknownArgumentError,"},{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after \""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_45b0fa8b","line":476,"in_reply_to":"5f7c97a3_ff0f9885","updated":"2018-06-26 01:22:31.000000000","message":"Executable not found or path not found where executable is expected... which can happen on ramdisks. I think it is best to keep it, as it is the general fallback if something goes horribly wrong.","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"735588a4062fbb26a91f55831333b3015aaf5f48","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after \""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # Check if there is at least one partition in the partition table after"},{"line_number":482,"context_line":"        # deploy"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_9f246410","line":479,"updated":"2018-06-18 15:31:04.000000000","message":"Do we want to do a few retries? I think we retry nearly anything related to partitions, since kernel may take time to \"understand\" them","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a9982c30efe2fabd8c8e202ca857692d14c4ac5e","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after \""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # Check if there is at least one partition in the partition table after"},{"line_number":482,"context_line":"        # deploy"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_c0636841","line":479,"in_reply_to":"5f7c97a3_05544221","updated":"2018-08-13 14:50:55.000000000","message":"Done","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b9f5eb170d626bdfcf49a9d1b1f2426060b356","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                processutils.ProcessExecutionError, OSError) as e:"},{"line_number":477,"context_line":"            msg \u003d (\"Unable to find a valid partition table on the disk after \""},{"line_number":478,"context_line":"                   \"writing the image. Error {}\".format(e))"},{"line_number":479,"context_line":"            raise exception.InstanceDeployFailure(msg)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # Check if there is at least one partition in the partition table after"},{"line_number":482,"context_line":"        # deploy"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_05544221","line":479,"in_reply_to":"5f7c97a3_9f246410","updated":"2018-06-26 01:22:31.000000000","message":"++, we actually need to make sure the partition table has been refreshed. I think we do that before writing the configuration drive... and we could have already streamed the image to the disk which could have been a wole disk image.\n\nI think we should explicitly refresh the partition data.","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"735588a4062fbb26a91f55831333b3015aaf5f48","unresolved":false,"context_lines":[{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # Check if there is at least one partition in the partition table after"},{"line_number":482,"context_line":"        # deploy"},{"line_number":483,"context_line":"        if nparts \u003c 1:"},{"line_number":484,"context_line":"            msg \u003d (\"No partitions found on the disk after writing the image.\")"},{"line_number":485,"context_line":"            raise exception.InstnaceDeployFailure(msg)"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_bf2120ff","line":483,"updated":"2018-06-18 15:31:04.000000000","message":"nit: not nparts","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a9982c30efe2fabd8c8e202ca857692d14c4ac5e","unresolved":false,"context_lines":[{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        # Check if there is at least one partition in the partition table after"},{"line_number":482,"context_line":"        # deploy"},{"line_number":483,"context_line":"        if nparts \u003c 1:"},{"line_number":484,"context_line":"            msg \u003d (\"No partitions found on the disk after writing the image.\")"},{"line_number":485,"context_line":"            raise exception.InstnaceDeployFailure(msg)"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_8059f08e","line":483,"in_reply_to":"5f7c97a3_bf2120ff","updated":"2018-08-13 14:50:55.000000000","message":"Done","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"}],"ironic_python_agent/tests/unit/extensions/test_standby.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"8beb4b0294855ec4c20a114e9c5e6bd3c52a5f93","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        write_mock.assert_called_once_with(image_info, \u0027manager\u0027)"},{"line_number":668,"context_line":"        dispatch_mock.assert_called_once_with(\u0027get_os_install_device\u0027)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        self.assertEqual(0, configdrive_copy_mock.call_count)"},{"line_number":671,"context_line":"        self.assertEqual(\u0027FAILED\u0027, async_result.command_status)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @mock.patch(\u0027ironic_lib.disk_utils.get_disk_identifier\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_56db654d","line":670,"updated":"2018-04-03 19:06:26.000000000","message":"nit: self.assertFalse(configdrive_copy_mock.called)","commit_id":"732a634417013fa723591b087e76dcfd4ab7948d"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"46c7057177f8ab123195a279beb8c4e714d886bf","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        write_mock.assert_called_once_with(image_info, \u0027manager\u0027)"},{"line_number":668,"context_line":"        dispatch_mock.assert_called_once_with(\u0027get_os_install_device\u0027)"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        self.assertEqual(0, configdrive_copy_mock.call_count)"},{"line_number":671,"context_line":"        self.assertEqual(\u0027FAILED\u0027, async_result.command_status)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    @mock.patch(\u0027ironic_lib.disk_utils.get_disk_identifier\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf659307_68eb1a12","line":670,"in_reply_to":"bf659307_56db654d","updated":"2018-04-04 09:20:22.000000000","message":"Done","commit_id":"732a634417013fa723591b087e76dcfd4ab7948d"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"362f76f643bed565ad60e122e5a3eacf81463cd0","unresolved":false,"context_lines":[{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        self.assertFalse(configdrive_copy_mock.called)"},{"line_number":811,"context_line":"        self.assertEqual(\u0027FAILED\u0027, async_result.command_status)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"    @mock.patch(\u0027ironic_python_agent.utils.execute\u0027, mock.Mock())"},{"line_number":814,"context_line":"    @mock.patch(\u0027ironic_lib.disk_utils.list_partitions\u0027,"},{"line_number":815,"context_line":"                lambda _dev: [mock.Mock()])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_9f8e82d4","line":812,"updated":"2018-12-17 06:57:11.000000000","message":"nit: missing coverage for \"not nparts\"","commit_id":"fc2dfcee60577888ad76d00e943db8e391baaccb"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3df64eeb209c5409c2e0d7f31d02be6ea8555080","unresolved":false,"context_lines":[{"line_number":809,"context_line":""},{"line_number":810,"context_line":"        self.assertFalse(configdrive_copy_mock.called)"},{"line_number":811,"context_line":"        self.assertEqual(\u0027FAILED\u0027, async_result.command_status)"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"    @mock.patch(\u0027ironic_python_agent.utils.execute\u0027, mock.Mock())"},{"line_number":814,"context_line":"    @mock.patch(\u0027ironic_lib.disk_utils.list_partitions\u0027,"},{"line_number":815,"context_line":"                lambda _dev: [mock.Mock()])"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_0f89c81b","line":812,"in_reply_to":"3f79a3b5_9f8e82d4","updated":"2019-01-04 06:49:44.000000000","message":"+1","commit_id":"fc2dfcee60577888ad76d00e943db8e391baaccb"}],"releasenotes/notes/check-partition-table-after-writing-34efbd557d8de7cb.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2744a6aed478c7f95808af9903409978dfa62c7a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    table."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Fixes a bug with bad whole disk images and config drives, where the we"},{"line_number":11,"context_line":"    would attempt to write a config drive partition to the disk without a valid"},{"line_number":12,"context_line":"    partition table."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bf659307_142f7a3f","line":10,"updated":"2018-04-11 14:39:53.000000000","message":"s/the //","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"78e27eab3cabff47dfa4ff7923716cdb00e52f8d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    table."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Fixes a bug with bad whole disk images and config drives, where the we"},{"line_number":11,"context_line":"    would attempt to write a config drive partition to the disk without a valid"},{"line_number":12,"context_line":"    partition table."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5f7c97a3_54121c0b","line":10,"in_reply_to":"bf659307_142f7a3f","updated":"2018-05-08 14:25:03.000000000","message":"Done","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2744a6aed478c7f95808af9903409978dfa62c7a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Fixes a bug with bad whole disk images and config drives, where the we"},{"line_number":11,"context_line":"    would attempt to write a config drive partition to the disk without a valid"},{"line_number":12,"context_line":"    partition table."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bf659307_b41fae06","line":12,"updated":"2018-04-11 14:39:53.000000000","message":"is there a bug number, or is it the same story/rfe?","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"78e27eab3cabff47dfa4ff7923716cdb00e52f8d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    Fixes a bug with bad whole disk images and config drives, where the we"},{"line_number":11,"context_line":"    would attempt to write a config drive partition to the disk without a valid"},{"line_number":12,"context_line":"    partition table."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5f7c97a3_b44ff0bb","line":12,"in_reply_to":"bf659307_b41fae06","updated":"2018-05-08 14:25:03.000000000","message":"its the same story, it was this bug I hit originally that made be realise that we weren\u0027t checking the part table after deployment","commit_id":"c61c50056d03d6771cef628eb4c96d5218df1263"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"735588a4062fbb26a91f55831333b3015aaf5f48","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a check to ensure we have a valid partition table after writing an"},{"line_number":5,"context_line":"    image. This allows us to detect during the deploy process if the image is"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"5f7c97a3_5f1eccbb","line":2,"updated":"2018-06-18 15:31:04.000000000","message":"This is not a feature IMO, and I\u0027d prefer we backport this patch.","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a9982c30efe2fabd8c8e202ca857692d14c4ac5e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds a check to ensure we have a valid partition table after writing an"},{"line_number":5,"context_line":"    image. This allows us to detect during the deploy process if the image is"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f79a3b5_c0c84823","line":2,"in_reply_to":"5f7c97a3_5f1eccbb","updated":"2018-08-13 14:50:55.000000000","message":"Done","commit_id":"5affa1acb1966cee1e79cb2be0c1afd083aa8ff6"}]}
