)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9f35abbc812d5a3fe076e25309a1d7c9556169f8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Another conductor in the hash ring fails to"},{"line_number":10,"context_line":"take oer for the pxe drivers due to the missing"},{"line_number":11,"context_line":"config file on that conductor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug: #1516816"},{"line_number":14,"context_line":"Change-Id: Icca524747bd3935d8b5c447798bfb66ab22c66d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a8ffd7b_7742166a","line":11,"updated":"2015-11-26 14:34:51.000000000","message":"please change your commit message to describe what is done and why, not just copy of the bug text","commit_id":"b509ba60cfe82a1cbb45fabdbe2eed19424f0a20"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4365bc6c71709bb5baa896fbe322c2551b7bd379","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Another conductor in the hash ring fails to"},{"line_number":10,"context_line":"take oer for the pxe drivers due to the missing"},{"line_number":11,"context_line":"config file on that conductor."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug: #1516816"},{"line_number":14,"context_line":"Change-Id: Icca524747bd3935d8b5c447798bfb66ab22c66d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a8ffd7b_4b25ebbe","line":11,"in_reply_to":"9a8ffd7b_7742166a","updated":"2015-11-26 15:30:15.000000000","message":"Ok","commit_id":"b509ba60cfe82a1cbb45fabdbe2eed19424f0a20"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4e0b3445eb17f5910006466365bfe22b349e53a6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nisha Agarwal \u003cagarwalnisha1980@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-13 16:18:05 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"conductor fails to do take_over for PXE drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit takes care to create the config file"},{"line_number":10,"context_line":"for pxe drivers when other conductor takes over"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7a740942_19e5c1da","line":7,"updated":"2015-12-14 11:31:54.000000000","message":"nit\n\nFix: conductor fails....","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"bda9d801ff0bbb5703b483e0dd045d987121ba5d","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    # image and initrd fields in elilo config cannot be blank."},{"line_number":244,"context_line":"    kernel \u003d \u0027no_kernel\u0027"},{"line_number":245,"context_line":"    ramdisk \u003d \u0027no_ramdisk\u0027"},{"line_number":246,"context_line":"    deploy_kernel \u003d \u0027no_deploy_kernel\u0027"},{"line_number":247,"context_line":"    deploy_ramdisk \u003d \u0027no_deploy_ramdisk\u0027"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    if CONF.pxe.ipxe_enabled:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_11bb8f0f","line":246,"updated":"2016-02-22 11:58:28.000000000","message":"I\u0027m not sure about this change. Should we allow this? Is it the case when the node is in ACTIVE state, then operator deletes deploy_kernel/ramdisk and then take_over happens? If so, maybe it would be better to call task.driver.deploy.validate before task.driver.deploy.prepare in _do_takeover in conductor? And if deploy_kernel or ramdisk are not there put a last_error stating what has gone wrong.","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"beda83d5005d8816bbed2ddaa67a3d8828cd7c97","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    # image and initrd fields in elilo config cannot be blank."},{"line_number":244,"context_line":"    kernel \u003d \u0027no_kernel\u0027"},{"line_number":245,"context_line":"    ramdisk \u003d \u0027no_ramdisk\u0027"},{"line_number":246,"context_line":"    deploy_kernel \u003d \u0027no_deploy_kernel\u0027"},{"line_number":247,"context_line":"    deploy_ramdisk \u003d \u0027no_deploy_ramdisk\u0027"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    if CONF.pxe.ipxe_enabled:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_31afb382","line":246,"in_reply_to":"bae84128_11bb8f0f","updated":"2016-02-22 12:04:53.000000000","message":"Oh, sorry, ignore this comment.","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"39af1e2af79d89d040c104733f35cfe92faed0c5","unresolved":false,"context_lines":[{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        pxe_utils.create_pxe_config(task, pxe_options,"},{"line_number":482,"context_line":"                                    pxe_config_template)"},{"line_number":483,"context_line":"        deploy_utils.try_set_boot_device(task, boot_devices.PXE)"},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"        # FIXME(lucasagomes): If it\u0027s local boot we should not cache"},{"line_number":486,"context_line":"        # the image kernel and ramdisk (Or even require it)."}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_495f350e","line":483,"updated":"2016-02-22 10:59:16.000000000","message":"same code here","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"40813277c1a0589fd706b61b613d3892f63584d4","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                        pxe_config_template \u003d ("},{"line_number":564,"context_line":"                            _get_pxe_conf_option(task, \u0027pxe_config_template\u0027))"},{"line_number":565,"context_line":"                    pxe_utils.create_pxe_config(task, pxe_options,"},{"line_number":566,"context_line":"                                                pxe_config_template)"},{"line_number":567,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":568,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":569,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_a32f64f5","line":566,"updated":"2016-02-19 09:46:16.000000000","message":"I see this code is copy from prepare_ramdisk(), and there are also some code can share between these two function, I think it worth to have a common function for the sake of maintaining. prepare_ramdisk should be more generic rather then only for deploy kernel/ramdisk. WDYT？","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"39af1e2af79d89d040c104733f35cfe92faed0c5","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                        pxe_config_template \u003d ("},{"line_number":564,"context_line":"                            _get_pxe_conf_option(task, \u0027pxe_config_template\u0027))"},{"line_number":565,"context_line":"                    pxe_utils.create_pxe_config(task, pxe_options,"},{"line_number":566,"context_line":"                                                pxe_config_template)"},{"line_number":567,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":568,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":569,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_a92d2148","line":566,"in_reply_to":"bae84128_406431e4","updated":"2016-02-22 10:59:16.000000000","message":"Hi Ankit,\n\nI agree with @Tan. I\u0027m not sure you understood his point, he means that we have the same logic (code) in both methods (prepare_ramdisk() and prepare_instance()), so to make it easier to maintain we should put this logic in a shared place (e.g a private method in the PXEBoot class, or a helper function at pxe_utils.py module) and just call that function on both prepare_{instance, ramdisk} methods.\n\ne.g\n\n def _create_pxe_config(self, task, info):\n     pxe_options \u003d _build_pxe...\n     ...\n     pxe_utils.create_pxe_config(...)\n\n def prepare_ramdisk(self, task):\n     ...\n     self._create_pxe_config(...)\n\n def prepare_instance(self, task):\n     ...\n     self._create_pxe_config(...)\n\n\nMakes sense?","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":19604,"name":"ankit","email":"ankit.dhn31@gmail.com","username":"ankit"},"change_message_id":"417cf6f5a3e867323eb90235192bb5952fba6fa1","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                        pxe_config_template \u003d ("},{"line_number":564,"context_line":"                            _get_pxe_conf_option(task, \u0027pxe_config_template\u0027))"},{"line_number":565,"context_line":"                    pxe_utils.create_pxe_config(task, pxe_options,"},{"line_number":566,"context_line":"                                                pxe_config_template)"},{"line_number":567,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":568,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":569,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_406431e4","line":566,"in_reply_to":"bae84128_a32f64f5","updated":"2016-02-22 06:30:13.000000000","message":"prepare_ramdisk is called during deploy. While we need this change when \"boot\" is being called.","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"},{"author":{"_account_id":14923,"name":"Sinval Vieira Mendes Neto","email":"sinvalneto01@gmail.com","username":"sinvalvieira"},"change_message_id":"b031ca9e521498fcde26ccd51a42dc76512ed3a8","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                        pxe_config_template \u003d ("},{"line_number":564,"context_line":"                            _get_pxe_conf_option(task, \u0027pxe_config_template\u0027))"},{"line_number":565,"context_line":"                    pxe_utils.create_pxe_config(task, pxe_options,"},{"line_number":566,"context_line":"                                                pxe_config_template)"},{"line_number":567,"context_line":"                deploy_utils.switch_pxe_config("},{"line_number":568,"context_line":"                    pxe_config_path, root_uuid_or_disk_id,"},{"line_number":569,"context_line":"                    deploy_utils.get_boot_mode_for_deploy(node),"}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_2fd8ee1c","line":566,"in_reply_to":"bae84128_a92d2148","updated":"2016-02-22 12:59:21.000000000","message":"+1, I would love to see it as a private method int the PXEBoot class.","commit_id":"71c6c8ad4e3eac88dd2e6c05e18ac45b3be557c9"}],"ironic/tests/unit/drivers/modules/test_pxe.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        self.assertEqual({}, image_info)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":184,"context_line":"    def _test_build_pxe_config_options_prepare_instance(self,"},{"line_number":185,"context_line":"                                                        build_pxe_mock,"},{"line_number":186,"context_line":"                                                        whle_dsk_img\u003dFalse,"},{"line_number":187,"context_line":"                                                        ipxe_enabled\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_22a72ba8","line":184,"updated":"2015-12-14 11:23:24.000000000","message":"This method getting not getting called anywhere.","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4e0b3445eb17f5910006466365bfe22b349e53a6","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        self.assertEqual({}, image_info)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":184,"context_line":"    def _test_build_pxe_config_options_prepare_instance(self,"},{"line_number":185,"context_line":"                                                        build_pxe_mock,"},{"line_number":186,"context_line":"                                                        whle_dsk_img\u003dFalse,"},{"line_number":187,"context_line":"                                                        ipxe_enabled\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_9901b1b1","line":184,"in_reply_to":"7a740942_22a72ba8","updated":"2015-12-14 11:31:54.000000000","message":"+1\n\nSo it\u0027s not being tested... Usually private methods like this is created to share code between other tests","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":835,"context_line":"            self, get_image_info_mock, cache_mock,"},{"line_number":836,"context_line":"            dhcp_factory_mock, switch_pxe_config_mock,"},{"line_number":837,"context_line":"            set_boot_device_mock, create_pxe_mock,"},{"line_number":838,"context_line":"            get_boot_mode_mock, get_pxe_option_mock,"},{"line_number":839,"context_line":"            pxe_config_mock, exist_mock):"},{"line_number":840,"context_line":"        provider_mock \u003d mock.MagicMock()"},{"line_number":841,"context_line":"        dhcp_factory_mock.return_value \u003d provider_mock"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_9eb75739","line":838,"updated":"2015-12-14 11:23:24.000000000","message":"better to name \u0027get_pxe_option_mock\u0027 as \u0027build_pxe_config_mock\u0027 to avoid confusion with another method name \u0027_get_pxe_conf_option\u0027","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":925,"context_line":"            provider_mock.update_dhcp.assert_called_once_with(task, dhcp_opts)"},{"line_number":926,"context_line":"            exist_mock.assert_called_once_with(pxe_config_path)"},{"line_number":927,"context_line":"            build_pxe_option_mock.assert_called_once_with(task, image_info)"},{"line_number":928,"context_line":"            get_boot_mode_mock.assert_called_with(task.node)"},{"line_number":929,"context_line":"            pxe_config_mock.assert_called_once_with(task,"},{"line_number":930,"context_line":"                                                    \u0027pxe_config_template\u0027)"},{"line_number":931,"context_line":"            create_pxe_mock.assert_called_once_with(task, pxe_options,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_3e42e30f","line":928,"updated":"2015-12-14 11:23:24.000000000","message":"This method get_boot_mode_for_deploy() would be called twice at L568 and L577 in https://review.openstack.org/#/c/246033/5/ironic/drivers/modules/pxe.py","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4e0b3445eb17f5910006466365bfe22b349e53a6","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        image_info \u003d {\u0027kernel\u0027: (\u0027\u0027, \u0027/path/to/kernel\u0027),"},{"line_number":958,"context_line":"                      \u0027ramdisk\u0027: (\u0027\u0027, \u0027/path/to/ramdisk\u0027)}"},{"line_number":959,"context_line":"        get_image_info_mock.return_value \u003d image_info"},{"line_number":960,"context_line":"        get_boot_mode_mock.return_value \u003d \u0027uefi\u0027"},{"line_number":961,"context_line":"        CONF.pxe.pxe_config_template \u003d \u0027pxe_config.template\u0027"},{"line_number":962,"context_line":"        pxe_options \u003d {"},{"line_number":963,"context_line":"            \u0027ari_path\u0027: \u0027ramdisk\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f9a0f591","line":960,"updated":"2015-12-14 11:31:54.000000000","message":"Can we try share some code beetween the tests  test_prepare_instance_netboot_config_not_present_{bios, uefi} ? They are are very similar","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":988,"context_line":"            provider_mock.update_dhcp.assert_called_once_with(task, dhcp_opts)"},{"line_number":989,"context_line":"            exist_mock.assert_called_once_with(pxe_config_path)"},{"line_number":990,"context_line":"            build_pxe_option_mock.assert_called_once_with(task, image_info)"},{"line_number":991,"context_line":"            get_boot_mode_mock.assert_called_with(task.node)"},{"line_number":992,"context_line":"            self.assertFalse(pxe_config_mock.called)"},{"line_number":993,"context_line":"            create_pxe_mock.assert_called_once_with(task, pxe_options,"},{"line_number":994,"context_line":"                                                    pxe_config_template)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_fe3c5b30","line":991,"updated":"2015-12-14 11:23:24.000000000","message":"This method get_boot_mode_for_deploy() would be called twice at L568 and L577 in https://review.openstack.org/#/c/246033/5/ironic/drivers/modules/pxe.py","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":157,"context_line":"    def test_build_pxe_config_options_prepare_instance("},{"line_number":158,"context_line":"            self, build_pxe_mock, whle_dsk_img\u003dFalse, ipxe_enabled\u003dFalse):"},{"line_number":159,"context_line":"        self.config(pxe_append_params\u003d\u0027test_param\u0027, group\u003d\u0027pxe\u0027)"},{"line_number":160,"context_line":"        # NOTE: right \u0027/\u0027 should be removed from url string"},{"line_number":161,"context_line":"        self.config(api_url\u003d\u0027http://192.168.122.184:6385\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ac371cc_7a57ddc9","line":158,"range":{"start_line":158,"start_character":34,"end_line":158,"end_character":72},"updated":"2016-08-18 11:46:17.000000000","message":"This test is run only with default values, I\u0027d remove these params (or add another \"base\" test that will be called to check all possibilities?)","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":157,"context_line":"    def test_build_pxe_config_options_prepare_instance("},{"line_number":158,"context_line":"            self, build_pxe_mock, whle_dsk_img\u003dFalse, ipxe_enabled\u003dFalse):"},{"line_number":159,"context_line":"        self.config(pxe_append_params\u003d\u0027test_param\u0027, group\u003d\u0027pxe\u0027)"},{"line_number":160,"context_line":"        # NOTE: right \u0027/\u0027 should be removed from url string"},{"line_number":161,"context_line":"        self.config(api_url\u003d\u0027http://192.168.122.184:6385\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ac371cc_8a44084a","line":158,"range":{"start_line":158,"start_character":34,"end_line":158,"end_character":72},"in_reply_to":"3ac371cc_7a57ddc9","updated":"2016-08-18 12:30:41.000000000","message":"Done","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        self.assertEqual({}, image_info)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":157,"context_line":"    def test_build_pxe_config_options_prepare_instance(self, build_pxe_mock):"},{"line_number":158,"context_line":"        self.config(pxe_append_params\u003d\u0027test_param\u0027, group\u003d\u0027pxe\u0027)"},{"line_number":159,"context_line":"        # NOTE: right \u0027/\u0027 should be removed from url string"},{"line_number":160,"context_line":"        self.config(api_url\u003d\u0027http://192.168.122.184:6385\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_7a72164b","line":157,"updated":"2016-08-18 21:09:21.000000000","message":"test__build_pxe_...\n\nbecause it is _build_pxe_config_options()","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    @mock.patch.object(pxe_utils, \u0027_build_pxe_config\u0027, autospec\u003dTrue)"},{"line_number":196,"context_line":"    def _test_build_pxe_config_options("},{"line_number":197,"context_line":"            self, build_pxe_mock, whle_dsk_img\u003dFalse, ipxe_enabled\u003dFalse,"},{"line_number":198,"context_line":"            ipxe_timeout\u003d0):"},{"line_number":199,"context_line":"        self.config(pxe_append_params\u003d\u0027test_param\u0027, group\u003d\u0027pxe\u0027)"},{"line_number":200,"context_line":"        # NOTE: right \u0027/\u0027 should be removed from url string"},{"line_number":201,"context_line":"        self.config(api_url\u003d\u0027http://192.168.122.184:6385\u0027, group\u003d\u0027conductor\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_1a57a2cb","line":198,"updated":"2016-08-18 21:09:21.000000000","message":"Odd that you\u0027d change this from the original. Also makes me spend a few extra seconds wondering what changed :-(","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            dhcp_opts \u003d pxe_utils.dhcp_options_for_instance(task)"},{"line_number":859,"context_line":"            pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":860,"context_line":"                task.node.uuid)"},{"line_number":861,"context_line":"            task.node.properties[\u0027capabilities\u0027] \u003d \u0027boot_mode:bios\u0027"},{"line_number":862,"context_line":"            task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d ("},{"line_number":863,"context_line":"                \"30212642-09d3-467f-8e09-21685826ab50\")"},{"line_number":864,"context_line":"            task.node.driver_internal_info[\u0027is_whole_disk_image\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_9a9272f5","line":861,"updated":"2016-08-18 21:09:21.000000000","message":"I wanted to confirm -- regardless of whether boot_mode is uefi or bios, you want this to be always set to bios?","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"113aee323e84a1778f2bfbfd0ada8db93dbaa83a","unresolved":false,"context_lines":[{"line_number":858,"context_line":"            dhcp_opts \u003d pxe_utils.dhcp_options_for_instance(task)"},{"line_number":859,"context_line":"            pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":860,"context_line":"                task.node.uuid)"},{"line_number":861,"context_line":"            task.node.properties[\u0027capabilities\u0027] \u003d \u0027boot_mode:bios\u0027"},{"line_number":862,"context_line":"            task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d ("},{"line_number":863,"context_line":"                \"30212642-09d3-467f-8e09-21685826ab50\")"},{"line_number":864,"context_line":"            task.node.driver_internal_info[\u0027is_whole_disk_image\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ac06dbe_972de2ff","line":861,"in_reply_to":"3ac371cc_9a9272f5","updated":"2016-08-25 13:04:58.000000000","message":"Only bios when we are running a test with UEFI through this same test doesn\u0027t seem right.","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"}],"releasenotes/notes/pxe_take_over-6dbb92f807925a7c.yaml":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So the node when rebooted after take over"},{"line_number":8,"context_line":"    failure never comes up as the first conductor is "},{"line_number":9,"context_line":"    not available and the second conductor is not able to"},{"line_number":10,"context_line":"    take it over."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7a740942_1ee607b0","line":8,"updated":"2015-12-14 11:23:24.000000000","message":"nit: remove extra blank space at end.","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bcfae890055c7851cce08a0b7c94c58f38a1b2de","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    TFTP server. So the node when rebooted after take over"},{"line_number":8,"context_line":"    failure never comes up as the first conductor is "},{"line_number":9,"context_line":"    not available and the second conductor is not able to"},{"line_number":10,"context_line":"    take it over."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7a740942_3e13c366","line":10,"updated":"2015-12-14 11:23:24.000000000","message":"This message looks bit confusing. Can we please simplify it?","commit_id":"43e31019080648d288a9bdfc75cad1a65bd144e6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_1ac0694f","line":2,"updated":"2016-08-18 11:46:17.000000000","message":"Please remove","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_6a3f0cb4","line":2,"in_reply_to":"3ac371cc_1ac0694f","updated":"2016-08-18 12:30:41.000000000","message":"Done","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_9aa1f996","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":8},"updated":"2016-08-18 11:46:17.000000000","message":"I\u0027m not sure if it\u0027s critical (as it was present for ages :)), but feel free to leave as is.","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_ea793c94","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":8},"in_reply_to":"3ac371cc_9aa1f996","updated":"2016-08-18 12:30:41.000000000","message":"Yeah probably it\u0027s too much, will change it to \"fixes\"","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_3ab9e5cc","line":6,"updated":"2016-08-18 11:46:17.000000000","message":"s/config/PXE config/, also \u0027other\u0027 \u003d\u003d \u0027first\u0027 here, but \u0027other\u0027 should be \u0027second\u0027.","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":3,"context_line":"critical:"},{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_6a66eced","line":6,"in_reply_to":"3ac371cc_3ab9e5cc","updated":"2016-08-18 12:30:41.000000000","message":"Done","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"},{"line_number":10,"context_line":"    of the absence of config file in TFTP server."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_3ae0c5cc","line":7,"range":{"start_line":7,"start_character":52,"end_line":7,"end_character":59},"updated":"2016-08-18 11:46:17.000000000","message":"not failure, but conductor take_over I think","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":4,"context_line":"  - In a multiconductor environment, the second conductor"},{"line_number":5,"context_line":"    fails to do take_over() for PXE drivers without this"},{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"},{"line_number":10,"context_line":"    of the absence of config file in TFTP server."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_eaa01cf6","line":7,"range":{"start_line":7,"start_character":52,"end_line":7,"end_character":59},"in_reply_to":"3ac371cc_3ae0c5cc","updated":"2016-08-18 12:30:41.000000000","message":"Done","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e1929e6fbc23522e4eba7df8bd18c28da1099c0e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"},{"line_number":10,"context_line":"    of the absence of config file in TFTP server."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_bafb1578","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":48},"updated":"2016-08-18 11:46:17.000000000","message":"maybe s/take/PXE boot","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3fb9bb64b5144edfd05bbdb0094492d97c036720","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    fix as the config file is missing on other conductor\u0027s"},{"line_number":7,"context_line":"    TFTP server. So when the node is rebooted after failure"},{"line_number":8,"context_line":"    it never comes up as the first conductor is not available"},{"line_number":9,"context_line":"    and the second conductor is not able to take it because"},{"line_number":10,"context_line":"    of the absence of config file in TFTP server."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3ac371cc_4aa4d006","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":48},"in_reply_to":"3ac371cc_bafb1578","updated":"2016-08-18 12:30:41.000000000","message":"Done","commit_id":"807b7e8779d8f316e56cc08b89474ae1e868ff70"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Fixes a problem where, in a multiconductor environment relying on"},{"line_number":4,"context_line":"    PXE to boot the nodes, the second conductor fails silently to take"},{"line_number":5,"context_line":"    over a node because it won\u0027t regenerate the PXE configuration file,"},{"line_number":6,"context_line":"    which causes the node to never come up again in case its rebooted."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3ac371cc_dae7ca44","line":4,"updated":"2016-08-18 21:09:21.000000000","message":"s/fails silently/silently failed/","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Fixes a problem where, in a multiconductor environment relying on"},{"line_number":4,"context_line":"    PXE to boot the nodes, the second conductor fails silently to take"},{"line_number":5,"context_line":"    over a node because it won\u0027t regenerate the PXE configuration file,"},{"line_number":6,"context_line":"    which causes the node to never come up again in case its rebooted."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3ac371cc_5adc7a74","line":5,"updated":"2016-08-18 21:09:21.000000000","message":"s/won\u0027t/didn\u0027t/","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"09d71d7c602e6b27e7babca9a4762b5128991458","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Fixes a problem where, in a multiconductor environment relying on"},{"line_number":4,"context_line":"    PXE to boot the nodes, the second conductor fails silently to take"},{"line_number":5,"context_line":"    over a node because it won\u0027t regenerate the PXE configuration file,"},{"line_number":6,"context_line":"    which causes the node to never come up again in case its rebooted."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3ac371cc_1ac962ad","line":6,"updated":"2016-08-18 21:09:21.000000000","message":"s/which causes/causing/\n\ns/its/if rebooted/","commit_id":"3b9fe80f7ab0a013cae0c3be90d6820e682188de"}]}
