)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ae1784d84a30c165e757f1f9102c54a783be0e4a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and re-maps the methods for compatability, as unit tests"},{"line_number":12,"context_line":"and methods have not yet been updated."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Tests and methods will be updated in the next patch."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Story: 1628069"},{"line_number":17,"context_line":"Change-Id: I717c49b99837b1785fc0080106414c6094dbf8eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_9556fe5b","line":14,"updated":"2018-09-06 11:14:23.000000000","message":"dunno, I\u0027d prefer one patch","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aec65c2903a28c6a348b9172409183551e1e5c65","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and re-maps the methods for compatability, as unit tests"},{"line_number":12,"context_line":"and methods have not yet been updated."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Tests and methods will be updated in the next patch."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Story: 1628069"},{"line_number":17,"context_line":"Change-Id: I717c49b99837b1785fc0080106414c6094dbf8eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_86a496a4","line":14,"in_reply_to":"3f79a3b5_9556fe5b","updated":"2018-09-06 13:25:41.000000000","message":"We\u0027re still verifying the methods this way, and we\u0027re able to address them without overloading reviewers, and ultimately it is kind of cleaner because we verify that we didn\u0027t break the interaction with the methods. I kind of backed off the idea of changing the tests in the same patch when I changed one method name and had 80-ish tests fail. :\\","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"}],"ironic/common/pxe_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ae1784d84a30c165e757f1f9102c54a783be0e4a","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                                              boot_volume)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    properties \u003d volume.properties"},{"line_number":724,"context_line":"    if \u0027iscsi\u0027 in volume[\u0027volume_type\u0027]:"},{"line_number":725,"context_line":"        if \u0027auth_username\u0027 in properties:"},{"line_number":726,"context_line":"            pxe_options[\u0027username\u0027] \u003d properties[\u0027auth_username\u0027]"},{"line_number":727,"context_line":"        if \u0027auth_password\u0027 in properties:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_554ce6c6","line":724,"updated":"2018-09-06 11:14:23.000000000","message":"nit:\n\n if \u0027iscsi\u0027 not in ...:\n     return pxe_options","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aec65c2903a28c6a348b9172409183551e1e5c65","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                                              boot_volume)"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    properties \u003d volume.properties"},{"line_number":724,"context_line":"    if \u0027iscsi\u0027 in volume[\u0027volume_type\u0027]:"},{"line_number":725,"context_line":"        if \u0027auth_username\u0027 in properties:"},{"line_number":726,"context_line":"            pxe_options[\u0027username\u0027] \u003d properties[\u0027auth_username\u0027]"},{"line_number":727,"context_line":"        if \u0027auth_password\u0027 in properties:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_66d7faef","line":724,"in_reply_to":"3f79a3b5_554ce6c6","updated":"2018-09-06 13:25:41.000000000","message":"Direct copy/paste... and if ever get to support FCoE will need to change the structure back.","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ae1784d84a30c165e757f1f9102c54a783be0e4a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"# NOTE(TheJulia): The lines below are for compatability purposes,"},{"line_number":69,"context_line":"# and should be able to be droped after the ipxe_enabled"},{"line_number":70,"context_line":"# configuration option is removed as the deprecation cycle"},{"line_number":71,"context_line":"# related to much of this refactoring should be complete."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_parse_driver_info \u003d pxe_utils.parse_driver_info"},{"line_number":74,"context_line":"_get_instance_image_info \u003d pxe_utils.parse_driver_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b551ba64","line":71,"updated":"2018-09-06 11:14:23.000000000","message":"I\u0027d prefer we don\u0027t leave compatibility aliases for private functions","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3e11b0e4105983224c1911943ee7376c860208a8","unresolved":false,"context_lines":[{"line_number":68,"context_line":"# NOTE(TheJulia): The lines below are for compatability purposes,"},{"line_number":69,"context_line":"# and should be able to be droped after the ipxe_enabled"},{"line_number":70,"context_line":"# configuration option is removed as the deprecation cycle"},{"line_number":71,"context_line":"# related to much of this refactoring should be complete."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_parse_driver_info \u003d pxe_utils.parse_driver_info"},{"line_number":74,"context_line":"_get_instance_image_info \u003d pxe_utils.parse_driver_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_e821869f","line":71,"in_reply_to":"3f79a3b5_86d256fc","updated":"2018-09-07 08:29:12.000000000","message":"Then we have two huge patches.. Dunno what others think, I prefer to review things atomically.","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"aec65c2903a28c6a348b9172409183551e1e5c65","unresolved":false,"context_lines":[{"line_number":68,"context_line":"# NOTE(TheJulia): The lines below are for compatability purposes,"},{"line_number":69,"context_line":"# and should be able to be droped after the ipxe_enabled"},{"line_number":70,"context_line":"# configuration option is removed as the deprecation cycle"},{"line_number":71,"context_line":"# related to much of this refactoring should be complete."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_parse_driver_info \u003d pxe_utils.parse_driver_info"},{"line_number":74,"context_line":"_get_instance_image_info \u003d pxe_utils.parse_driver_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_86d256fc","line":71,"in_reply_to":"3f79a3b5_b551ba64","updated":"2018-09-06 13:25:41.000000000","message":"Doing so will likely make this patch huge in terms of numbers of lines touched. I could just go ahead and delete them after the next patch?","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d18da1564d884b0b931d4610e62c6e5f7d796cc0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"# NOTE(TheJulia): The lines below are for compatability purposes,"},{"line_number":69,"context_line":"# and should be able to be droped after the ipxe_enabled"},{"line_number":70,"context_line":"# configuration option is removed as the deprecation cycle"},{"line_number":71,"context_line":"# related to much of this refactoring should be complete."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_parse_driver_info \u003d pxe_utils.parse_driver_info"},{"line_number":74,"context_line":"_get_instance_image_info \u003d pxe_utils.parse_driver_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_dc30f6eb","line":71,"in_reply_to":"3f79a3b5_d41af1c4","updated":"2018-09-21 08:13:16.000000000","message":"Yeah, it probably makes sense","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4d419335ea0b55b227d9e29bdbb7ce53e91eeb9e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"# NOTE(TheJulia): The lines below are for compatability purposes,"},{"line_number":69,"context_line":"# and should be able to be droped after the ipxe_enabled"},{"line_number":70,"context_line":"# configuration option is removed as the deprecation cycle"},{"line_number":71,"context_line":"# related to much of this refactoring should be complete."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"_parse_driver_info \u003d pxe_utils.parse_driver_info"},{"line_number":74,"context_line":"_get_instance_image_info \u003d pxe_utils.parse_driver_info"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d41af1c4","line":71,"in_reply_to":"3f79a3b5_e821869f","updated":"2018-09-10 17:33:58.000000000","message":"May be it would have been better if we had this patch as a first patch and https://review.openstack.org/#/c/583407/8 based on this.","commit_id":"8e64a422087c5905d80e2d7c0df3201633b77d4c"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bc75f2ba525f4dcd9544a51719a06c79e6b5052d","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            _clean_up_pxe_env(task, images_info)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _prepare_instance_pxe_config(self, task, image_info,"},{"line_number":298,"context_line":"                                     iscsi_boot\u003dFalse,"},{"line_number":299,"context_line":"                                     ramdisk_boot\u003dFalse):"},{"line_number":300,"context_line":"        \"\"\"Prepares the config file for PXE boot"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        :param task: a task from TaskManager."},{"line_number":303,"context_line":"        :param image_info: a dict of values of instance image"},{"line_number":304,"context_line":"            metadata to set on the configuration file."},{"line_number":305,"context_line":"        :param iscsi_boot: if boot is from an iSCSI volume or not."},{"line_number":306,"context_line":"        :param ramdisk_boot: if the boot is to a ramdisk configuration."},{"line_number":307,"context_line":"        :returns: None"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        node \u003d task.node"},{"line_number":311,"context_line":"        dhcp_opts \u003d pxe_utils.dhcp_options_for_instance(task)"},{"line_number":312,"context_line":"        provider \u003d dhcp_factory.DHCPFactory()"},{"line_number":313,"context_line":"        provider.update_dhcp(task, dhcp_opts)"},{"line_number":314,"context_line":"        pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":315,"context_line":"            node.uuid)"},{"line_number":316,"context_line":"        if not os.path.isfile(pxe_config_path):"},{"line_number":317,"context_line":"            pxe_options \u003d _build_pxe_config_options("},{"line_number":318,"context_line":"                task, image_info, service\u003dramdisk_boot)"},{"line_number":319,"context_line":"            pxe_config_template \u003d ("},{"line_number":320,"context_line":"                deploy_utils.get_pxe_config_template(node))"},{"line_number":321,"context_line":"            pxe_utils.create_pxe_config("},{"line_number":322,"context_line":"                task, pxe_options, pxe_config_template)"},{"line_number":323,"context_line":"        deploy_utils.switch_pxe_config("},{"line_number":324,"context_line":"            pxe_config_path, None,"},{"line_number":325,"context_line":"            boot_mode_utils.get_boot_mode_for_deploy(node), False,"},{"line_number":326,"context_line":"            iscsi_boot\u003discsi_boot, ramdisk_boot\u003dramdisk_boot)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @METRICS.timer(\u0027PXEBoot.prepare_instance\u0027)"},{"line_number":329,"context_line":"    def prepare_instance(self, task):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_fc2448b4","line":326,"range":{"start_line":297,"start_character":3,"end_line":326,"end_character":61},"updated":"2018-09-28 05:04:51.000000000","message":"This method needs to be removed as it is moved to pxe_utils.","commit_id":"642dedf784b98904ffb72f8905762b95b60f22c6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4c4e309dbf5b5b83f24810a0aa060d923f838226","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            _clean_up_pxe_env(task, images_info)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _prepare_instance_pxe_config(self, task, image_info,"},{"line_number":298,"context_line":"                                     iscsi_boot\u003dFalse,"},{"line_number":299,"context_line":"                                     ramdisk_boot\u003dFalse):"},{"line_number":300,"context_line":"        \"\"\"Prepares the config file for PXE boot"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        :param task: a task from TaskManager."},{"line_number":303,"context_line":"        :param image_info: a dict of values of instance image"},{"line_number":304,"context_line":"            metadata to set on the configuration file."},{"line_number":305,"context_line":"        :param iscsi_boot: if boot is from an iSCSI volume or not."},{"line_number":306,"context_line":"        :param ramdisk_boot: if the boot is to a ramdisk configuration."},{"line_number":307,"context_line":"        :returns: None"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        node \u003d task.node"},{"line_number":311,"context_line":"        dhcp_opts \u003d pxe_utils.dhcp_options_for_instance(task)"},{"line_number":312,"context_line":"        provider \u003d dhcp_factory.DHCPFactory()"},{"line_number":313,"context_line":"        provider.update_dhcp(task, dhcp_opts)"},{"line_number":314,"context_line":"        pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":315,"context_line":"            node.uuid)"},{"line_number":316,"context_line":"        if not os.path.isfile(pxe_config_path):"},{"line_number":317,"context_line":"            pxe_options \u003d _build_pxe_config_options("},{"line_number":318,"context_line":"                task, image_info, service\u003dramdisk_boot)"},{"line_number":319,"context_line":"            pxe_config_template \u003d ("},{"line_number":320,"context_line":"                deploy_utils.get_pxe_config_template(node))"},{"line_number":321,"context_line":"            pxe_utils.create_pxe_config("},{"line_number":322,"context_line":"                task, pxe_options, pxe_config_template)"},{"line_number":323,"context_line":"        deploy_utils.switch_pxe_config("},{"line_number":324,"context_line":"            pxe_config_path, None,"},{"line_number":325,"context_line":"            boot_mode_utils.get_boot_mode_for_deploy(node), False,"},{"line_number":326,"context_line":"            iscsi_boot\u003discsi_boot, ramdisk_boot\u003dramdisk_boot)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @METRICS.timer(\u0027PXEBoot.prepare_instance\u0027)"},{"line_number":329,"context_line":"    def prepare_instance(self, task):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_27fda707","line":326,"range":{"start_line":297,"start_character":3,"end_line":326,"end_character":61},"in_reply_to":"3f79a3b5_4bb9d713","updated":"2018-09-30 01:01:23.000000000","message":"Ok. I\u0027m fine with cleaning this up in later patch.","commit_id":"642dedf784b98904ffb72f8905762b95b60f22c6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51f5fc723b6963552d4170a86d62a519eaa9f896","unresolved":false,"context_lines":[{"line_number":294,"context_line":"        else:"},{"line_number":295,"context_line":"            _clean_up_pxe_env(task, images_info)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def _prepare_instance_pxe_config(self, task, image_info,"},{"line_number":298,"context_line":"                                     iscsi_boot\u003dFalse,"},{"line_number":299,"context_line":"                                     ramdisk_boot\u003dFalse):"},{"line_number":300,"context_line":"        \"\"\"Prepares the config file for PXE boot"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        :param task: a task from TaskManager."},{"line_number":303,"context_line":"        :param image_info: a dict of values of instance image"},{"line_number":304,"context_line":"            metadata to set on the configuration file."},{"line_number":305,"context_line":"        :param iscsi_boot: if boot is from an iSCSI volume or not."},{"line_number":306,"context_line":"        :param ramdisk_boot: if the boot is to a ramdisk configuration."},{"line_number":307,"context_line":"        :returns: None"},{"line_number":308,"context_line":"        \"\"\""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        node \u003d task.node"},{"line_number":311,"context_line":"        dhcp_opts \u003d pxe_utils.dhcp_options_for_instance(task)"},{"line_number":312,"context_line":"        provider \u003d dhcp_factory.DHCPFactory()"},{"line_number":313,"context_line":"        provider.update_dhcp(task, dhcp_opts)"},{"line_number":314,"context_line":"        pxe_config_path \u003d pxe_utils.get_pxe_config_file_path("},{"line_number":315,"context_line":"            node.uuid)"},{"line_number":316,"context_line":"        if not os.path.isfile(pxe_config_path):"},{"line_number":317,"context_line":"            pxe_options \u003d _build_pxe_config_options("},{"line_number":318,"context_line":"                task, image_info, service\u003dramdisk_boot)"},{"line_number":319,"context_line":"            pxe_config_template \u003d ("},{"line_number":320,"context_line":"                deploy_utils.get_pxe_config_template(node))"},{"line_number":321,"context_line":"            pxe_utils.create_pxe_config("},{"line_number":322,"context_line":"                task, pxe_options, pxe_config_template)"},{"line_number":323,"context_line":"        deploy_utils.switch_pxe_config("},{"line_number":324,"context_line":"            pxe_config_path, None,"},{"line_number":325,"context_line":"            boot_mode_utils.get_boot_mode_for_deploy(node), False,"},{"line_number":326,"context_line":"            iscsi_boot\u003discsi_boot, ramdisk_boot\u003dramdisk_boot)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @METRICS.timer(\u0027PXEBoot.prepare_instance\u0027)"},{"line_number":329,"context_line":"    def prepare_instance(self, task):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_4bb9d713","line":326,"range":{"start_line":297,"start_character":3,"end_line":326,"end_character":61},"in_reply_to":"3f79a3b5_fc2448b4","updated":"2018-09-29 13:33:54.000000000","message":"Lets change this one step at a time given the amount of work that we are undertaking with these changes. (Besides, this worked and passed tests, iterating more on this individual patch is going to create more churn and that is not something we need with our CI right now.) We need to go through create a new base class class, I\u0027ll move the in-class private methods out then.","commit_id":"642dedf784b98904ffb72f8905762b95b60f22c6"}]}
