)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"434bee05afb97a5f630c7e6620b60ee3e53a2c69","unresolved":false,"context_lines":[{"line_number":1407,"context_line":""},{"line_number":1408,"context_line":"        # If explicitely specified by caller let\u0027s follow orders"},{"line_number":1409,"context_line":"        properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1410,"context_line":"        specified_table_type \u003d properties.get(\u0027partition_table_type\u0027)"},{"line_number":1411,"context_line":"        if specified_table_type:"},{"line_number":1412,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"},{"line_number":1413,"context_line":"                msg \u003d (\"Invalid node property \u0027partition_table_type\u0027. \""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_ae0610cd","line":1410,"range":{"start_line":1410,"start_character":8,"end_line":1410,"end_character":69},"updated":"2019-08-06 13:00:07.000000000","message":"we do it a bit differently for deployment, let\u0027s probably do the same: https://docs.openstack.org/ironic/latest/install/advanced.html#choosing-the-disk-label","commit_id":"eb32a4df8f0147a884b7752b0ff3e7aa6271fe30"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"336d634b83964a6748e9855d3b1fbec7e2f4f3b7","unresolved":false,"context_lines":[{"line_number":1427,"context_line":"            raise errors.SoftwareRAIDError(msg)"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"        # Create an MBR partition table on each disk."},{"line_number":1430,"context_line":"        # TODO(arne_wiebalck): Check if GPT would work as well."},{"line_number":1431,"context_line":"        for block_device in block_devices:"},{"line_number":1432,"context_line":"            LOG.info(\"Creating partition table on {}\".format("},{"line_number":1433,"context_line":"                block_device.name))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_ef38713c","side":"PARENT","line":1430,"updated":"2019-08-07 09:17:25.000000000","message":"so I guess gpt works?","commit_id":"570584f9abc5216b5fdea8e9923758cc3def2816"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"84d74883482dde412e98281a38361cd55f695cd1","unresolved":false,"context_lines":[{"line_number":1427,"context_line":"            raise errors.SoftwareRAIDError(msg)"},{"line_number":1428,"context_line":""},{"line_number":1429,"context_line":"        # Create an MBR partition table on each disk."},{"line_number":1430,"context_line":"        # TODO(arne_wiebalck): Check if GPT would work as well."},{"line_number":1431,"context_line":"        for block_device in block_devices:"},{"line_number":1432,"context_line":"            LOG.info(\"Creating partition table on {}\".format("},{"line_number":1433,"context_line":"                block_device.name))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_57d353d6","side":"PARENT","line":1430,"in_reply_to":"7faddb67_ef38713c","updated":"2019-08-07 19:18:43.000000000","message":"yep, tested it, works well :)","commit_id":"570584f9abc5216b5fdea8e9923758cc3def2816"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"dc6a6bd99a04b769caf2d9c95ab72bd1b3547e4e","unresolved":false,"context_lines":[{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        # If explicitely specified by caller let\u0027s follow orders"},{"line_number":1415,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1416,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1417,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1418,"context_line":"        if specified_table_type:"},{"line_number":1419,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_33bd04b7","line":1416,"range":{"start_line":1416,"start_character":23,"end_line":1416,"end_character":60},"updated":"2019-08-15 16:11:32.000000000","message":"Not this patch, but I just noticed (and it is related, and from you): isn\u0027t the instance_info empty when cleaning? Shouldn\u0027t this better come from the node properties?","commit_id":"320a3e2c48b4c7972e47b14f74c750c15acd1940"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"930d7a2f4dc045a51a8c6eb9bb78f8b345f5f6f3","unresolved":false,"context_lines":[{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"        # If explicitely specified by caller let\u0027s follow orders"},{"line_number":1415,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1416,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1417,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1418,"context_line":"        if specified_table_type:"},{"line_number":1419,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_84eca9f4","line":1416,"range":{"start_line":1416,"start_character":23,"end_line":1416,"end_character":60},"in_reply_to":"7faddb67_33bd04b7","updated":"2019-08-15 22:06:14.000000000","message":"Right. During cleaning there is no instance info, so no possibility to specify the label then. So using the properties is better. However, I\u0027m wondering if we should keep the instance_info, then fallback on properties: we chose to use the instance_info to stay consistent with what was used at other places in Ironic.","commit_id":"320a3e2c48b4c7972e47b14f74c750c15acd1940"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"008a6ac698aeb943738b268179fccd77225ad28a","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1448,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1449,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1450,"context_line":"        if not specified_table_type:"},{"line_number":1451,"context_line":"            properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1452,"context_line":"            specified_table_type \u003d properties.get(\u0027disk_label\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if specified_table_type:"},{"line_number":1455,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_fd0c0f43","line":1452,"range":{"start_line":1450,"start_character":0,"end_line":1452,"end_character":63},"updated":"2019-08-16 08:34:04.000000000","message":"I think \"disk_label\" is a capability embedded in the node\u0027s properties, so unless I\u0027m mistaken you\u0027ll need to get the capabilities first.","commit_id":"d047a995fd077353846f9bc5f55325a6a4788f05"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"a150dd5dd3853b9f10f9bb82e22892d434523051","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1448,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1449,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1450,"context_line":"        if not specified_table_type:"},{"line_number":1451,"context_line":"            properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1452,"context_line":"            specified_table_type \u003d properties.get(\u0027disk_label\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if specified_table_type:"},{"line_number":1455,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_5cddc811","line":1452,"range":{"start_line":1450,"start_character":0,"end_line":1452,"end_character":63},"in_reply_to":"7faddb67_3c21ec9e","updated":"2019-08-22 08:54:01.000000000","message":"Does it make sense to consult the instance\u0027s capabilities at all (given that this code is executed as a cleaning step)?","commit_id":"d047a995fd077353846f9bc5f55325a6a4788f05"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1b65c2e63ee0935df7b47b51c8ee2fc4a87f0838","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1448,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1449,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1450,"context_line":"        if not specified_table_type:"},{"line_number":1451,"context_line":"            properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1452,"context_line":"            specified_table_type \u003d properties.get(\u0027disk_label\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if specified_table_type:"},{"line_number":1455,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_461092ac","line":1452,"range":{"start_line":1450,"start_character":0,"end_line":1452,"end_character":63},"in_reply_to":"7faddb67_5cddc811","updated":"2019-08-22 09:38:38.000000000","message":"It may be run as a deploy step in the future.","commit_id":"d047a995fd077353846f9bc5f55325a6a4788f05"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"45ea61091f87e79767caf23aada7da5c45aff176","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1448,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1449,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1450,"context_line":"        if not specified_table_type:"},{"line_number":1451,"context_line":"            properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1452,"context_line":"            specified_table_type \u003d properties.get(\u0027disk_label\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if specified_table_type:"},{"line_number":1455,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_e2cd985e","line":1452,"range":{"start_line":1450,"start_character":0,"end_line":1452,"end_character":63},"in_reply_to":"7faddb67_fd0c0f43","updated":"2019-08-27 17:05:21.000000000","message":"Done","commit_id":"d047a995fd077353846f9bc5f55325a6a4788f05"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ee3d7cdf73de9d43530fe108fa70930762b94f80","unresolved":false,"context_lines":[{"line_number":1447,"context_line":"        instance_info \u003d node.get(\u0027instance_info\u0027, {})"},{"line_number":1448,"context_line":"        capabilities \u003d instance_info.get(\u0027capabilities\u0027, {})"},{"line_number":1449,"context_line":"        specified_table_type \u003d capabilities.get(\u0027disk_label\u0027)"},{"line_number":1450,"context_line":"        if not specified_table_type:"},{"line_number":1451,"context_line":"            properties \u003d node.get(\u0027properties\u0027, {})"},{"line_number":1452,"context_line":"            specified_table_type \u003d properties.get(\u0027disk_label\u0027)"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if specified_table_type:"},{"line_number":1455,"context_line":"            if specified_table_type not in [\u0027msdos\u0027, \u0027gpt\u0027]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7faddb67_3c21ec9e","line":1452,"range":{"start_line":1450,"start_character":0,"end_line":1452,"end_character":63},"in_reply_to":"7faddb67_fd0c0f43","updated":"2019-08-22 08:32:55.000000000","message":"It\u0027s a capability, yes. And it can use an old format of key:value,key2:value2.","commit_id":"d047a995fd077353846f9bc5f55325a6a4788f05"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"98a1404364bb33854d6604553c03d0e3dc9fd19f","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        # partition outside the raid for the bootloader to get room to install"},{"line_number":1450,"context_line":"        # its stage 2 boot code."},{"line_number":1451,"context_line":"        uefi_boot_mode \u003d os.path.isdir(\u0027/sys/firmware/efi\u0027)"},{"line_number":1452,"context_line":"        partition_table_type \u003d \u0027msdos\u0027"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if uefi_boot_mode:"},{"line_number":1455,"context_line":"            partition_table_type \u003d \u0027gpt\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c443ccae","line":1452,"range":{"start_line":1452,"start_character":8,"end_line":1452,"end_character":38},"updated":"2019-09-20 09:54:18.000000000","message":"Nit: for readability, I\u0027d suggest to move this line above your comment.","commit_id":"9d6f461a2fc6fc05e88505516b540045ba0bdece"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"40abe8dd366e723ce35736ee40e6a0623bd2b9a3","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"        # partition outside the raid for the bootloader to get room to install"},{"line_number":1450,"context_line":"        # its stage 2 boot code."},{"line_number":1451,"context_line":"        uefi_boot_mode \u003d os.path.isdir(\u0027/sys/firmware/efi\u0027)"},{"line_number":1452,"context_line":"        partition_table_type \u003d \u0027msdos\u0027"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if uefi_boot_mode:"},{"line_number":1455,"context_line":"            partition_table_type \u003d \u0027gpt\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_b84fcf32","line":1452,"range":{"start_line":1452,"start_character":8,"end_line":1452,"end_character":38},"in_reply_to":"3fa7e38b_c443ccae","updated":"2019-09-20 13:08:16.000000000","message":"Done","commit_id":"9d6f461a2fc6fc05e88505516b540045ba0bdece"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a7c9b6f62507385dbca66f764874a4989ba0c567","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"        # mbr gap from the drive and thus require to add some bios boot"},{"line_number":1451,"context_line":"        # partition outside the raid for the bootloader to get room to install"},{"line_number":1452,"context_line":"        # its stage 2 boot code."},{"line_number":1453,"context_line":"        uefi_boot_mode \u003d os.path.isdir(\u0027/sys/firmware/efi\u0027)"},{"line_number":1454,"context_line":"        if uefi_boot_mode:"},{"line_number":1455,"context_line":"            partition_table_type \u003d \u0027gpt\u0027"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_f39d6857","line":1453,"updated":"2019-09-20 13:51:43.000000000","message":"This is an unreliable indicator if post-reboot the machine will be in uefi mode.  :\\  It would be better if we looked at the data we recieve for the node\u0027s requested boot mode as well as perhaps this flag because if it is uefi on the ramdisk boot, then it will likely reboot to uefi mode.","commit_id":"807a67d3033eb311fb346a843325565b00841de7"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"b4f8f12176fd0d10b2e03f06954e139725bd4b5f","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"        # mbr gap from the drive and thus require to add some bios boot"},{"line_number":1451,"context_line":"        # partition outside the raid for the bootloader to get room to install"},{"line_number":1452,"context_line":"        # its stage 2 boot code."},{"line_number":1453,"context_line":"        uefi_boot_mode \u003d os.path.isdir(\u0027/sys/firmware/efi\u0027)"},{"line_number":1454,"context_line":"        if uefi_boot_mode:"},{"line_number":1455,"context_line":"            partition_table_type \u003d \u0027gpt\u0027"},{"line_number":1456,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_05f9dbc6","line":1453,"in_reply_to":"3fa7e38b_f39d6857","updated":"2019-09-20 14:30:21.000000000","message":"Ok :) to be sure I understand correctly, you think sth like patchset 8 was better because the boot mode of the ramdisk can be different from the final instance one, so we must keep some possibility to specify expected boot mode through caps ? Then we should not rush this into Train, because Arne also had good points against patchset 8.\n\nPS: when looking at extensions.image, def _install_grub2 could not work in cross boot mode (missing --target to grub2-install).","commit_id":"807a67d3033eb311fb346a843325565b00841de7"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4dc129edd356aac66b92df0b00cd55fc56216aad","unresolved":false,"context_lines":[{"line_number":1453,"context_line":"        uefi_boot_mode \u003d os.path.isdir(\u0027/sys/firmware/efi\u0027)"},{"line_number":1454,"context_line":"        if uefi_boot_mode:"},{"line_number":1455,"context_line":"            partition_table_type \u003d \u0027gpt\u0027"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"        # No \u0027software\u0027 controller: do nothing. If \u0027controller\u0027 is"},{"line_number":1458,"context_line":"        # set to \u0027software\u0027 on only one of the drives, the validation"},{"line_number":1459,"context_line":"        # code will catch it."}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_984f73bc","line":1456,"updated":"2019-09-20 13:31:20.000000000","message":"you\u0027re going to hate me. I am fine with the above. however... the code for allowing the caller to specify the specified_table_type was removed -- what if someone had been using that \u0027feature\u0027? Will this change break their use case?\n\nMight be good to get someone else\u0027 opinion; I\u0027m not that familiar with IPA or the changes that have been made to it. Was what you removed, considered a \u0027feature\u0027 for something in the past?\n\nOH. That was done in this change: https://review.opendev.org/#/c/675275/. Which you submitted a month ago :-( If we haven\u0027t done a release of IPA since then, should we just revert that change first? Because that original release note will not make sense with this change.","commit_id":"807a67d3033eb311fb346a843325565b00841de7"}],"ironic_python_agent/tests/unit/test_hardware.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d6b2c9d2e727ecdfb742c5bc3984954f8f9823ae","unresolved":false,"context_lines":[{"line_number":2762,"context_line":"        # properties taken into account as fallback"},{"line_number":2763,"context_line":"        del node[\u0027instance_info\u0027]"},{"line_number":2764,"context_line":"        self._test_create_configuration(mocked_os_path_isdir, mocked_execute,"},{"line_number":2765,"context_line":"                                        \u0027msdos\u0027, node)"},{"line_number":2766,"context_line":""},{"line_number":2767,"context_line":"    def _test_create_configuration(self, mocked_os_path_isdir, mocked_execute,"},{"line_number":2768,"context_line":"                                   expected_partition_table_type, node\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_5ea26e9c","line":2765,"updated":"2019-09-18 15:25:31.000000000","message":"I have to admit, that this was hard for me to review. I would have preferred if you split it up into 6 different tests. Having to keep track of which value mocked_os_path_isdir returns based on the order of these calls seems like room for error in the future if someone changes something.","commit_id":"07ea67d22d69bcf35b6dcebf401cb5fa06b815aa"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"41a5518928f9ff4767972789852ffdb7f37c43db","unresolved":false,"context_lines":[{"line_number":2762,"context_line":"        # properties taken into account as fallback"},{"line_number":2763,"context_line":"        del node[\u0027instance_info\u0027]"},{"line_number":2764,"context_line":"        self._test_create_configuration(mocked_os_path_isdir, mocked_execute,"},{"line_number":2765,"context_line":"                                        \u0027msdos\u0027, node)"},{"line_number":2766,"context_line":""},{"line_number":2767,"context_line":"    def _test_create_configuration(self, mocked_os_path_isdir, mocked_execute,"},{"line_number":2768,"context_line":"                                   expected_partition_table_type, node\u003dNone):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_6b567c2c","line":2765,"in_reply_to":"3fa7e38b_5ea26e9c","updated":"2019-09-19 11:25:36.000000000","message":"Removed, as all utils.py changes as we finally agreed to remove any default behaviour override possibility through node and/or instance specs","commit_id":"07ea67d22d69bcf35b6dcebf401cb5fa06b815aa"}],"ironic_python_agent/utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d6b2c9d2e727ecdfb742c5bc3984954f8f9823ae","unresolved":false,"context_lines":[{"line_number":457,"context_line":"    return (m.group(1) or m.group(2))"},{"line_number":458,"context_line":""},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"def extract_capability(capabilities, key):"},{"line_number":461,"context_line":"    if isinstance(capabilities, six.string_types):"},{"line_number":462,"context_line":"        try:"},{"line_number":463,"context_line":"            capabilities \u003d jsonutils.loads(capabilities)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_e37865f9","line":460,"updated":"2019-09-18 15:25:31.000000000","message":"We should add a docstring here. The other methods in this file have docstrings. Fine as a followup since we want this to land soon.","commit_id":"07ea67d22d69bcf35b6dcebf401cb5fa06b815aa"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d6b2c9d2e727ecdfb742c5bc3984954f8f9823ae","unresolved":false,"context_lines":[{"line_number":463,"context_line":"            capabilities \u003d jsonutils.loads(capabilities)"},{"line_number":464,"context_line":"        except Exception:"},{"line_number":465,"context_line":"            capabilities \u003d dict(x.split(\u0027:\u0027, 1)"},{"line_number":466,"context_line":"                                for x in capabilities.split(\u0027,\u0027))"},{"line_number":467,"context_line":"    return capabilities.get(key)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fa7e38b_e34b8584","line":466,"updated":"2019-09-18 15:25:31.000000000","message":"this code assumes that the string is of the form \u0027a:b,...\u0027. It won\u0027t work if it is eg \u0027a,b:c\u0027. Which is fine I think -- just need to document that assumption in the docstring.","commit_id":"07ea67d22d69bcf35b6dcebf401cb5fa06b815aa"}],"releasenotes/notes/softraid-disk-label-default-based-on-boot-mode.yaml":[{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"dc6a6bd99a04b769caf2d9c95ab72bd1b3547e4e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Changes the default partition table type. When not specified,"},{"line_number":4,"context_line":"    the type is computed based on the ramdisk boot mode."},{"line_number":5,"context_line":"    If the boot mode is uefi, then gpt is preferred over msdos."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_27a142aa","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":45},"updated":"2019-08-15 16:11:32.000000000","message":"I understand what you mean, but I think this is misleading. I\u0027d change to:\n\"Dynamic setting of the partition table type.\"","commit_id":"320a3e2c48b4c7972e47b14f74c750c15acd1940"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d6b2c9d2e727ecdfb742c5bc3984954f8f9823ae","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    computed based on the ramdisk boot mode. If the boot mode is uefi, then gpt"},{"line_number":5,"context_line":"    is preferred over msdos. If the boot mode is not relevant, the partition"},{"line_number":6,"context_line":"    table type can be specified through node.instance_info or node.properties"},{"line_number":7,"context_line":"    capabilities (the former with the highest priority)."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3fa7e38b_1e2156fc","line":7,"updated":"2019-09-18 15:25:31.000000000","message":"What I\u0027m not sure about, is whether this change (which I think is good) might break some existing use case.\n\nIs this also fixing a bug? eg that we were using \u0027msdos\u0027 even though \u0027/sys/firmware/efi\u0027 directory existed and we should have been using gpt?","commit_id":"07ea67d22d69bcf35b6dcebf401cb5fa06b815aa"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"98a1404364bb33854d6604553c03d0e3dc9fd19f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Changes the partition table type based on the ramdisk boot mode."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_44383c3c","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":68},"updated":"2019-09-20 09:54:18.000000000","message":"How about being more specific here: \"For Software RAID, ...\".\n\nI\u0027d also add what the allowed combinations are.","commit_id":"9d6f461a2fc6fc05e88505516b540045ba0bdece"},{"author":{"_account_id":15064,"name":"raphael.glon","email":"raphael.glon@corp.ovh.com","username":"raphael"},"change_message_id":"40abe8dd366e723ce35736ee40e6a0623bd2b9a3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Changes the partition table type based on the ramdisk boot mode."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3fa7e38b_f8454716","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":68},"in_reply_to":"3fa7e38b_44383c3c","updated":"2019-09-20 13:08:16.000000000","message":"Done","commit_id":"9d6f461a2fc6fc05e88505516b540045ba0bdece"}],"releasenotes/notes/softraid-msdos-gpt-alternative.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f5b68b932e29052826cb4f19adca5d344e3337ec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Possibility to specify the partition table type when creating raid."},{"line_number":4,"context_line":"    When not specified, the type is computed based on the rescue boot"},{"line_number":5,"context_line":"    mode. If the boot mode is uefi, then gpt is preferred over msdos."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_69022b72","line":3,"updated":"2019-08-08 07:54:49.000000000","message":"nit: \"Adds possibility\" (the note is rendered in the context of a release).","commit_id":"6684652498958e50178154790774d33fe3445070"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"6a429818d6086cc61e98cd4f458c79516328917c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Possibility to specify the partition table type when creating raid."},{"line_number":4,"context_line":"    When not specified, the type is computed based on the rescue boot"},{"line_number":5,"context_line":"    mode. If the boot mode is uefi, then gpt is preferred over msdos."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_a8d4a148","line":4,"range":{"start_line":4,"start_character":58,"end_line":4,"end_character":64},"updated":"2019-08-08 02:39:33.000000000","message":"nit: s/rescue/ramdisk/","commit_id":"6684652498958e50178154790774d33fe3445070"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f5b68b932e29052826cb4f19adca5d344e3337ec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Possibility to specify the partition table type when creating raid."},{"line_number":4,"context_line":"    When not specified, the type is computed based on the rescue boot"},{"line_number":5,"context_line":"    mode. If the boot mode is uefi, then gpt is preferred over msdos."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_c9d79fee","line":4,"range":{"start_line":4,"start_character":58,"end_line":4,"end_character":64},"in_reply_to":"7faddb67_a8d4a148","updated":"2019-08-08 07:54:49.000000000","message":"Let\u0027s fix this and I\u0027ll fast-approve the patch.","commit_id":"6684652498958e50178154790774d33fe3445070"}]}
