)]}'
{"ironic/conf/deploy.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"89c371b7f9c704c4920a171412a4a11bbc50ec31","unresolved":false,"context_lines":[{"line_number":71,"context_line":"               min\u003d1,"},{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceeds this\u0027"},{"line_number":75,"context_line":"                      \u0027value, nor the number of disks to be erased.\u0027)),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027power_off_after_deploy_failure\u0027,"},{"line_number":77,"context_line":"                default\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_9a20a2fa","line":74,"range":{"start_line":74,"start_character":63,"end_line":74,"end_character":70},"updated":"2018-10-24 02:41:39.000000000","message":"/s/exceeds/exceed/","commit_id":"99ff668bee5e35dfdf42a4a0ce21463b04276c6d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"28a26d5752c5a9e7b541cee7fc6cb5c6bb466f64","unresolved":false,"context_lines":[{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceeds this\u0027"},{"line_number":75,"context_line":"                      \u0027value, nor the number of disks to be erased.\u0027)),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027power_off_after_deploy_failure\u0027,"},{"line_number":77,"context_line":"                default\u003dTrue,"},{"line_number":78,"context_line":"                help\u003d_(\u0027Whether to power off a node after deploy failure. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_baa23eab","line":75,"range":{"start_line":75,"start_character":30,"end_line":75,"end_character":66},"updated":"2018-10-24 02:22:46.000000000","message":"This seems slightly confusing. Maybe this should be broken into another sentence or the comma removed. Not quite sure which is better.","commit_id":"99ff668bee5e35dfdf42a4a0ce21463b04276c6d"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"89c371b7f9c704c4920a171412a4a11bbc50ec31","unresolved":false,"context_lines":[{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceeds this\u0027"},{"line_number":75,"context_line":"                      \u0027value, nor the number of disks to be erased.\u0027)),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027power_off_after_deploy_failure\u0027,"},{"line_number":77,"context_line":"                default\u003dTrue,"},{"line_number":78,"context_line":"                help\u003d_(\u0027Whether to power off a node after deploy failure. \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_7ad6e6c6","line":75,"range":{"start_line":75,"start_character":30,"end_line":75,"end_character":66},"in_reply_to":"3f79a3b5_baa23eab","updated":"2018-10-24 02:41:39.000000000","message":"maybe s/nor/or/ ? I think it would be better, oh my sense of language again..","commit_id":"99ff668bee5e35dfdf42a4a0ce21463b04276c6d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"90906e1a7783fa4f2fe2e4d8d3000ecb45da04aa","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    cfg.IntOpt(\u0027disk_erasure_concurrency\u0027,"},{"line_number":70,"context_line":"               default\u003d1,"},{"line_number":71,"context_line":"               min\u003d1,"},{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceed this\u0027"},{"line_number":75,"context_line":"                      \u0027value or the number of disks to be erased.\u0027)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_3c39bccf","line":72,"updated":"2018-10-31 13:34:06.000000000","message":"missing trailing space after \"Python\"","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d353f84bbd4afd5cc433fd2575512da8d1d3dca7","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    cfg.IntOpt(\u0027disk_erasure_concurrency\u0027,"},{"line_number":70,"context_line":"               default\u003d1,"},{"line_number":71,"context_line":"               min\u003d1,"},{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceed this\u0027"},{"line_number":75,"context_line":"                      \u0027value or the number of disks to be erased.\u0027)),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7869728b","line":72,"in_reply_to":"3f79a3b5_3c39bccf","updated":"2018-11-01 02:26:31.000000000","message":"oh right","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"90906e1a7783fa4f2fe2e4d8d3000ecb45da04aa","unresolved":false,"context_lines":[{"line_number":70,"context_line":"               default\u003d1,"},{"line_number":71,"context_line":"               min\u003d1,"},{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceed this\u0027"},{"line_number":75,"context_line":"                      \u0027value or the number of disks to be erased.\u0027)),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027power_off_after_deploy_failure\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_5c36f8e1","line":73,"updated":"2018-10-31 13:34:06.000000000","message":"ditto here and in other lines. the strings are concatenated, so you end up with \"ofthreads\".","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d353f84bbd4afd5cc433fd2575512da8d1d3dca7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"               default\u003d1,"},{"line_number":71,"context_line":"               min\u003d1,"},{"line_number":72,"context_line":"               help\u003d_(\u0027Defines the target pool size used by Ironic Python\u0027"},{"line_number":73,"context_line":"                      \u0027Agent ramdisk to erase disk devices. The number of\u0027"},{"line_number":74,"context_line":"                      \u0027threads created to erase disks will not exceed this\u0027"},{"line_number":75,"context_line":"                      \u0027value or the number of disks to be erased.\u0027)),"},{"line_number":76,"context_line":"    cfg.BoolOpt(\u0027power_off_after_deploy_failure\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_18663ebe","line":73,"in_reply_to":"3f79a3b5_5c36f8e1","updated":"2018-11-01 02:26:31.000000000","message":"Done","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"90906e1a7783fa4f2fe2e4d8d3000ecb45da04aa","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    info[\u0027agent_continue_if_ata_erase_failed\u0027] \u003d erase_fallback"},{"line_number":661,"context_line":"    secure_erase \u003d CONF.deploy.enable_ata_secure_erase"},{"line_number":662,"context_line":"    info[\u0027agent_enable_ata_secure_erase\u0027] \u003d secure_erase"},{"line_number":663,"context_line":"    disk_erasure_concurrency \u003d CONF.deploy.disk_erasure_concurrency"},{"line_number":664,"context_line":"    info[\u0027disk_erasure_concurrency\u0027] \u003d disk_erasure_concurrency"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    task.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_1c408032","line":663,"updated":"2018-10-31 13:34:06.000000000","message":"nit: this variable is not needed","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d353f84bbd4afd5cc433fd2575512da8d1d3dca7","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    info[\u0027agent_continue_if_ata_erase_failed\u0027] \u003d erase_fallback"},{"line_number":661,"context_line":"    secure_erase \u003d CONF.deploy.enable_ata_secure_erase"},{"line_number":662,"context_line":"    info[\u0027agent_enable_ata_secure_erase\u0027] \u003d secure_erase"},{"line_number":663,"context_line":"    disk_erasure_concurrency \u003d CONF.deploy.disk_erasure_concurrency"},{"line_number":664,"context_line":"    info[\u0027disk_erasure_concurrency\u0027] \u003d disk_erasure_concurrency"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    task.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_38e69a15","line":663,"in_reply_to":"3f79a3b5_1c408032","updated":"2018-11-01 02:26:31.000000000","message":"Oh man, I found a secret, those variables are used to avoid hard line breaks! Fortunately, disk_erasure_concurrency just fits, oh yeah :)\n(/me believe this man ^^ is crazy..)","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"0234c42b6420b7ae2c49f369cf38a7eeb0e56dc1","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    info[\u0027agent_continue_if_ata_erase_failed\u0027] \u003d erase_fallback"},{"line_number":661,"context_line":"    secure_erase \u003d CONF.deploy.enable_ata_secure_erase"},{"line_number":662,"context_line":"    info[\u0027agent_enable_ata_secure_erase\u0027] \u003d secure_erase"},{"line_number":663,"context_line":"    disk_erasure_concurrency \u003d CONF.deploy.disk_erasure_concurrency"},{"line_number":664,"context_line":"    info[\u0027disk_erasure_concurrency\u0027] \u003d disk_erasure_concurrency"},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"    task.node.driver_internal_info \u003d info"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6af66a61","line":663,"in_reply_to":"3f79a3b5_38e69a15","updated":"2018-11-01 19:54:05.000000000","message":"\\o/","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"}],"ironic/tests/unit/drivers/modules/test_deploy_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"90906e1a7783fa4f2fe2e4d8d3000ecb45da04aa","unresolved":false,"context_lines":[{"line_number":1639,"context_line":"            utils.agent_add_clean_params(task)"},{"line_number":1640,"context_line":"            self.assertEqual(2, task.node.driver_internal_info["},{"line_number":1641,"context_line":"                \u0027agent_erase_devices_iterations\u0027])"},{"line_number":1642,"context_line":"            self.assertFalse(task.node.driver_internal_info["},{"line_number":1643,"context_line":"                \u0027agent_erase_devices_zeroize\u0027])"},{"line_number":1644,"context_line":"            self.assertTrue(task.node.driver_internal_info["},{"line_number":1645,"context_line":"                \u0027agent_continue_if_ata_erase_failed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_fc42643c","line":1642,"updated":"2018-10-31 13:34:06.000000000","message":"assertFalse is not the same as assertIs(.., False). The former will accept 0, None or \"\", the latter won\u0027t.","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d353f84bbd4afd5cc433fd2575512da8d1d3dca7","unresolved":false,"context_lines":[{"line_number":1639,"context_line":"            utils.agent_add_clean_params(task)"},{"line_number":1640,"context_line":"            self.assertEqual(2, task.node.driver_internal_info["},{"line_number":1641,"context_line":"                \u0027agent_erase_devices_iterations\u0027])"},{"line_number":1642,"context_line":"            self.assertFalse(task.node.driver_internal_info["},{"line_number":1643,"context_line":"                \u0027agent_erase_devices_zeroize\u0027])"},{"line_number":1644,"context_line":"            self.assertTrue(task.node.driver_internal_info["},{"line_number":1645,"context_line":"                \u0027agent_continue_if_ata_erase_failed\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_589b5664","line":1642,"in_reply_to":"3f79a3b5_fc42643c","updated":"2018-11-01 02:26:31.000000000","message":"oops, I make this wrong, this applies to assertTrue too. I\u0027ll roll them back to pay my sins..","commit_id":"a040f5bae8eb95c3b56f5de3310cacfa3b0efac1"}]}
