)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"993849245b78e93fd4aded197921582770c8c3b4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa0c359_d7b2a949","line":13,"updated":"2018-02-19 12:19:08.000000000","message":"Does it fix any LP bug? If you plan on backporting this change, please open one and attach it here as \n\n Closes-Bug: #xxxxxx","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d8c02823cbc43416298a2ef7ac658a7c11fbc338","unresolved":false,"context_lines":[{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa0c359_3e54f3c9","line":13,"in_reply_to":"3fa0c359_d7b2a949","updated":"2018-02-20 13:02:26.000000000","message":"Done","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"0adb45a859ea973fd1f4d3c1134f2d21970dcf4e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1750515"},{"line_number":15,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1f9dbf25_05c1cc80","line":12,"range":{"start_line":10,"start_character":38,"end_line":12,"end_character":15},"updated":"2018-11-07 12:49:03.000000000","message":"This needs to change to indicate new config parameter.","commit_id":"4ef8d9fca98a6079c0a5e449de038a23d69f7d4a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9b660e501ace1fd19836bfebc2f26d653b7568e1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1750515"},{"line_number":15,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_fd03c6ba","line":12,"range":{"start_line":10,"start_character":38,"end_line":12,"end_character":15},"in_reply_to":"1f9dbf25_05c1cc80","updated":"2018-12-06 07:42:56.000000000","message":"Done","commit_id":"4ef8d9fca98a6079c0a5e449de038a23d69f7d4a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"f5d1b2d48039608efa21ee99bf2c2182221774fb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1750515"},{"line_number":15,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_12d3fd37","line":12,"range":{"start_line":10,"start_character":38,"end_line":12,"end_character":15},"in_reply_to":"1f9dbf25_05c1cc80","updated":"2018-11-07 12:50:40.000000000","message":"Please ignore this comment on past patchset.","commit_id":"4ef8d9fca98a6079c0a5e449de038a23d69f7d4a"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9b660e501ace1fd19836bfebc2f26d653b7568e1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1750515"},{"line_number":15,"context_line":"Change-Id: Id86e7641329a95f71ac005ee448b0ff4d7d0bbcd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_1d09e2d9","line":12,"range":{"start_line":10,"start_character":38,"end_line":12,"end_character":15},"in_reply_to":"3f79a3b5_12d3fd37","updated":"2018-12-06 07:42:56.000000000","message":"Done","commit_id":"4ef8d9fca98a6079c0a5e449de038a23d69f7d4a"},{"author":{"_account_id":21909,"name":"Bob Fournier","email":"bfournie@redhat.com","username":"bfournie"},"change_message_id":"1f48d1df097575b9216bda97245519fccbc7082d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Story: 1750515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_69c91faa","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":8},"updated":"2018-08-13 16:21:40.000000000","message":"This no longer appears to match the code.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9e5cac73c792d4125c581674d7f3d06bdf1f2135","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Story: 1750515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_9ec56140","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":8},"in_reply_to":"3f79a3b5_68f2e0e5","updated":"2018-09-11 18:07:12.000000000","message":"Done","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"8adcfee3a2746a364f6406f29b6f5aa09d2a1195","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Story: 1750515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_68f2e0e5","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":8},"in_reply_to":"3f79a3b5_69c91faa","updated":"2018-08-31 08:47:04.000000000","message":"\u003e This no longer appears to match the code.\n\n++ should be 6.0 by now.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9e5cac73c792d4125c581674d7f3d06bdf1f2135","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Raw image virtual size used for free space requirement"},{"line_number":10,"context_line":"on the local filesystem replaced with qcow image"},{"line_number":11,"context_line":"size * 2 heruistic what should make space requirement"},{"line_number":12,"context_line":"more realistic."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Story: 1750515"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_7ec88555","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":8},"in_reply_to":"3f79a3b5_69c91faa","updated":"2018-09-11 18:07:12.000000000","message":"Done","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"4071b7704ba40a8686cdcc1edeef18c72909f029","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds the `[conductor]raw_image_growth_factor` configuration"},{"line_number":10,"context_line":"option to allow for heruistic accounting of the file system"},{"line_number":11,"context_line":"free space requirement when unpacking QCOW image into RAW"},{"line_number":12,"context_line":"form."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_b337bd4c","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":29},"updated":"2018-12-06 10:25:25.000000000","message":"heuristic","commit_id":"4e0c5def7b5f4ebc07ec2712934c1de6132d1c33"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"503db9dd19d6c662c504cfbd03afea63b662e6d6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Raw image size estimation improved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds the `[conductor]raw_image_growth_factor` configuration"},{"line_number":10,"context_line":"option to allow for heruistic accounting of the file system"},{"line_number":11,"context_line":"free space requirement when unpacking QCOW image into RAW"},{"line_number":12,"context_line":"form."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_d6dca744","line":10,"range":{"start_line":10,"start_character":20,"end_line":10,"end_character":29},"in_reply_to":"3f79a3b5_b337bd4c","updated":"2018-12-06 11:08:54.000000000","message":"Done","commit_id":"4e0c5def7b5f4ebc07ec2712934c1de6132d1c33"}],"ironic/common/images.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d29147f06d0f1a05bfe04a03d488c0b0971fd9ac","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    return image_show(context, image_href, image_service)[\u0027size\u0027]"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"def converted_size(path, growth_factor\u003dNone):"},{"line_number":368,"context_line":"    \"\"\"Get size of converted raw image."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    The size of image converted to raw format can be growing up to the virtual"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_82742a9b","line":367,"range":{"start_line":367,"start_character":25,"end_line":367,"end_character":43},"updated":"2018-02-28 15:36:57.000000000","message":"Do we need this argument, as it would be using conf value? I do not see any where converted_size() being called by passing this value. May be we can remove it.","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7cb5cdee877dc5d7bad489c104befeef99ed2be5","unresolved":false,"context_lines":[{"line_number":364,"context_line":"    return image_show(context, image_href, image_service)[\u0027size\u0027]"},{"line_number":365,"context_line":""},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"def converted_size(path, growth_factor\u003dNone):"},{"line_number":368,"context_line":"    \"\"\"Get size of converted raw image."},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    The size of image converted to raw format can be growing up to the virtual"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_ea32a0a7","line":367,"range":{"start_line":367,"start_character":25,"end_line":367,"end_character":43},"in_reply_to":"1f9dbf25_82742a9b","updated":"2018-02-28 16:30:55.000000000","message":"Done","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d29147f06d0f1a05bfe04a03d488c0b0971fd9ac","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    \"\"\""},{"line_number":384,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"},{"line_number":385,"context_line":"    if growth_factor is None:"},{"line_number":386,"context_line":"        growth_factor \u003d CONF.raw_image_growth_factor"},{"line_number":387,"context_line":"    return (data.disk_size * growth_factor"},{"line_number":388,"context_line":"            if growth_factor \u003e 0 else data.virtual_size)"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_42cce288","line":386,"range":{"start_line":386,"start_character":24,"end_line":386,"end_character":52},"updated":"2018-02-28 15:36:57.000000000","message":"Do we need to validate its positive as mentioned here\nhttps://review.openstack.org/#/c/544839/3/ironic/conf/default.py@206","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7cb5cdee877dc5d7bad489c104befeef99ed2be5","unresolved":false,"context_lines":[{"line_number":383,"context_line":"    \"\"\""},{"line_number":384,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"},{"line_number":385,"context_line":"    if growth_factor is None:"},{"line_number":386,"context_line":"        growth_factor \u003d CONF.raw_image_growth_factor"},{"line_number":387,"context_line":"    return (data.disk_size * growth_factor"},{"line_number":388,"context_line":"            if growth_factor \u003e 0 else data.virtual_size)"},{"line_number":389,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_2a8e4878","line":386,"range":{"start_line":386,"start_character":24,"end_line":386,"end_character":52},"in_reply_to":"1f9dbf25_42cce288","updated":"2018-02-28 16:30:55.000000000","message":"Does the code underneath perform this check?\n\n    return (data.disk_size * growth_factor\n            if growth_factor \u003e 0 else data.virtual_size)","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"8adcfee3a2746a364f6406f29b6f5aa09d2a1195","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"},{"line_number":383,"context_line":"    growth_factor \u003d CONF.raw_image_growth_factor"},{"line_number":384,"context_line":"    return min(data.disk_size * growth_factor"},{"line_number":385,"context_line":"               if growth_factor \u003e 0 else data.virtual_size,"},{"line_number":386,"context_line":"               data.virtual_size)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e8a270ad","line":385,"range":{"start_line":385,"start_character":18,"end_line":385,"end_character":35},"updated":"2018-08-31 08:47:04.000000000","message":"Hmm, what if I set this factor to 0.5? That could be a problem, AIUI the actual image size can\u0027t be smaller than disk_size. I think at lease this should be a value \u003e\u003d 1.0","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9e5cac73c792d4125c581674d7f3d06bdf1f2135","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"},{"line_number":383,"context_line":"    growth_factor \u003d CONF.raw_image_growth_factor"},{"line_number":384,"context_line":"    return min(data.disk_size * growth_factor"},{"line_number":385,"context_line":"               if growth_factor \u003e 0 else data.virtual_size,"},{"line_number":386,"context_line":"               data.virtual_size)"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_0c4a8b5a","line":385,"range":{"start_line":385,"start_character":18,"end_line":385,"end_character":35},"in_reply_to":"3f79a3b5_e8a270ad","updated":"2018-09-11 18:07:12.000000000","message":"Great catch! Changed to `1`.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7f8addf9d85e232b0ef8cf46084c1630a3192e18","unresolved":false,"context_lines":[{"line_number":365,"context_line":"    return image_show(context, image_href, image_service)[\u0027size\u0027]"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"def converted_size(path):"},{"line_number":369,"context_line":"    \"\"\"Get size of converted raw image."},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    The size of image converted to raw format can be growing up to the virtual"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_3682a7a6","line":368,"updated":"2020-01-07 14:21:28.000000000","message":"I looked to see how this method was being used [1]. Would it make sense to add a parameter to this method, eg something like \u0027use_growth_factor\u003dFalse\u0027 ? Then where it is being used, the code could try with the virtual size and if that fails _clean_up_caches(), it could then try with the growth_factor?\n\n[1] https://opendev.org/openstack/ironic/src/commit/7783981e2b180cbc551b0bb19dffab959d11b203/ironic/drivers/modules/image_cache.py","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7f8addf9d85e232b0ef8cf46084c1630a3192e18","unresolved":false,"context_lines":[{"line_number":374,"context_line":"    :param path: path to the image file."},{"line_number":375,"context_line":"    :returns: if `growth_factor` is greater or equal than 1, returns"},{"line_number":376,"context_line":"              image size * `growth_factor`. Otherwise returns `virtual_size`"},{"line_number":377,"context_line":"              of the image."},{"line_number":378,"context_line":"              The former may give better estimation of the consumed"},{"line_number":379,"context_line":"              filesystem space because of potential raw image sparseness."},{"line_number":380,"context_line":"              Default is taken from the `raw_image_growth_factor`"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_f63def28","line":377,"updated":"2020-01-07 14:21:28.000000000","message":"this isn\u0027t true? eg if CONF.raw_image_growth_factor \u003d\u003dsome huge number, so that data.disk_size*growth_factor is \u003e data.virtual_size.","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7f8addf9d85e232b0ef8cf46084c1630a3192e18","unresolved":false,"context_lines":[{"line_number":377,"context_line":"              of the image."},{"line_number":378,"context_line":"              The former may give better estimation of the consumed"},{"line_number":379,"context_line":"              filesystem space because of potential raw image sparseness."},{"line_number":380,"context_line":"              Default is taken from the `raw_image_growth_factor`"},{"line_number":381,"context_line":"              configuration option."},{"line_number":382,"context_line":"    \"\"\""},{"line_number":383,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_965efb76","line":380,"updated":"2020-01-07 14:21:28.000000000","message":"It isn\u0027t the default, the growth_factor value comes from that config option.","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"5ef63a95290ecf31f91886e180db189bbbbb2f6a","unresolved":false,"context_lines":[{"line_number":382,"context_line":"    \"\"\""},{"line_number":383,"context_line":"    data \u003d disk_utils.qemu_img_info(path)"},{"line_number":384,"context_line":"    growth_factor \u003d CONF.raw_image_growth_factor"},{"line_number":385,"context_line":"    return min(data.disk_size * growth_factor"},{"line_number":386,"context_line":"               if growth_factor \u003e\u003d 1 else data.virtual_size,"},{"line_number":387,"context_line":"               data.virtual_size)"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"def get_image_properties(context, image_href, properties\u003d\"all\"):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_ab350bd5","line":387,"range":{"start_line":385,"start_character":11,"end_line":387,"end_character":33},"updated":"2018-12-19 09:27:23.000000000","message":"nit: \"min(data.disk_size * growth_factor, data.virtual_size) if growth_factor \u003e\u003d 1 else data.virtual_size\" has better performance","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"}],"ironic/conf/default.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d29147f06d0f1a05bfe04a03d488c0b0971fd9ac","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d2.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW. If positive, raw image size \u0027"},{"line_number":207,"context_line":"                        \u0027is estimated as \u0027"},{"line_number":208,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":209,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_cffed604","line":206,"range":{"start_line":206,"start_character":44,"end_line":206,"end_character":48},"updated":"2018-02-28 15:36:57.000000000","message":"Should it be QCOW2?","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d29147f06d0f1a05bfe04a03d488c0b0971fd9ac","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d2.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW. If positive, raw image size \u0027"},{"line_number":207,"context_line":"                        \u0027is estimated as \u0027"},{"line_number":208,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":209,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_cc190489","line":206,"range":{"start_line":206,"start_character":25,"end_line":206,"end_character":30},"updated":"2018-02-28 15:36:57.000000000","message":"s/ other //","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7cb5cdee877dc5d7bad489c104befeef99ed2be5","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d2.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW. If positive, raw image size \u0027"},{"line_number":207,"context_line":"                        \u0027is estimated as \u0027"},{"line_number":208,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":209,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_2aede8ee","line":206,"range":{"start_line":206,"start_character":25,"end_line":206,"end_character":30},"in_reply_to":"1f9dbf25_cc190489","updated":"2018-02-28 16:30:55.000000000","message":"Could you elaborate please?","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7cb5cdee877dc5d7bad489c104befeef99ed2be5","unresolved":false,"context_lines":[{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d2.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW. If positive, raw image size \u0027"},{"line_number":207,"context_line":"                        \u0027is estimated as \u0027"},{"line_number":208,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":209,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f9dbf25_8adc3c47","line":206,"range":{"start_line":206,"start_character":44,"end_line":206,"end_character":48},"in_reply_to":"1f9dbf25_cffed604","updated":"2018-02-28 16:30:55.000000000","message":"Done","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"8adcfee3a2746a364f6406f29b6f5aa09d2a1195","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_286708ba","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"updated":"2018-08-31 08:47:04.000000000","message":"I\u0027m kind of -0.5 to introduce this configuration option, this factor is beyond control of ironic, how a user is expected to provide a suitable value?","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43b95158495fcbd8b4366d8aeefca31a45c00fc9","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f1220d54","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_0ed77c25","updated":"2018-09-18 01:39:44.000000000","message":"\u003e That\u0027s what I am trying to understand - is there a use-case when\n \u003e multiple images being unpacked simultaneously. Seems like this\n \u003e might happen when `parallel_image_downloads` option is in force.\n\nThe default value is false, so I haven\u0027t experienced such scenario for I never changed the default value.\n\n \u003e That kind of undermines the purpose of this patch - even if we did\n \u003e our guesswork on unpacked image size, it still can fail on space\n \u003e shortage in case of parallel deployments.\n\nI suppose this patch is to address the sparse issue, no? They are different problems I think. The concurrency problem exists whether with this fix or not, in fact this patch will increase the chance you worried about, if parallel downloads happens.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9e5cac73c792d4125c581674d7f3d06bdf1f2135","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_6c4e9f39","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_286708ba","updated":"2018-09-11 18:07:12.000000000","message":"There is a discussion in this patch and in [1] wrt how could we possibly estimate raw image size....\n\nThe idea is that 1) we have a magic multiplication factor and 2) users can change it if they run into space issues.\n\nThe other thing that worries me is concurrency - what if we have two different images being deployed simultaneously?\n\nHow would we best approach this problem? WDYT?\n\n1. https://review.openstack.org/#/c/553807/","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"d1723350fc28e2f8db935cf94d024f9bf2b4f8a4","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_abd1c858","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_56a9cc22","updated":"2018-09-27 02:31:41.000000000","message":"\u003e Assuming there is enough space that can be freed and used for\n \u003e conversion. I am worrying of the case when we have large images\n \u003e (say, 500GB uncompressed) being requested at the same time...\n\nYou are serious, it\u0027s not likely to have such an image :)\n\nthe available disk space is up to the /var/lib/ironic (or whatever mount point/partitioning deployers set up), the cache cleanup is just a promise to reduce cache size to configured limit, the real restriction still lies in the available disk space.\n\nanyway, I think this patch has done it\u0027s job \\o/","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"f1f3f6a52c4f04ff52b6eee00f367d5eb7233691","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_84abc71c","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_6c4e9f39","updated":"2018-09-12 02:41:52.000000000","message":"No idea on the concurrency problem, the cache is cleaned up for the the space before conversion, I guess it could be happening that some of them will fail as they are parallely consuming spaces, it\u0027s an edge case though.\n\nI don\u0027t come up with a solution without space management alike thing, reserving spaces required before consuming is one of possible ways I guess.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1ba90862ec1b52d6d133f0a8005c913b7ef0fc20","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_0ed77c25","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_84abc71c","updated":"2018-09-17 11:15:03.000000000","message":"That\u0027s what I am trying to understand - is there a use-case when multiple images being unpacked simultaneously. Seems like this might happen when `parallel_image_downloads` option is in force.\n\nThat kind of undermines the purpose of this patch - even if we did our guesswork on unpacked image size, it still can fail on space shortage in case of parallel deployments.\n\nGiven that ironic is targeting hundreds/thousands of nodes under a single conductor, simultaneous deployment feels quite likely. The only relaxing factor I can think of is that many nodes are likely to deploy the same image....","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"ee107db55d84b5f38d18c2adcf8ae4205e34a38c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_fe837c54","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_ae28af97","updated":"2018-09-20 11:56:04.000000000","message":"\u003e \u003e in fact this patch will increase the chance you worried about, if\n \u003e parallel downloads happens.\n \u003e \n \u003e Well, this patch effectively reduces the upfront free space\n \u003e requirement (full raw image size vs compressed size times a\n \u003e constant).\n \u003e \n \u003e Therefore it seems that even in case of parallel downloads the\n \u003e chance of unjustified failure (due to unmet upfront space\n \u003e requirement) should be lower, no?\n \u003e \n\nAs I understand it, this patch is trying to reduce space claims when sparse images are used, the claimed size is likely in the range of disk_size and virtual_size (affected by factor, I think the intention is between the two).\n\nAs a higher space claims will free more cache space for subsequent conversion, so in the case of parallel downloads, claiming virtual_size will have a lower chance than the size between disk_size and virtual_size, probably the room vacated by ironic would hold much more guests.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7006a983924989d128993d434ab1cf91860745ae","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_ae28af97","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_f1220d54","updated":"2018-09-18 09:12:45.000000000","message":"\u003e I suppose this patch is to address the sparse issue, no?\n\nYes, exactly!\n\n\u003e in fact this patch will increase the chance you worried about, if parallel downloads happens.\n\nWell, this patch effectively reduces the upfront free space requirement (full raw image size vs compressed size times a constant).\n\nTherefore it seems that even in case of parallel downloads the chance of unjustified failure (due to unmet upfront space requirement) should be lower, no?\n\nHowever the whole space requirement business seems shaky to me given the presence of parallel downloads - we compare free space against the size of the image to be unpacked, but we completely ignore the fact that we may unpack multiple images potentially exceeding free space.\n\nBut you are right - if we want to address it, that should be the topic of another patch.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"f9a4499291a4a934498ee149b44797a53315fffb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                default\u003dTrue,"},{"line_number":201,"context_line":"                help\u003d_(\u0027If True, convert backing images to \"raw\" disk image \u0027"},{"line_number":202,"context_line":"                       \u0027format.\u0027)),"},{"line_number":203,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":204,"context_line":"                 default\u003d6.0,"},{"line_number":205,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":206,"context_line":"                        \u0027other formats like QCOW2. If positive, raw image \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_56a9cc22","line":203,"range":{"start_line":203,"start_character":18,"end_line":203,"end_character":41},"in_reply_to":"3f79a3b5_fe837c54","updated":"2018-09-26 09:28:37.000000000","message":"\u003e will free more cache space for subsequent conversion\n\nAssuming there is enough space that can be freed and used for conversion. I am worrying of the case when we have large images (say, 500GB uncompressed) being requested at the same time...","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"5ef63a95290ecf31f91886e180db189bbbbb2f6a","unresolved":false,"context_lines":[{"line_number":206,"context_line":"    cfg.FloatOpt(\u0027raw_image_growth_factor\u0027,"},{"line_number":207,"context_line":"                 default\u003d0,"},{"line_number":208,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":209,"context_line":"                        \u0027other formats like QCOW2. If greater or equal than \u0027"},{"line_number":210,"context_line":"                        \u00271, raw image size is estimated as \u0027"},{"line_number":211,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":212,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_8b612fd8","line":209,"range":{"start_line":209,"start_character":54,"end_line":209,"end_character":75},"updated":"2018-12-19 09:27:23.000000000","message":"nit: greater than or equal to (I think so)","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"37595115b4ab2289ea2e83721fcd278aacc790bc","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                 help\u003d_(\u0027The raw image size growth factor when converted from \u0027"},{"line_number":209,"context_line":"                        \u0027other formats like QCOW2. If greater or equal than \u0027"},{"line_number":210,"context_line":"                        \u00271, raw image size is estimated as \u0027"},{"line_number":211,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":212,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"},{"line_number":213,"context_line":"                        \u0027Default is 0.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027isolinux_bin\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_1a9d4ffc","line":211,"range":{"start_line":211,"start_character":26,"end_line":211,"end_character":36},"updated":"2018-12-07 09:43:54.000000000","message":"it appears qemu-img prints disk size, image_size is what we call it internally sometimes.","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"37595115b4ab2289ea2e83721fcd278aacc790bc","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                        \u0027other formats like QCOW2. If greater or equal than \u0027"},{"line_number":210,"context_line":"                        \u00271, raw image size is estimated as \u0027"},{"line_number":211,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":212,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"},{"line_number":213,"context_line":"                        \u0027Default is 0.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027isolinux_bin\u0027,"},{"line_number":215,"context_line":"               default\u003d\u0027/usr/lib/syslinux/isolinux.bin\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_3a584b56","line":212,"range":{"start_line":212,"start_character":36,"end_line":212,"end_character":48},"updated":"2018-12-07 09:43:54.000000000","message":"maybe remove that _?","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7f8addf9d85e232b0ef8cf46084c1630a3192e18","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                        \u00271, raw image size is estimated as \u0027"},{"line_number":211,"context_line":"                        \u0027`image_size * raw_image_growth_factor`. \u0027"},{"line_number":212,"context_line":"                        \u0027Otherwise `virtual_size` of the image is used. \u0027"},{"line_number":213,"context_line":"                        \u0027Default is 0.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027isolinux_bin\u0027,"},{"line_number":215,"context_line":"               default\u003d\u0027/usr/lib/syslinux/isolinux.bin\u0027,"},{"line_number":216,"context_line":"               help\u003d_(\u0027Path to isolinux binary file.\u0027)),"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_1cfd4d07","line":213,"updated":"2020-01-07 14:21:28.000000000","message":"How about something like \u0027When converting backing images to \"raw\" disk image, use this value to estimate the amount of disk space needed for the raw image if there isn\u0027t enough space for the virtual size. The estimated amount is computed as backing image size * this factor. Must be \u003e\u003d1.\u0027\n\nI used terminology from the help string above, for \u0027force_raw_images\u0027.\n\nWas also wondering if we want to mention that this only applies if force_raw_images is True, but I think since we mention raw images here, it should be obvious...","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"}],"ironic/drivers/modules/image_cache.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"993849245b78e93fd4aded197921582770c8c3b4","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        # Use `disk_size` * 2 estimation instead"},{"line_number":307,"context_line":"        required_space \u003d images.converted_size(path_tmp, growth_factor\u003d2)"},{"line_number":308,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":309,"context_line":"        _clean_up_caches(directory, required_space)"},{"line_number":310,"context_line":"        images.image_to_raw(image_href, path, path_tmp)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_97866165","line":307,"updated":"2018-02-19 12:19:08.000000000","message":"can we make this growth_factor configurable please? Operators may have a better idea what their images are","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d8c02823cbc43416298a2ef7ac658a7c11fbc338","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        # Use `disk_size` * 2 estimation instead"},{"line_number":307,"context_line":"        required_space \u003d images.converted_size(path_tmp, growth_factor\u003d2)"},{"line_number":308,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":309,"context_line":"        _clean_up_caches(directory, required_space)"},{"line_number":310,"context_line":"        images.image_to_raw(image_href, path, path_tmp)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_4716cff3","line":307,"in_reply_to":"3fa0c359_97866165","updated":"2018-02-20 13:02:26.000000000","message":"Done","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bc4959e0bdaac7c1a0f85e755d93246ea0dca114","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        # Use `disk_size` * 2 estimation instead"},{"line_number":307,"context_line":"        required_space \u003d images.converted_size(path_tmp, growth_factor\u003d2)"},{"line_number":308,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":309,"context_line":"        _clean_up_caches(directory, required_space)"},{"line_number":310,"context_line":"        images.image_to_raw(image_href, path, path_tmp)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_9ec66749","line":307,"range":{"start_line":307,"start_character":57,"end_line":307,"end_character":72},"updated":"2018-02-20 08:47:15.000000000","message":"Why are we hard coding growth_factor to 2? It could be more than 2. I think it would be better to provide this as a configuration parameter?","commit_id":"e0253cd6142deebcf44614c2586653f6fba3b69e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e731291bc5832fb6eb6738ddb77f94a924f6f487","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        # Use `disk_size` * 2 estimation instead"},{"line_number":307,"context_line":"        required_space \u003d images.converted_size(path_tmp, growth_factor\u003d2)"},{"line_number":308,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":309,"context_line":"        _clean_up_caches(directory, required_space)"},{"line_number":310,"context_line":"        images.image_to_raw(image_href, path, path_tmp)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_87e137ff","line":307,"range":{"start_line":307,"start_character":57,"end_line":307,"end_character":72},"in_reply_to":"3fa0c359_9ec66749","updated":"2018-02-20 13:03:07.000000000","message":"Done","commit_id":"e0253cd6142deebcf44614c2586653f6fba3b69e"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"f1f3f6a52c4f04ff52b6eee00f367d5eb7233691","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    # Notes(yjiang5): If glance can provide the virtual size information,"},{"line_number":303,"context_line":"    # then we can firstly clean cache and then invoke images.fetch()."},{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        required_space \u003d images.converted_size(path_tmp)"},{"line_number":307,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":308,"context_line":"        _clean_up_caches(directory, required_space)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_2473d318","line":305,"updated":"2018-09-12 02:41:52.000000000","message":"I\u0027d prefer to drop this bit, virtual size is still used if the ratio is \u003c 1.","commit_id":"04ee59750e9f9e9825519e41a2ac18cbefe893e2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1ba90862ec1b52d6d133f0a8005c913b7ef0fc20","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    # Notes(yjiang5): If glance can provide the virtual size information,"},{"line_number":303,"context_line":"    # then we can firstly clean cache and then invoke images.fetch()."},{"line_number":304,"context_line":"    if force_raw:"},{"line_number":305,"context_line":"        # Ignore image `virtual_size` because it might be sparse"},{"line_number":306,"context_line":"        required_space \u003d images.converted_size(path_tmp)"},{"line_number":307,"context_line":"        directory \u003d os.path.dirname(path_tmp)"},{"line_number":308,"context_line":"        _clean_up_caches(directory, required_space)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_414785a4","line":305,"in_reply_to":"3f79a3b5_2473d318","updated":"2018-09-17 11:15:03.000000000","message":"Done","commit_id":"04ee59750e9f9e9825519e41a2ac18cbefe893e2"}],"ironic/tests/unit/common/test_images.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"37595115b4ab2289ea2e83721fcd278aacc790bc","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        CONF.set_override(\u0027raw_image_growth_factor\u0027, 0)"},{"line_number":207,"context_line":"        info \u003d self.FakeImgInfo()"},{"line_number":208,"context_line":"        info.disk_size \u003d 2"},{"line_number":209,"context_line":"        info.virtual_size \u003d 1"},{"line_number":210,"context_line":"        qemu_img_info_mock.return_value \u003d info"},{"line_number":211,"context_line":"        size \u003d images.converted_size(\u0027path\u0027)"},{"line_number":212,"context_line":"        qemu_img_info_mock.assert_called_once_with(\u0027path\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_fa22d3b7","line":209,"range":{"start_line":209,"start_character":28,"end_line":209,"end_character":29},"updated":"2018-12-07 09:43:54.000000000","message":"seems a bad example, virtual_size always \u003e disk_size\n\nthis test is redundant, because we 0 is the default value, we are blessed by oslo, but no harm by keeping it.","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"37595115b4ab2289ea2e83721fcd278aacc790bc","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        CONF.set_override(\u0027raw_image_growth_factor\u0027, 0.5)"},{"line_number":219,"context_line":"        info \u003d self.FakeImgInfo()"},{"line_number":220,"context_line":"        info.disk_size \u003d 2"},{"line_number":221,"context_line":"        info.virtual_size \u003d 1"},{"line_number":222,"context_line":"        qemu_img_info_mock.return_value \u003d info"},{"line_number":223,"context_line":"        size \u003d images.converted_size(\u0027path\u0027)"},{"line_number":224,"context_line":"        qemu_img_info_mock.assert_called_once_with(\u0027path\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_5a03c711","line":221,"range":{"start_line":221,"start_character":28,"end_line":221,"end_character":29},"updated":"2018-12-07 09:43:54.000000000","message":"ditto for the value","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"}],"releasenotes/notes/add-raw-image-size-heuristics-6e95ae8732c7b960.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"515752b79958f027b346cf2207f0d0651eba88bd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changed the free file system space requirement when downloading images"},{"line_number":4,"context_line":"    to use ``[conductor]raw_image_growth_factor`` * raw image size (default"},{"line_number":5,"context_line":"    growth factor is 6.0). Previously the image virtual size was used."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_d6007c03","line":3,"range":{"start_line":3,"start_character":56,"end_line":3,"end_character":67},"updated":"2018-08-30 21:03:45.000000000","message":"AIUI, this is after the download to the conductor, before the write-out to the node. We should likely clarify this.","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"9e5cac73c792d4125c581674d7f3d06bdf1f2135","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changed the free file system space requirement when downloading images"},{"line_number":4,"context_line":"    to use ``[conductor]raw_image_growth_factor`` * raw image size (default"},{"line_number":5,"context_line":"    growth factor is 6.0). Previously the image virtual size was used."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3f79a3b5_7e9f2551","line":3,"range":{"start_line":3,"start_character":56,"end_line":3,"end_character":67},"in_reply_to":"3f79a3b5_d6007c03","updated":"2018-09-11 18:07:12.000000000","message":"Done","commit_id":"d6736e857ac4b0a504e0b10111a4b002ae6d0ee5"},{"author":{"_account_id":29209,"name":"Dhanuka Warusadura","email":"csx@tuta.io","username":"dnuka"},"change_message_id":"4071b7704ba40a8686cdcc1edeef18c72909f029","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the ``[conductor]raw_image_growth_factor`` configuration"},{"line_number":4,"context_line":"    option to allow for heruistic accounting of the file system"},{"line_number":5,"context_line":"    free space requirement when unpacking QCOW image into RAW"},{"line_number":6,"context_line":"    form. By default, the ``[conductor]raw_image_growth_factor``"},{"line_number":7,"context_line":"    option is disabled. Image virtual size is used instead."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_733da528","line":4,"range":{"start_line":4,"start_character":24,"end_line":4,"end_character":33},"updated":"2018-12-06 10:25:25.000000000","message":"heuristic","commit_id":"4e0c5def7b5f4ebc07ec2712934c1de6132d1c33"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"503db9dd19d6c662c504cfbd03afea63b662e6d6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the ``[conductor]raw_image_growth_factor`` configuration"},{"line_number":4,"context_line":"    option to allow for heruistic accounting of the file system"},{"line_number":5,"context_line":"    free space requirement when unpacking QCOW image into RAW"},{"line_number":6,"context_line":"    form. By default, the ``[conductor]raw_image_growth_factor``"},{"line_number":7,"context_line":"    option is disabled. Image virtual size is used instead."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_76e59307","line":4,"range":{"start_line":4,"start_character":24,"end_line":4,"end_character":33},"in_reply_to":"3f79a3b5_733da528","updated":"2018-12-06 11:08:54.000000000","message":"Done","commit_id":"4e0c5def7b5f4ebc07ec2712934c1de6132d1c33"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"37595115b4ab2289ea2e83721fcd278aacc790bc","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the ``[conductor]raw_image_growth_factor`` configuration"},{"line_number":4,"context_line":"    option to allow for heuristic accounting of the file system"},{"line_number":5,"context_line":"    free space requirement when unpacking QCOW image into RAW"},{"line_number":6,"context_line":"    form. By default, the ``[conductor]raw_image_growth_factor``"},{"line_number":7,"context_line":"    option is disabled. Image virtual size is used instead."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3f79a3b5_1d0ea92f","line":5,"range":{"start_line":5,"start_character":42,"end_line":5,"end_character":46},"updated":"2018-12-07 09:43:54.000000000","message":"AIUI it needn\u0027t be a qcow, anything format qemu-img supports will do.","commit_id":"8e6c18fa0a75b92923c55c3f213de960b25fefee"}],"releasenotes/notes/added-raw-image-size-heuristics-6e95ae8732c7b960.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"993849245b78e93fd4aded197921582770c8c3b4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Raw image virtual size used for free space requirement on the local"},{"line_number":4,"context_line":"    filesystem replaced with qcow image size * 2 heruistic what should"},{"line_number":5,"context_line":"    make space requirement more realistic."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa0c359_77839557","line":5,"updated":"2018-02-19 12:19:08.000000000","message":"I\u0027m afraid this may be unclear for someone not familiar with ironic internals. What about \"Changes the free space check when downloading images to use 2 * raw image size. Previously the image virtual size was used. Use the new configuration option ``[conductor]image_growth_factor`` to change this behavior.\"\n\nor something like that.","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d8c02823cbc43416298a2ef7ac658a7c11fbc338","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Raw image virtual size used for free space requirement on the local"},{"line_number":4,"context_line":"    filesystem replaced with qcow image size * 2 heruistic what should"},{"line_number":5,"context_line":"    make space requirement more realistic."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa0c359_1e6337b3","line":5,"in_reply_to":"3fa0c359_77839557","updated":"2018-02-20 13:02:26.000000000","message":"Done","commit_id":"0435db23fe4860c1996311c0d55de885ff83f256"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bc4959e0bdaac7c1a0f85e755d93246ea0dca114","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changes the free space check when downloading images to use 2 * raw"},{"line_number":4,"context_line":"    image size. Previously the image virtual size was used. Use the new"},{"line_number":5,"context_line":"    configuration option ``[conductor]image_growth_factor`` to change"},{"line_number":6,"context_line":"    this behavior."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_fedc4b19","line":5,"range":{"start_line":5,"start_character":24,"end_line":5,"end_character":59},"updated":"2018-02-20 08:47:15.000000000","message":"Ok, you are planning to add a conf.  Code for this needs to be added to support this.","commit_id":"e0253cd6142deebcf44614c2586653f6fba3b69e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e731291bc5832fb6eb6738ddb77f94a924f6f487","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changes the free space check when downloading images to use 2 * raw"},{"line_number":4,"context_line":"    image size. Previously the image virtual size was used. Use the new"},{"line_number":5,"context_line":"    configuration option ``[conductor]image_growth_factor`` to change"},{"line_number":6,"context_line":"    this behavior."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_27f063c9","line":5,"range":{"start_line":5,"start_character":24,"end_line":5,"end_character":59},"in_reply_to":"3fa0c359_fedc4b19","updated":"2018-02-20 13:03:07.000000000","message":"Done","commit_id":"e0253cd6142deebcf44614c2586653f6fba3b69e"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d29147f06d0f1a05bfe04a03d488c0b0971fd9ac","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changes the free space check when downloading images to use 2.0 * raw"},{"line_number":4,"context_line":"    image size. Previously the image virtual size was used. Use the new"},{"line_number":5,"context_line":"    configuration option ``[conductor]raw_image_growth_factor`` to change"},{"line_number":6,"context_line":"    this behavior."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1f9dbf25_ac4a787d","line":4,"range":{"start_line":3,"start_character":64,"end_line":4,"end_character":14},"updated":"2018-02-28 15:36:57.000000000","message":"This looks bit confusing. May be you can add separate sentence indicating 2.0 is the default value for  ``[conductor]raw_image_growth_factor``.","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"7cb5cdee877dc5d7bad489c104befeef99ed2be5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - Changes the free space check when downloading images to use 2.0 * raw"},{"line_number":4,"context_line":"    image size. Previously the image virtual size was used. Use the new"},{"line_number":5,"context_line":"    configuration option ``[conductor]raw_image_growth_factor`` to change"},{"line_number":6,"context_line":"    this behavior."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"1f9dbf25_aa88181f","line":4,"range":{"start_line":3,"start_character":64,"end_line":4,"end_character":14},"in_reply_to":"1f9dbf25_ac4a787d","updated":"2018-02-28 16:30:55.000000000","message":"Done","commit_id":"607af0be09c612e8f3fb414bd698511ded88778f"}]}
