)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Ironic is flexible for x86/x86_64 servers by supporting BIOS and UEFI."},{"line_number":10,"context_line":"But to deploy servers of other architectures, such as aarch64 or ppc64,"},{"line_number":11,"context_line":"configuration(PXE boot file and config template) must be modified,"},{"line_number":12,"context_line":"which means one Ironic node can only deploy baremetal machines of one"},{"line_number":13,"context_line":"architecture."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds multi arch deployment support. For example, to deploy"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3aaa91ec_75264169","line":12,"range":{"start_line":12,"start_character":23,"end_line":12,"end_character":27},"updated":"2016-06-29 11:27:23.000000000","message":"s/node/conductor","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Ironic is flexible for x86/x86_64 servers by supporting BIOS and UEFI."},{"line_number":10,"context_line":"But to deploy servers of other architectures, such as aarch64 or ppc64,"},{"line_number":11,"context_line":"configuration(PXE boot file and config template) must be modified,"},{"line_number":12,"context_line":"which means one Ironic node can only deploy baremetal machines of one"},{"line_number":13,"context_line":"architecture."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds multi arch deployment support. For example, to deploy"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3aaa91ec_0ada104b","line":12,"range":{"start_line":12,"start_character":23,"end_line":12,"end_character":27},"in_reply_to":"3aaa91ec_75264169","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":13,"context_line":"architecture."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds multi arch deployment support. For example, to deploy"},{"line_number":16,"context_line":"x86_64 and aarch64 servers by one Ironic node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1582964"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3aaa91ec_b520a94a","line":16,"range":{"start_line":16,"start_character":41,"end_line":16,"end_character":45},"updated":"2016-06-29 11:27:23.000000000","message":"ditto","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":13,"context_line":"architecture."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch adds multi arch deployment support. For example, to deploy"},{"line_number":16,"context_line":"x86_64 and aarch64 servers by one Ironic node."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-Bug: #1582964"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3aaa91ec_eadea43c","line":16,"range":{"start_line":16,"start_character":41,"end_line":16,"end_character":45},"in_reply_to":"3aaa91ec_b520a94a","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"}],"doc/source/deploy/install-guide.rst":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":978,"context_line":"    pxe_bootfile_name_by_arch\u003dbios:pxelinux.0,uefi:bootx64.efi"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    # Template file for PXE configuration per node architecture."},{"line_number":981,"context_line":"    $ (dictionary value)"},{"line_number":982,"context_line":"    pxe_config_template_by_arch\u003dbios:$pybasedir/drivers/modules/pxe_config.template,uefi:$pybasedir/drivers/modules/pxe_grub_config.template"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"#. Update the bare metal node with ``boot_mode`` capability in node\u0027s properties"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_84957a33","line":981,"range":{"start_line":981,"start_character":4,"end_line":981,"end_character":5},"updated":"2016-06-17 10:37:27.000000000","message":"nit - should be #","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":978,"context_line":"    pxe_bootfile_name_by_arch\u003dbios:pxelinux.0,uefi:bootx64.efi"},{"line_number":979,"context_line":""},{"line_number":980,"context_line":"    # Template file for PXE configuration per node architecture."},{"line_number":981,"context_line":"    $ (dictionary value)"},{"line_number":982,"context_line":"    pxe_config_template_by_arch\u003dbios:$pybasedir/drivers/modules/pxe_config.template,uefi:$pybasedir/drivers/modules/pxe_grub_config.template"},{"line_number":983,"context_line":""},{"line_number":984,"context_line":"#. Update the bare metal node with ``boot_mode`` capability in node\u0027s properties"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a9d85d2_dbb516d1","line":981,"range":{"start_line":981,"start_character":4,"end_line":981,"end_character":5},"in_reply_to":"7aa08908_84957a33","updated":"2016-06-20 06:49:58.000000000","message":"Done","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"--------------------"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"It is possible to deploy servers of different architecture by one Ironic node."},{"line_number":1106,"context_line":"Following example assume you are provisioning x86_64 and aarch64 servers, both"},{"line_number":1107,"context_line":"in UEFI boot mode."},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"#. Update bootfile and template file configuration parameters in the Bare Metal"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7aa08908_84ac5a89","line":1106,"range":{"start_line":1106,"start_character":18,"end_line":1106,"end_character":24},"updated":"2016-06-17 10:37:27.000000000","message":"assumes","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":1103,"context_line":"--------------------"},{"line_number":1104,"context_line":""},{"line_number":1105,"context_line":"It is possible to deploy servers of different architecture by one Ironic node."},{"line_number":1106,"context_line":"Following example assume you are provisioning x86_64 and aarch64 servers, both"},{"line_number":1107,"context_line":"in UEFI boot mode."},{"line_number":1108,"context_line":""},{"line_number":1109,"context_line":"#. Update bootfile and template file configuration parameters in the Bare Metal"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a9d85d2_1bb03edd","line":1106,"range":{"start_line":1106,"start_character":18,"end_line":1106,"end_character":24},"in_reply_to":"7aa08908_84ac5a89","updated":"2016-06-20 06:49:58.000000000","message":"Done","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4507128d452b57f1d918324d8f122304bb053329","unresolved":false,"context_lines":[{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1114,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1115,"context_line":"   is not found in the dictionary, boot_mode capability(bios/uefi) servers as"},{"line_number":1116,"context_line":"   the key. This is to be compatible with old behaviour which supports only"},{"line_number":1117,"context_line":"   bios and uefi boot options."},{"line_number":1118,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_943f7dd5","line":1115,"updated":"2016-06-23 10:48:58.000000000","message":"boot_mode capability ... is used as the key","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7dd6e84f33d8b697931560e47d85dd8b563a2f23","unresolved":false,"context_lines":[{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1114,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1115,"context_line":"   is not found in the dictionary, boot_mode capability(bios/uefi) servers as"},{"line_number":1116,"context_line":"   the key. This is to be compatible with old behaviour which supports only"},{"line_number":1117,"context_line":"   bios and uefi boot options."},{"line_number":1118,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_bac22d32","line":1115,"in_reply_to":"3aaa91ec_943f7dd5","updated":"2016-06-24 08:13:56.000000000","message":"section rewritten.","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4507128d452b57f1d918324d8f122304bb053329","unresolved":false,"context_lines":[{"line_number":1118,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"},{"line_number":1119,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027 ), as there\u0027s no \u0027x86\u0027"},{"line_number":1120,"context_line":"   or \u0027x86_64\u0027 keys available. While aarch64 nodes will be deployed by bootf3"},{"line_number":1121,"context_line":"   when the cpu_arch property matches \u0027aarch64\u0027 key."},{"line_number":1122,"context_line":"   - pxe_bootfile_name_by_arch \u003d bios:bootf1,uefi:bootf2,aarch64:bootf3"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"Following example assumes you are provisioning x86_64 and aarch64 servers, both"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_da148f45","line":1121,"updated":"2016-06-23 10:48:58.000000000","message":"It should be\n\n when the cpu_arch property matches \u0027aarch64\u0027 key::\n\n   pxe_bootfile_name_by_arch \u003d bios:bootf1,uefi:bootf2,aarch64:bootf3","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7dd6e84f33d8b697931560e47d85dd8b563a2f23","unresolved":false,"context_lines":[{"line_number":1118,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"},{"line_number":1119,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027 ), as there\u0027s no \u0027x86\u0027"},{"line_number":1120,"context_line":"   or \u0027x86_64\u0027 keys available. While aarch64 nodes will be deployed by bootf3"},{"line_number":1121,"context_line":"   when the cpu_arch property matches \u0027aarch64\u0027 key."},{"line_number":1122,"context_line":"   - pxe_bootfile_name_by_arch \u003d bios:bootf1,uefi:bootf2,aarch64:bootf3"},{"line_number":1123,"context_line":""},{"line_number":1124,"context_line":"Following example assumes you are provisioning x86_64 and aarch64 servers, both"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3aaa91ec_fade750f","line":1121,"in_reply_to":"3aaa91ec_da148f45","updated":"2016-06-24 08:13:56.000000000","message":"Done","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"To support this feature, architecture specific boot and template files must"},{"line_number":1107,"context_line":"be configured correctly in the options listed below."},{"line_number":1108,"context_line":"* pxe_bootfile_name_by_arch"},{"line_number":1109,"context_line":"* pxe_config_template_by_arch"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_50b353e9","line":1108,"updated":"2016-06-29 11:27:23.000000000","message":"Please do run the tox -edocs and check the built docs, the formatting is incorrect right now, there should be a blank line between \u0027listed below:\u0027 and the list of options.","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":1105,"context_line":""},{"line_number":1106,"context_line":"To support this feature, architecture specific boot and template files must"},{"line_number":1107,"context_line":"be configured correctly in the options listed below."},{"line_number":1108,"context_line":"* pxe_bootfile_name_by_arch"},{"line_number":1109,"context_line":"* pxe_config_template_by_arch"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_3d5f5442","line":1108,"in_reply_to":"3aaa91ec_50b353e9","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"* pxe_config_template_by_arch"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_d0ed83b8","line":1112,"range":{"start_line":1112,"start_character":51,"end_line":1112,"end_character":59},"updated":"2016-06-29 11:27:23.000000000","message":"``cpu_arch``, so that it stands out from the rest of the text.","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"* pxe_config_template_by_arch"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_bd31840d","line":1112,"range":{"start_line":1112,"start_character":51,"end_line":1112,"end_character":59},"in_reply_to":"3aaa91ec_d0ed83b8","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."},{"line_number":1116,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_7035af44","line":1113,"range":{"start_line":1113,"start_character":69,"end_line":1113,"end_character":77},"updated":"2016-06-29 11:27:23.000000000","message":"ditto","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."},{"line_number":1116,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_3d2634ce","line":1113,"range":{"start_line":1113,"start_character":69,"end_line":1113,"end_character":77},"in_reply_to":"3aaa91ec_7035af44","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."},{"line_number":1116,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"},{"line_number":1117,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027) as there\u0027s no \u0027x86\u0027"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_d04463b8","line":1114,"range":{"start_line":1114,"start_character":35,"end_line":1114,"end_character":52},"updated":"2016-06-29 11:27:23.000000000","message":"``pxe_bootfile_name``, same for other option names.","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":1111,"context_line":".. note::"},{"line_number":1112,"context_line":"   These two options are dictionary values. Node\u0027s cpu_arch property is used"},{"line_number":1113,"context_line":"   as the key to find according boot file and template. If according cpu_arch"},{"line_number":1114,"context_line":"   is not found in the dictionary, pxe_bootfile_name/pxe_config_template and"},{"line_number":1115,"context_line":"   uefi_pxe_bootfile_name/uefi_pxe_config_template are referenced as usual."},{"line_number":1116,"context_line":"   In the example below, x86 and x86_64 nodes will be deployed by bootf1 or"},{"line_number":1117,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027) as there\u0027s no \u0027x86\u0027"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_7d2c3cac","line":1114,"range":{"start_line":1114,"start_character":35,"end_line":1114,"end_character":52},"in_reply_to":"3aaa91ec_d04463b8","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3a5a6f07c440f5bb93d05c87c6a52b2666e829c8","unresolved":false,"context_lines":[{"line_number":1117,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027) as there\u0027s no \u0027x86\u0027"},{"line_number":1118,"context_line":"   or \u0027x86_64\u0027 keys available in pxe_bootfile_name_by_arch. While aarch64 nodes"},{"line_number":1119,"context_line":"   will be deployed by bootf3, and ppc64 nodes by bootf4::"},{"line_number":1120,"context_line":"   pxe_bootfile_name \u003d bootf1"},{"line_number":1121,"context_line":"   uefi_pxe_bootfile_name \u003d bootf2"},{"line_number":1122,"context_line":"   pxe_bootfile_name_by_arch \u003d aarch64:bootf3,ppc64:bootf4"},{"line_number":1123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_f0db5f19","line":1120,"updated":"2016-06-29 11:27:23.000000000","message":"here too, you should add a blank line and indent the config block further to the right.","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"673799904200bacca8d813be1752cb6803d865de","unresolved":false,"context_lines":[{"line_number":1117,"context_line":"   bootf2 based on boot_mode capability(\u0027bios\u0027 or \u0027uefi\u0027) as there\u0027s no \u0027x86\u0027"},{"line_number":1118,"context_line":"   or \u0027x86_64\u0027 keys available in pxe_bootfile_name_by_arch. While aarch64 nodes"},{"line_number":1119,"context_line":"   will be deployed by bootf3, and ppc64 nodes by bootf4::"},{"line_number":1120,"context_line":"   pxe_bootfile_name \u003d bootf1"},{"line_number":1121,"context_line":"   uefi_pxe_bootfile_name \u003d bootf2"},{"line_number":1122,"context_line":"   pxe_bootfile_name_by_arch \u003d aarch64:bootf3,ppc64:bootf4"},{"line_number":1123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3aaa91ec_dd13b063","line":1120,"in_reply_to":"3aaa91ec_f0db5f19","updated":"2016-06-30 07:56:02.000000000","message":"Done","commit_id":"6559a0865b4f0ae6d4bac204704a1bb9263465f0"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"* ``pxe_bootfile_name_by_arch``"},{"line_number":1110,"context_line":"* ``pxe_config_template_by_arch``"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s ``cpu_arch`` property is"},{"line_number":1114,"context_line":"   used as the key to find according boot file and template. If according"},{"line_number":1115,"context_line":"   ``cpu_arch`` is not found in the dictionary, ``pxe_bootfile_name``,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_32bbfae6","line":1112,"updated":"2016-06-30 08:34:46.000000000","message":"Not sure if it\u0027s worth to make this whole text as note, usual text might be better :)","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"* ``pxe_bootfile_name_by_arch``"},{"line_number":1110,"context_line":"* ``pxe_config_template_by_arch``"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s ``cpu_arch`` property is"},{"line_number":1114,"context_line":"   used as the key to find according boot file and template. If according"},{"line_number":1115,"context_line":"   ``cpu_arch`` is not found in the dictionary, ``pxe_bootfile_name``,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_5b84e109","line":1112,"in_reply_to":"3aaa91ec_32bbfae6","updated":"2016-06-30 10:50:48.000000000","message":"Done.\nI thought about it, and finally you catch me.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"* ``pxe_config_template_by_arch``"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s ``cpu_arch`` property is"},{"line_number":1114,"context_line":"   used as the key to find according boot file and template. If according"},{"line_number":1115,"context_line":"   ``cpu_arch`` is not found in the dictionary, ``pxe_bootfile_name``,"},{"line_number":1116,"context_line":"   ``pxe_config_template``, ``uefi_pxe_bootfile_name`` and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_f5003cad","line":1113,"range":{"start_line":1113,"start_character":53,"end_line":1113,"end_character":61},"updated":"2016-06-30 08:34:46.000000000","message":"So, I\u0027ve taken a look at the rfe bug, and there you describe this document https://tools.ietf.org/html/rfc4578 to be able to determine both architecture and boot mode, but here you mention only architecture. If you want to go just with arch, you need two parameters the same way as it is now: pxe_bootfile_name_by_arch, uefi_pxe_bootfile_name_by_arch, pxe_config_template_by_arch, uefi_pxe_config_template_by_arch.\n\nWhat is your plan on that?","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"* ``pxe_config_template_by_arch``"},{"line_number":1111,"context_line":""},{"line_number":1112,"context_line":".. note::"},{"line_number":1113,"context_line":"   These two options are dictionary values. Node\u0027s ``cpu_arch`` property is"},{"line_number":1114,"context_line":"   used as the key to find according boot file and template. If according"},{"line_number":1115,"context_line":"   ``cpu_arch`` is not found in the dictionary, ``pxe_bootfile_name``,"},{"line_number":1116,"context_line":"   ``pxe_config_template``, ``uefi_pxe_bootfile_name`` and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3aaa91ec_061e806f","line":1113,"range":{"start_line":1113,"start_character":53,"end_line":1113,"end_character":61},"in_reply_to":"3aaa91ec_f5003cad","updated":"2016-06-30 10:50:48.000000000","message":"There shouldn\u0027t be new parameters for multi arch support.\n\nIn my knowledge, only x86 compatible system has bios/uefi, or legacy/new dual boot mode. Other systems aren\u0027t suffering from this complexity. ARM servers can only boot from uefi, PPC servers use open firmware. The client-arch code of rfc4578 does contains bios/uefi info, but it\u0027s only for x86 system.\n\nThe assumption here is that except x86 compatible system, other architectures don\u0027t have bios/uefi multiple boot modes. If this assumption is error, this patch needs be changed.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"}],"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4507128d452b57f1d918324d8f122304bb053329","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"# value)"},{"line_number":1947,"context_line":"#disk_devices \u003d cciss/c0d0,sda,hda,vda"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"# DEPRECATED. Overwritten by pxe_config_template_by_arch[\u0027bios\u0027]."},{"line_number":1950,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":1951,"context_line":"# configuration. (string value)"},{"line_number":1952,"context_line":"#pxe_config_template \u003d $pybasedir/drivers/modules/pxe_config.template"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3aaa91ec_1a5737cf","line":1949,"updated":"2016-06-23 10:48:58.000000000","message":"As I\u0027ve already commented, this file should not be modified manually. Please add the descriptions that you need in the option declaration and regenarate this file. There is no reason to add DEPRECATED because oslo config generator will add it by itself when it sees deprecated_for_removal\u003dTrue in the option.","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7dd6e84f33d8b697931560e47d85dd8b563a2f23","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"# value)"},{"line_number":1947,"context_line":"#disk_devices \u003d cciss/c0d0,sda,hda,vda"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"# DEPRECATED. Overwritten by pxe_config_template_by_arch[\u0027bios\u0027]."},{"line_number":1950,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":1951,"context_line":"# configuration. (string value)"},{"line_number":1952,"context_line":"#pxe_config_template \u003d $pybasedir/drivers/modules/pxe_config.template"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3aaa91ec_1a86e1da","line":1949,"in_reply_to":"3aaa91ec_1a5737cf","updated":"2016-06-24 08:13:56.000000000","message":"Got it. Done.\nJust wondering: if this file is generated from other sources, while we include it in source tree?","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"95a5c0275579fac2f5ad457f18478cb1e0d705c2","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"# value)"},{"line_number":1947,"context_line":"#disk_devices \u003d cciss/c0d0,sda,hda,vda"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"# DEPRECATED. Overwritten by pxe_config_template_by_arch[\u0027bios\u0027]."},{"line_number":1950,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":1951,"context_line":"# configuration. (string value)"},{"line_number":1952,"context_line":"#pxe_config_template \u003d $pybasedir/drivers/modules/pxe_config.template"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3aaa91ec_2c91dd47","line":1949,"in_reply_to":"3aaa91ec_1a86e1da","updated":"2016-06-24 12:12:43.000000000","message":"sorry, should be \"why\", not \"while\".","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"92f78e4953512f1f9dd0aa26196f4234a5e299eb","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"# value)"},{"line_number":1947,"context_line":"#disk_devices \u003d cciss/c0d0,sda,hda,vda"},{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"# DEPRECATED. Overwritten by pxe_config_template_by_arch[\u0027bios\u0027]."},{"line_number":1950,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":1951,"context_line":"# configuration. (string value)"},{"line_number":1952,"context_line":"#pxe_config_template \u003d $pybasedir/drivers/modules/pxe_config.template"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"3aaa91ec_d5e2952e","line":1949,"in_reply_to":"3aaa91ec_2c91dd47","updated":"2016-06-29 11:27:41.000000000","message":"It\u0027s mostly a reference for operators.","commit_id":"8c3c586eb9c5ede06a4fb247054fd5d543c27809"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"7ea13c8f37262b2b113803f0855c0c28b7b9f43d","unresolved":false,"context_lines":[{"line_number":2630,"context_line":"# Bootfile DHCP parameter for UEFI boot mode. (string value)"},{"line_number":2631,"context_line":"#uefi_pxe_bootfile_name \u003d elilo.efi"},{"line_number":2632,"context_line":""},{"line_number":2633,"context_line":"# Bootfile DHCP parameter per node architecture. (dict value)"},{"line_number":2634,"context_line":"#pxe_bootfile_name_by_arch \u003d"},{"line_number":2635,"context_line":""},{"line_number":2636,"context_line":"# Enable iPXE boot. (boolean value)"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"fa7ab95a_83b90331","line":2633,"updated":"2016-09-01 07:59:18.000000000","message":"It is not clear what exactly should be added here, without looking to documentation. I would suggest to add an example or specify syntax for this option. Example cpu_arch:boot_filename.\n\nDitto for template.","commit_id":"bfe65a521ceb196991afc374318d6a847eb77c1b"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"ba55d3a2a3e0b1fff1e2328e47f3c836010747da","unresolved":false,"context_lines":[{"line_number":2630,"context_line":"# Bootfile DHCP parameter for UEFI boot mode. (string value)"},{"line_number":2631,"context_line":"#uefi_pxe_bootfile_name \u003d elilo.efi"},{"line_number":2632,"context_line":""},{"line_number":2633,"context_line":"# Bootfile DHCP parameter per node architecture. (dict value)"},{"line_number":2634,"context_line":"#pxe_bootfile_name_by_arch \u003d"},{"line_number":2635,"context_line":""},{"line_number":2636,"context_line":"# Enable iPXE boot. (boolean value)"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"9a89bdaa_bb02eb3c","line":2633,"in_reply_to":"fa7ab95a_83b90331","updated":"2016-09-05 06:07:04.000000000","message":"Done. Actual change is in \"ironic/conf/pxe.py\".","commit_id":"bfe65a521ceb196991afc374318d6a847eb77c1b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"124bf0ea903aa6bc74a29e41289b8c8b9d55fd1c","unresolved":false,"context_lines":[{"line_number":2609,"context_line":""},{"line_number":2610,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":2611,"context_line":"# configuration per node architecture. For example:"},{"line_number":2612,"context_line":"# aarch64:template_for_grubaa64 (dict value)"},{"line_number":2613,"context_line":"#pxe_config_template_by_arch \u003d"},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":"# IP address of ironic-conductor node\u0027s TFTP server. (string"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"9a89bdaa_4452db14","line":2612,"range":{"start_line":2612,"start_character":10,"end_line":2612,"end_character":31},"updated":"2016-09-05 08:47:08.000000000","message":"Would be nice to have a \"real\" example (like the bootfile).\n\naarch64:/opt/share/aarch64_pxe.template","commit_id":"cebf1a503c5b5f0cafa1fdb19685799e4a88a663"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"ff415a665ad489a553e470f1c1cc42e815ac3533","unresolved":false,"context_lines":[{"line_number":2609,"context_line":""},{"line_number":2610,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":2611,"context_line":"# configuration per node architecture. For example:"},{"line_number":2612,"context_line":"# aarch64:template_for_grubaa64 (dict value)"},{"line_number":2613,"context_line":"#pxe_config_template_by_arch \u003d"},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":"# IP address of ironic-conductor node\u0027s TFTP server. (string"}],"source_content_type":"application/octet-stream","patch_set":14,"id":"9a89bdaa_7d10ea59","line":2612,"range":{"start_line":2612,"start_character":10,"end_line":2612,"end_character":31},"in_reply_to":"9a89bdaa_4452db14","updated":"2016-09-07 07:12:00.000000000","message":"Done","commit_id":"cebf1a503c5b5f0cafa1fdb19685799e4a88a663"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"f2fe19dd3e73993aa5f4f5c181dff421c0a5b34a","unresolved":false,"context_lines":[{"line_number":2609,"context_line":""},{"line_number":2610,"context_line":"# On ironic-conductor node, template file for PXE"},{"line_number":2611,"context_line":"# configuration per node architecture. For example:"},{"line_number":2612,"context_line":"# aarch64:/opt/share/grubaa64_pxe_config.template (dict value)"},{"line_number":2613,"context_line":"#pxe_config_template_by_arch \u003d"},{"line_number":2614,"context_line":""},{"line_number":2615,"context_line":"# IP address of ironic-conductor node\u0027s TFTP server. (string"}],"source_content_type":"application/octet-stream","patch_set":15,"id":"9a89bdaa_9524a260","line":2612,"updated":"2016-09-07 08:51:01.000000000","message":"Having absolute path to template is not convenient when we have several architecture templates especially when all templates are stored in the same directory.\nI\u0027m thinking now about adding new parameter: \u0027pxe_config_template_path\u0027 that specify templates\u0027 directory, so we can specify only file name in pxe_config_template_by_arch.\nIt may be done in future I think.","commit_id":"d96c6774f3074773ff441067338b912ad3445a6e"}],"ironic/common/pxe_utils.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    LOG.debug(\"Building PXE config for node %s\", task.node.uuid)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if template is None:"},{"line_number":219,"context_line":"        template \u003d CONF.pxe.pxe_config_template_by_arch.get(\u0027bios\u0027)"},{"line_number":220,"context_line":"        if template is None:"},{"line_number":221,"context_line":"            template \u003d CONF.pxe.pxe_config_template"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_d23aa4cc","line":219,"updated":"2016-06-17 10:37:27.000000000","message":"I understand that it preserves the behavior, but theoretically here you should call deploy_utils.get_pxe_config_template() too, right?","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    LOG.debug(\"Building PXE config for node %s\", task.node.uuid)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    if template is None:"},{"line_number":219,"context_line":"        template \u003d CONF.pxe.pxe_config_template_by_arch.get(\u0027bios\u0027)"},{"line_number":220,"context_line":"        if template is None:"},{"line_number":221,"context_line":"            template \u003d CONF.pxe.pxe_config_template"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_1be79ee5","line":219,"in_reply_to":"7aa08908_d23aa4cc","updated":"2016-06-20 06:49:58.000000000","message":"Exactly. Done.","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        parameters."},{"line_number":203,"context_line":"    :param template: The PXE configuration template. If no template is"},{"line_number":204,"context_line":"        given the node specific template will be used by calling"},{"line_number":205,"context_line":"        deploy_utils.get_pxe_config_template(node)."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    \"\"\""},{"line_number":208,"context_line":"    LOG.debug(\"Building PXE config for node %s\", task.node.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_92a10e97","line":205,"updated":"2016-06-30 08:34:46.000000000","message":"I\u0027d remove the function name, the developer will see in code what function is called.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        parameters."},{"line_number":203,"context_line":"    :param template: The PXE configuration template. If no template is"},{"line_number":204,"context_line":"        given the node specific template will be used by calling"},{"line_number":205,"context_line":"        deploy_utils.get_pxe_config_template(node)."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    \"\"\""},{"line_number":208,"context_line":"    LOG.debug(\"Building PXE config for node %s\", task.node.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_0132eaa6","line":205,"in_reply_to":"3aaa91ec_92a10e97","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"d588444f1936c2950fa83079218198ca98d001e8","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    return os.path.join(get_root_dir(), node_uuid, \u0027config\u0027)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"def create_pxe_config(task, pxe_options, template\u003dNone):"},{"line_number":192,"context_line":"    \"\"\"Generate PXE configuration file and MAC address links for it."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    This method will generate the PXE configuration file for the task\u0027s"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_992fb687","line":191,"updated":"2016-09-01 08:22:30.000000000","message":"Looks like \"template\" parameter can be mandatory now and we can drop l214-215.","commit_id":"bfe65a521ceb196991afc374318d6a847eb77c1b"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"ba55d3a2a3e0b1fff1e2328e47f3c836010747da","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    return os.path.join(get_root_dir(), node_uuid, \u0027config\u0027)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"def create_pxe_config(task, pxe_options, template\u003dNone):"},{"line_number":192,"context_line":"    \"\"\"Generate PXE configuration file and MAC address links for it."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    This method will generate the PXE configuration file for the task\u0027s"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a89bdaa_1ba8371f","line":191,"in_reply_to":"fa7ab95a_992fb687","updated":"2016-09-05 06:07:04.000000000","message":"Thanks. Not sure if this default argument will be convenient for a future caller. Maybe we can leave it as is.","commit_id":"bfe65a521ceb196991afc374318d6a847eb77c1b"}],"ironic/conf/pxe.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"30bba86fe7718c7b6aa477eafdf3a865e53a7b87","unresolved":false,"context_lines":[{"line_number":47,"context_line":"               default\u003d10080,"},{"line_number":48,"context_line":"               help\u003d_(\u0027Maximum TTL (in minutes) for old master images in \u0027"},{"line_number":49,"context_line":"                      \u0027cache.\u0027)),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027pxe_config_template\u0027,"},{"line_number":51,"context_line":"               default\u003dos.path.join("},{"line_number":52,"context_line":"                   \u0027$pybasedir\u0027, \u0027drivers/modules/pxe_config.template\u0027),"},{"line_number":53,"context_line":"               help\u003d_(\u0027On ironic-conductor node, template file for PXE \u0027"},{"line_number":54,"context_line":"                      \u0027configuration.\u0027)),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_config_template\u0027,"},{"line_number":56,"context_line":"               default\u003dos.path.join("},{"line_number":57,"context_line":"                   \u0027$pybasedir\u0027,"},{"line_number":58,"context_line":"                   \u0027drivers/modules/elilo_efi_pxe_config.template\u0027),"},{"line_number":59,"context_line":"               help\u003d_(\u0027On ironic-conductor node, template file for PXE \u0027"},{"line_number":60,"context_line":"                      \u0027configuration for UEFI boot loader.\u0027)),"},{"line_number":61,"context_line":"    cfg.DictOpt(\u0027pxe_config_template_by_arch\u0027,"},{"line_number":62,"context_line":"                default\u003d{},"},{"line_number":63,"context_line":"                help\u003d_(\u0027On ironic-conductor node, template file for PXE \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_196211ae","line":60,"range":{"start_line":50,"start_character":0,"end_line":60,"end_character":62},"updated":"2016-08-31 08:51:28.000000000","message":"Question: What you think about deprecating these (same for the *_bootfile_name) ? It does not need to part of this patch, can be done after as a separated work.\n\nI was wondering if it would make sense to have a \u0027default_bios\u0027 and \u0027default_uefi\u0027 keys in the *_by_arch dict which points to the default configuration if no other arch are matched. That way we could get rid of these 4 options.\n\nAnyway, food for thought :-)","commit_id":"7bdf19c4502464ed52f9ee934afa87a7e2156f16"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"30bba86fe7718c7b6aa477eafdf3a865e53a7b87","unresolved":false,"context_lines":[{"line_number":75,"context_line":"               help\u003d_(\u0027On ironic-conductor node, directory where master TFTP \u0027"},{"line_number":76,"context_line":"                      \u0027images are stored on disk. \u0027"},{"line_number":77,"context_line":"                      \u0027Setting to \u003cNone\u003e disables image caching.\u0027)),"},{"line_number":78,"context_line":"    cfg.StrOpt(\u0027pxe_bootfile_name\u0027,"},{"line_number":79,"context_line":"               default\u003d\u0027pxelinux.0\u0027,"},{"line_number":80,"context_line":"               help\u003d_(\u0027Bootfile DHCP parameter.\u0027)),"},{"line_number":81,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_bootfile_name\u0027,"},{"line_number":82,"context_line":"               default\u003d\u0027elilo.efi\u0027,"},{"line_number":83,"context_line":"               help\u003d_(\u0027Bootfile DHCP parameter for UEFI boot mode.\u0027)),"},{"line_number":84,"context_line":"    cfg.DictOpt(\u0027pxe_bootfile_name_by_arch\u0027,"},{"line_number":85,"context_line":"                default\u003d{},"},{"line_number":86,"context_line":"                help\u003d_(\u0027Bootfile DHCP parameter per node architecture.\u0027)),"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_595c99ed","line":83,"range":{"start_line":78,"start_character":0,"end_line":83,"end_character":70},"updated":"2016-08-31 08:51:28.000000000","message":"ditto for these two","commit_id":"7bdf19c4502464ed52f9ee934afa87a7e2156f16"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":860,"context_line":"    :param node: a single Node."},{"line_number":861,"context_line":"    :returns: the PXE config template file."},{"line_number":862,"context_line":"    \"\"\""},{"line_number":863,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":864,"context_line":"    config_template \u003d CONF.pxe.pxe_config_template_by_arch.get(cpu_arch)"},{"line_number":865,"context_line":"    if config_template is None:"},{"line_number":866,"context_line":"        if get_boot_mode_for_deploy(node) \u003d\u003d \u0027uefi\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_b26558e2","line":863,"updated":"2016-06-17 10:37:27.000000000","message":"Just wondering, is it really needed to have pxe config template to be arch-specific too or we might be able to get away only with arch-specific bootfile name?","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":860,"context_line":"    :param node: a single Node."},{"line_number":861,"context_line":"    :returns: the PXE config template file."},{"line_number":862,"context_line":"    \"\"\""},{"line_number":863,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":864,"context_line":"    config_template \u003d CONF.pxe.pxe_config_template_by_arch.get(cpu_arch)"},{"line_number":865,"context_line":"    if config_template is None:"},{"line_number":866,"context_line":"        if get_boot_mode_for_deploy(node) \u003d\u003d \u0027uefi\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_fb39f242","line":863,"in_reply_to":"7aa08908_b26558e2","updated":"2016-06-20 06:49:58.000000000","message":"I met with one issue when deploying aarch64 nodes with grub.\nCurrent grub boot template uses \"linuxefi\" and \"initrdefi\" commands, which is okay for grub-efi-amd64.\nBut these two commands doesn\u0027t exist in grub-efi-arm64. Only \"linux\" and \"initrd\" commands are supported. So I have to prepare another boot template file. We cannot change current boot template as it will break x86_64 nodes.","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"def get_pxe_boot_file(node):"},{"line_number":812,"context_line":"    \"\"\"Return the PXE boot file requested for deploy."},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    This method returns PXE boot file to be used for deploy."},{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_d2bef6ac","line":812,"updated":"2016-06-30 08:34:46.000000000","message":"file name","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":809,"context_line":""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"def get_pxe_boot_file(node):"},{"line_number":812,"context_line":"    \"\"\"Return the PXE boot file requested for deploy."},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    This method returns PXE boot file to be used for deploy."},{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_a1cb1652","line":812,"in_reply_to":"3aaa91ec_d2bef6ac","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":811,"context_line":"def get_pxe_boot_file(node):"},{"line_number":812,"context_line":"    \"\"\"Return the PXE boot file requested for deploy."},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    This method returns PXE boot file to be used for deploy."},{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"},{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_58b227e6","line":814,"updated":"2016-06-30 09:59:33.000000000","message":"file name","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":811,"context_line":"def get_pxe_boot_file(node):"},{"line_number":812,"context_line":"    \"\"\"Return the PXE boot file requested for deploy."},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    This method returns PXE boot file to be used for deploy."},{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"},{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_619c8e0e","line":814,"in_reply_to":"3aaa91ec_58b227e6","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"},{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_d8ec57bd","line":818,"range":{"start_line":818,"start_character":17,"end_line":818,"end_character":18},"updated":"2016-06-30 09:59:33.000000000","message":"s/a/A","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":815,"context_line":"    Architecture specific boot file is searched first. BIOS/UEFI"},{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_e1907eef","line":818,"range":{"start_line":818,"start_character":17,"end_line":818,"end_character":18},"in_reply_to":"3aaa91ec_d8ec57bd","updated":"2016-06-30 10:50:48.000000000","message":"Done. Looks it\u0027s inconsistent throughout the code.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":822,"context_line":"    boot_file \u003d CONF.pxe.pxe_bootfile_name_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_32de5a11","line":819,"updated":"2016-06-30 08:34:46.000000000","message":"file name","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":822,"context_line":"    boot_file \u003d CONF.pxe.pxe_bootfile_name_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_5837c74c","line":819,"range":{"start_line":819,"start_character":14,"end_line":819,"end_character":17},"updated":"2016-06-30 09:59:33.000000000","message":"s/the/The/","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":822,"context_line":"    boot_file \u003d CONF.pxe.pxe_bootfile_name_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_81c89a56","line":819,"in_reply_to":"3aaa91ec_32de5a11","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":816,"context_line":"    boot file is used if no valid architecture specific file found."},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    :param node: a single Node."},{"line_number":819,"context_line":"    :returns: the PXE boot file."},{"line_number":820,"context_line":"    \"\"\""},{"line_number":821,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":822,"context_line":"    boot_file \u003d CONF.pxe.pxe_bootfile_name_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_ec1a356e","line":819,"range":{"start_line":819,"start_character":14,"end_line":819,"end_character":17},"in_reply_to":"3aaa91ec_5837c74c","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":830,"context_line":""},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"def get_pxe_config_template(node):"},{"line_number":833,"context_line":"    \"\"\"Return the PXE config template file requested for deploy."},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    This method returns PXE config template file to be used for deploy."},{"line_number":836,"context_line":"    Architecture specific template file is searched first. BIOS/UEFI"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_12e35eda","line":833,"updated":"2016-06-30 08:34:46.000000000","message":"ditto here","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":830,"context_line":""},{"line_number":831,"context_line":""},{"line_number":832,"context_line":"def get_pxe_config_template(node):"},{"line_number":833,"context_line":"    \"\"\"Return the PXE config template file requested for deploy."},{"line_number":834,"context_line":""},{"line_number":835,"context_line":"    This method returns PXE config template file to be used for deploy."},{"line_number":836,"context_line":"    Architecture specific template file is searched first. BIOS/UEFI"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_e1c19e30","line":833,"in_reply_to":"3aaa91ec_12e35eda","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":836,"context_line":"    Architecture specific template file is searched first. BIOS/UEFI"},{"line_number":837,"context_line":"    template file is used if no valid architecture specific file found."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    :param node: a single Node."},{"line_number":840,"context_line":"    :returns: the PXE config template file."},{"line_number":841,"context_line":"    \"\"\""},{"line_number":842,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_18189fd2","line":839,"updated":"2016-06-30 09:59:33.000000000","message":"ditto","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":836,"context_line":"    Architecture specific template file is searched first. BIOS/UEFI"},{"line_number":837,"context_line":"    template file is used if no valid architecture specific file found."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    :param node: a single Node."},{"line_number":840,"context_line":"    :returns: the PXE config template file."},{"line_number":841,"context_line":"    \"\"\""},{"line_number":842,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_616aceee","line":839,"in_reply_to":"3aaa91ec_18189fd2","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":837,"context_line":"    template file is used if no valid architecture specific file found."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    :param node: a single Node."},{"line_number":840,"context_line":"    :returns: the PXE config template file."},{"line_number":841,"context_line":"    \"\"\""},{"line_number":842,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":843,"context_line":"    config_template \u003d CONF.pxe.pxe_config_template_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_d2a4364c","line":840,"updated":"2016-06-30 08:34:46.000000000","message":"ditto","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":837,"context_line":"    template file is used if no valid architecture specific file found."},{"line_number":838,"context_line":""},{"line_number":839,"context_line":"    :param node: a single Node."},{"line_number":840,"context_line":"    :returns: the PXE config template file."},{"line_number":841,"context_line":"    \"\"\""},{"line_number":842,"context_line":"    cpu_arch \u003d node.properties.get(\u0027cpu_arch\u0027)"},{"line_number":843,"context_line":"    config_template \u003d CONF.pxe.pxe_config_template_by_arch.get(cpu_arch)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_c1be22ad","line":840,"in_reply_to":"3aaa91ec_d2a4364c","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"647dfdec80a9b87e3bafc04995dca4fc2966a1f4","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   \u0027drivers/modules/pxe_config.template\u0027),"},{"line_number":47,"context_line":"               help\u003d_(\u0027On ironic-conductor node, template file for PXE \u0027"},{"line_number":48,"context_line":"                      \u0027configuration. \u0027"},{"line_number":49,"context_line":"                      \u0027Deprecated by pxe_config_template_by_arch.\u0027)),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_config_template\u0027,"},{"line_number":51,"context_line":"               default\u003dpaths.basedir_def("},{"line_number":52,"context_line":"                   \u0027drivers/modules/elilo_efi_pxe_config.template\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_66ae59e7","line":49,"updated":"2016-06-08 11:03:09.000000000","message":"There is a deprecated_for_removal and deprecated_reason options in cfg.Opt constructor, please use them instead.","commit_id":"208337d08e79807b08bf07b1ac016de7f56ebc67"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"647dfdec80a9b87e3bafc04995dca4fc2966a1f4","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    cfg.StrOpt(\u0027pxe_bootfile_name\u0027,"},{"line_number":84,"context_line":"               default\u003d\u0027pxelinux.0\u0027,"},{"line_number":85,"context_line":"               help\u003d_(\u0027Bootfile DHCP parameter. \u0027"},{"line_number":86,"context_line":"                      \u0027Deprecated by pxe_bootfile_name_by_arch.\u0027)),"},{"line_number":87,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_bootfile_name\u0027,"},{"line_number":88,"context_line":"               default\u003d\u0027elilo.efi\u0027,"},{"line_number":89,"context_line":"               help\u003d_(\u0027Bootfile DHCP parameter for UEFI boot mode. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_e6888973","line":86,"updated":"2016-06-08 11:03:09.000000000","message":"ditto","commit_id":"208337d08e79807b08bf07b1ac016de7f56ebc67"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   \u0027drivers/modules/pxe_config.template\u0027),"},{"line_number":47,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":48,"context_line":"               deprecated_reason\u003d\u0027Deprecated by pxe_config_template_by_arch\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\u0027DEPRECATED: On ironic-conductor node, template file \u0027"},{"line_number":50,"context_line":"                      \u0027for PXE configuration.\u0027)),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_config_template\u0027,"},{"line_number":52,"context_line":"               default\u003dpaths.basedir_def("}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_472b94eb","line":49,"range":{"start_line":49,"start_character":23,"end_line":49,"end_character":33},"updated":"2016-06-17 10:37:27.000000000","message":"there is no need to say again that it is deprecated, please regenerate the config file and you\u0027ll see that deprecated_reason is added there automatically.","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   \u0027drivers/modules/pxe_config.template\u0027),"},{"line_number":47,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":48,"context_line":"               deprecated_reason\u003d\u0027Deprecated by pxe_config_template_by_arch\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\u0027DEPRECATED: On ironic-conductor node, template file \u0027"},{"line_number":50,"context_line":"                      \u0027for PXE configuration.\u0027)),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027uefi_pxe_config_template\u0027,"},{"line_number":52,"context_line":"               default\u003dpaths.basedir_def("}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_1b0cbe93","line":49,"range":{"start_line":49,"start_character":23,"end_line":49,"end_character":33},"in_reply_to":"7aa08908_472b94eb","updated":"2016-06-20 06:49:58.000000000","message":"Done","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                    # okay when reading from configuration file."},{"line_number":63,"context_line":"                    # _substitute() is called explicitly as a workaround."},{"line_number":64,"context_line":"                    # Should be removed after oslo_config fixed and released."},{"line_number":65,"context_line":"                    \u0027bios\u0027: cfg.CONF._substitute(paths.basedir_def("},{"line_number":66,"context_line":"                        \u0027drivers/modules/pxe_config.template\u0027)),"},{"line_number":67,"context_line":"                    \u0027uefi\u0027: cfg.CONF._substitute(paths.basedir_def("},{"line_number":68,"context_line":"                        \u0027drivers/modules/elilo_efi_pxe_config.template\u0027)),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7aa08908_d2ce2482","line":65,"updated":"2016-06-17 10:37:27.000000000","message":"This might be confusing for people, as bios and uefi are not node architectures, maybe instead of deprecating the old options, we should leave them as is, and add this new config option that will be including only real architectures keys? Otherwise it should be very clear in the docs that uefi and bios are possible keys too, and that they are fallbacks.","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"7c89f69993ae688598b5777c24fec3fc6e24b5ae","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                    # okay when reading from configuration file."},{"line_number":63,"context_line":"                    # _substitute() is called explicitly as a workaround."},{"line_number":64,"context_line":"                    # Should be removed after oslo_config fixed and released."},{"line_number":65,"context_line":"                    \u0027bios\u0027: cfg.CONF._substitute(paths.basedir_def("},{"line_number":66,"context_line":"                        \u0027drivers/modules/pxe_config.template\u0027)),"},{"line_number":67,"context_line":"                    \u0027uefi\u0027: cfg.CONF._substitute(paths.basedir_def("},{"line_number":68,"context_line":"                        \u0027drivers/modules/elilo_efi_pxe_config.template\u0027)),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_7b034210","line":65,"in_reply_to":"7aa08908_d2ce2482","updated":"2016-06-20 06:49:58.000000000","message":"Notes added to install-guide.rst.\n\nIn fact, the initial commit is similar to this comment: introducing a new option to support new features in addition to existing ones. But it looks kind of awkward to have three options for one purpose.\n\nThe name \"by_arch\" doesn\u0027t fit well the actual meaning. I thought about using client-arch code(hex value) from rfc5970 as the key, but it\u0027s not readable. x86 boot mode is always a mess:)","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"72c5429b7dfbab7187bf970440af0928027209dd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                      \u0027configuration for UEFI boot loader.\u0027)),"},{"line_number":54,"context_line":"    cfg.DictOpt(\u0027pxe_config_template_by_arch\u0027,"},{"line_number":55,"context_line":"                default\u003d{},"},{"line_number":56,"context_line":"                help\u003d_(\u0027On ironic-conductor node, template file for PXE \u0027"},{"line_number":57,"context_line":"                       \u0027configuration per node architecture.\u0027)),"},{"line_number":58,"context_line":"    cfg.StrOpt(\u0027tftp_server\u0027,"},{"line_number":59,"context_line":"               default\u003d\u0027$my_ip\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_52004666","line":56,"updated":"2016-06-30 08:34:46.000000000","message":"I\u0027d remove \"on ironic-conductor\" node part, but this is what other options above have, so feel free to ignore this comment.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"}],"ironic/tests/unit/drivers/modules/test_deploy_utils.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"        self.template_by_arch \u003d {\u0027aarch64\u0027: \u0027aarch64-template\u0027,"},{"line_number":1214,"context_line":"                                 \u0027ppc64\u0027: \u0027ppc64-template\u0027}"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    def test_get_pxe_boot_config_bios_without_by_arch(self):"},{"line_number":1217,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86\u0027, \u0027capabilities\u0027: \u0027boot_mode:bios\u0027}"},{"line_number":1218,"context_line":"        self.node.properties \u003d properties"},{"line_number":1219,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003d{}, group\u003d\u0027pxe\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_a155d650","line":1216,"updated":"2016-06-30 09:59:33.000000000","message":"I think it would be good to split tests, and test one function per test.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":1213,"context_line":"        self.template_by_arch \u003d {\u0027aarch64\u0027: \u0027aarch64-template\u0027,"},{"line_number":1214,"context_line":"                                 \u0027ppc64\u0027: \u0027ppc64-template\u0027}"},{"line_number":1215,"context_line":""},{"line_number":1216,"context_line":"    def test_get_pxe_boot_config_bios_without_by_arch(self):"},{"line_number":1217,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86\u0027, \u0027capabilities\u0027: \u0027boot_mode:bios\u0027}"},{"line_number":1218,"context_line":"        self.node.properties \u003d properties"},{"line_number":1219,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003d{}, group\u003d\u0027pxe\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_7938c2d3","line":1216,"in_reply_to":"3aaa91ec_a155d650","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"        result \u003d utils.get_pxe_config_template(self.node)"},{"line_number":1234,"context_line":"        self.assertEqual(\u0027uefi-template\u0027, result)"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    def test_get_pxe_boot_config_bios_with_by_arch(self):"},{"line_number":1237,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86\u0027, \u0027capabilities\u0027: \u0027boot_mode:bios\u0027}"},{"line_number":1238,"context_line":"        self.node.properties \u003d properties"},{"line_number":1239,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003dself.bootfile_by_arch,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_418512cd","line":1236,"updated":"2016-06-30 09:59:33.000000000","message":"this test should cover case when there are file and templates for configured cpu_arch according to the name.","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"        result \u003d utils.get_pxe_config_template(self.node)"},{"line_number":1234,"context_line":"        self.assertEqual(\u0027uefi-template\u0027, result)"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"    def test_get_pxe_boot_config_bios_with_by_arch(self):"},{"line_number":1237,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86\u0027, \u0027capabilities\u0027: \u0027boot_mode:bios\u0027}"},{"line_number":1238,"context_line":"        self.node.properties \u003d properties"},{"line_number":1239,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003dself.bootfile_by_arch,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_793f22b4","line":1236,"in_reply_to":"3aaa91ec_418512cd","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbea64e1a3b238833b2fe70124e20a8d0dcdb310","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"        result \u003d utils.get_pxe_config_template(self.node)"},{"line_number":1246,"context_line":"        self.assertEqual(\u0027bios-template\u0027, result)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def test_get_pxe_boot_config_uefi_with_by_arch(self):"},{"line_number":1249,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86_64\u0027, \u0027capabilities\u0027: \u0027boot_mode:uefi\u0027}"},{"line_number":1250,"context_line":"        self.node.properties \u003d properties"},{"line_number":1251,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003dself.bootfile_by_arch,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_816b7a1d","line":1248,"range":{"start_line":1248,"start_character":38,"end_line":1248,"end_character":39},"updated":"2016-06-30 09:59:33.000000000","message":"ditto","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"44ee7166d667f4355a3b32737c6ce26943c52c7d","unresolved":false,"context_lines":[{"line_number":1245,"context_line":"        result \u003d utils.get_pxe_config_template(self.node)"},{"line_number":1246,"context_line":"        self.assertEqual(\u0027bios-template\u0027, result)"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def test_get_pxe_boot_config_uefi_with_by_arch(self):"},{"line_number":1249,"context_line":"        properties \u003d {\u0027cpu_arch\u0027: \u0027x86_64\u0027, \u0027capabilities\u0027: \u0027boot_mode:uefi\u0027}"},{"line_number":1250,"context_line":"        self.node.properties \u003d properties"},{"line_number":1251,"context_line":"        self.config(pxe_bootfile_name_by_arch\u003dself.bootfile_by_arch,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_b9450a44","line":1248,"range":{"start_line":1248,"start_character":38,"end_line":1248,"end_character":39},"in_reply_to":"3aaa91ec_816b7a1d","updated":"2016-06-30 10:50:48.000000000","message":"Done","commit_id":"086b6588fac9f057813098c1e15037dc6beb6bf4"}],"releasenotes/notes/multi-arch-deploy-bcf840107fc94bef.yaml":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"647dfdec80a9b87e3bafc04995dca4fc2966a1f4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support multi architecture deployment. E.g., to"},{"line_number":4,"context_line":"    deploy x86_64, aarch64 servers by one ironic node."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7aa08908_c653cde0","line":3,"updated":"2016-06-08 11:03:09.000000000","message":"Please add an upgrade section and mention the new config options and how they change the behaviour.","commit_id":"208337d08e79807b08bf07b1ac016de7f56ebc67"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"0b58a8d5e0d5d07d5c18e9eb4ee511dae5ce9ed3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support multi architecture deployment. E.g., to"},{"line_number":4,"context_line":"    deploy x86_64, aarch64 servers by one ironic node."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Two new config options, \u0027pxe_config_template_by_arch\u0027"},{"line_number":7,"context_line":"    and \u0027pxe_bootfile_name_by_arch\u0027, are introduced,"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7aa08908_32ee8822","line":4,"range":{"start_line":4,"start_character":49,"end_line":4,"end_character":53},"updated":"2016-06-17 10:37:27.000000000","message":"conductor I think, not node.","commit_id":"f49ce66711d8e92197ceebd7478469ee4d2fd8bc"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"daf20d416e172408cdaa8ba99febcb74e1ce5de7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Two new config options, \u0027pxe_config_template_by_arch\u0027"},{"line_number":7,"context_line":"    and \u0027pxe_bootfile_name_by_arch\u0027, are introduced to"},{"line_number":8,"context_line":"    support this feature. They are dictionary values to"},{"line_number":9,"context_line":"    hold pxe config templates and boot files for multiple"},{"line_number":10,"context_line":"    architectures, with cpu_arch property per node as"},{"line_number":11,"context_line":"    the key. If cpu_arch is not found in dictionary,"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"dada55a8_8a9a836c","line":8,"range":{"start_line":8,"start_character":12,"end_line":8,"end_character":24},"updated":"2016-07-20 16:58:19.000000000","message":"The way it\u0027s rendered is - features and upgrades are completely different sections, and there is lots of stuff in between of these two paragraphs, so please add a short description here, what\u0027s a feature.","commit_id":"6636ef97d8f11682cdbe04a00417127b0e291488"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"52ebc60fd379f251af8a8eaefedffa62fdcab8b9","unresolved":false,"context_lines":[{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Two new config options, \u0027pxe_config_template_by_arch\u0027"},{"line_number":7,"context_line":"    and \u0027pxe_bootfile_name_by_arch\u0027, are introduced to"},{"line_number":8,"context_line":"    support this feature. They are dictionary values to"},{"line_number":9,"context_line":"    hold pxe config templates and boot files for multiple"},{"line_number":10,"context_line":"    architectures, with cpu_arch property per node as"},{"line_number":11,"context_line":"    the key. If cpu_arch is not found in dictionary,"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"1ac06dbe_0621ca9f","line":8,"range":{"start_line":8,"start_character":12,"end_line":8,"end_character":24},"in_reply_to":"dada55a8_8a9a836c","updated":"2016-08-22 05:26:27.000000000","message":"Done","commit_id":"6636ef97d8f11682cdbe04a00417127b0e291488"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"30bba86fe7718c7b6aa477eafdf3a865e53a7b87","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support multi architecture deployment. E.g., to"},{"line_number":4,"context_line":"    deploy x86_64, aarch64 servers by one ironic conductor."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Two new config options, \u0027pxe_config_template_by_arch\u0027"},{"line_number":7,"context_line":"    and \u0027pxe_bootfile_name_by_arch\u0027, are introduced to"},{"line_number":8,"context_line":"    support multiple architecture deployment. They are"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa7ab95a_d9eee9b3","line":5,"updated":"2016-08-31 08:51:28.000000000","message":"I\u0027m not sure we need an upgrade note here since the work is backward compatible. AFAIUI upgrade notes are meant to alert deployers about a behavior change where they might need to take some action to keep things working as it was before (no surprises).\n\nI think both sessions should go under features. Please another core correct me if I\u0027m wrong.","commit_id":"7bdf19c4502464ed52f9ee934afa87a7e2156f16"},{"author":{"_account_id":21006,"name":"Yibo Cai","email":"yibo.cai@linaro.org","username":"yibocai"},"change_message_id":"c4cc781dae9d8a61923c8f1c81c60fe754141b19","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support multi architecture deployment. E.g., to"},{"line_number":4,"context_line":"    deploy x86_64, aarch64 servers by one ironic conductor."},{"line_number":5,"context_line":"upgrade:"},{"line_number":6,"context_line":"  - Two new config options, \u0027pxe_config_template_by_arch\u0027"},{"line_number":7,"context_line":"    and \u0027pxe_bootfile_name_by_arch\u0027, are introduced to"},{"line_number":8,"context_line":"    support multiple architecture deployment. They are"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa7ab95a_b7912955","line":5,"in_reply_to":"fa7ab95a_d9eee9b3","updated":"2016-08-31 09:58:04.000000000","message":"Done","commit_id":"7bdf19c4502464ed52f9ee934afa87a7e2156f16"}]}
