)]}'
{"devstack/lib/ironic":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"IRONIC_HTTP_SERVER\u003d${IRONIC_HTTP_SERVER:-$IRONIC_TFTPSERVER_IP}"},{"line_number":213,"context_line":"IRONIC_HTTP_PORT\u003d${IRONIC_HTTP_PORT:-3928}"},{"line_number":214,"context_line":"# Enable using Swift TempURLs for deploy image,"},{"line_number":215,"context_line":"# ignored in \"configure_ironic_conductor\" if iPXE is disabled"},{"line_number":216,"context_line":"IRONIC_IPXE_USE_SWIFT\u003d$(trueorfalse False IRONIC_IPXE_USE_SWIFT)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# Whether DevStack will be setup for bare metal or VMs"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"fa7ab95a_901ffdb5","line":215,"updated":"2016-08-30 21:43:10.000000000","message":"I think but not positive, that all these after IRONIC_IPXE_ENABLED, are only used if ipxe is enabled, so wondering if it would be confusing to mention this here as opposed to eg after line 210. But since I\u0027m not going to look/confirm that the above are only used if ipxe enabled... how about \u0027Only used if iPXE is enabled\u0027. (I don\u0027t like describing the negative case.)","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"IRONIC_HTTP_SERVER\u003d${IRONIC_HTTP_SERVER:-$IRONIC_TFTPSERVER_IP}"},{"line_number":213,"context_line":"IRONIC_HTTP_PORT\u003d${IRONIC_HTTP_PORT:-3928}"},{"line_number":214,"context_line":"# Enable using Swift TempURLs for deploy image,"},{"line_number":215,"context_line":"# ignored in \"configure_ironic_conductor\" if iPXE is disabled"},{"line_number":216,"context_line":"IRONIC_IPXE_USE_SWIFT\u003d$(trueorfalse False IRONIC_IPXE_USE_SWIFT)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"# Whether DevStack will be setup for bare metal or VMs"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"fa7ab95a_64be02d6","line":215,"in_reply_to":"fa7ab95a_901ffdb5","updated":"2016-09-01 14:29:40.000000000","message":"yes, those options are only used when IPXE is enabled, see lines 688-699 below.\n\nI\u0027ll change the description and move to right below IRONIC_IPXE_ENABLED line","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"}],"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":2617,"context_line":"# and serve it over Ironic\u0027s local HTTP server or download"},{"line_number":2618,"context_line":"# deploy image parts directly from Swift TempURL. (boolean"},{"line_number":2619,"context_line":"# value)"},{"line_number":2620,"context_line":"#ipxe_use_swift \u003d false"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":""},{"line_number":2623,"context_line":"[seamicro]"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"fa7ab95a_01a1ddf7","line":2620,"updated":"2016-08-30 21:43:10.000000000","message":"We tend to describe the True condition first, then the False. Or explicitly mention what True does, etc.\n\nLet\u0027s make it a bit easier for the reader. How about something like\n\nDownload deploy images directly from swift using temporary URLs. If set to false (default), images are downloaded to the ironic-conductor node and served over its local HTTP server. Applicable only when \"ipxe_enabled\" option is set to true.","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":2617,"context_line":"# and serve it over Ironic\u0027s local HTTP server or download"},{"line_number":2618,"context_line":"# deploy image parts directly from Swift TempURL. (boolean"},{"line_number":2619,"context_line":"# value)"},{"line_number":2620,"context_line":"#ipxe_use_swift \u003d false"},{"line_number":2621,"context_line":""},{"line_number":2622,"context_line":""},{"line_number":2623,"context_line":"[seamicro]"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"fa7ab95a_e4913254","line":2620,"in_reply_to":"fa7ab95a_01a1ddf7","updated":"2016-09-01 14:29:40.000000000","message":"agree, will change description.","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4ebbebdd7e7a00fde75e0154f37c82c8df30ebe1","unresolved":false,"context_lines":[{"line_number":2624,"context_line":"# Whether to download deploy image to Ironic Conductor node"},{"line_number":2625,"context_line":"# and serve it over Ironic\u0027s local HTTP server or download"},{"line_number":2626,"context_line":"# deploy image parts directly from Swift TempURL. (boolean"},{"line_number":2627,"context_line":"# value)"},{"line_number":2628,"context_line":"#ipxe_use_swift \u003d false"},{"line_number":2629,"context_line":""},{"line_number":2630,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"fa7ab95a_08d96022","line":2627,"updated":"2016-09-01 21:09:18.000000000","message":"This should have changed; did you regenerate this file?","commit_id":"d3679e07a0a571b7cd38464693d39e8c2496591a"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"72b97849429b9790242aa96d39be22eaca6e8646","unresolved":false,"context_lines":[{"line_number":2624,"context_line":"# Whether to download deploy image to Ironic Conductor node"},{"line_number":2625,"context_line":"# and serve it over Ironic\u0027s local HTTP server or download"},{"line_number":2626,"context_line":"# deploy image parts directly from Swift TempURL. (boolean"},{"line_number":2627,"context_line":"# value)"},{"line_number":2628,"context_line":"#ipxe_use_swift \u003d false"},{"line_number":2629,"context_line":""},{"line_number":2630,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":7,"id":"fa7ab95a_b65527c3","line":2627,"in_reply_to":"fa7ab95a_08d96022","updated":"2016-09-02 07:03:08.000000000","message":"yes, my bad, forgot to do this","commit_id":"d3679e07a0a571b7cd38464693d39e8c2496591a"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        pxe_opts[\u0027deployment_aki_path\u0027] \u003d glance.swift_temp_url("},{"line_number":156,"context_line":"            glance.show(pxe_info[\u0027deploy_kernel\u0027][0]))"},{"line_number":157,"context_line":"        pxe_opts[\u0027deployment_ari_path\u0027] \u003d glance.swift_temp_url("},{"line_number":158,"context_line":"            glance.show(pxe_info[\u0027deploy_ramdisk\u0027][0]))"},{"line_number":159,"context_line":"    else:"},{"line_number":160,"context_line":"        pxe_opts[\u0027deployment_aki_path\u0027] \u003d \u0027/\u0027.join("},{"line_number":161,"context_line":"            [CONF.deploy.http_url, node.uuid, \u0027deploy_kernel\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_57b2c74c","line":158,"updated":"2016-08-30 21:43:10.000000000","message":"i see that there is a get_temp_url_for_glance_image() [1]. Might be worth using that, but I\u0027ll leave it to you to decide.\n\n[1] https://github.com/openstack/ironic/blob/7022b5fad5bec29344597b455c1d9ed449e30744/ironic/common/images.py#L395","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        pxe_opts[\u0027deployment_aki_path\u0027] \u003d glance.swift_temp_url("},{"line_number":156,"context_line":"            glance.show(pxe_info[\u0027deploy_kernel\u0027][0]))"},{"line_number":157,"context_line":"        pxe_opts[\u0027deployment_ari_path\u0027] \u003d glance.swift_temp_url("},{"line_number":158,"context_line":"            glance.show(pxe_info[\u0027deploy_ramdisk\u0027][0]))"},{"line_number":159,"context_line":"    else:"},{"line_number":160,"context_line":"        pxe_opts[\u0027deployment_aki_path\u0027] \u003d \u0027/\u0027.join("},{"line_number":161,"context_line":"            [CONF.deploy.http_url, node.uuid, \u0027deploy_kernel\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_fe908f97","line":158,"in_reply_to":"fa7ab95a_57b2c74c","updated":"2016-09-01 14:29:40.000000000","message":"Done","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e3f04142660ead5806ff22b846512992c84c9c86","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    node \u003d task.node"},{"line_number":134,"context_line":"    pxe_opts[\u0027deployment_aki_path\u0027] \u003d pxe_info[\u0027deploy_kernel\u0027][1]"},{"line_number":135,"context_line":"    pxe_opts[\u0027deployment_ari_path\u0027] \u003d pxe_info[\u0027deploy_ramdisk\u0027][1]"},{"line_number":136,"context_line":"    iwdi \u003d node.driver_internal_info.get(\u0027is_whole_disk_image\u0027)"},{"line_number":137,"context_line":"    boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":138,"context_line":"    if not iwdi and boot_option !\u003d \"local\":"},{"line_number":139,"context_line":"        # It is possible that we don\u0027t have kernel/ramdisk or even"},{"line_number":140,"context_line":"        # image_source to determine if it\u0027s a whole disk image or not."},{"line_number":141,"context_line":"        # For example, when transitioning to \u0027available\u0027 state for first"}],"source_content_type":"text/x-python","patch_set":9,"id":"da7fb54a_7b4ebfc2","line":138,"range":{"start_line":136,"start_character":4,"end_line":138,"end_character":43},"updated":"2016-09-02 17:16:23.000000000","message":"I feel like this should go to L90 to _get_instance_image_info, and then here we set aki/ari_path in pxe_opts if they are present in pxe_info.","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"040823dd6b837e5091ee2dd68c2d874e78750b23","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    node \u003d task.node"},{"line_number":134,"context_line":"    pxe_opts[\u0027deployment_aki_path\u0027] \u003d pxe_info[\u0027deploy_kernel\u0027][1]"},{"line_number":135,"context_line":"    pxe_opts[\u0027deployment_ari_path\u0027] \u003d pxe_info[\u0027deploy_ramdisk\u0027][1]"},{"line_number":136,"context_line":"    iwdi \u003d node.driver_internal_info.get(\u0027is_whole_disk_image\u0027)"},{"line_number":137,"context_line":"    boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":138,"context_line":"    if not iwdi and boot_option !\u003d \"local\":"},{"line_number":139,"context_line":"        # It is possible that we don\u0027t have kernel/ramdisk or even"},{"line_number":140,"context_line":"        # image_source to determine if it\u0027s a whole disk image or not."},{"line_number":141,"context_line":"        # For example, when transitioning to \u0027available\u0027 state for first"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_fc2cd29a","line":138,"range":{"start_line":136,"start_character":4,"end_line":138,"end_character":43},"in_reply_to":"da7fb54a_7b4ebfc2","updated":"2016-09-07 18:00:00.000000000","message":"Done","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e3f04142660ead5806ff22b846512992c84c9c86","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # It is possible that we don\u0027t have kernel/ramdisk or even"},{"line_number":140,"context_line":"        # image_source to determine if it\u0027s a whole disk image or not."},{"line_number":141,"context_line":"        # For example, when transitioning to \u0027available\u0027 state for first"},{"line_number":142,"context_line":"        # time from \u0027manage\u0027 state. Retain dummy values if we don\u0027t have"},{"line_number":143,"context_line":"        # kernel/ramdisk."},{"line_number":144,"context_line":"        if \u0027kernel\u0027 in pxe_info:"},{"line_number":145,"context_line":"            pxe_opts[\u0027aki_path\u0027] \u003d pxe_info[\u0027kernel\u0027][1]"},{"line_number":146,"context_line":"        if \u0027ramdisk\u0027 in pxe_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da7fb54a_7bfcff3e","line":143,"range":{"start_line":142,"start_character":36,"end_line":143,"end_character":25},"updated":"2016-09-02 17:16:23.000000000","message":"No dummy variables here, they are in _build_pxe_config_options.","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"040823dd6b837e5091ee2dd68c2d874e78750b23","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        # It is possible that we don\u0027t have kernel/ramdisk or even"},{"line_number":140,"context_line":"        # image_source to determine if it\u0027s a whole disk image or not."},{"line_number":141,"context_line":"        # For example, when transitioning to \u0027available\u0027 state for first"},{"line_number":142,"context_line":"        # time from \u0027manage\u0027 state. Retain dummy values if we don\u0027t have"},{"line_number":143,"context_line":"        # kernel/ramdisk."},{"line_number":144,"context_line":"        if \u0027kernel\u0027 in pxe_info:"},{"line_number":145,"context_line":"            pxe_opts[\u0027aki_path\u0027] \u003d pxe_info[\u0027kernel\u0027][1]"},{"line_number":146,"context_line":"        if \u0027ramdisk\u0027 in pxe_info:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_3c239aa8","line":143,"range":{"start_line":142,"start_character":36,"end_line":143,"end_character":25},"in_reply_to":"da7fb54a_7bfcff3e","updated":"2016-09-07 18:00:00.000000000","message":"Done","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e3f04142660ead5806ff22b846512992c84c9c86","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    node \u003d task.node"},{"line_number":154,"context_line":"    if CONF.pxe.ipxe_use_swift:"},{"line_number":155,"context_line":"        deploy_kernel \u003d images.get_temp_url_for_glance_image("},{"line_number":156,"context_line":"            task.context, pxe_info[\u0027deploy_kernel\u0027][0])"},{"line_number":157,"context_line":"        deploy_ramdisk \u003d images.get_temp_url_for_glance_image("},{"line_number":158,"context_line":"            task.context, pxe_info[\u0027deploy_ramdisk\u0027][0])"},{"line_number":159,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da7fb54a_5bad7b30","line":156,"range":{"start_line":156,"start_character":26,"end_line":156,"end_character":54},"updated":"2016-09-02 17:16:23.000000000","message":"We should think about standalone case too, if it an http url already we should not do anything.","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"040823dd6b837e5091ee2dd68c2d874e78750b23","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    node \u003d task.node"},{"line_number":154,"context_line":"    if CONF.pxe.ipxe_use_swift:"},{"line_number":155,"context_line":"        deploy_kernel \u003d images.get_temp_url_for_glance_image("},{"line_number":156,"context_line":"            task.context, pxe_info[\u0027deploy_kernel\u0027][0])"},{"line_number":157,"context_line":"        deploy_ramdisk \u003d images.get_temp_url_for_glance_image("},{"line_number":158,"context_line":"            task.context, pxe_info[\u0027deploy_ramdisk\u0027][0])"},{"line_number":159,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_5c3cdec7","line":156,"range":{"start_line":156,"start_character":26,"end_line":156,"end_character":54},"in_reply_to":"da7fb54a_5bad7b30","updated":"2016-09-07 18:00:00.000000000","message":"Done","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"e3f04142660ead5806ff22b846512992c84c9c86","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        if CONF.pxe.ipxe_enabled and CONF.pxe.ipxe_use_swift:"},{"line_number":417,"context_line":"            pxe_info.pop(\u0027deploy_kernel\u0027, None)"},{"line_number":418,"context_line":"            pxe_info.pop(\u0027deploy_ramdisk\u0027, None)"},{"line_number":419,"context_line":"        if iwdi or deploy_utils.get_boot_option(node) \u003d\u003d \u0027local\u0027:"},{"line_number":420,"context_line":"            # NOTE(pas-ha) do not cache image kernel and ramdisk for"},{"line_number":421,"context_line":"            # local boot or whole disk images"},{"line_number":422,"context_line":"            pxe_info.pop(\u0027kernel\u0027, None)"},{"line_number":423,"context_line":"            pxe_info.pop(\u0027ramdisk\u0027, None)"},{"line_number":424,"context_line":"        if pxe_info:"},{"line_number":425,"context_line":"            _cache_ramdisk_kernel(task.context, node, pxe_info)"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"da7fb54a_3b0c3742","line":423,"range":{"start_line":419,"start_character":8,"end_line":423,"end_character":41},"updated":"2016-09-02 17:16:23.000000000","message":"ditto, we can avoid this additional check I think if local_boot check is added to _get_instance_image_info.","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"040823dd6b837e5091ee2dd68c2d874e78750b23","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        if CONF.pxe.ipxe_enabled and CONF.pxe.ipxe_use_swift:"},{"line_number":417,"context_line":"            pxe_info.pop(\u0027deploy_kernel\u0027, None)"},{"line_number":418,"context_line":"            pxe_info.pop(\u0027deploy_ramdisk\u0027, None)"},{"line_number":419,"context_line":"        if iwdi or deploy_utils.get_boot_option(node) \u003d\u003d \u0027local\u0027:"},{"line_number":420,"context_line":"            # NOTE(pas-ha) do not cache image kernel and ramdisk for"},{"line_number":421,"context_line":"            # local boot or whole disk images"},{"line_number":422,"context_line":"            pxe_info.pop(\u0027kernel\u0027, None)"},{"line_number":423,"context_line":"            pxe_info.pop(\u0027ramdisk\u0027, None)"},{"line_number":424,"context_line":"        if pxe_info:"},{"line_number":425,"context_line":"            _cache_ramdisk_kernel(task.context, node, pxe_info)"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9a89bdaa_7c39a2d6","line":423,"range":{"start_line":419,"start_character":8,"end_line":423,"end_character":41},"in_reply_to":"da7fb54a_3b0c3742","updated":"2016-09-07 18:00:00.000000000","message":"Done","commit_id":"a5f4a1187f9a1ca732b5d402926b64bad8568bed"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7f77d9c108e661900a8490f9be4e558abb3f4f3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    :returns: a dictionary whose keys are the names of the images (kernel,"},{"line_number":86,"context_line":"        ramdisk) and values are the absolute paths of them. If it\u0027s a whole"},{"line_number":87,"context_line":"        disk image or node is configured for localboot,"},{"line_number":88,"context_line":"        it returns an empty dictionary."},{"line_number":89,"context_line":"    \"\"\""},{"line_number":90,"context_line":"    image_info \u003d {}"},{"line_number":91,"context_line":"    # NOTE(pas-ha) do not report image kernel and ramdisk for"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_4bd0921f","line":88,"updated":"2016-09-07 20:38:24.000000000","message":"Wondering if this wdi/localboot stuff should also be mentioned above after line 81.\n\n(I don\u0027t feel strongly about it.)","commit_id":"497be96d4a18e4f2893147ecff6f83d5d64a984e"}],"ironic/tests/unit/drivers/modules/test_pxe.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self._test_build_pxe_config_options(whle_dsk_img\u003dTrue,"},{"line_number":274,"context_line":"                                            ipxe_enabled\u003dTrue,"},{"line_number":275,"context_line":"                                            ipxe_use_swift\u003dTrue)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test__build_pxe_config_options_without_is_whole_disk_image(self):"},{"line_number":278,"context_line":"        del self.node.driver_internal_info[\u0027is_whole_disk_image\u0027]"},{"line_number":279,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_8ff0a868","line":276,"updated":"2016-08-30 21:43:10.000000000","message":"do we want another test with whle_dsk_image\u003dFalse, ixpe_enabled\u003dTrue, ipxe_use_swift\u003dTrue? Maybe overkill...","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self._test_build_pxe_config_options(whle_dsk_img\u003dTrue,"},{"line_number":274,"context_line":"                                            ipxe_enabled\u003dTrue,"},{"line_number":275,"context_line":"                                            ipxe_use_swift\u003dTrue)"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"    def test__build_pxe_config_options_without_is_whole_disk_image(self):"},{"line_number":278,"context_line":"        del self.node.driver_internal_info[\u0027is_whole_disk_image\u0027]"},{"line_number":279,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_739f5803","line":276,"in_reply_to":"fa7ab95a_8ff0a868","updated":"2016-09-01 14:29:40.000000000","message":"Done","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":721,"context_line":"        self.config(group\u003d\u0027deploy\u0027, http_url\u003d\u0027http://myserver\u0027)"},{"line_number":722,"context_line":"        isfile_mock.return_value \u003d False"},{"line_number":723,"context_line":"        self._test_prepare_ramdisk()"},{"line_number":724,"context_line":"        self.assertFalse(cmp_mock.called)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    @mock.patch.object(os.path, \u0027isfile\u0027, autospec\u003dTrue)"},{"line_number":727,"context_line":"    @mock.patch.object(filecmp, \u0027cmp\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_4f6b0085","line":724,"updated":"2016-08-30 21:43:10.000000000","message":"what about copyfile_mock. was it called?","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":721,"context_line":"        self.config(group\u003d\u0027deploy\u0027, http_url\u003d\u0027http://myserver\u0027)"},{"line_number":722,"context_line":"        isfile_mock.return_value \u003d False"},{"line_number":723,"context_line":"        self._test_prepare_ramdisk()"},{"line_number":724,"context_line":"        self.assertFalse(cmp_mock.called)"},{"line_number":725,"context_line":""},{"line_number":726,"context_line":"    @mock.patch.object(os.path, \u0027isfile\u0027, autospec\u003dTrue)"},{"line_number":727,"context_line":"    @mock.patch.object(filecmp, \u0027cmp\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_1eb53330","line":724,"in_reply_to":"fa7ab95a_4f6b0085","updated":"2016-09-01 14:29:40.000000000","message":"woops, this was not meant to be deleted. done.","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b7f77d9c108e661900a8490f9be4e558abb3f4f3","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        self.node.driver_internal_info[\u0027is_whole_disk_image\u0027] \u003d False"},{"line_number":153,"context_line":"        self.node.save()"},{"line_number":154,"context_line":"        image_info \u003d pxe._get_instance_image_info(self.node, self.context)"},{"line_number":155,"context_line":"        self.assertEqual({}, image_info)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @mock.patch.object(base_image_service.BaseImageService, \u0027_show\u0027,"},{"line_number":158,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_2746224f","line":155,"updated":"2016-09-07 20:38:24.000000000","message":"might want to boot_opt_mock.assert_called_once_with()","commit_id":"497be96d4a18e4f2893147ecff6f83d5d64a984e"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"4e4523d49efb2ea4257bf9d18ba4d5f3648dd773","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        self.node.driver_internal_info[\u0027is_whole_disk_image\u0027] \u003d False"},{"line_number":153,"context_line":"        self.node.save()"},{"line_number":154,"context_line":"        image_info \u003d pxe._get_instance_image_info(self.node, self.context)"},{"line_number":155,"context_line":"        self.assertEqual({}, image_info)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @mock.patch.object(base_image_service.BaseImageService, \u0027_show\u0027,"},{"line_number":158,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a89bdaa_b5408b08","line":155,"in_reply_to":"9a89bdaa_2746224f","updated":"2016-09-08 06:13:25.000000000","message":"I actually plan to refactor this file a bit in the followup patch (the `_test_build_pxe_config_options` method is becoming more complex than the thing it tests o_O ), will do it there.","commit_id":"497be96d4a18e4f2893147ecff6f83d5d64a984e"}],"releasenotes/notes/ipxe-use-swift-5ccf490daab809cc.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0a4f420afe0da71c504b19b0cb8a124cc9dbec1c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    Setting it to ``True`` when iPXE is also enabled"},{"line_number":15,"context_line":"    (``[pxe]ipxe_enabled \u003d True``) will activate the new feature"},{"line_number":16,"context_line":"    of using deploy ramdisk and kernel directly from image store"},{"line_number":17,"context_line":"    without caching and serving them locally."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_e1b879ca","line":17,"updated":"2016-08-30 21:43:10.000000000","message":"I\u0027m not sure we need to mention anything in upgrade, since the default doesn\u0027t change anything, so there isn\u0027t anything that an operator needs to do/know when upgrading. Ie, nothing changes/breaks with this fix.","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"d4caf3afd7b76c7acd3cdc5fd8c3c81a3627e04b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    Setting it to ``True`` when iPXE is also enabled"},{"line_number":15,"context_line":"    (``[pxe]ipxe_enabled \u003d True``) will activate the new feature"},{"line_number":16,"context_line":"    of using deploy ramdisk and kernel directly from image store"},{"line_number":17,"context_line":"    without caching and serving them locally."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_2d8f2fcd","line":17,"in_reply_to":"fa7ab95a_e1b879ca","updated":"2016-09-01 14:29:40.000000000","message":"Done","commit_id":"a4602aa6d89cc7ce9e26ef3e18be6dcd3e6fdc44"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4ebbebdd7e7a00fde75e0154f37c82c8df30ebe1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When iPXE is enabled in Ironic, and image storage is in Glance/Swift,"},{"line_number":4,"context_line":"    it is now possible for the nodes to use deploy ramdisk and kernel"},{"line_number":5,"context_line":"    directly from object store as Swift TempURLs instead of caching them"},{"line_number":6,"context_line":"    on Ironic conductor node and serving via separate HTTP server."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fa7ab95a_e370dd74","line":3,"updated":"2016-09-01 21:09:18.000000000","message":"How about\n\nBy default, the ironic-conductor service caches the node\u0027s deploy ramdisk and kernel images locally and serves them via a separate HTTP server. A new ``[pxe]ipxe_use_swift`` configuration option (disabled by default) allows images to be accessed directly from object store via swift temporary URLs. This is only applicable if iPXE is enabled (via ``[pxe]ipxe_enabled`` configuration option) and image store is in glance/swift. For user images that are partition images requiring non-local boot, the default behavior with local caching and an HTTP server will still apply.","commit_id":"d3679e07a0a571b7cd38464693d39e8c2496591a"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"72b97849429b9790242aa96d39be22eaca6e8646","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - When iPXE is enabled in Ironic, and image storage is in Glance/Swift,"},{"line_number":4,"context_line":"    it is now possible for the nodes to use deploy ramdisk and kernel"},{"line_number":5,"context_line":"    directly from object store as Swift TempURLs instead of caching them"},{"line_number":6,"context_line":"    on Ironic conductor node and serving via separate HTTP server."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fa7ab95a_76139fb8","line":3,"in_reply_to":"fa7ab95a_e370dd74","updated":"2016-09-02 07:03:08.000000000","message":"accepted","commit_id":"d3679e07a0a571b7cd38464693d39e8c2496591a"}]}
